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