fix(engine_multiscale): resolved bug which prevented proper equilibrium abundances from being found
this was done by adjusting the scaling of the QSE operator() residuals from r = dy/dt to r=(dy/dt)/y
This commit is contained in:
21
src/include/gridfire/utils/general_composition.h
Normal file
21
src/include/gridfire/utils/general_composition.h
Normal file
@@ -0,0 +1,21 @@
|
||||
#pragma once
|
||||
#include "fourdst/composition/composition.h"
|
||||
#include "fourdst/composition/atomicSpecies.h"
|
||||
|
||||
namespace gridfire::utils {
|
||||
inline double massFractionFromMolarAbundance (
|
||||
const fourdst::composition::Composition& composition,
|
||||
const fourdst::atomic::Species& species,
|
||||
const double Yi
|
||||
) {
|
||||
double sum = 0;
|
||||
for (const auto& [symbol, entry] : composition) {
|
||||
if (entry.isotope() == species) {
|
||||
sum += species.mass() * Yi;
|
||||
} else {
|
||||
sum += entry.isotope().mass() * composition.getMolarAbundance(symbol);
|
||||
}
|
||||
}
|
||||
return (species.mass() * Yi) / sum;
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user