26 #ifndef GRINS_WILKE_ANTIOCH_TRANSPORT_MIXTURE_H
27 #define GRINS_WILKE_ANTIOCH_TRANSPORT_MIXTURE_H
29 #include "grins_config.h"
31 #ifdef GRINS_HAVE_ANTIOCH
39 #include "libmesh/libmesh_common.h"
40 #include "libmesh/getpot.h"
43 #include "antioch/vector_utils_decl.h"
44 #include "antioch/vector_utils.h"
45 #include "antioch/cea_evaluator.h"
46 #include "antioch/stat_mech_thermo.h"
47 #include "antioch/mixture_averaged_transport_mixture.h"
48 #include "antioch/mixture_viscosity.h"
49 #include "antioch/mixture_conductivity.h"
50 #include "antioch/mixture_diffusion.h"
51 #include "antioch/sutherland_viscosity.h"
52 #include "antioch/blottner_viscosity.h"
53 #include "antioch/eucken_thermal_conductivity.h"
54 #include "antioch/constant_lewis_diffusivity.h"
56 #include "antioch/sutherland_parsing.h"
57 #include "antioch/blottner_parsing.h"
58 #include "antioch/eucken_thermal_conductivity_building.h"
59 #include "antioch/constant_lewis_diffusivity_building.h"
61 #ifdef ANTIOCH_HAVE_GSL
63 #include "antioch/kinetics_theory_viscosity.h"
64 #include "antioch/kinetics_theory_thermal_conductivity.h"
65 #include "antioch/molecular_binary_diffusion.h"
66 #include "antioch/gsl_spliner.h"
67 #include "antioch/kinetics_theory_viscosity_building.h"
68 #include "antioch/kinetics_theory_thermal_conductivity_building.h"
70 #endif // ANTIOCH_HAVE_GSL
82 template<
typename Thermo,
typename Viscosity,
typename Conductivity,
typename Diffusivity>
91 const Antioch::MixtureAveragedTransportMixture<libMesh::Real>&
wilke_mixture()
const;
93 const Antioch::MixtureViscosity<Viscosity,libMesh::Real>&
viscosity()
const;
95 const Antioch::MixtureConductivity<Conductivity,libMesh::Real>&
conductivity()
const;
97 const Antioch::MixtureDiffusion<Diffusivity,libMesh::Real>&
diffusivity()
const;
105 libMesh::UniquePtr<Antioch::MixtureAveragedTransportMixture<libMesh::Real> >
_wilke_mixture;
109 libMesh::UniquePtr<Antioch::MixtureViscosity<Viscosity,libMesh::Real> >
_viscosity;
111 libMesh::UniquePtr<Antioch::MixtureConductivity<Conductivity,libMesh::Real> >
_conductivity;
113 libMesh::UniquePtr<Antioch::MixtureDiffusion<Diffusivity,libMesh::Real> >
_diffusivity;
136 libMesh::UniquePtr<Antioch::StatMechThermodynamics<libMesh::Real> >& thermo,
137 thermo_type<Antioch::StatMechThermodynamics<libMesh::Real> > )
139 thermo.reset(
new Antioch::StatMechThermodynamics<libMesh::Real>( *(this->
_antioch_gas.get()) ) );
144 libMesh::UniquePtr<Antioch::CEAEvaluator<libMesh::Real> >& thermo,
145 thermo_type<Antioch::CEAEvaluator<libMesh::Real> > )
147 thermo.reset(
new Antioch::CEAEvaluator<libMesh::Real>( this->
cea_mixture() ) );
152 const std::string& material,
153 libMesh::UniquePtr<Antioch::MixtureViscosity<Antioch::SutherlandViscosity<libMesh::Real>,libMesh::Real> >& viscosity,
156 viscosity.reset(
new Antioch::MixtureViscosity<Antioch::SutherlandViscosity<libMesh::Real>,libMesh::Real>(*(_trans_mixture.get())) );
158 std::string sutherland_data = input(
"Materials/"+material+
"/GasMixture/Antioch/sutherland_data",
"default");
159 if( sutherland_data ==
"default" )
160 sutherland_data = Antioch::DefaultInstallFilename::sutherland_data();
162 Antioch::read_sutherland_data_ascii( *(viscosity.get()), sutherland_data );
166 const std::string& material,
167 libMesh::UniquePtr<Antioch::MixtureViscosity<Antioch::BlottnerViscosity<libMesh::Real>,libMesh::Real> >& viscosity,
170 viscosity.reset(
new Antioch::MixtureViscosity<Antioch::BlottnerViscosity<libMesh::Real>,libMesh::Real>(*(_trans_mixture.get())) );
172 std::string blottner_data = input(
"Materials/"+material+
"/GasMixture/Antioch/blottner_data",
"default");
173 if( blottner_data ==
"default" )
174 blottner_data = Antioch::DefaultInstallFilename::blottner_data();
176 Antioch::read_blottner_data_ascii( *(viscosity.get()), blottner_data );
179 #ifdef ANTIOCH_HAVE_GSL
182 libMesh::UniquePtr<Antioch::MixtureViscosity<Antioch::KineticsTheoryViscosity<libMesh::Real,Antioch::GSLSpliner>,libMesh::Real> >& viscosity,
183 viscosity_type<Antioch::KineticsTheoryViscosity<libMesh::Real,Antioch::GSLSpliner> > )
185 viscosity.reset(
new Antioch::MixtureViscosity<Antioch::KineticsTheoryViscosity<libMesh::Real,Antioch::GSLSpliner>,libMesh::Real>(*(_trans_mixture.get())) );
187 Antioch::build_kinetics_theory_viscosity<libMesh::Real,Antioch::GSLSpliner>( *(viscosity.get()) );
189 #endif // ANTIOCH_HAVE_GSL
192 libMesh::UniquePtr<Antioch::MixtureConductivity<Antioch::EuckenThermalConductivity<Thermo>,libMesh::Real> >& conductivity,
195 conductivity.reset(
new Antioch::MixtureConductivity<Antioch::EuckenThermalConductivity<Thermo>,libMesh::Real>(*(_trans_mixture.get())) );
196 Antioch::build_eucken_thermal_conductivity<Thermo,libMesh::Real>(*(conductivity.get()),*(_thermo.get()));
200 #ifdef ANTIOCH_HAVE_GSL
202 libMesh::UniquePtr<Antioch::MixtureConductivity<Antioch::KineticsTheoryThermalConductivity<Thermo,libMesh::Real>,libMesh::Real> >& conductivity,
203 conductivity_type<Antioch::KineticsTheoryThermalConductivity<Thermo,libMesh::Real> > )
205 conductivity.reset(
new Antioch::MixtureConductivity<Antioch::KineticsTheoryThermalConductivity<Thermo,libMesh::Real>,libMesh::Real>(*(_trans_mixture.get())) );
207 Antioch::build_kinetics_theory_thermal_conductivity<Thermo,libMesh::Real>( *(conductivity.get()), *(_thermo.get()) );
209 #endif // ANTIOCH_HAVE_GSL
212 const std::string& material,
213 libMesh::UniquePtr<Antioch::MixtureDiffusion<Antioch::ConstantLewisDiffusivity<libMesh::Real>,libMesh::Real> >& diffusivity,
218 diffusivity.reset(
new Antioch::MixtureDiffusion<Antioch::ConstantLewisDiffusivity<libMesh::Real>,libMesh::Real>(*(_trans_mixture.get())) );
220 Antioch::build_constant_lewis_diffusivity<libMesh::Real>( *(diffusivity.get()), Le);
224 #ifdef ANTIOCH_HAVE_GSL
227 libMesh::UniquePtr<Antioch::MixtureDiffusion<Antioch::MolecularBinaryDiffusion<libMesh::Real,Antioch::GSLSpliner>,libMesh::Real> >& diffusivity,
228 diffusivity_type<Antioch::MolecularBinaryDiffusion<libMesh::Real,Antioch::GSLSpliner> > )
230 diffusivity.reset(
new Antioch::MixtureDiffusion<Antioch::MolecularBinaryDiffusion<libMesh::Real,Antioch::GSLSpliner>,libMesh::Real>(*(_trans_mixture.get())) );
232 #endif // ANTIOCH_HAVE_GSL
237 template<
typename T,
typename V,
typename C,
typename D>
241 return *(_wilke_mixture.get());
244 template<
typename T,
typename Viscosity,
typename C,
typename D>
248 return *_viscosity.get();
251 template<
typename T,
typename V,
typename Conductivity,
typename D>
255 return *_conductivity.get();
258 template<
typename T,
typename V,
typename C,
typename Diffusivity>
262 return *_diffusivity.get();
267 #endif // GRINS_HAVE_ANTIOCH
269 #endif // GRINS_WILKE_ANTIOCH_TRANSPORT_MIXTURE_H
libMesh::UniquePtr< Antioch::ChemicalMixture< libMesh::Real > > _antioch_gas
void build_conductivity(const GetPot &input)
Wrapper class for Antioch::ChemicalMixture.
const Antioch::MixtureAveragedTransportMixture< libMesh::Real > & wilke_mixture() const
Wrapper class for storing state for computing Wilke transport properties using Antioch.
const Antioch::MixtureConductivity< Conductivity, libMesh::Real > & conductivity() const
const Antioch::CEAThermoMixture< libMesh::Real > & cea_mixture() const
void specialized_build_conductivity(const GetPot &, libMesh::UniquePtr< Antioch::MixtureConductivity< Antioch::EuckenThermalConductivity< Thermo >, libMesh::Real > > &conductivity, conductivity_type< Antioch::EuckenThermalConductivity< Thermo > >)
AntiochChemistry ChemistryParent
static libMesh::Real parse_lewis_number(const GetPot &input, const std::string &material)
const Antioch::MixtureViscosity< Viscosity, libMesh::Real > & viscosity() const
const Antioch::MixtureDiffusion< Diffusivity, libMesh::Real > & diffusivity() const
void specialized_build_diffusivity(const GetPot &input, const std::string &material, libMesh::UniquePtr< Antioch::MixtureDiffusion< Antioch::ConstantLewisDiffusivity< libMesh::Real >, libMesh::Real > > &diffusivity, diffusivity_type< Antioch::ConstantLewisDiffusivity< libMesh::Real > >)
void specialized_build_thermo(const GetPot &, libMesh::UniquePtr< Antioch::CEAEvaluator< libMesh::Real > > &thermo, thermo_type< Antioch::CEAEvaluator< libMesh::Real > >)
Wrapper class for storing state for Antioch thermo and kinetics.
void build_viscosity(const GetPot &input, const std::string &material)
AntiochMixtureAveragedTransportMixture()
libMesh::UniquePtr< Antioch::TransportMixture< libMesh::Real > > _trans_mixture
void specialized_build_viscosity(const GetPot &input, const std::string &material, libMesh::UniquePtr< Antioch::MixtureViscosity< Antioch::SutherlandViscosity< libMesh::Real >, libMesh::Real > > &viscosity, viscosity_type< Antioch::SutherlandViscosity< libMesh::Real > >)
libMesh::UniquePtr< Antioch::MixtureViscosity< Viscosity, libMesh::Real > > _viscosity
libMesh::UniquePtr< Thermo > _thermo
void specialized_build_thermo(const GetPot &, libMesh::UniquePtr< Antioch::StatMechThermodynamics< libMesh::Real > > &thermo, thermo_type< Antioch::StatMechThermodynamics< libMesh::Real > >)
virtual ~AntiochMixtureAveragedTransportMixture()
void build_thermo(const GetPot &input)
void specialized_build_viscosity(const GetPot &input, const std::string &material, libMesh::UniquePtr< Antioch::MixtureViscosity< Antioch::BlottnerViscosity< libMesh::Real >, libMesh::Real > > &viscosity, viscosity_type< Antioch::BlottnerViscosity< libMesh::Real > >)
libMesh::UniquePtr< Antioch::MixtureAveragedTransportMixture< libMesh::Real > > _wilke_mixture
void build_diffusivity(const GetPot &input, const std::string &material)
libMesh::UniquePtr< Antioch::MixtureDiffusion< Diffusivity, libMesh::Real > > _diffusivity
libMesh::UniquePtr< Antioch::MixtureConductivity< Conductivity, libMesh::Real > > _conductivity