25 #ifndef GRINS_ANTIOCH_MIXTURE_AVERAGED_TRANSPORT_MIXTURE_BUILDER_H
26 #define GRINS_ANTIOCH_MIXTURE_AVERAGED_TRANSPORT_MIXTURE_BUILDER_H
28 #include "grins_config.h"
30 #ifdef GRINS_HAVE_ANTIOCH
45 template<
typename KineticsThermoCurveFit,
typename Thermo,
typename Viscosity,
typename Conductivity,
typename Diffusivity>
46 libMesh::UniquePtr<AntiochMixtureAveragedTransportMixture<KineticsThermoCurveFit,Thermo,Viscosity,Conductivity,Diffusivity> >
47 build_mixture(
const GetPot & input,
const std::string & material );
51 libMesh::UniquePtr<Antioch::TransportMixture<libMesh::Real> >
53 const Antioch::ChemicalMixture<libMesh::Real> & chem_mix );
55 libMesh::UniquePtr<Antioch::MixtureAveragedTransportMixture<libMesh::Real> >
57 {
return libMesh::UniquePtr<Antioch::MixtureAveragedTransportMixture<libMesh::Real> >
58 (
new Antioch::MixtureAveragedTransportMixture<libMesh::Real>(trans_mix) ); }
60 template<
typename Viscosity>
61 libMesh::UniquePtr<Antioch::MixtureViscosity<Viscosity,libMesh::Real> >
63 const Antioch::TransportMixture<libMesh::Real> & trans_mix )
66 template<
typename Diffusivity>
67 libMesh::UniquePtr<Antioch::MixtureDiffusion<Diffusivity,libMesh::Real> >
69 const Antioch::TransportMixture<libMesh::Real> & trans_mix )
72 libMesh::UniquePtr<Antioch::MixtureViscosity<Antioch::SutherlandViscosity<libMesh::Real>,libMesh::Real> >
74 const std::string& material,
75 const Antioch::TransportMixture<libMesh::Real> & trans_mix,
78 libMesh::UniquePtr<Antioch::MixtureViscosity<Antioch::SutherlandViscosity<libMesh::Real>,libMesh::Real> >
79 viscosity(
new Antioch::MixtureViscosity<Antioch::SutherlandViscosity<libMesh::Real>,libMesh::Real>(trans_mix) );
81 std::string sutherland_data = input(
"Materials/"+material+
"/GasMixture/Antioch/sutherland_data",
"default");
82 if( sutherland_data ==
"default" )
83 sutherland_data = Antioch::DefaultInstallFilename::sutherland_data();
85 Antioch::read_sutherland_data_ascii( *(viscosity.get()), sutherland_data );
90 libMesh::UniquePtr<Antioch::MixtureViscosity<Antioch::BlottnerViscosity<libMesh::Real>,libMesh::Real> >
92 const std::string& material,
93 const Antioch::TransportMixture<libMesh::Real> & trans_mix,
96 libMesh::UniquePtr<Antioch::MixtureViscosity<Antioch::BlottnerViscosity<libMesh::Real>,libMesh::Real> >
97 viscosity(
new Antioch::MixtureViscosity<Antioch::BlottnerViscosity<libMesh::Real>,libMesh::Real>(trans_mix) );
99 std::string blottner_data = input(
"Materials/"+material+
"/GasMixture/Antioch/blottner_data",
"default");
100 if( blottner_data ==
"default" )
101 blottner_data = Antioch::DefaultInstallFilename::blottner_data();
103 Antioch::read_blottner_data_ascii( *(viscosity.get()), blottner_data );
108 #ifdef ANTIOCH_HAVE_GSL
109 libMesh::UniquePtr<Antioch::MixtureViscosity<Antioch::KineticsTheoryViscosity<libMesh::Real,Antioch::GSLSpliner>,libMesh::Real> >
112 const Antioch::TransportMixture<libMesh::Real> & trans_mix,
113 viscosity_type<Antioch::KineticsTheoryViscosity<libMesh::Real,Antioch::GSLSpliner> > )
115 libMesh::UniquePtr<Antioch::MixtureViscosity<Antioch::KineticsTheoryViscosity<libMesh::Real,Antioch::GSLSpliner>,libMesh::Real> >
116 viscosity(
new Antioch::MixtureViscosity<Antioch::KineticsTheoryViscosity<libMesh::Real,Antioch::GSLSpliner>,libMesh::Real>(trans_mix) );
118 Antioch::build_kinetics_theory_viscosity<libMesh::Real,Antioch::GSLSpliner>( *(viscosity.get()) );
122 #endif // ANTIOCH_HAVE_GSL
125 libMesh::UniquePtr<Antioch::MixtureDiffusion<Antioch::ConstantLewisDiffusivity<libMesh::Real>,libMesh::Real> >
127 const std::string& material,
128 const Antioch::TransportMixture<libMesh::Real> & trans_mix,
133 libMesh::UniquePtr<Antioch::MixtureDiffusion<Antioch::ConstantLewisDiffusivity<libMesh::Real>,libMesh::Real> >
134 diffusivity(
new Antioch::MixtureDiffusion<Antioch::ConstantLewisDiffusivity<libMesh::Real>,libMesh::Real>(trans_mix) );
136 Antioch::build_constant_lewis_diffusivity<libMesh::Real>( *(diffusivity.get()), Le);
141 #ifdef ANTIOCH_HAVE_GSL
142 libMesh::UniquePtr<Antioch::MixtureDiffusion<Antioch::MolecularBinaryDiffusion<libMesh::Real,Antioch::GSLSpliner>,libMesh::Real> >
145 const Antioch::TransportMixture<libMesh::Real> & trans_mix,
146 diffusivity_type<Antioch::MolecularBinaryDiffusion<libMesh::Real,Antioch::GSLSpliner> > )
148 return libMesh::UniquePtr<Antioch::MixtureDiffusion<Antioch::MolecularBinaryDiffusion<libMesh::Real,Antioch::GSLSpliner>,libMesh::Real> >
149 (
new Antioch::MixtureDiffusion<Antioch::MolecularBinaryDiffusion<libMesh::Real,Antioch::GSLSpliner>,libMesh::Real>(trans_mix) );
151 #endif // ANTIOCH_HAVE_GSL
156 template<
typename KT,
typename T,
typename V,
typename C,
typename D>
158 libMesh::UniquePtr<AntiochMixtureAveragedTransportMixture<KT,T,V,C,D> >
162 libMesh::UniquePtr<Antioch::ChemicalMixture<libMesh::Real> > chem_mix =
165 libMesh::UniquePtr<Antioch::ReactionSet<libMesh::Real> > reaction_set =
168 libMesh::UniquePtr<Antioch::NASAThermoMixture<libMesh::Real,KT> > kinetics_thermo =
169 this->build_nasa_thermo_mix<KT>(input,material,*chem_mix);
171 libMesh::UniquePtr<Antioch::TransportMixture<libMesh::Real> > trans_mix =
174 libMesh::UniquePtr<Antioch::MixtureAveragedTransportMixture<libMesh::Real> > wilke_mix =
177 libMesh::UniquePtr<Antioch::MixtureViscosity<V,libMesh::Real> > visc =
178 this->build_viscosity<V>(input,material,*trans_mix);
180 libMesh::UniquePtr<Antioch::MixtureDiffusion<D,libMesh::Real> > diff =
181 this->build_diffusivity<D>(input,material,*trans_mix);
183 libMesh::Real min_T = this->
parse_min_T(input,material);
186 return libMesh::UniquePtr<AntiochMixtureAveragedTransportMixture<KT,T,V,C,D> >
188 (chem_mix, reaction_set, kinetics_thermo, trans_mix, wilke_mix, visc, diff, min_T, clip_negative_rho) );
193 #endif // GRINS_HAVE_ANTIOCH
195 #endif // GRINS_ANTIOCH_MIXTURE_AVERAGED_TRANSPORT_MIXTURE_BUILDER_H
libMesh::UniquePtr< Antioch::MixtureViscosity< Antioch::SutherlandViscosity< libMesh::Real >, libMesh::Real > > specialized_build_viscosity(const GetPot &input, const std::string &material, const Antioch::TransportMixture< libMesh::Real > &trans_mix, viscosity_type< Antioch::SutherlandViscosity< libMesh::Real > >)
bool parse_clip_negative_rho(const GetPot &input, const std::string &material)
libMesh::UniquePtr< Antioch::MixtureDiffusion< Antioch::ConstantLewisDiffusivity< libMesh::Real >, libMesh::Real > > specialized_build_diffusivity(const GetPot &input, const std::string &material, const Antioch::TransportMixture< libMesh::Real > &trans_mix, diffusivity_type< Antioch::ConstantLewisDiffusivity< libMesh::Real > >)
libMesh::UniquePtr< Antioch::ReactionSet< libMesh::Real > > build_reaction_set(const GetPot &input, const std::string &material, const Antioch::ChemicalMixture< libMesh::Real > &chem_mix)
AntiochMixtureAveragedTransportMixtureBuilder()
Base class building Antioch mixture wrappers.
Wrapper class for storing state for computing Wilke transport properties using Antioch.
libMesh::UniquePtr< Antioch::MixtureViscosity< Viscosity, libMesh::Real > > build_viscosity(const GetPot &input, const std::string &material, const Antioch::TransportMixture< libMesh::Real > &trans_mix)
static libMesh::Real parse_lewis_number(const GetPot &input, const std::string &material)
libMesh::UniquePtr< Antioch::MixtureDiffusion< Diffusivity, libMesh::Real > > build_diffusivity(const GetPot &input, const std::string &material, const Antioch::TransportMixture< libMesh::Real > &trans_mix)
libMesh::UniquePtr< Antioch::MixtureAveragedTransportMixture< libMesh::Real > > build_mix_avg_trans_mixture(const Antioch::TransportMixture< libMesh::Real > &trans_mix)
libMesh::UniquePtr< Antioch::MixtureViscosity< Antioch::BlottnerViscosity< libMesh::Real >, libMesh::Real > > specialized_build_viscosity(const GetPot &input, const std::string &material, const Antioch::TransportMixture< libMesh::Real > &trans_mix, viscosity_type< Antioch::BlottnerViscosity< libMesh::Real > >)
~AntiochMixtureAveragedTransportMixtureBuilder()
libMesh::UniquePtr< Antioch::TransportMixture< libMesh::Real > > build_transport_mixture(const GetPot &input, const std::string &material, const Antioch::ChemicalMixture< libMesh::Real > &chem_mix)
libMesh::Real parse_min_T(const GetPot &input, const std::string &material)
libMesh::UniquePtr< Antioch::ChemicalMixture< libMesh::Real > > build_chem_mix(const GetPot &input, const std::string &material)
libMesh::UniquePtr< AntiochMixtureAveragedTransportMixture< KineticsThermoCurveFit, Thermo, Viscosity, Conductivity, Diffusivity > > build_mixture(const GetPot &input, const std::string &material)