26 #include "grins_config.h"
28 #ifdef GRINS_HAVE_CANTERA
34 #include "libmesh/getpot.h"
40 _cantera_transport(NULL)
42 const std::string cantera_chem_file = input(
"Physics/Chemistry/chem_file",
"DIE!" );
43 const std::string mixture = input(
"Physics/Chemistry/mixture",
"DIE!" );
47 _cantera_gas.reset(
new Cantera::IdealGasMix( cantera_chem_file, mixture ) );
49 catch(Cantera::CanteraError)
51 Cantera::showErrors(std::cerr);
59 catch(Cantera::CanteraError)
61 Cantera::showErrors(std::cerr);
75 libmesh_assert_equal_to( mass_fractions.size(),
_cantera_gas->nSpecies() );
78 for(
unsigned int s = 0; s < mass_fractions.size(); s++ )
80 M += mass_fractions[s]/(this->
M(s));
88 libmesh_assert_equal_to( mass_fractions.size(),
_cantera_gas->nSpecies() );
90 libMesh::Real
R = 0.0;
91 for(
unsigned int s = 0; s < mass_fractions.size(); s++ )
93 R += mass_fractions[s]*this->
R(s);
99 void CanteraMixture::X( libMesh::Real M_mix,
const std::vector<libMesh::Real>& mass_fractions,
100 std::vector<libMesh::Real>& mole_fractions )
const
102 libmesh_assert_equal_to( mass_fractions.size(),
_cantera_gas->nSpecies() );
104 libmesh_assert_equal_to( mole_fractions.size(), mass_fractions.size() );
106 for(
unsigned int s = 0; s < mass_fractions.size(); s++ )
108 mole_fractions[s] = this->
X(s, M_mix, mass_fractions[s]);
116 #endif // GRINS_HAVE_CANTERA
libMesh::Real R(unsigned int species) const
libMesh::Real X(unsigned int species, libMesh::Real M, libMesh::Real mass_fraction) const
boost::scoped_ptr< Cantera::Transport > _cantera_transport
boost::scoped_ptr< Cantera::IdealGasMix > _cantera_gas
libMesh::Real M_mix(const std::vector< libMesh::Real > &mass_fractions) const
libMesh::Real R_mix(const std::vector< libMesh::Real > &mass_fractions) const
libMesh::Real M(unsigned int species) const