27 #include "grins_config.h"
29 #ifdef GRINS_HAVE_ANTIOCH
37 #include "libmesh/getpot.h"
42 template<
typename Thermo,
typename Viscosity,
typename Conductivity,
typename Diffusivity>
49 libMesh::Real T0 = input(
"Conditions/T0", 300.0 );
50 libMesh::Real T1 = input(
"Conditions/T1", 300.0 );
51 libMesh::Real T_inc = input(
"Conditions/T_increment", 100.0 );
53 libMesh::Real rho = input(
"Conditions/density", 1.0e-3 );
55 const unsigned int n_species = mixture.
n_species();
57 std::vector<libMesh::Real> Y(n_species);
58 if( input.vector_variable_size(
"Conditions/mass_fractions" ) != n_species )
60 std::cerr <<
"Error: mass fractions size not consistent with n_species"
65 for(
unsigned int s = 0; s < n_species; s++ )
67 Y[s] = input(
"Conditions/mass_fractions", 0.0, s );
73 output.open(
"transport.dat", std::ios::trunc );
75 output <<
"# Species names" << std::endl;
76 for(
unsigned int s = 0; s < n_species; s++ )
81 output <<
"# T [K] mu k D[s]" << std::endl;
87 output.open(
"transport.dat", std::ios::app );
88 output << std::scientific << std::setprecision(16);
91 libMesh::Real mu = evaluator.
mu(T,Y);
92 libMesh::Real k = evaluator.
k(T,Y);
97 std::vector<libMesh::Real> D(n_species);
98 for(
unsigned int s = 0; s< n_species; s++ )
100 evaluator.
D(rho, evaluator.
cp(T,Y), k, D);
102 output << D[s] <<
" ";
113 int main(
int argc,
char* argv[])
119 std::cerr <<
"Error: Must specify input file." << std::endl;
123 GetPot input( argv[1] );
125 std::string mixing_model = input(
"Physics/Antioch/mixing_model",
"wilke");
126 std::string thermo_model = input(
"Physics/Antioch/thermo_model",
"stat_mech");
127 std::string viscosity_model = input(
"Physics/Antioch/viscosity_model",
"sutherland");
128 std::string conductivity_model = input(
"Physics/Antioch/conductivity_model",
"eucken");
129 std::string diffusivity_model = input(
"Physics/Antioch/diffusivity_model",
"constant_lewis");
133 if( mixing_model == std::string(
"wilke") )
135 if( thermo_model == std::string(
"stat_mech") )
137 if( diffusivity_model == std::string(
"constant_lewis") )
139 if( conductivity_model == std::string(
"eucken") )
141 if( viscosity_model == std::string(
"sutherland") )
143 return_flag = do_transport_eval<Antioch::StatMechThermodynamics<libMesh::Real>,
144 Antioch::MixtureViscosity<Antioch::SutherlandViscosity<libMesh::Real> >,
145 Antioch::EuckenThermalConductivity<Antioch::StatMechThermodynamics<libMesh::Real> >,
146 Antioch::ConstantLewisDiffusivity<libMesh::Real> >(input);
148 else if( viscosity_model == std::string(
"blottner") )
150 return_flag = do_transport_eval<Antioch::StatMechThermodynamics<libMesh::Real>,
151 Antioch::MixtureViscosity<Antioch::BlottnerViscosity<libMesh::Real> >,
152 Antioch::EuckenThermalConductivity<Antioch::StatMechThermodynamics<libMesh::Real> >,
153 Antioch::ConstantLewisDiffusivity<libMesh::Real> >(input);
157 std::cerr <<
"Error: Unknown viscosity_model "
158 << viscosity_model <<
"!" << std::endl;
164 std::cerr <<
"Error: Unknown conductivity_model "
165 << conductivity_model <<
"!" << std::endl;
171 std::cerr <<
"Error: Unknown diffusivity_model "
172 << diffusivity_model <<
"!" << std::endl;
178 std::cerr <<
"Error: Unknown thermo_model "
179 << thermo_model <<
"!" << std::endl;
185 std::cerr <<
"Error: Unknown mixing_model "
186 << mixing_model <<
"!" << std::endl;
193 #endif //GRINS_HAVE_ANTIOCH
unsigned int n_species() const
libMesh::Real mu(const CachedValues &cache, unsigned int qp)
void D(const CachedValues &cache, unsigned int qp, std::vector< libMesh::Real > &D)
libMesh::Real cp(const CachedValues &cache, unsigned int qp)
int do_transport_eval(const GetPot &input)
std::string species_name(unsigned int species_index) const
libMesh::Real k(const CachedValues &cache, unsigned int qp)
Wrapper class for storing state for computing Wilke transport properties using Antioch.
Wrapper class for evaluating Wilke transport properties using Antioch.
int main(int argc, char *argv[])