26 #ifndef GRINS_ANTIOCH_EVALUATOR_H
27 #define GRINS_ANTIOCH_EVALUATOR_H
29 #include "grins_config.h"
31 #ifdef GRINS_HAVE_ANTIOCH
40 #include "antioch/temp_cache.h"
41 #include "antioch/cea_evaluator.h"
42 #include "antioch/stat_mech_thermo.h"
54 template<
typename Thermo>
64 libMesh::Real
M(
unsigned int species )
const;
66 libMesh::Real
M_mix(
const std::vector<libMesh::Real>& mass_fractions )
const;
68 libMesh::Real
R(
unsigned int species )
const;
70 libMesh::Real
R_mix(
const std::vector<libMesh::Real>& mass_fractions )
const;
72 libMesh::Real
X(
unsigned int species, libMesh::Real
M, libMesh::Real mass_fraction )
const;
74 void X( libMesh::Real
M,
const std::vector<libMesh::Real>& mass_fractions,
75 std::vector<libMesh::Real>& mole_fractions )
const;
82 libMesh::Real
cp(
const libMesh::Real& T,
const libMesh::Real P,
const std::vector<libMesh::Real>& Y );
84 libMesh::Real
cv(
const libMesh::Real& T,
const libMesh::Real P,
const std::vector<libMesh::Real>& Y );
86 libMesh::Real
h_s(
const libMesh::Real& T,
unsigned int species );
89 void omega_dot(
const libMesh::Real& T, libMesh::Real rho,
90 const std::vector<libMesh::Real> mass_fractions,
102 libMesh::UniquePtr<Antioch::TempCache<libMesh::Real> >
_temp_cache;
121 libMesh::UniquePtr<Antioch::StatMechThermodynamics<libMesh::Real> >& thermo,
122 thermo_type<Antioch::StatMechThermodynamics<libMesh::Real> > )
124 thermo.reset(
new Antioch::StatMechThermodynamics<libMesh::Real>( mixture.
chemical_mixture() ) );
129 libMesh::UniquePtr<Antioch::CEAEvaluator<libMesh::Real> >& thermo,
130 thermo_type<Antioch::CEAEvaluator<libMesh::Real> > )
132 thermo.reset(
new Antioch::CEAEvaluator<libMesh::Real>( mixture.
cea_mixture() ) );
139 template<
typename Thermo>
143 return _chem.M(species);
146 template<
typename Thermo>
150 return _chem.M_mix(mass_fractions);
153 template<
typename Thermo>
157 return _chem.R(species);
160 template<
typename Thermo>
164 return _chem.R_mix(mass_fractions);
167 template<
typename Thermo>
171 return _chem.X(species,M,mass_fraction);
174 template<
typename Thermo>
177 std::vector<libMesh::Real>& mole_fractions )
const
179 _chem.X(M,mass_fractions,mole_fractions);
183 template<
typename Thermo>
187 return _chem.species_index(species_name);
190 template<
typename Thermo>
194 return _chem.species_name(species_index);
197 template<
typename Thermo>
203 if( _temp_cache->T2 != T*T )
204 _temp_cache.reset(
new Antioch::TempCache<libMesh::Real>(T) );
209 #endif // GRINS_HAVE_ANTIOCH
211 #endif // GRINS_ANTIOCH_EVALUATOR_H
void check_and_reset_temp_cache(const libMesh::Real &T)
Helper method for managing _temp_cache.
libMesh::Real cv(const libMesh::Real &T, const libMesh::Real P, const std::vector< libMesh::Real > &Y)
libMesh::Real cp(const libMesh::Real &T, const libMesh::Real P, const std::vector< libMesh::Real > &Y)
virtual ~AntiochEvaluator()
Wrapper class for evaluating chemistry and thermo properties using Antioch.
libMesh::UniquePtr< AntiochKinetics > _kinetics
const Antioch::ChemicalMixture< libMesh::Real > & chemical_mixture() const
Accessor to underlying Antioch object.
void specialized_build_thermo(const AntiochMixture &mixture, libMesh::UniquePtr< Antioch::CEAEvaluator< libMesh::Real > > &thermo, thermo_type< Antioch::CEAEvaluator< libMesh::Real > >)
void specialized_build_thermo(const AntiochMixture &mixture, libMesh::UniquePtr< Antioch::StatMechThermodynamics< libMesh::Real > > &thermo, thermo_type< Antioch::StatMechThermodynamics< libMesh::Real > >)
const Antioch::CEAThermoMixture< libMesh::Real > & cea_mixture() const
libMesh::Real h_s(const libMesh::Real &T, unsigned int species)
libMesh::UniquePtr< Antioch::TempCache< libMesh::Real > > _temp_cache
libMesh::Real R_mix(const std::vector< libMesh::Real > &mass_fractions) const
void omega_dot(const libMesh::Real &T, libMesh::Real rho, const std::vector< libMesh::Real > mass_fractions, std::vector< libMesh::Real > &omega_dot)
libMesh::Real M(unsigned int species) const
std::string species_name(unsigned int species_index) const
unsigned int species_index(const std::string &species_name) const
const AntiochMixture & _chem
libMesh::UniquePtr< Thermo > _thermo
Wrapper class for storing state for Antioch thermo and kinetics.
libMesh::Real X(unsigned int species, libMesh::Real M, libMesh::Real mass_fraction) const
libMesh::Real M_mix(const std::vector< libMesh::Real > &mass_fractions) const
void build_thermo(const AntiochMixture &mixture)
libMesh::Real R(unsigned int species) const