1 #ifndef ABLATELIBRARY_RADIATIONPROPERTIESZIMMER_H
2 #define ABLATELIBRARY_RADIATIONPROPERTIESZIMMER_H
5 #include "eos/radiationProperties/radiationProperties.hpp"
6 #include "finiteVolume/compressibleFlowFields.hpp"
7 #include "radiation/radiation.hpp"
8 #include "radiationProperties.hpp"
9 #include "solver/cellSolver.hpp"
10 #include "utilities/mathUtilities.hpp"
12 namespace ablate::eos::radiationProperties {
16 struct FunctionContext {
17 PetscInt densityYiH2OOffset;
18 PetscInt densityYiCO2Offset;
19 PetscInt densityYiCOOffset;
20 PetscInt densityYiCH4Offset;
32 const std::shared_ptr<eos::EOS> eos;
35 constexpr
static double kapparef = 1;
36 constexpr
static double Tsurf = 300.;
39 constexpr
static std::array<double, 7> H2O_coeff = {0.22317e1, -.15829e1, .1329601e1, -.50707, .93334e-1, -0.83108e-2, 0.28834e-3};
40 constexpr
static std::array<double, 7> CO2_coeff = {0.38041E1, -0.27808E1, 0.11672E1, -0.284910E0, 0.38163E-1, -0.26292E-2, 0.73662E-4};
41 constexpr
static std::array<double, 5> CH4_coeff = {6.6334E0, -3.5686E-3, 1.6682E-8, 2.5611E-10, -2.6558E-14};
42 constexpr
static std::array<double, 5> CO_1_coeff = {4.7869E0, -6.953E-2, 2.95775E-4, -4.25732E-7, 2.02894E-10};
43 constexpr
static std::array<double, 5> CO_2_coeff = {1.0091E1, -1.183E-2, 4.7753E-6, -5.87209E-10, -2.5334E-14};
44 constexpr
static double MWC = 1.2010700e+01;
45 constexpr
static double MWO = 1.599940e+01;
46 constexpr
static double MWH = 1.007940e+00;
47 constexpr
static double UGC = 8314.4;
48 constexpr
static double MWCO = MWC + MWO;
49 constexpr
static double MWCO2 = MWC + 2. * MWO;
50 constexpr
static double MWCH4 = MWC + 4. * MWH;
51 constexpr
static double MWH2O = 2. * MWH + MWO;
61 static PetscErrorCode ZimmerEmissionTemperatureFunction(
const PetscReal conserved[], PetscReal temperature, PetscReal* epsilon,
void* ctx);
69 static PetscErrorCode ZimmerAbsorptionTemperatureFunction(
const PetscReal conserved[], PetscReal temperature, PetscReal* kappa,
void* ctx);
72 explicit Zimmer(std::shared_ptr<eos::EOS> eosIn, PetscReal upperLimitIn = 0, PetscReal lowerLimitIn = 0);
74 void operator=(
const Zimmer&) =
delete;
86 PetscReal upperLimitStored;
87 PetscReal lowerLimitStored;
Definition: radiationProperties.hpp:11
Definition: zimmer.hpp:14
ThermodynamicTemperatureFunction GetRadiationPropertiesTemperatureFunction(RadiationProperty property, const std::vector< domain::Field > &fields) const override
Definition: zimmer.cpp:83
PetscInt GetFieldComponentOffset(const std::string &str, const domain::Field &field) const
Definition: zimmer.cpp:136