MAIA bb96820c
Multiphysics at AIA
Loading...
Searching...
No Matches
FvSysEqnDetChem< nDim > Class Template Reference

Class containing the special methods of the detailed chemistry formulation. Inherits from the Navier-Stokes equation class. More...

#include <fvcartesiansyseqndetchem.h>

Inheritance diagram for FvSysEqnDetChem< nDim >:
[legend]
Collaboration diagram for FvSysEqnDetChem< nDim >:
[legend]

Classes

struct  AdditionalVariables
 Static indices for accessing additional variables. More...
 
struct  ConservativeVariables
 Static indices for accessing conservative variables in nDim spatial dimensions. More...
 
struct  FluxVariables
 Static indices for accessing flux variables. In this SysEqn identical to the conservative variables. More...
 
struct  NASACoefficients
 Stores all NASA coefficients. NASA coefficients are used to compute the cp and cv values. Additional, modified NASA coefficients are stored, which are used to compute the sensible energy. For now only valid for NASA-7 coefficients, which have low temperature and high temperature regions, each one described by a different polynomial. More...
 
struct  PrimitiveVariables
 Static indices for accessing primitive variables in nDim spatial dimensions. More...
 
struct  SpeciesProperties
 Struct for storing all relevant species information, which is read from a given mechanism file. More...
 
struct  SurfaceCoefficients
 Static indices for accessing surface coefficients. More...
 

Public Member Functions

 FvSysEqnDetChem (const MInt solverId, const MInt noSpecies)
 Construct a new FvSysEqnDetChem<nDim>::FvSysEqnDetChem object. More...
 
template<MInt stencil = AUSM>
void Ausm (const MInt orientation, const MFloat upwindCoefficient, const MFloat A, const MFloat *const leftVars, const MFloat *const rightVars, const MFloat *const srfcCoeff, MFloat *const flux)
 
void AusmBndryCorrection (const MInt orientation, const MFloat A, const MFloat *const leftVars, const MFloat *const rightVars, MFloat *const flux)
 
template<MInt stencil>
void viscousFlux (const MInt orientation, const MFloat A, const MFloat *const vars0, const MFloat *const vars1, const MFloat *const slope0, const MFloat *const slope1, const MFloat *const srfcCoeff, const MFloat f0, const MFloat f1, MFloat *const flux)
 
template<MInt stencil>
void viscousFlux (const MInt, const MFloat, const MBool, const MFloat *const, const MFloat *const, const MFloat *const, const MFloat *const, const MFloat *const, const MFloat *const, const MFloat *const, const MFloat *const, const MFloat *const, const MFloat, const MFloat, MFloat *const)
 
void viscousFluxFivePoint (const MInt orientation, const MFloat A, const MFloat *const vars0, const MFloat *const vars1, const MFloat *const slope0, const MFloat *const slope1, const MFloat *const srfcCoeff, const MFloat f0, const MFloat f1, MFloat *const flux)
 
void getSpeciesDiffusionMassFluxes (const MInt orientation, const MFloat *const vars0, const MFloat *const vars1, const MFloat *const slope0, const MFloat *const slope1, const MFloat *const srfcCoeff, const MFloat f0, const MFloat f1, std::vector< MFloat > &J, std::vector< MFloat > &dXdn, MFloat &dTdn, const MBool soretEffect)
 
void computeSurfaceCoefficients (const MInt RKStep, const MFloat *const vars0, const MFloat *const vars1, MFloat *const srfcCoeff, std::shared_ptr< Cantera::ThermoPhase > gas, std::shared_ptr< Cantera::Transport > trans)
 Computes the transport coefficients at the surface. These are then used in the computation of the surface diffusion fluxes. More...
 
void computeSpeciesReactionRates (const MFloat &m_timeStep, const MFloat &cellVolume, const MFloat *const pvarsCell, const MFloat *const avarsCell, MFloat *const reactionRatesCell, Cantera::IdealGasReactor *zeroD_reactor, Cantera::ReactorNet *zeroD_reactorNet, std::shared_ptr< Cantera::Solution > sol, std::shared_ptr< Cantera::ThermoPhase > gas)
 Computes the species reaction rates. A reactor is constructed at each cell, with equal thermodynamic state. The reactor content is then integrated in time and advanced by the same amount as the flow simulation. From the initial and final concentrations of species, a time averaged species reaction rate is computed, which can then be used in the species equations in the flow solver. More...
 
void computePrimitiveVariables (const MFloat *const cvarsCell, MFloat *const pvarsCell, const MFloat *const avarsCell)
 
void computeConservativeVariables (const MFloat *const pvarsCell, MFloat *const cvarsCell, const MFloat *const avarsCell)
 
void evaluateSensibleEnergy (MFloat &sensibleEnergy, const MFloat *const pvarsCell, const MFloat &meanMolarMass)
 Computes the sensible energy. Species sensible energy is computed as: e_s = Int(cv(T)dT) - R*T_ref/W_mean. More...
 
void iterateTemperature (MFloat &T, const MFloat *const cvarsCell, const MFloat *const pvarsCell, const MFloat *const avarsCell, const MFloat &velPOW2)
 Iterates the temperature from the sensible energy. Iteration is necessary, since the heat capacities are a function of temperature. The iteration is performed with a Newton iterative Method. More...
 
void computeMeanMolarWeight_PV (const MFloat *const pvarsCell, MFloat *const avarsCell)
 Computes the mean molar weight from the primitive variables at the cell. More...
 
void computeMeanMolarWeight_CV (const MFloat *const pvarsCell, MFloat *const avarsCell)
 Computes the mean molar weight from the conservative variables at the cell. More...
 
void computeGamma (const MFloat *const pvarsCell, MFloat *const avarsCell, std::shared_ptr< Cantera::ThermoPhase > gas)
 Computes gamma at the cell. Used for the computation of the time step. More...
 
MFloat computePhi (const MFloat *const Y)
 
std::vector< std::vector< MFloat > > conservativeSlopes (const MFloat *const pvarsCell, const MFloat *const cvarsCell, const MFloat *const avarsCell, const MFloat *const slopesCell)
 Reconstructs the conservative slopes from the primitive variables and primitive slopes at the cell. Used in the interpolation of the conservative variables unto the newly created leaf cells during the grid refinement step. More...
 
 FvSysEqnDetChem (const MInt solverId, const MInt noSpecies)
 
void evaluateSensibleEnergy (MFloat &, const MFloat *const, const MFloat &)
 
void computeMeanMolarWeight_PV (const MFloat *const, MFloat *const)
 
void computeMeanMolarWeight_CV (const MFloat *const, MFloat *const)
 
- Public Member Functions inherited from FvSysEqnNS< nDim >
 FvSysEqnNS (const MInt solverId, const MInt noSpecies)
 
template<MInt scheme = AUSM>
void Ausm (const MInt orientation, const MFloat upwindCoefficient, const MFloat A, const MFloat *const leftVars, const MFloat *const rightVars, const MFloat *const srfcCoeff, MFloat *const flux)
 
void Ausm_ (const MInt orientation, const MFloat upwindCoefficient, const MFloat A, const MFloat *const leftVars, const MFloat *const rightVars, const MFloat *const NotUsed(srfcCoeff), MFloat *const flux)
 
void AusmPlus_ (const MInt orientation, const MFloat upwindCoefficient, const MFloat A, const MFloat *const leftVars, const MFloat *const rightVars, const MFloat *const NotUsed(srfcCoeff), MFloat *const flux)
 
void Slau_ (const MInt orientation, const MFloat NotUsed(upwindCoefficient), const MFloat A, const MFloat *const leftVars, const MFloat *const rightVars, const MFloat *const NotUsed(srfcCoeff), MFloat *const flux)
 
void AusmBndryCorrection (const MInt orientation, const MFloat A, const MFloat *const leftVars, const MFloat *const rightVars, MFloat *const flux)
 
void AusmALECorrection (const MInt orientation, const MFloat A, MFloat *const flux, MFloat *const surfVars, const MFloat *const bndrySurfVars)
 
template<MInt centralizeScheme>
void centralizeSurfaceVariables (MFloat *const varL, MFloat *const varR, const MInt orientation, const MFloat levelFac)
 
template<MInt stencil>
void viscousFlux (const MInt orientation, const MFloat A, const MFloat *const vars0, const MFloat *const vars1, const MFloat *const slope0, const MFloat *const slope1, const MFloat *const srfcCoeff, const MFloat f0, const MFloat f1, MFloat *const flux)
 
template<MInt stencil>
void viscousFlux (const MInt orientation, const MFloat A, const MBool isBndry, const MFloat *const surfaceCoords, const MFloat *const coord0, const MFloat *const coord1, const MFloat *const cellVars0, const MFloat *const cellVars1, const MFloat *const vars0, const MFloat *const vars1, const MFloat *const slope0, const MFloat *const slope1, const MFloat f0, const MFloat f1, MFloat *const flux)
 
void viscousFluxFivePoint (const MInt orientation, const MFloat A, const MFloat *const vars0, const MFloat *const vars1, const MFloat *const slope0, const MFloat *const slope1, const MFloat *const NotUsed(srfcCoeff), const MFloat f0, const MFloat f1, MFloat *const flux)
 
void viscousFluxThreePoint (const MInt orientation, const MFloat A, const MBool isBndry, const MFloat *const surfaceCoords, const MFloat *const coord0, const MFloat *const coord1, const MFloat *const cellVars0, const MFloat *const cellVars1, const MFloat *const vars0, const MFloat *const vars1, const MFloat *const slope0, const MFloat *const slope1, const MFloat f0, const MFloat f1, MFloat *const flux)
 
void viscousFluxStabilized (const MInt orientation, const MFloat A, const MBool isBndry, const MFloat *const surfaceCoords, const MFloat *const coord0, const MFloat *const coord1, const MFloat *const cellVars0, const MFloat *const cellVars1, const MFloat *const vars0, const MFloat *const vars1, const MFloat *const slope0, const MFloat *const slope1, const MFloat f0, const MFloat f1, MFloat *const flux)
 Computes the viscous fluxes using a five-point stencil (less dissipative) blended with a compact stencil (increased stability). Short: (1-enhanceThreePointViscFluxFactor)*FIVE_POINT + enhanceThreePointViscFluxFactor*THREE_POINT Default for centralizeViscousFlux is 0.1 if not defined in property file. More...
 
