1 #include "euler_entropy_conserving_split_forms_check.h" 2 #include "flow_solver/flow_solver_factory.h" 3 #include "flow_solver/flow_solver_cases/periodic_turbulence.h" 8 template <
int dim,
int nstate>
11 const dealii::ParameterHandler ¶meter_handler_input)
13 , parameter_handler(parameter_handler_input)
16 template <
int dim,
int nstate>
20 const unsigned int n_fluxes = 4;
23 const std::array<TwoPtFluxEnum, n_fluxes> two_point_fluxes{{TwoPtFluxEnum::IR, TwoPtFluxEnum::CH, TwoPtFluxEnum::Ra, TwoPtFluxEnum::KG}};
24 const std::array<double, n_fluxes> tols{{5E-15, 5E-15, 5E-15, 1E-10}};
25 const std::array<std::string, n_fluxes> flux_names{{
"Ismail-Roe",
"Chandrashekar",
"Ranocha",
"Kennedy-Gruber"}};
27 for (
unsigned int i = 0; i < n_fluxes; ++i){
28 pcout <<
"-----------------------------------------------------------------------" << std::endl;
29 pcout <<
" Using " << flux_names[i] <<
" two-point flux" << std::endl;
30 pcout <<
"-----------------------------------------------------------------------" << std::endl;
32 const TwoPtFluxEnum flux = two_point_fluxes[i];
33 const double tol = tols[i];
45 const double initial_KE = flow_solver_case->get_integrated_kinetic_energy();
47 static_cast<void>(flow_solver->run());
48 const double final_entropy = flow_solver_case->get_numerical_entropy(flow_solver->dg);
49 flow_solver_case->compute_and_update_integrated_quantities(*flow_solver->dg);
50 const double final_KE = flow_solver_case->get_integrated_kinetic_energy();
54 pcout <<
"Final numerical entropy: " << final_entropy << std::endl;
55 pcout <<
"Initial kinetic energy: " << std::setprecision(16) << initial_KE << std::endl
56 <<
"Final: " << final_KE << std::endl
57 <<
"Scaled difference: " << abs((initial_KE-final_KE)/initial_KE)
58 << std::endl << std::endl;
61 if (abs(final_entropy) > tol){
62 pcout <<
"Entropy change is not within allowable tolerance. Test failing." << std::endl;
64 }
else pcout <<
"Entropy change is allowable." << std::endl;
TwoPointNumericalFlux two_point_num_flux_type
Store selected TwoPointNumericalFlux from the input file.
Files for the baseline physics.
Euler Entropy Check for Split Forms.
Main parameter class that contains the various other sub-parameter classes.
static std::unique_ptr< FlowSolver< dim, nstate > > select_flow_case(const Parameters::AllParameters *const parameters_input, const dealii::ParameterHandler ¶meter_handler_input)
Factory to return the correct flow solver given input file.
TwoPointNumericalFlux
Two point numerical flux type for split form.
const Parameters::AllParameters *const all_parameters
Pointer to all parameters.
EulerSplitEntropyCheck(const Parameters::AllParameters *const parameters_input, const dealii::ParameterHandler ¶meter_handler_input)
Constructor.
void compute_and_update_integrated_quantities(DGBase< dim, double > &dg)
int run_test() const override
Run test.
dealii::ConditionalOStream pcout
ConditionalOStream.
Base class of all the tests.
const dealii::ParameterHandler & parameter_handler
Parameter handler for storing the .prm file being ran.