int tester() { std::vector<std::string> species_str_list; // Test hard coded to 1 species right now. If we ever // add more here, be aware that the regression test on // the values is targeted at the N2 values, so if you // change the species order, update the N2_species index // accordingly. const unsigned int n_species = 1; species_str_list.reserve(n_species); species_str_list.push_back( "N2" ); unsigned int N2_species = 0; Antioch::ChemicalMixture<Scalar> chem_mixture( species_str_list ); typedef Antioch::StatMechThermodynamics<Scalar> MicroThermo; MicroThermo thermo_stat( chem_mixture ); Antioch::TransportMixture<Scalar> tran_mixture( chem_mixture ); Antioch::MixtureConductivity<Antioch::EuckenThermalConductivity<MicroThermo>,Scalar> e_k_mixture(tran_mixture); Antioch::build_eucken_thermal_conductivity<MicroThermo,Scalar>(e_k_mixture, thermo_stat); Antioch::MixtureViscosity<Antioch::SutherlandViscosity<Scalar>,Scalar> s_mu_mixture(tran_mixture); Antioch::MixtureViscosity<Antioch::BlottnerViscosity<Scalar>,Scalar> b_mu_mixture(tran_mixture); #ifdef ANTIOCH_HAVE_GSL Antioch::MixtureViscosity<Antioch::KineticsTheoryViscosity<Scalar, Antioch::GSLSpliner>,Scalar> k_mu_mixture(tran_mixture); #endif // ANTIOCH_HAVE_GSL Antioch::read_sutherland_data_ascii<Scalar>( s_mu_mixture, Antioch::DefaultFilename::sutherland_data() ); Antioch::read_blottner_data_ascii<Scalar>( b_mu_mixture, Antioch::DefaultFilename::blottner_data() ); #ifdef ANTIOCH_HAVE_GSL Antioch::build_kinetics_theory_viscosity<Scalar>(k_mu_mixture); #endif // ANTIOCH_HAVE_GSL const Scalar T = 1500.1; // Gold values were generated with long double version of test // Eucken, Sutherland gold Scalar k_e_s_N2_gold = 8.1294319021704618392660e-02L; Scalar k_e_s_N2_value = 0.0; // init // Eucken, Blottner gold Scalar k_e_b_N2_gold = 8.3906393746814049491975e-02L; Scalar k_e_b_N2_value = 0.0; // init // Eucken KineticsTheory gold #ifdef ANTIOCH_HAVE_GSL Scalar k_e_kt_N2_gold = 8.6774379182691310526782e-02L; Scalar k_e_kt_N2_value = 0.0; // init #endif // ANTIOCH_HAVE_GSL std::cout << "Eucken (with SutherlandViscosity):" << std::endl; for( unsigned int s = 0; s < n_species; s++ ) { Scalar mu = s_mu_mixture(s,T); Scalar value = e_k_mixture.conductivity_without_diffusion(s, T, mu); if( s == N2_species ) k_e_s_N2_value = value; std::cout << "k(" << species_str_list[s] << ") = " << value << std::endl; } std::cout << "Eucken (with BlottnerViscosity):" << std::endl; for( unsigned int s = 0; s < n_species; s++ ) { Scalar mu = b_mu_mixture(s,T); Scalar value = e_k_mixture.conductivity_without_diffusion(s, T, mu); if( s == N2_species ) k_e_b_N2_value = value; std::cout << "k(" << species_str_list[s] << ") = " << value << std::endl; } #ifdef ANTIOCH_HAVE_GSL std::cout << "Eucken (with KineticsTheoryViscosity):" << std::endl; for( unsigned int s = 0; s < n_species; s++ ) { Scalar mu = k_mu_mixture(s,T); Scalar value = e_k_mixture.conductivity_without_diffusion(s, T, mu); if( s == N2_species ) k_e_kt_N2_value = value; std::cout << "k(" << species_str_list[s] << ") = " << value << std::endl; } #endif // ANTIOCH_HAVE_GSL int return_flag = 0; // Now test all the values Scalar tol = std::numeric_limits<Scalar>::epsilon(); if( !test_val<Scalar>(k_e_s_N2_value, k_e_s_N2_gold, tol, "Eucken-Sutherland") ) return_flag = 1; if( !test_val<Scalar>(k_e_b_N2_value, k_e_b_N2_gold, tol, "Eucken-Blottner") ) return_flag = 1; #ifdef ANTIOCH_HAVE_GSL if( !test_val<Scalar>(k_e_kt_N2_value, k_e_kt_N2_gold, tol, "Eucken-KineticsTheory") ) return_flag = 1; #endif // ANTIOCH_HAVE_GSL return return_flag; }
int tester() { std::vector<std::string> species_str_list; const unsigned int n_species = 2; species_str_list.reserve(n_species); species_str_list.push_back( "N2" ); species_str_list.push_back( "O2" ); Antioch::ChemicalMixture<Scalar> chem_mixture( species_str_list ); Antioch::TransportMixture<Scalar> tran_mixture( chem_mixture ); Antioch::SutherlandViscosity<Scalar> s_N2(1.399306e-06, 1.066667e+02); Antioch::SutherlandViscosity<Scalar> s_O2(1.693411e-06, 1.270000e+02); Antioch::BlottnerViscosity<Scalar> b_N2(2.68142000000e-02, 3.17783800000e-01, -1.13155513000e+01); Antioch::BlottnerViscosity<Scalar> b_O2(4.49290000000e-02, -8.26158000000e-02, -9.20194750000e+00); #ifdef ANTIOCH_HAVE_GSL Antioch::KineticsTheoryViscosity<Scalar, Antioch::GSLSpliner> k_N2(97.530, 3.621, 0.0, chem_mixture.M(0)/Antioch::Constants::Avogadro<Scalar>()); Antioch::KineticsTheoryViscosity<Scalar, Antioch::GSLSpliner> k_O2(107.400, 3.458, 0.0, chem_mixture.M(1)/Antioch::Constants::Avogadro<Scalar>() ); #endif // ANTIOCH_HAVE_GSL Antioch::MixtureViscosity<Antioch::SutherlandViscosity<Scalar>,Scalar> s_mu_mixture(tran_mixture); Antioch::MixtureViscosity<Antioch::BlottnerViscosity<Scalar>,Scalar> b_mu_mixture(tran_mixture); #ifdef ANTIOCH_HAVE_GSL Antioch::MixtureViscosity<Antioch::KineticsTheoryViscosity<Scalar, Antioch::GSLSpliner>,Scalar> k_mu_mixture(tran_mixture); #endif // ANTIOCH_HAVE_GSL Antioch::read_sutherland_data_ascii<Scalar>( s_mu_mixture, Antioch::DefaultFilename::sutherland_data() ); Antioch::read_blottner_data_ascii<Scalar>( b_mu_mixture, Antioch::DefaultFilename::blottner_data() ); #ifdef ANTIOCH_HAVE_GSL Antioch::build_kinetics_theory_viscosity<Scalar>(k_mu_mixture); #endif // ANTIOCH_HAVE_GSL std::cout << s_mu_mixture << std::endl; std::cout << b_mu_mixture << std::endl; #ifdef ANTIOCH_HAVE_GSL std::cout << k_mu_mixture << std::endl; #endif // ANTIOCH_HAVE_GSL const Scalar T = 1500.1; std::cout << "Sutherland:" << std::endl; for( unsigned int s = 0; s < n_species; s++ ) { std::cout << "mu(" << species_str_list[s] << ") = " << s_mu_mixture(s, T) << std::endl; } std::cout << "Blottner:" << std::endl; for( unsigned int s = 0; s < n_species; s++ ) { std::cout << "mu(" << species_str_list[s] << ") = " << b_mu_mixture(s, T) << std::endl; } #ifdef ANTIOCH_HAVE_GSL std::cout << "Kinetic Theory:" << std::endl; for( unsigned int s = 0; s < n_species; s++ ) { std::cout << "mu(" << species_str_list[s] << ") = " << k_mu_mixture(s, T) << std::endl; } #endif // ANTIOCH_HAVE_GSL int return_flag = 0; Scalar tol = 2.0*std::numeric_limits<Scalar>::epsilon(); return_flag = test_values( s_mu_mixture(0, T), s_N2(T), tol ) || test_values( s_mu_mixture(1, T), s_O2(T), tol ) || test_values( b_mu_mixture(0, T), b_N2(T), tol ) || test_values( b_mu_mixture(1, T), b_O2(T), tol ); #ifdef ANTIOCH_HAVE_GSL return_flag = test_values( k_mu_mixture(0, T), k_N2(T), tol ) || test_values( k_mu_mixture(1, T), k_O2(T), tol ); #endif // ANTIOCH_HAVE_GSL return return_flag; }