template<MInt stencil>
void wmViscousFluxCorrection (const MInt orientation, const MFloat A, const MFloat *const vars0, const MFloat *const vars1, const MFloat *const slope0, const MFloat *const slope1, const MFloat f0, const MFloat f1, MFloat *const flux, MFloat const mue_wm)
 
void wmViscousFluxCorrectionFivePoint (const MInt orientation, const MFloat A, const MFloat *const vars0, const MFloat *const vars1, const MFloat *const slope0, const MFloat *const slope1, const MFloat f0, const MFloat f1, MFloat *const flux, MFloat const mue_wm)
 
void computePrimitiveVariables (const MFloat *const cvarsCell, MFloat *const pvarsCell, const MFloat *const NotUsed(avarsCell))
 
void computeConservativeVariables (const MFloat *const pvarsCell, MFloat *const cvarsCell, const MFloat *const NotUsed(avarsCell))
 
std::vector< std::vector< MFloat > > conservativeSlopes (const MFloat *const pvarsCell, const MFloat *const cvarsCell, const MFloat *const avarsCell, const MFloat *const slopesCell)
 
void computeVolumeForces (const MInt, MFloat *, MFloat *, const MFloat, const MFloat *const, const MInt, const MInt *const, const MFloat *const, const MInt, MFloat)
 
constexpr MFloat speedOfSound (const MFloat density, const MFloat pressure)
 Speed of sound: a = sqrt(gamma * pressure / density) More...
 
constexpr MFloat speedOfSoundSquared (const MFloat density, const MFloat pressure)
 speed of sound squared a^2 = gamma * pressure / density More...
 
constexpr MFloat speedOfSound (const MFloat temperature)
 Speed of sound: a = sqrt(T) More...
 
constexpr MFloat temperature_ES (const MFloat density, const MFloat pressure)
 Temperature: T = gamma * pressure / density (equation of state - ideal gas law) More...
 
constexpr MFloat pressure_ES (const MFloat temperture, const MFloat density)
 pressure: p = rho * T / gamma (equation of state - ideal gas law) More...
 
constexpr MFloat density_ES (const MFloat pressure, const MFloat temperature)
 density: rho = gamma * p / T (equation of state - ideal gas law) More...
 
constexpr MFloat temperature_IR (const MFloat Ma)
 Temperature: T = 1 / (1 + (gamma - 1)/2 * Ma^2) (isentropic relationship) More...
 
constexpr MFloat pressure_IR (const MFloat temperature)
 
constexpr MFloat pressure_IRit (const MFloat pressure, const MFloat massFlux)
 
constexpr MFloat density_IR (const MFloat temperature)
 density: rho = T^(1/(gamma -1 )) (isentropic relationship) More...
 
constexpr MFloat density_IR_P (const MFloat pressure)
 density: rho = (p * gamma)^(1/gamma) (isentropic relationship) More...
 
constexpr MFloat pressure (const MFloat density, const MFloat momentumDensitySquared, const MFloat energyDensity)
 
constexpr MFloat internalEnergy (const MFloat pressure, const MFloat density, const MFloat velocitySquared)
 
constexpr MFloat pressureEnergy (const MFloat pressure)
 
constexpr MFloat enthalpy (const MFloat pressure, const MFloat density)
 enthalpy from primitive variables More...
 
constexpr MFloat entropy (const MFloat pressure, const MFloat density)
 entropy from primitive variables More...
 
constexpr MFloat CroccoBusemann (const MFloat Ma, const MFloat x)
 Crocco-Busemann relation. More...
 
constexpr MFloat vanDriest (const MFloat Ma)
 van-Driest Transformation (correspods to R*H) More...
 
constexpr MFloat sutherlandLaw (const MFloat T)
 
MFloat computeTimeStepEulerMagnitude (const MFloat rho, const std::array< MFloat, nDim > u, const MFloat p, const MFloat C, const MFloat dx)
 
constexpr MFloat gamma_Ref ()
 
constexpr MFloat cp_Ref ()
 
constexpr MFloat cv_Ref ()
 
constexpr MFloat p_Ref ()
 
constexpr MFloat computeTimeStepDiffusion (const MFloat diffusion_coefficient, const MFloat C, const MFloat dx)
 

Public Attributes

SpeciesPropertiesm_species = nullptr
 
NASACoefficientsm_NASA = nullptr
 
ConservativeVariablesCV = nullptr
 
FluxVariablesFV = nullptr
 
PrimitiveVariablesPV = nullptr
 
AdditionalVariablesAV = nullptr
 
SurfaceCoefficientsSC = nullptr
 
MBool m_soretEffect
 
MString m_oxidizer
 
MString m_fuel
 
MFloat m_fuelOxidizerStochiometricRatio
 
MFloat m_muInfinity
 
MFloat m_Re0
 
- Public Attributes inherited from FvSysEqnNS< nDim >
MFloat m_Re0 = {}
 
MFloat m_muInfinity = {}
 
ConservativeVariablesCV = nullptr
 
FluxVariablesFV = nullptr
 
PrimitiveVariablesPV = nullptr
 
AdditionalVariablesAV = nullptr
 
SurfaceCoefficientsSC = nullptr
 

Static Public Attributes

static constexpr MBool hasAV = true
 
static constexpr MBool hasSC = true
 
- Static Public Attributes inherited from FvSysEqnNS< nDim >
static constexpr MInt m_noRansEquations = 0
 
static constexpr MInt m_ransModel = NORANS
 
static constexpr MBool hasAV = false
 
static constexpr MBool hasSC = false
 
static const MUint index0 [nDim]
 
static const MUint index1 [nDim]
 

Private Types

using Base = FvSysEqnNS< nDim >
 

Private Member Functions

void readProperties ()
 Reads important variable values from the properties.toml file. More...
 
void allocateNoDiffusionCoefficients (const MInt)
 Allocates the correct number of diffusion coefficients depending on the chosen diffusion model. Valid entries are "Multi" for multicomponent diffusion model and "Mix" for mixture-averaged model. More...
 

Static Private Member Functions

static constexpr std::array< MInt, nDim > getArray012 ()
 

Private Attributes

MFloat m_gasConstant
 
MFloat m_fGasConstant
 
MString m_reactionMechanism
 
MString m_transportModel
 
MString m_phaseName
 
MInt m_noSurfaceCoefficients
 
MInt m_noDiffusionCoefficients
 
MInt m_noThermalDiffusionCoefficients
 
MBool m_multiDiffusion
 
MBool m_computeSrfcCoeffsEveryRKStep
 
MUint m_noSpecies
 
MInt m_solverId
 
MFloat m_F1BGammaMinusOne
 
MFloat m_gamma
 
MFloat m_gammaMinusOne
 
MFloat m_gFGMOrPr
 
MFloat m_referenceTemperature
 
MFloat m_sutherlandConstant
 
MFloat m_sutherlandConstantThermal
 
MFloat m_sutherlandPlusOne
 
MFloat m_sutherlandPlusOneThermal
 

Static Private Attributes

static const MUint index0 [nDim]
 
static const MUint index1 [nDim]
 

Additional Inherited Members

- Protected Member Functions inherited from FvSysEqnNS< nDim >
void readProperties ()
 
- Static Protected Member Functions inherited from FvSysEqnNS< nDim >
static MFloat sgn (MFloat val)
 
static constexpr std::array< MInt, nDim > getArray012 ()
 
- Protected Attributes inherited from FvSysEqnNS< nDim >
MUint m_noSpecies
 
MInt m_solverId
 
MFloat m_gamma = 1.4
 
MFloat m_gammaMinusOne = m_gamma - 1
 
MFloat m_F1BGammaMinusOne = 1 / m_gammaMinusOne
 
MFloat m_FGammaBGammaMinusOne = m_gamma / m_gammaMinusOne
 
MFloat m_F1BGamma = 1 / m_gamma
 
MFloat m_Pr = 0.72
 
MFloat m_F1BPr = 1 / m_Pr
 
MFloat m_referenceTemperature = {}
 
MFloat m_sutherlandPlusOne = {}
 
MFloat m_sutherlandConstant = {}
 
MFloat m_sutherlandPlusOneThermal = {}
 
MFloat m_sutherlandConstantThermal = {}
 
MFloat m_gFGMOrPr = {}
 
MFloat m_enhanceThreePointViscFluxFactor {}
 
MFloat m_centralizeSurfaceVariablesFactor = 0.0
 

Detailed Description

template<MInt nDim>
class FvSysEqnDetChem< nDim >
Template Parameters
nDimNumber of dimensions

Definition at line 42 of file fvcartesiansyseqndetchem.h.

Member Typedef Documentation

◆ Base

template<MInt nDim>
using FvSysEqnDetChem< nDim >::Base = FvSysEqnNS<nDim>
private

Definition at line 128 of file fvcartesiansyseqndetchem.h.

Constructor & Destructor Documentation

◆ FvSysEqnDetChem() [1/2]

template<MInt nDim>
FvSysEqnDetChem< nDim >::FvSysEqnDetChem ( const MInt  solverId,
const MInt  noSpecies 
)
Template Parameters
nDimNumber of dimensions
Parameters
solverIdId of the solver
noSpeciesNumber of species

Definition at line 20 of file fvcartesiansyseqndetchem.cpp.

21 : FvSysEqnNS<nDim>(solverId, noSpecies) {
22 Cantera::addDirectory("/aia/opt/cantera/build/data");
23
24 CV = new ConservativeVariables(noSpecies);
25 PV = new PrimitiveVariables(noSpecies);
26 FV = new FluxVariables(noSpecies);
27
29
31
32 SC = new SurfaceCoefficients(noSpecies, m_noDiffusionCoefficients, m_noThermalDiffusionCoefficients);
33
34 m_species = new SpeciesProperties(noSpecies, *this);
35 m_NASA = new NASACoefficients(noSpecies, *this);
36
37 MFloat m_eps = 1.0e-10;
39 "Unequal reference temperature values in NASA coefficients and species standard enthalpy of formation");
40}
PrimitiveVariables * PV
SurfaceCoefficients * SC
void readProperties()
Reads important variable values from the properties.toml file.
ConservativeVariables * CV
void allocateNoDiffusionCoefficients(const MInt)
Allocates the correct number of diffusion coefficients depending on the chosen diffusion model....
SpeciesProperties * m_species
NASACoefficients * m_NASA
double MFloat
Definition: maiatypes.h:52

