26 #include "grins_config.h"
28 #ifdef GRINS_HAVE_ANTIOCH
43 #include "libmesh/getpot.h"
45 int test_generic(
const libMesh::Real value,
const libMesh::Real value_reg,
const std::string& name )
49 const double tol = std::numeric_limits<double>::epsilon()*10;
51 const double rel_error = std::fabs( (value - value_reg)/value_reg );
56 std::cout <<
"Mismatch in "+name << std::endl
57 << name+
" = " << value << std::endl
58 << name+
"_reg = " << value_reg << std::endl
59 <<
"rel_error = " << rel_error << std::endl;
66 template<
typename Viscosity>
67 int test_mu(
const libMesh::Real mu );
69 template<
typename Thermo,
typename Conductivity>
70 int test_k(
const libMesh::Real k );
72 template<
typename Thermo,
typename Viscosity,
typename Conductivity,
typename Diffusivity>
73 int test_D(
const std::vector<libMesh::Real>& D );
76 int test_mu<Antioch::BlottnerViscosity<libMesh::Real> >(
const libMesh::Real mu )
78 double mu_reg = 4.5123309407810213e-05;
84 int test_k<Antioch::StatMechThermodynamics<libMesh::Real>,
85 Antioch::EuckenThermalConductivity<Antioch::StatMechThermodynamics<libMesh::Real> > >(
const libMesh::Real k )
87 double k_reg = 8.0102737519532258e-02;
93 int test_D<Antioch::StatMechThermodynamics<libMesh::Real>,
94 Antioch::BlottnerViscosity<libMesh::Real>,
95 Antioch::EuckenThermalConductivity<Antioch::StatMechThermodynamics<libMesh::Real> >,
96 Antioch::ConstantLewisDiffusivity<libMesh::Real> >(
const std::vector<libMesh::Real>& D )
98 std::vector<libMesh::Real> D_reg(5);
99 D_reg[0] = 4.6482311273552429e-02;
105 int return_flag_tmp = 0;
107 for(
unsigned int s = 0; s < 5; s++ )
110 if( return_flag_tmp != 0 ) return_flag = 1;
116 template<
typename Thermo,
typename Viscosity,
typename Conductivity,
typename Diffusivity>
123 const libMesh::Real T = 1000;
125 const libMesh::Real rho = 1.0e-3;
127 const unsigned int n_species = 5;
129 std::vector<libMesh::Real> Y(n_species,0.2);
131 libMesh::Real p0 = rho*T*evaluator.
R_mix(Y);
132 libMesh::Real mu = 0.0;
133 libMesh::Real k = 0.0;
134 std::vector<libMesh::Real> D(n_species,0.0);
138 std::cout << std::scientific << std::setprecision(16)
139 <<
"mu = " << mu << std::endl;
141 std::cout << std::scientific << std::setprecision(16)
142 <<
"k = " << k << std::endl;
144 for(
unsigned int i = 0; i < n_species; i++ )
146 std::cout << std::scientific << std::setprecision(16)
147 <<
"D(" << mixture.
species_name(i) <<
") = " << D [i] << std::endl;
152 int return_flag_temp = 0;
154 return_flag_temp = test_mu<Viscosity>( mu );
155 if( return_flag_temp != 0 ) return_flag = 1;
157 return_flag_temp = test_k<Thermo,Conductivity>( k );
158 if( return_flag_temp != 0 ) return_flag = 1;
160 return_flag_temp = test_D<Thermo,Viscosity,Conductivity,Diffusivity>( D );
161 if( return_flag_temp != 0 ) return_flag = 1;
167 int main(
int argc,
char* argv[] )
173 std::cerr <<
"Error: Must specify input file." << std::endl;
177 GetPot input( argv[1] );
181 std::cout << std::endl <<
"Running StatMesh, Blottner, Eucken, Constant Lewis regression test." << std::endl;
182 return_flag = test_evaluator<Antioch::StatMechThermodynamics<libMesh::Real>,
183 Antioch::BlottnerViscosity<libMesh::Real>,
184 Antioch::EuckenThermalConductivity<Antioch::StatMechThermodynamics<libMesh::Real> >,
185 Antioch::ConstantLewisDiffusivity<libMesh::Real> >(input);
190 #else //GRINS_HAVE_ANTIOCH
libMesh::Real cp(const libMesh::Real &T, const libMesh::Real P, const std::vector< libMesh::Real > &Y)
int test_mu(const libMesh::Real mu)
int main(int argc, char *argv[])
Wrapper class for storing state for computing Wilke transport properties using Antioch.
Wrapper class for evaluating Wilke transport properties using Antioch.
int test_evaluator(const GetPot &input)
libMesh::Real R_mix(const std::vector< libMesh::Real > &mass_fractions) const
int test_k(const libMesh::Real k)
std::string species_name(unsigned int species_index) const
int test_D(const std::vector< libMesh::Real > &D)
int test_generic(const libMesh::Real value, const libMesh::Real value_reg, const std::string &name)
void mu_and_k_and_D(const libMesh::Real T, const libMesh::Real rho, const libMesh::Real cp, const std::vector< libMesh::Real > &Y, libMesh::Real &mu, libMesh::Real &k, std::vector< libMesh::Real > &D)