◆ FvSysEqnDetChem() [2/2]

template<MInt nDim>
FvSysEqnDetChem< nDim >::FvSysEqnDetChem ( const MInt  solverId,
const MInt  noSpecies 
)

Member Function Documentation

◆ allocateNoDiffusionCoefficients()

template<MInt nDim>
void FvSysEqnDetChem< nDim >::allocateNoDiffusionCoefficients ( const MInt  noSpecies)
private
Template Parameters
nDimNumber of dimensions
Parameters
noSpeciesNumber of species

Definition at line 113 of file fvcartesiansyseqndetchem.cpp.

113 {
115 case Multi: {
116 m_multiDiffusion = true;
117 m_noDiffusionCoefficients = noSpecies * noSpecies;
120 } break;
121 case Mix: {
122 m_multiDiffusion = false;
123 m_noDiffusionCoefficients = noSpecies;
126 } break;
127 default: {
128 mTerm(1, AT_, "Diffusion model in properties file does not match any implemented model. Terminating.");
129 } break;
130 }
131}
MInt string2enum(MString theString)
This global function translates strings in their corresponding enum values (integer values)....
Definition: enums.cpp:20
@ Multi
Definition: enums.h:186
@ Mix
Definition: enums.h:186
void mTerm(const MInt errorCode, const MString &location, const MString &message)
Definition: functions.cpp:29

◆ Ausm()

template<MInt nDim>
template<MInt stencil>
void FvSysEqnDetChem< nDim >::Ausm ( const MInt  orientation,
const MFloat  upwindCoefficient,
const MFloat  A,
const MFloat *const  leftVars,
const MFloat *const  rightVars,
const MFloat *const  srfcCoeff,
MFloat *const  flux 
)
inline

\TODO labels:FV,totest check sensible energy vs sensible enthalpy

Definition at line 376 of file fvcartesiansyseqndetchem.h.

378 {
379 // Multispecies specific variables and coefficients
380 const MFloat CP = srfcCoeff[SC->CP];
381
382 // compute detailed chemistry additional variables
383 MFloat fMeanMolarWeightL = 0.0;
384 MFloat fMeanMolarWeightR = 0.0;
385
386 for(MUint s = 0; s < PV->m_noSpecies; ++s) {
387 fMeanMolarWeightL += leftVars[PV->Y[s]] * m_species->fMolarMass[s];
388 fMeanMolarWeightR += rightVars[PV->Y[s]] * m_species->fMolarMass[s];
389 }
390
391 const MFloat meanMolarWeightL = F1 / fMeanMolarWeightL;
392 const MFloat meanMolarWeightR = F1 / fMeanMolarWeightR;
393 const MFloat specificGasConstantL = m_gasConstant * fMeanMolarWeightL;
394 const MFloat specificGasConstantR = m_gasConstant * fMeanMolarWeightR;
395 const MFloat CVL = CP - specificGasConstantL;
396 const MFloat CVR = CP - specificGasConstantR;
397 const MFloat gammaL = CP / CVL;
398 const MFloat gammaR = CP / CVR;
399
400 // catch the primitive variables rho and p,
401 // compute speed of sound, and interface mach number
402 const MFloat RHOL = leftVars[PV->RHO];
403 const MFloat PL = leftVars[PV->P];
404 const MFloat AL = sqrt(gammaL * mMax(MFloatEps, PL / mMax(MFloatEps, RHOL)));
405 const MFloat ML = leftVars[orientation] / AL;
406
407 const MFloat RHOR = rightVars[PV->RHO];
408 const MFloat PR = rightVars[PV->P];
409 const MFloat AR = sqrt(gammaR * mMax(MFloatEps, PR / mMax(MFloatEps, RHOR)));
410 const MFloat MR = rightVars[orientation] / AR;
411
412 // calculation of the resulting pressure and mach number on the surface
413 const MFloat MLR = 0.5 * (ML + MR);
414 const MFloat PLR = PL * (0.5 + upwindCoefficient * ML) + PR * (0.5 - upwindCoefficient * MR);
415
416 // calculation of the left and right rho*a
417 const MFloat RHO_AL = RHOL * AL;
418 const MFloat RHO_AR = RHOR * AR;
419
420 // calculation of the resulting mass flux through the surface
421 const MFloat RHO_U2 = 0.25 * (MLR * (RHO_AL + RHO_AR) + fabs(MLR) * (RHO_AL - RHO_AR));
422 const MFloat AbsRHO_U2 = fabs(RHO_U2);
423
424 // velocity magnitudes
425 const MFloat U2L = std::inner_product(&leftVars[PV->U], &leftVars[PV->U] + nDim, &leftVars[PV->U], 0.0);
426 const MFloat U2R = std::inner_product(&rightVars[PV->U], &rightVars[PV->U] + nDim, &rightVars[PV->U], 0.0);
427
429 // Compute left sensible energy value
430 MFloat sensibleEnergyL = F0;
431 this->evaluateSensibleEnergy(sensibleEnergyL, leftVars, meanMolarWeightL);
432
433 // Compute right sensible energy value
434 MFloat sensibleEnergyR = F0;
435 this->evaluateSensibleEnergy(sensibleEnergyR, rightVars, meanMolarWeightR);
436
437 const MFloat PLfRHOL = PL / RHOL;
438 const MFloat PRfRHOR = PR / RHOR;
439
440 const MFloat e0 = sensibleEnergyL + 0.5 * U2L + PLfRHOL;
441 const MFloat e1 = sensibleEnergyR + 0.5 * U2R + PRfRHOR;
442
443 std::array<MFloat, nDim> pFactor{};
444 pFactor[orientation] = 1.0;
445
446 for(MUint n = 0; n < nDim; n++) {
447 flux[FV->RHO_VV[n]] = (RHO_U2 * (leftVars[PV->VV[n]] + rightVars[PV->VV[n]])
448 + AbsRHO_U2 * (leftVars[PV->VV[n]] - rightVars[PV->VV[n]]) + PLR * pFactor[n])
449 * A;
450 }
451
452 flux[FV->RHO_E] = (RHO_U2 * (e0 + e1) + AbsRHO_U2 * (e0 - e1)) * A;
453 flux[FV->RHO] = 2.0 * RHO_U2 * A;
454
455 for(MUint s = 0; s < PV->m_noSpecies; ++s) {
456 const MFloat YsL = leftVars[PV->Y[s]];
457 const MFloat YsR = rightVars[PV->Y[s]];
458 flux[FV->RHO_Y[s]] = (RHO_U2 * (YsL + YsR) + AbsRHO_U2 * (YsL - YsR)) * A;
459 }
460}
void evaluateSensibleEnergy(MFloat &sensibleEnergy, const MFloat *const pvarsCell, const MFloat &meanMolarMass)
Computes the sensible energy. Species sensible energy is computed as: e_s = Int(cv(T)dT) - R*T_ref/W_...
constexpr T mMax(const T &x, const T &y)
Definition: functions.h:94
uint32_t MUint
Definition: maiatypes.h:63
static constexpr std::array< MInt, nDim > RHO_VV
static constexpr std::array< MInt, nDim > VV

◆ AusmBndryCorrection()

template<MInt nDim>
void FvSysEqnDetChem< nDim >::AusmBndryCorrection ( const MInt  orientation,
const MFloat  A,
const MFloat *const  leftVars,
const MFloat *const  rightVars,
MFloat *const  flux 
)
inline

Definition at line 463 of file fvcartesiansyseqndetchem.h.

465 {
466 const MFloat PL = leftVars[PV->P];
467 const MFloat PR = rightVars[PV->P];
468 const MFloat PLR = 0.5 * (PR + PL);
469
470 std::array<MFloat, nDim> pFactor{};
471 pFactor[orientation] = 1.0;
472
473 for(MUint n = 0; n < nDim; n++) {
474 flux[FV->RHO_VV[n]] = PLR * pFactor[n] * A;
475 }
476
477 flux[FV->RHO_E] = 0.0;
478 flux[FV->RHO] = 0.0;
479
480 // Flux calculation for species transport
481 // TODO labels:FV @Julian, Make noSpecies constexpr
482 for(MUint s = 0; s < PV->m_noSpecies; ++s) {
483 flux[FV->RHO_Y[s]] = 0.0;
484 }
485}

◆ computeConservativeVariables()

template<MInt nDim>
void FvSysEqnDetChem< nDim >::computeConservativeVariables ( const MFloat *const  pvarsCell,
MFloat *const  cvarsCell,
const MFloat *const  avarsCell 
)
inline

Definition at line 816 of file fvcartesiansyseqndetchem.h.

818 {
819 // Compute rho v
820 MFloat velPOW2 = F0;
821 for(MInt vel = 0; vel < nDim; ++vel) {
822 const MFloat v = pvarsCell[vel];
823 cvarsCell[vel] = v * pvarsCell[PV->RHO];
824 velPOW2 += POW2(v);
825 }
826
827 // Copy the density
828 cvarsCell[CV->RHO] = pvarsCell[PV->RHO];
829
830 MFloat sensibleEnergy = F0;
831 evaluateSensibleEnergy(sensibleEnergy, pvarsCell, avarsCell[AV->W_MEAN]);
832
833 cvarsCell[CV->RHO_E] = pvarsCell[PV->RHO] * sensibleEnergy + F1B2 * pvarsCell[PV->RHO] * velPOW2;
834
835 // compute rho Yi
836 for(MUint s = 0; s < PV->m_noSpecies; ++s) {
837 cvarsCell[CV->RHO_Y[s]] = pvarsCell[PV->Y[s]] * pvarsCell[PV->RHO];
838 }
839}
AdditionalVariables * AV
constexpr Real POW2(const Real x)
Definition: functions.h:119
int32_t MInt
Definition: maiatypes.h:62

◆ computeGamma()

template<MInt nDim>
void FvSysEqnDetChem< nDim >::computeGamma ( const MFloat *const  pvarsCell,
MFloat *const  avarsCell,
std::shared_ptr< Cantera::ThermoPhase >  gas 
)
inline
Template Parameters
nDimNumber of dimensions
Parameters
pvarsCellPointer to the primitive variables at the cell
avarsCellPointer to the additional variables at the cell
gasPointer to the Cantera::ThermoPhase object

Definition at line 950 of file fvcartesiansyseqndetchem.h.

951 {
952 const MFloat T = pvarsCell[PV->P] / pvarsCell[PV->RHO] * avarsCell[AV->W_MEAN] * m_fGasConstant;
953
954 gas->setState_TPY(T, pvarsCell[PV->P], &pvarsCell[PV->Y[0]]);
955
956 const MFloat Cp = gas->cp_mass();
957 const MFloat Cv = Cp - m_gasConstant / avarsCell[AV->W_MEAN];
958
959 avarsCell[AV->GAMMA] = Cp / Cv;
960}

◆ computeMeanMolarWeight_CV() [1/2]

template<MInt nDim>
void FvSysEqnDetChem< nDim >::computeMeanMolarWeight_CV ( const MFloat *const  cvarsCell,
MFloat *const  avarsCell 
)
inline
Template Parameters
nDimNumber of dimensions
Parameters
cvarsCellPointer to the conservative variables at the cell
avarsCellPointer to the additional variables at the cell

Definition at line 1120 of file fvcartesiansyseqndetchem.h.

1120 {
1121 MFloat fMeanMolarWeight = F0;
1122 for(MUint s = 0; s < PV->m_noSpecies; ++s) {
1123 MFloat fRho = F1 / cvarsCell[CV->RHO];
1124 const MFloat Y_s = fRho * cvarsCell[CV->RHO_Y[s]];
1125 fMeanMolarWeight += Y_s * m_species->fMolarMass[s];
1126 }
1127 avarsCell[AV->W_MEAN] = (F1 / fMeanMolarWeight);
1128}

◆ computeMeanMolarWeight_CV() [2/2]

template<MInt nDim>
void FvSysEqnDetChem< nDim >::computeMeanMolarWeight_CV ( const MFloat * const  ,
MFloat * const   
)

◆ computeMeanMolarWeight_PV() [1/2]

template<MInt nDim>
void FvSysEqnDetChem< nDim >::computeMeanMolarWeight_PV ( const MFloat *const  pvarsCell,
MFloat *const  avarsCell 
)
inline
Template Parameters
nDimNumber of dimensions
Parameters
pvarsCellPointer to the primitive variables at the cell
avarsCellPointer to the additional variables at the cell

Definition at line 1138 of file fvcartesiansyseqndetchem.h.

1138 {
1139 MFloat fMeanMolarWeight = F0;
1140 for(MUint s = 0; s < PV->m_noSpecies; ++s) {
1141 fMeanMolarWeight += pvarsCell[PV->Y[s]] * m_species->fMolarMass[s];
1142 }
1143 avarsCell[AV->W_MEAN] = (F1 / fMeanMolarWeight);
1144}

◆ computeMeanMolarWeight_PV() [2/2]

template<MInt nDim>
void FvSysEqnDetChem< nDim >::computeMeanMolarWeight_PV ( const MFloat * const  ,
MFloat * const   
)

◆ computePhi()

template<MInt nDim>
MFloat FvSysEqnDetChem< nDim >::computePhi ( const MFloat *const  Y)
inline

Definition at line 1147 of file fvcartesiansyseqndetchem.h.

1147 {
1148 MInt indexOxidizer = m_species->speciesMap[m_oxidizer];
1149 MInt indexFuel = m_species->speciesMap[m_fuel];
1150
1151 MFloat stochiometricMolarMassRatio = m_species->molarMass[indexFuel] / m_species->molarMass[indexOxidizer];
1152
1153 MFloat phi = (Y[indexFuel] / Y[indexOxidizer]) / (m_fuelOxidizerStochiometricRatio * stochiometricMolarMassRatio);
1154
1155 return phi;
1156}
std::map< std::string, MInt > speciesMap

◆ computePrimitiveVariables()

template<MInt nDim>
void FvSysEqnDetChem< nDim >::computePrimitiveVariables ( const MFloat *const  cvarsCell,
MFloat *const  pvarsCell,
const MFloat *const  avarsCell 
)
inline

Definition at line 676 of file fvcartesiansyseqndetchem.h.

677 {
678 const MFloat fRho = F1 / cvarsCell[CV->RHO];
679
680 MFloat velPOW2 = F0;
681 for(MInt n = 0; n < nDim; ++n) { // compute velocity
682 pvarsCell[PV->VV[n]] = cvarsCell[CV->RHO_VV[n]] * fRho;
683 velPOW2 += POW2(pvarsCell[PV->VV[n]]);
684 }
685
686 // Density
687 pvarsCell[PV->RHO] = cvarsCell[CV->RHO];
688
689 // Compute the species
690 for(MUint s = 0; s < PV->m_noSpecies; ++s) {
691 pvarsCell[PV->Y[s]] = mMax(F0, mMin(F1, cvarsCell[CV->RHO_Y[s]] * fRho));
692 }
693
694 MFloat T = F0;
695 iterateTemperature(T, cvarsCell, pvarsCell, avarsCell, velPOW2);
696
697 pvarsCell[PV->P] = pvarsCell[PV->RHO] * T * m_gasConstant / avarsCell[AV->W_MEAN];
698
699#ifndef NDEBUG
700 if(isnan(pvarsCell[PV->P]) || isnan(pvarsCell[PV->RHO]) || isnan(T)) {
701 std::cout << "FvSysEqnDetChem<nDim>::computePrimitiveVariables has NaN value. T: " << T
702 << ", rho: " << pvarsCell[PV->RHO] << ", p: " << pvarsCell[PV->P] << std::endl;
703 }
704
705 if(pvarsCell[PV->P] < 0 || pvarsCell[PV->RHO] < 0 || T < 0) {
706 std::cout << "FvSysEqnDetChem<nDim>::computePrimitiveVariables has negative value. T: " << T
707 << ", rho: " << pvarsCell[PV->RHO] << ", p: " << pvarsCell[PV->P] << std::endl;
708 }
709#endif
710}
void iterateTemperature(MFloat &T, const MFloat *const cvarsCell, const MFloat *const pvarsCell, const MFloat *const avarsCell, const MFloat &velPOW2)
Iterates the temperature from the sensible energy. Iteration is necessary, since the heat capacities ...
constexpr T mMin(const T &x, const T &y)
Definition: functions.h:90

◆ computeSpeciesReactionRates()

template<MInt nDim>
void FvSysEqnDetChem< nDim >::computeSpeciesReactionRates ( const MFloat m_timeStep,
const MFloat cellVolume,
const MFloat *const  pvarsCell,
const MFloat *const  avarsCell,
MFloat *const  reactionRatesCell,
Cantera::IdealGasReactor *  zeroD_reactor,
Cantera::ReactorNet *  zeroD_reactorNet,
std::shared_ptr< Cantera::Solution >  sol,
std::shared_ptr< Cantera::ThermoPhase >  gas 
)
inline
Template Parameters
nDim
Parameters
m_timeStepCurrent time step of the flow solver
cellVolumeVolume of the computational cell
pvarsCellPointer to the primitive variables at the cell
avarsCellPointer to the additional variables at the cell
reactionRatesCellPointer to the reaction rates at the cell
zeroD_reactorPointer to the Cantera::Reactor object
zeroD_reactorNetPointer to the Cantera::ReactorNet object
solPointer to the Cantera::Solution object
gasPointer to the Cantera::ThermoPhase object

Definition at line 859 of file fvcartesiansyseqndetchem.h.

863 {
864 const MFloat p = pvarsCell[PV->P];
865 const MFloat rho = pvarsCell[PV->RHO];
866 const MFloat meanMolarMass = avarsCell[AV->W_MEAN];
867 const MFloat T = p / rho * meanMolarMass * m_fGasConstant;
868
869 gas->setState_TPY(T, p, &pvarsCell[PV->Y[0]]);
870
871 zeroD_reactor->insert(sol);
872 zeroD_reactorNet->setInitialTime(0.0);
873
874 const MFloat timeStep = m_timeStep;
875 const MFloat reactorDensity_t0 = zeroD_reactor->density();
876
877 zeroD_reactorNet->advance(timeStep);
878
879 auto reactorMassFractions = zeroD_reactor->massFractions();
880 const MFloat reactorDensity = zeroD_reactor->density();
881
882 MFloat C_k_t_0, C_k_deltaT;
883 for(MUint s = 0; s < PV->m_noSpecies; s++) {
884 C_k_t_0 = pvarsCell[PV->Y[s]] * reactorDensity_t0 * m_species->fMolarMass[s];
885 C_k_deltaT = reactorMassFractions[s] * reactorDensity * m_species->fMolarMass[s];
886 reactionRatesCell[s] = ((C_k_deltaT - C_k_t_0) / (timeStep)) * m_species->molarMass[s];
887 }
888}
constexpr std::underlying_type< FcCell >::type p(const FcCell property)
Converts property name to underlying integer value.

◆ computeSurfaceCoefficients()

template<MInt nDim>
void FvSysEqnDetChem< nDim >::computeSurfaceCoefficients ( const MInt  RKStep,
const MFloat *const  vars0,
const MFloat *const  vars1,
MFloat *const  srfcCoeff,
std::shared_ptr< Cantera::ThermoPhase >  gas,
std::shared_ptr< Cantera::Transport >  trans 
)
inline
Template Parameters
nDimNumber of dimensions
Parameters
RKStepCurrent Runge-Kutta step
vars0Pointer to the primitive variables at one side of the surface
vars1Pointer to the primitive variables at the other side of the surface
srfcCoeffPointer to the surface coefficients at the surface
gasPointer to the Cantera::ThermoPhase object
transPointer to the Cantera::Transport object

Definition at line 903 of file fvcartesiansyseqndetchem.h.

906 {
907 // Compute mean molar mass and store species vector
908 std::vector<MFloat> Y_k(PV->m_noSpecies, F0);
909 MFloat fMeanMolarMass = F0;
910 for(MUint s = 0; s < PV->m_noSpecies; ++s) {
911 Y_k[s] = F1B2 * (vars0[PV->Y[s]] + vars1[PV->Y[s]]);
912 fMeanMolarMass += Y_k[s] * m_species->fMolarMass[s];
913 }
914
915 srfcCoeff[SC->W_MEAN] = F1 / fMeanMolarMass;
916
917 // Compute the rest of surface coefficients only at RKStep 0
918 if(RKStep == 0 || m_computeSrfcCoeffsEveryRKStep) {
919 const MFloat p = F1B2 * (vars0[PV->P] + vars1[PV->P]);
920 const MFloat rho = F1B2 * (vars0[PV->RHO] + vars1[PV->RHO]);
921 const MFloat T = p / rho * srfcCoeff[SC->W_MEAN] * m_fGasConstant;
922
923 // Set thermodynamic state of the gas
924 gas->setState_TPY(T, p, &Y_k[0]);
925
926 srfcCoeff[SC->CP] = gas->cp_mass();
927
928 srfcCoeff[SC->MU] = trans->viscosity();
929 srfcCoeff[SC->LAMBDA] = trans->thermalConductivity();
930
931 if(m_multiDiffusion) {
932 // fortran ordering for multicomponent coefficients!
933 trans->getMultiDiffCoeffs(PV->m_noSpecies, &srfcCoeff[SC->D[0]]);
934 trans->getThermalDiffCoeffs(&srfcCoeff[SC->DT[0]]);
935 } else {
936 trans->getMixDiffCoeffs(&srfcCoeff[SC->D[0]]);
937 }
938 }
939}

◆ conservativeSlopes()

template<MInt nDim>
std::vector< std::vector< MFloat > > FvSysEqnDetChem< nDim >::conservativeSlopes ( const MFloat *const  pvarsCell,
const MFloat *const  cvarsCell,
const MFloat *const  avarsCell,
const MFloat *const  slopesCell 
)
inline
Template Parameters
nDimNumber of dimensions
Parameters
pvarsCellPointer to the primitive variables at the cell
cvarsCellPointer to the conservative variables at the cell
avarsCellPointer to the additional variables at the cell
slopesCellPointer to the primitive slopes at the cell
Returns
std::vector<std::vector<MFloat>> Returns a vector of vectors with dimensions noVariables * nDim

Definition at line 975 of file fvcartesiansyseqndetchem.h.

976 {
977 MFloat U2 = F0;
978 for(MInt i = 0; i < nDim; i++) {
979 U2 += POW2(pvarsCell[PV->VV[i]]);
980 }
981
982 std::vector<std::vector<MFloat>> dQ(PV->noVariables, std::vector<MFloat>(nDim));
983 for(MInt d = 0; d < nDim; d++) {
984 MFloat term1 = F0, term2 = F0, term3 = F0;
985 const MFloat meanMolarMass = avarsCell[AV->W_MEAN];
986 const MFloat T = pvarsCell[PV->P] / pvarsCell[PV->RHO] * meanMolarMass * m_fGasConstant;
987 const MBool isLowTempRegion = (T < m_NASA->transitionTemp);
988
989 const MFloat* const NASACoeffs = isLowTempRegion ? ALIGNED_F(m_NASA->lowTemp) : ALIGNED_F(m_NASA->highTemp);
990 const MFloat* const NASAIntegralCoeffs =
991 isLowTempRegion ? ALIGNED_F(m_NASA->integralLowTemp) : ALIGNED_F(m_NASA->integralHighTemp);
992 const MFloat* const NASAIntegralConstants = isLowTempRegion ? ALIGNED_F(m_NASA->lowTempIntegrationConstantsEnergy)
993 : ALIGNED_F(m_NASA->highTempIntegrationConstantsEnergy);
994
995
996 MFloat dT0Term = F0;
997 MFloat sensibleEnergy = F0;
998 dT0Term += slopesCell[PV->RHO * nDim + d] * m_gasConstant * m_NASA->referenceTemp / meanMolarMass;
999 for(MUint s = 0; s < PV->m_noSpecies; s++) {
1000 dT0Term += pvarsCell[PV->RHO] * m_gasConstant * m_NASA->referenceTemp * slopesCell[PV->Y[s] * nDim + d]
1001 * m_species->fMolarMass[s];
1002 }
1003
1004 MFloat summ_YIntCvdT = F0;
1005 MFloat summ_dYIntCvdT = F0;
1006 for(MUint s = 0; s < PV->m_noSpecies; s++) {
1007 const MInt offsetIntegralCoeffs = m_NASA->noNASACoefficientsCpPolynomial * s;
1008
1009 // Calculate NASA polynomial for species s
1010 MFloat IntCvdT = F0;
1011 MFloat NASAIntegralPolynomial = F0;
1012
1013 // Horner's rule for polynomials
1014 for(MInt i = 4; i >= 0; --i) {
1015 NASAIntegralPolynomial = NASAIntegralPolynomial * T + NASAIntegralCoeffs[offsetIntegralCoeffs + i];
1016 }
1017
1018 NASAIntegralPolynomial *= m_species->specificGasConstant[s];
1019 NASAIntegralPolynomial = (NASAIntegralPolynomial - m_species->specificGasConstant[s]) * T;
1020 IntCvdT = NASAIntegralPolynomial - NASAIntegralConstants[s];
1021 sensibleEnergy += pvarsCell[PV->Y[s]] * IntCvdT;
1022 summ_YIntCvdT += IntCvdT * pvarsCell[PV->Y[s]];
1023 summ_dYIntCvdT += IntCvdT * slopesCell[PV->Y[s] * nDim + d];
1024 }
1025
1026 term1 = slopesCell[PV->RHO * nDim + d] * summ_YIntCvdT;
1027 term2 = pvarsCell[PV->RHO] * summ_dYIntCvdT;
1028
1029 //#####################################
1030 MFloat summSpeciesGradients = F0;
1031 for(MUint s = 0; s < PV->m_noSpecies; s++) {
1032 summSpeciesGradients += m_species->fMolarMass[s] * slopesCell[PV->Y[s] * nDim + d];
1033 }
1034
1035 const MFloat dW_dx = -(POW2(avarsCell[AV->W_MEAN])) * summSpeciesGradients;
1036
1037 const MFloat dT_dx = m_fGasConstant
1038 * (pvarsCell[PV->P] / pvarsCell[PV->RHO] * dW_dx
1039 + F1 / pvarsCell[PV->RHO] * meanMolarMass
1040 * (slopesCell[PV->P * nDim + d]
1041 - pvarsCell[PV->P] / pvarsCell[PV->RHO] * slopesCell[PV->RHO * nDim + d]));
1042
1043 // MFloat term3sub1 = F0, term3sub2 = F0;
1044 MFloat term3sub2 = F0;
1045 for(MUint s = 0; s < PV->m_noSpecies; s++) {
1046 // const MInt offsetIntegralCoeffs = m_NASA->noNASACoefficientsCpPolynomial * s;
1047 const MInt offsetNASAPolynomial = m_NASA->noNASACoefficients * s;
1048 /*
1049 MFloat intdCvdT = F0;
1050 MFloat integrationConstant = F0;
1051 //Cp = F0;
1052 MFloat t2 = F0, t1 = F0;
1053 for(MInt i = 1; i < m_NASA->noNASACoefficientsCpPolynomial; ++i) {
1054 if (isLowTempRegion) {
1055 //intdCvdT = intdCvdT * T + NASACoeffs[offsetNASAPolynomial + i];
1056 //integrationConstant = integrationConstant * m_NASA->referenceTemp + NASACoeffs[offsetNASAPolynomial + i];
1057 intdCvdT += m_species->specificGasConstant[s] * NASACoeffs[offsetNASAPolynomial + i] * std::pow(T, MFloat(i));
1058 integrationConstant += m_species->specificGasConstant[s] * NASACoeffs[offsetNASAPolynomial + i] *
1059 std::pow(m_NASA->referenceTemp, MFloat(i)); } else { intdCvdT += m_species->specificGasConstant[s] *
1060 NASACoeffs[offsetNASAPolynomial + i] * std::pow(T, MFloat(i)); integrationConstant +=
1061 m_species->specificGasConstant[s] * NASACoeffs[offsetNASAPolynomial + i] * std::pow(m_NASA->transitionTemp,
1062 MFloat(i)); t2 += m_species->specificGasConstant[s] * m_NASA->lowTemp[offsetNASAPolynomial + i] *
1063 std::pow(m_NASA->transitionTemp, MFloat(i)); t1 += m_species->specificGasConstant[s] *
1064 m_NASA->lowTemp[offsetNASAPolynomial + i] * std::pow(m_NASA->referenceTemp, MFloat(i)); integrationConstant += t1
1065 - t2;
1066 }
1067 }
1068
1069 term3sub1 += pvarsCell[PV->RHO] * pvarsCell[PV->Y[s]] * dT_dx * (intdCvdT - integrationConstant);*/
1070
1071 MFloat Cv = F0;
1072 for(MInt i = 4; i >= 0; --i) {
1073 Cv = Cv * T + NASACoeffs[offsetNASAPolynomial + i];
1074 }
1075
1076 // this computes heat capacity an constant pressure (cp)
1078
1079 // this corrects the value to heat capacity at constant volume (cv = cp - R_k)
1081
1082 term3sub2 += pvarsCell[PV->RHO] * pvarsCell[PV->Y[s]] * Cv * dT_dx;
1083 }
1084
1085 term3 = term3sub2;
1086
1087 MFloat sensibleEnergyTerm = term1 + term2 + term3 - dT0Term;
1088
1089 MFloat velocityTerm = F1B2 * U2 * slopesCell[PV->RHO * nDim + d];
1090
1091 for(MInt j = 0; j < nDim; j++) {
1092 velocityTerm += pvarsCell[PV->RHO] * pvarsCell[PV->VV[j]] * slopesCell[PV->VV[j] * nDim + d]; // to change
1093 }
1094
1095 dQ[CV->RHO_E][d] = sensibleEnergyTerm + velocityTerm;
1096
1097 dQ[CV->RHO][d] = slopesCell[PV->RHO * nDim + d];
1098
1099 for(MInt j = 0; j < nDim; j++) {
1100 dQ[CV->RHO_VV[j]][d] =
1101 pvarsCell[PV->VV[j]] * slopesCell[PV->RHO * nDim + d] + pvarsCell[PV->RHO] * slopesCell[PV->VV[j] * nDim + d];
1102 }
1103 for(MUint s = 0; s < PV->m_noSpecies; ++s) {
1104 dQ[CV->RHO_Y[s]][d] =
1105 pvarsCell[PV->Y[s]] * slopesCell[PV->RHO * nDim + d] + pvarsCell[PV->RHO] * slopesCell[PV->Y[s] * nDim + d];
1106 }
1107 }
1108
1109 return dQ;
1110}
bool MBool
Definition: maiatypes.h:58
static constexpr MInt noNASACoefficientsCpPolynomial

◆ evaluateSensibleEnergy() [1/2]

template<MInt nDim>
void FvSysEqnDetChem< nDim >::evaluateSensibleEnergy ( MFloat ,
const MFloat * const  ,
const MFloat  
)

◆ evaluateSensibleEnergy() [2/2]

template<MInt nDim>
void FvSysEqnDetChem< nDim >::evaluateSensibleEnergy ( MFloat sensibleEnergy,
const MFloat *const  pvarsCell,
const MFloat meanMolarMass 
)
inline
Template Parameters
nDimNumber of dimensions
Parameters
sensibleEnergySensible energy
pvarsCellPointer to the primitive variables at the cell
meanMolarMassMean molar mass at the cell

Definition at line 786 of file fvcartesiansyseqndetchem.h.

787 {
788 const MFloat T = pvarsCell[PV->P] / pvarsCell[PV->RHO] * meanMolarMass * m_fGasConstant;
789 const MBool isLowTempRegion = (T < m_NASA->transitionTemp);
790
791 const MFloat* const NASAIntegralCoeffs =
792 isLowTempRegion ? ALIGNED_F(m_NASA->integralLowTemp) : ALIGNED_F(m_NASA->integralHighTemp);
793 const MFloat* const NASAIntegralConstants = isLowTempRegion ? ALIGNED_F(m_NASA->lowTempIntegrationConstantsEnergy)
794 : ALIGNED_F(m_NASA->highTempIntegrationConstantsEnergy);
795
796 for(MUint s = 0; s < PV->m_noSpecies; s++) {
797 MInt offsetIntegralCoeffs = m_NASA->noNASACoefficientsCpPolynomial * s;
798
799 // Calculate NASA polynomial for species s with the Horner's rule
800 MFloat sensibleEnergySpecies = F0, NASAIntegralPolynomial = F0;
801 for(MInt i = 4; (i < 5) && (i >= 0); --i) {
802 NASAIntegralPolynomial = NASAIntegralPolynomial * T + NASAIntegralCoeffs[offsetIntegralCoeffs + i];
803 }
804
805 NASAIntegralPolynomial *= m_species->specificGasConstant[s];
806 NASAIntegralPolynomial = (NASAIntegralPolynomial - m_species->specificGasConstant[s]) * T;
807 sensibleEnergySpecies = NASAIntegralPolynomial - NASAIntegralConstants[s];
808 sensibleEnergy += sensibleEnergySpecies * pvarsCell[PV->Y[s]];
809 }
810
811 // Substract zero level sensible energy
812 sensibleEnergy -= m_gasConstant * m_NASA->referenceTemp / meanMolarMass;
813}

◆ getArray012()

template<MInt nDim>
static constexpr std::array< MInt, nDim > FvSysEqnNS< nDim >::getArray012 ( )
inlinestaticconstexprprivate

Definition at line 316 of file fvcartesiansyseqnns.h.

316 {
317 IF_CONSTEXPR(nDim == 2) {
318 std::array<MInt, 2> a = {0, 1};
319 return a;
320 }
321 else {
322 std::array<MInt, 3> a = {0, 1, 2};
323 return a;
324 }
325 }
Definition: contexttypes.h:19

◆ getSpeciesDiffusionMassFluxes()

template<MInt nDim>
void FvSysEqnDetChem< nDim >::getSpeciesDiffusionMassFluxes ( const MInt  orientation,
const MFloat *const  vars0,
const MFloat *const  vars1,
const MFloat *const  slope0,
const MFloat *const  slope1,
const MFloat *const  srfcCoeff,
const MFloat  f0,
const MFloat  f1,
std::vector< MFloat > &  J,
std::vector< MFloat > &  dXdn,
MFloat dTdn,
const MBool  soretEffect 
)
inline

Definition at line 602 of file fvcartesiansyseqndetchem.h.

605 {
606 std::vector<MFloat> speciesDiffusionMassFlux(PV->m_noSpecies, F0); // j_k
607 std::vector<MFloat> d(PV->m_noSpecies, F0);
608 std::vector<MFloat> VX(PV->m_noSpecies, F0);
609
610 const MFloat rho = F1B2 * (vars0[PV->RHO] + vars1[PV->RHO]);
611 const MFloat Frho = F1 / rho;
612 const MFloat p = F1B2 * (vars0[PV->P] + vars1[PV->P]);
613 const MFloat Fp = F1 / p;
614
615 const MFloat meanMolarMass = srfcCoeff[SC->W_MEAN];
616 const MFloat fMeanMolarMass = F1 / meanMolarMass;
617
618 // Compute the temperature through equation of state (ideal gas)
619 const MFloat T = p * Frho * meanMolarMass * m_fGasConstant;
620 const MFloat FT = F1 / T;
621
622 // Indices for the orientations
623 const MUint id0 = orientation;
624
625 const MUint sq0 = PV->P * nDim + id0;
626 const MUint sq1 = PV->RHO * nDim + id0;
627
628 const MFloat dPdn = f0 * slope0[sq0] + f1 * slope1[sq0];
629 const MFloat dRhodn = f0 * slope0[sq1] + f1 * slope1[sq1];
630
631 MFloat summSpeciesGradients = F0;
632 for(MUint s = 0; s < PV->m_noSpecies; s++) {
633 const MUint sqs = PV->Y[s] * nDim + id0;
634 summSpeciesGradients += m_species->fMolarMass[s] * (f0 * slope0[sqs] + f1 * slope1[sqs]);
635 }
636
637 const MFloat dWdn = -POW2(srfcCoeff[SC->W_MEAN]) * summSpeciesGradients;
638
639 for(MUint s = 0; s < PV->m_noSpecies; s++) {
640 const MUint sqs = PV->Y[s] * nDim + id0;
641 const MFloat Ys = F1B2 * (vars0[PV->Y[s]] + vars1[PV->Y[s]]);
642 dXdn[s] = m_species->fMolarMass[s] * (meanMolarMass * (f0 * slope0[sqs] + f1 * slope1[sqs]) + dWdn * Ys);
643 }
644
645 dTdn = m_fGasConstant * (p * Frho * dWdn + (Frho * meanMolarMass * (dPdn - p * Frho * dRhodn)));
646
647 for(MUint s = 0; s < PV->m_noSpecies; ++s) {
648 const MFloat Ys = F1B2 * (vars0[PV->Y[s]] + vars1[PV->Y[s]]);
649 d[s] = dXdn[s] + (meanMolarMass * m_species->fMolarMass[s] * Ys - Ys) * Fp * dPdn;
650 }
651
652 if(m_multiDiffusion) {
653 for(MUint s = 0; s < PV->m_noSpecies; ++s) {
654 for(MUint j = 0; j < PV->m_noSpecies; ++j) {
655 if(j == s) continue;
656 VX[s] += m_species->molarMass[j] * srfcCoeff[SC->D[PV->m_noSpecies * j + s]] * d[j];
657 }
658
659 VX[s] *= fMeanMolarMass;
660
661 if(soretEffect) VX[s] -= srfcCoeff[SC->DT[s]] * meanMolarMass * Frho * m_species->fMolarMass[s] * FT * dTdn;
662
663 J[s] = rho * m_species->molarMass[s] * fMeanMolarMass * VX[s];
664 }
665 } else {
666 for(MUint s = 0; s < PV->m_noSpecies; ++s) {
667 // TODO labels:FV check
668 VX[s] = -srfcCoeff[SC->D[s]] * dXdn[s];
669
670 J[s] = rho * m_species->molarMass[s] * fMeanMolarMass * VX[s];
671 }
672 }
673}

◆ iterateTemperature()

template<MInt nDim>
void FvSysEqnDetChem< nDim >::iterateTemperature ( MFloat T,
const MFloat *const  cvarsCell,
const MFloat *const  pvarsCell,
const MFloat *const  avarsCell,
const MFloat velPOW2 
)
inline
Template Parameters
nDimNumber of dimensions
Parameters
TTemperature, is given as
cvarsCellPointer to the conservative variables at the cell
pvarsCellPointer to the primitive variables at the cell
avarsCellPointer to the additional variables at the cell
velPOW2Absolute value of the velocity squared

Definition at line 724 of file fvcartesiansyseqndetchem.h.

726 {
727 const MFloat energyZeroLevel = m_gasConstant * m_species->referenceTemp / avarsCell[AV->W_MEAN];
728
729 MFloat LHS = cvarsCell[CV->RHO_E] / cvarsCell[CV->RHO] - F1B2 * velPOW2 + energyZeroLevel;
730
731 // TODO labels:FV Change to old variables and convergence check
732 // Supply initial temperature value to start iteration
733 MFloat T_n = 300.0;
734
735 for(MInt it = 0; it < 10; ++it) {
736 const MBool isLowTempRegion = (T_n < m_NASA->transitionTemp);
737 // Assigns relevant low or high temperature coefficients and integration constants
738 const MFloat* const NASACoeffs = isLowTempRegion ? ALIGNED_F(m_NASA->lowTemp) : ALIGNED_F(m_NASA->highTemp);
739 const MFloat* const NASAIntegralCoeffs =
740 isLowTempRegion ? ALIGNED_F(m_NASA->integralLowTemp) : ALIGNED_F(m_NASA->integralHighTemp);
741 const MFloat* const NASAIntegralConstants = isLowTempRegion ? ALIGNED_F(m_NASA->lowTempIntegrationConstantsEnergy)
742 : ALIGNED_F(m_NASA->highTempIntegrationConstantsEnergy);
743
744 MFloat T_nPlus1 = F0, f_xi = F0, fS_xi = F0;
745 for(MUint s = 0; s < PV->m_noSpecies; s++) {
746 const MInt offsetIntegralCoeffs = m_NASA->noNASACoefficientsCpPolynomial * s;
747 const MInt offsetNASAPolynomial = m_NASA->noNASACoefficients * s;
748 const MFloat Y_s = cvarsCell[CV->RHO_Y[s]] / cvarsCell[CV->RHO];
749 const MFloat specificGasConstant = m_species->specificGasConstant[s];
750
751 // Calculate NASA polynomial for species s with the Horner's rule
752 MFloat NASAIntegralPolynomial = F0, NASAPolynomial = F0;
753 for(MInt i = 4; (i < 5) && (i >= 0); i--) {
754 NASAIntegralPolynomial = NASAIntegralPolynomial * T_n + NASAIntegralCoeffs[offsetIntegralCoeffs + i];
755 NASAPolynomial = NASAPolynomial * T_n + NASACoeffs[offsetNASAPolynomial + i];
756 }
757
758 NASAIntegralPolynomial *= specificGasConstant;
759 NASAPolynomial *= specificGasConstant;
760
761 NASAIntegralPolynomial = (NASAIntegralPolynomial - specificGasConstant) * T_n;
762 NASAPolynomial -= specificGasConstant;
763
764 f_xi += NASAIntegralPolynomial * Y_s;
765 f_xi -= NASAIntegralConstants[s] * Y_s;
766 fS_xi += NASAPolynomial * Y_s;
767 }
768
769 f_xi -= LHS;
770 T_nPlus1 = T_n - (f_xi / fS_xi);
771 T_n = T_nPlus1;
772 }
773
774 T = T_n;
775}

◆ readProperties()

template<MInt nDim>
void FvSysEqnDetChem< nDim >::readProperties
private
Template Parameters
nDimNumber of dimensions

Definition at line 476 of file fvcartesiansyseqndetchem.cpp.

476 {
477 m_gasConstant = 8.314472;
478 m_gasConstant = Context::getSolverProperty<MFloat>("gasConstant", m_solverId, AT_, &m_gasConstant);
479
481
482 m_reactionMechanism = Context::getSolverProperty<MString>("reactionMechanism", m_solverId, AT_, &m_reactionMechanism);
483
484 m_transportModel = "Multi";
485 m_transportModel = Context::getSolverProperty<MString>("transportModel", m_solverId, AT_, &m_transportModel);
486
487 m_phaseName = Context::getSolverProperty<MString>("phaseName", m_solverId, AT_, &m_phaseName);
488
490 m_computeSrfcCoeffsEveryRKStep = Context::getSolverProperty<MBool>("computeSrfcCoeffsEveryRKStep", m_solverId, AT_,
492
493 m_soretEffect = true;
494 m_soretEffect = Context::getSolverProperty<MBool>("soretEffect", m_solverId, AT_, &m_soretEffect);
495
496 m_fuelOxidizerStochiometricRatio = 2.0; // default for hydrogen + oxygen
497 m_fuelOxidizerStochiometricRatio = Context::getSolverProperty<MFloat>("fuelOxidizerStochiometricRatio", m_solverId,
499
500 m_oxidizer = "O2";
501 m_oxidizer = Context::getSolverProperty<MString>("oxidizer", m_solverId, AT_, &m_oxidizer);
502
503 m_fuel = "H2";
504 m_fuel = Context::getSolverProperty<MString>("fuel", m_solverId, AT_, &m_fuel);
505}

◆ viscousFlux() [1/2]

template<MInt nDim>
template<MInt stencil>
void FvSysEqnDetChem< nDim >::viscousFlux ( const MInt  orientation,
const MFloat  A,
const MFloat *const  vars0,
const MFloat *const  vars1,
const MFloat *const  slope0,
const MFloat *const  slope1,
const MFloat *const  srfcCoeff,
const MFloat  f0,
const MFloat  f1,
MFloat *const  flux 
)
inline

Definition at line 58 of file fvcartesiansyseqndetchem.h.

60 {
61 if(stencil == FIVE_POINT) {
62 viscousFluxFivePoint(orientation, A, vars0, vars1, slope0, slope1, srfcCoeff, f0, f1, flux);
63 } else {
64 TERMM(1, "Viscous Flux Scheme not implemented.");
65 }
66 }
void viscousFluxFivePoint(const MInt orientation, const MFloat A, const MFloat *const vars0, const MFloat *const vars1, const MFloat *const slope0, const MFloat *const slope1, const MFloat *const srfcCoeff, const MFloat f0, const MFloat f1, MFloat *const flux)
@ FIVE_POINT
Definition: enums.h:184

◆ viscousFlux() [2/2]

template<MInt nDim>
template<MInt stencil>
void FvSysEqnDetChem< nDim >::viscousFlux ( const  MInt,
const  MFloat,
const  MBool,
const MFloat * const  ,
const MFloat * const  ,
const MFloat * const  ,
const MFloat * const  ,
const MFloat * const  ,
const MFloat * const  ,
const MFloat * const  ,
const MFloat * const  ,
const MFloat * const  ,
const  MFloat,
const  MFloat,
MFloat * const   
)
inline

Definition at line 70 of file fvcartesiansyseqndetchem.h.

73 {
74 if(stencil == THREE_POINT) {
75 TERMM(1, "Three point viscous Flux Scheme not implemented for SysEqnDetChem.");
76 } else {
77 TERMM(1, "Viscous Flux Scheme not implemented.");
78 }
79 }
@ THREE_POINT
Definition: enums.h:184

◆ viscousFluxFivePoint()

template<MInt nDim>
void FvSysEqnDetChem< nDim >::viscousFluxFivePoint ( const MInt  orientation,
const MFloat  A,
const MFloat *const  vars0,
const MFloat *const  vars1,
const MFloat *const  slope0,
const MFloat *const  slope1,
const MFloat *const  srfcCoeff,
const MFloat  f0,
const MFloat  f1,
MFloat *const  flux 
)
inline

\TODO labels:FV,totest check if negativ expression is correct

Definition at line 488 of file fvcartesiansyseqndetchem.h.

492 {
493 std::vector<MFloat> dXdn(PV->m_noSpecies, F0);
494 std::vector<MFloat> J(PV->m_noSpecies, F0);
495 std::vector<MFloat> speciesSensibleEnthalpy(PV->m_noSpecies, F0);
496
497
498 // Constant coefficients defined at the surface from left and right values
499 const MFloat mue = srfcCoeff[SC->MU];
500 const MFloat lambda = srfcCoeff[SC->LAMBDA];
501 const MFloat meanMolarMass = srfcCoeff[SC->W_MEAN];
502
503 MFloat mue_wm = 0.0;
504
505 const std::array<MFloat, nDim> velocity = [&] {
506 std::array<MFloat, nDim> tmp{};
507 for(MUint n = 0; n < nDim; n++) {
508 tmp[n] = F1B2 * (vars0[PV->VV[n]] + vars1[PV->VV[n]]);
509 }
510 return tmp;
511 }();
512
513 const MFloat rho = F1B2 * (vars0[PV->RHO] + vars1[PV->RHO]);
514 const MFloat Frho = F1 / rho;
515 const MFloat p = F1B2 * (vars0[PV->P] + vars1[PV->P]);
516
517 // Compute the temperature through equation of state (ideal gas)
518 const MFloat T = p * Frho * meanMolarMass * m_fGasConstant;
519
520 // Indices for the orientations
521 const MUint id0 = orientation;
522 const MUint id1 = index0[orientation];
523 const MUint id2 = index1[orientation];
524
525 const MBool isLowTempRegion = (T < m_NASA->transitionTemp);
526 const MFloat* const NASAIntegralCoeffs =
527 isLowTempRegion ? ALIGNED_F(m_NASA->integralLowTemp) : ALIGNED_F(m_NASA->integralHighTemp);
528 const MFloat* const NASAIntegralConstants = isLowTempRegion ? ALIGNED_F(m_NASA->lowTempIntegrationConstantsEnthalpy)
529 : ALIGNED_F(m_NASA->highTempIntegrationConstantsEnthalpy);
530
531 // Compute species sensible enthalpy
532 for(MUint s = 0; s < PV->m_noSpecies; ++s) {
533 const MFloat speciesSpecificGasConstant = m_species->specificGasConstant[s];
534
535 MFloat sensibleEnthalpy = F0;
536 MInt offsetIntegralCoeffs = m_NASA->noNASACoefficientsCpPolynomial * s;
537
538 for(MInt i = 4; (i < 5) && (i >= 0); --i) {
539 sensibleEnthalpy = sensibleEnthalpy * T + NASAIntegralCoeffs[offsetIntegralCoeffs + i];
540 }
541
542 sensibleEnthalpy *= speciesSpecificGasConstant * T;
543 sensibleEnthalpy -= NASAIntegralConstants[s];
544
545 speciesSensibleEnthalpy[s] = sensibleEnthalpy;
546 }
547
548
549 MFloat dTdn = F0;
550 MFloat diffEnthalpyFlux = F0;
551
552 std::fill(J.begin(), J.end(), F0);
553 std::fill(dXdn.begin(), dXdn.end(), F0);
554
555 getSpeciesDiffusionMassFluxes(orientation, vars0, vars1, slope0, slope1, srfcCoeff, f0, f1, J, dXdn, dTdn,
557
558
559 for(MUint s = 0; s < PV->m_noSpecies; ++s) {
560 diffEnthalpyFlux += speciesSensibleEnthalpy[s] * J[s];
561 }
562
563 const MFloat q = lambda * dTdn - diffEnthalpyFlux;
564
565 // Compute the stress terms
566 const MUint s00 = id0 * nDim + id0;
567 const MUint s01 = id0 * nDim + id1;
568 const MUint s10 = id1 * nDim + id0;
569 const MUint s11 = id1 * nDim + id1;
570
571 std::array<MFloat, nDim> tau{};
572 IF_CONSTEXPR(nDim == 2) {
573 tau[id0] = (mue + mue_wm)
574 * (f0 * (F4B3 * slope0[s00] - F2B3 * slope0[s11]) + f1 * (F4B3 * slope1[s00] - F2B3 * slope1[s11]));
575 tau[id1] = (mue + mue_wm) * (f0 * (slope0[s01] + slope0[s10]) + f1 * (slope1[s01] + slope1[s10]));
576 }
577 else IF_CONSTEXPR(nDim == 3) {
578 const MUint s22 = id2 * nDim + id2;
579 const MUint s02 = id0 * nDim + id2;
580 const MUint s20 = id2 * nDim + id0;
581 tau[id0] = (mue + mue_wm)
582 * (f0 * (F4B3 * slope0[s00] - F2B3 * (slope0[s11] + slope0[s22]))
583 + f1 * (F4B3 * slope1[s00] - F2B3 * (slope1[s11] + slope1[s22])));
584 tau[id1] = (mue + mue_wm) * (f0 * (slope0[s01] + slope0[s10]) + f1 * (slope1[s01] + slope1[s10]));
585 tau[id2] = (mue + mue_wm) * (f0 * (slope0[s02] + slope0[s20]) + f1 * (slope1[s02] + slope1[s20]));
586 }
587
588 // Compute the flux
589 for(MUint n = 0; n < nDim; n++) {
590 flux[FV->RHO_VV[n]] -= A * tau[n];
591 }
592 flux[FV->RHO_E] -= A * (std::inner_product(velocity.begin(), velocity.end(), tau.begin(), 0.0) + q);
593
594 // Species transport equations
596 for(MUint s = 0; s < PV->m_noSpecies; ++s) {
597 flux[FV->RHO_Y[s]] -= -A * J[s]; // remove
598 }
599}
static const MUint index1[nDim]
void getSpeciesDiffusionMassFluxes(const MInt orientation, const MFloat *const vars0, const MFloat *const vars1, const MFloat *const slope0, const MFloat *const slope1, const MFloat *const srfcCoeff, const MFloat f0, const MFloat f1, std::vector< MFloat > &J, std::vector< MFloat > &dXdn, MFloat &dTdn, const MBool soretEffect)
static const MUint index0[nDim]

Member Data Documentation

◆ AV

template<MInt nDim>
AdditionalVariables * FvSysEqnDetChem< nDim >::AV = nullptr

Definition at line 187 of file fvcartesiansyseqndetchem.h.

◆ CV

template<MInt nDim>
ConservativeVariables* FvSysEqnDetChem< nDim >::CV = nullptr

Definition at line 184 of file fvcartesiansyseqndetchem.h.

◆ FV

template<MInt nDim>
FluxVariables* FvSysEqnDetChem< nDim >::FV = nullptr

Definition at line 185 of file fvcartesiansyseqndetchem.h.

◆ hasAV

template<MInt nDim>
static constexpr MBool FvSysEqnDetChem< nDim >::hasAV = true
staticconstexpr

Definition at line 182 of file fvcartesiansyseqndetchem.h.

◆ hasSC

template<MInt nDim>
static constexpr MBool FvSysEqnDetChem< nDim >::hasSC = true
staticconstexpr

Definition at line 183 of file fvcartesiansyseqndetchem.h.

◆ index0

template<MInt nDim>
const MUint FvSysEqnNS< nDim >::index0[nDim]
staticprivate

Definition at line 350 of file fvcartesiansyseqnns.h.

◆ index1

template<MInt nDim>
const MUint FvSysEqnNS< nDim >::index1[nDim]
staticprivate

Definition at line 353 of file fvcartesiansyseqnns.h.

◆ m_computeSrfcCoeffsEveryRKStep

template<MInt nDim>
MBool FvSysEqnDetChem< nDim >::m_computeSrfcCoeffsEveryRKStep
private

Definition at line 164 of file fvcartesiansyseqndetchem.h.

◆ m_F1BGammaMinusOne

template<MInt nDim>
MFloat FvSysEqnNS< nDim >::m_F1BGammaMinusOne
private

Definition at line 296 of file fvcartesiansyseqnns.h.

◆ m_fGasConstant

template<MInt nDim>
MFloat FvSysEqnDetChem< nDim >::m_fGasConstant
private

Definition at line 148 of file fvcartesiansyseqndetchem.h.

◆ m_fuel

template<MInt nDim>
MString FvSysEqnDetChem< nDim >::m_fuel

Definition at line 192 of file fvcartesiansyseqndetchem.h.

◆ m_fuelOxidizerStochiometricRatio

template<MInt nDim>
MFloat FvSysEqnDetChem< nDim >::m_fuelOxidizerStochiometricRatio

Definition at line 193 of file fvcartesiansyseqndetchem.h.

◆ m_gamma

template<MInt nDim>
MFloat FvSysEqnNS< nDim >::m_gamma
private

Definition at line 294 of file fvcartesiansyseqnns.h.

◆ m_gammaMinusOne

template<MInt nDim>
MFloat FvSysEqnNS< nDim >::m_gammaMinusOne
private

Definition at line 295 of file fvcartesiansyseqnns.h.

◆ m_gasConstant

template<MInt nDim>
MFloat FvSysEqnDetChem< nDim >::m_gasConstant
private

Definition at line 147 of file fvcartesiansyseqndetchem.h.

◆ m_gFGMOrPr

template<MInt nDim>
MFloat FvSysEqnNS< nDim >::m_gFGMOrPr
private

Definition at line 306 of file fvcartesiansyseqnns.h.

◆ m_muInfinity

template<MInt nDim>
MFloat FvSysEqnNS< nDim >::m_muInfinity

Definition at line 330 of file fvcartesiansyseqnns.h.

◆ m_multiDiffusion

template<MInt nDim>
MBool FvSysEqnDetChem< nDim >::m_multiDiffusion
private

Definition at line 163 of file fvcartesiansyseqndetchem.h.

◆ m_NASA

template<MInt nDim>
NASACoefficients * FvSysEqnDetChem< nDim >::m_NASA = nullptr

Definition at line 175 of file fvcartesiansyseqndetchem.h.

◆ m_noDiffusionCoefficients

template<MInt nDim>
MInt FvSysEqnDetChem< nDim >::m_noDiffusionCoefficients
private

Definition at line 161 of file fvcartesiansyseqndetchem.h.

◆ m_noSpecies

template<MInt nDim>
MUint FvSysEqnNS< nDim >::m_noSpecies
private

Definition at line 289 of file fvcartesiansyseqnns.h.

◆ m_noSurfaceCoefficients

template<MInt nDim>
MInt FvSysEqnDetChem< nDim >::m_noSurfaceCoefficients
private

Definition at line 160 of file fvcartesiansyseqndetchem.h.

◆ m_noThermalDiffusionCoefficients

template<MInt nDim>
MInt FvSysEqnDetChem< nDim >::m_noThermalDiffusionCoefficients
private

Definition at line 162 of file fvcartesiansyseqndetchem.h.

◆ m_oxidizer

template<MInt nDim>
MString FvSysEqnDetChem< nDim >::m_oxidizer

Definition at line 191 of file fvcartesiansyseqndetchem.h.

◆ m_phaseName

template<MInt nDim>
MString FvSysEqnDetChem< nDim >::m_phaseName
private

Definition at line 157 of file fvcartesiansyseqndetchem.h.

◆ m_Re0

template<MInt nDim>
MFloat FvSysEqnNS< nDim >::m_Re0

Definition at line 329 of file fvcartesiansyseqnns.h.

◆ m_reactionMechanism

template<MInt nDim>
MString FvSysEqnDetChem< nDim >::m_reactionMechanism
private

Definition at line 155 of file fvcartesiansyseqndetchem.h.

◆ m_referenceTemperature

template<MInt nDim>
MFloat FvSysEqnNS< nDim >::m_referenceTemperature
private

Definition at line 301 of file fvcartesiansyseqnns.h.

◆ m_solverId

template<MInt nDim>
MInt FvSysEqnNS< nDim >::m_solverId
private

Definition at line 291 of file fvcartesiansyseqnns.h.

◆ m_soretEffect

template<MInt nDim>
MBool FvSysEqnDetChem< nDim >::m_soretEffect

Definition at line 189 of file fvcartesiansyseqndetchem.h.

◆ m_species

template<MInt nDim>
SpeciesProperties * FvSysEqnDetChem< nDim >::m_species = nullptr

Definition at line 174 of file fvcartesiansyseqndetchem.h.

◆ m_sutherlandConstant

template<MInt nDim>
MFloat FvSysEqnNS< nDim >::m_sutherlandConstant
private

Definition at line 303 of file fvcartesiansyseqnns.h.

◆ m_sutherlandConstantThermal

template<MInt nDim>
MFloat FvSysEqnNS< nDim >::m_sutherlandConstantThermal
private

Definition at line 305 of file fvcartesiansyseqnns.h.

◆ m_sutherlandPlusOne

template<MInt nDim>
MFloat FvSysEqnNS< nDim >::m_sutherlandPlusOne
private

Definition at line 302 of file fvcartesiansyseqnns.h.

◆ m_sutherlandPlusOneThermal

template<MInt nDim>
MFloat FvSysEqnNS< nDim >::m_sutherlandPlusOneThermal
private

Definition at line 304 of file fvcartesiansyseqnns.h.

◆ m_transportModel

template<MInt nDim>
MString FvSysEqnDetChem< nDim >::m_transportModel
private

Definition at line 156 of file fvcartesiansyseqndetchem.h.

◆ PV

template<MInt nDim>
PrimitiveVariables* FvSysEqnDetChem< nDim >::PV = nullptr

Definition at line 186 of file fvcartesiansyseqndetchem.h.

◆ SC

template<MInt nDim>
SurfaceCoefficients * FvSysEqnDetChem< nDim >::SC = nullptr

Definition at line 188 of file fvcartesiansyseqndetchem.h.


The documentation for this class was generated from the following files: