1 #include <deal.II/base/mpi.h>     2 #include <deal.II/base/utilities.h>     3 #include <deal.II/base/conditional_ostream.h>     5 #include "parameters_flow_solver.h"    10 #include <sys/types.h>    15 namespace Parameters {
    19     prm.enter_subsection(
"flow_solver");
    21         prm.declare_entry(
"flow_case_type",
"taylor_green_vortex",
    22                           dealii::Patterns::Selection(
    23                           " taylor_green_vortex | "    24                           " decaying_homogeneous_isotropic_turbulence | "    25                           " burgers_viscous_snapshot | "    27                           " burgers_rewienski_snapshot | "    28                           " burgers_inviscid | "    29                           " convection_diffusion | "    31                           " periodic_1D_unsteady | "    33                           " isentropic_vortex | "    34                           " kelvin_helmholtz_instability | "    35                           " non_periodic_cube_flow | "    38                           " leblanc_shock_tube | "    39                           " shu_osher_problem | "    40                           " advection_limiter | "    42                           " double_mach_reflection | "    43                           " shock_diffraction | "    44                           " astrophysical_jet | "    45                           " strong_vortex_shock_wave |"),
    46                           "The type of flow we want to simulate. "    48                           " <taylor_green_vortex | "    49                           " decaying_homogeneous_isotropic_turbulence | "    50                           " burgers_viscous_snapshot | "    52                           " burgers_rewienski_snapshot | "    53                           " burgers_inviscid | "    54                           " convection_diffusion | "    56                           " periodic_1D_unsteady | "    58                           " isentropic_vortex | "    59                           " kelvin_helmholtz_instability | "    60                           " non_periodic_cube_flow | "    63                           " leblanc_shock_tube | "    64                           " shu_osher_problem | "    65                           " advection_limiter | "    67                           " double_mach_reflection | "    68                           " shock_diffraction | "    69                           " astrophysical_jet | "    70                           " strong_vortex_shock_wave >. ");
    72         prm.declare_entry(
"poly_degree", 
"1",
    73                           dealii::Patterns::Integer(0, dealii::Patterns::Integer::max_int_value),
    74                           "Polynomial order (P) of the basis functions for DG.");
    76         prm.declare_entry(
"max_poly_degree_for_adaptation", 
"0",
    77                           dealii::Patterns::Integer(0, dealii::Patterns::Integer::max_int_value),
    78                           "Maxiumum possible polynomial order (P) of the basis functions for DG "    79                           "when doing adaptive simulations. Default is 0 which actually sets "    80                           "the value to poly_degree in the code, indicating no adaptation.");
    82         prm.declare_entry(
"final_time", 
"1",
    83                           dealii::Patterns::Double(0, dealii::Patterns::Double::max_double_value),
    84                           "Final solution time.");
    86         prm.declare_entry(
"constant_time_step", 
"0",
    87                           dealii::Patterns::Double(0, dealii::Patterns::Double::max_double_value),
    88                           "Constant time step.");
    90         prm.declare_entry(
"courant_friedrichs_lewy_number", 
"1",
    91                           dealii::Patterns::Double(0, dealii::Patterns::Double::max_double_value),
    92                           "Courant-Friedrich-Lewy (CFL) number for constant time step.");
    94         prm.declare_entry(
"unsteady_data_table_filename", 
"unsteady_data_table",
    95                           dealii::Patterns::FileName(dealii::Patterns::FileName::FileType::input),
    96                           "Filename of the unsteady data table output file: unsteady_data_table_filename.txt.");
    98         prm.declare_entry(
"steady_state", 
"false",
    99                           dealii::Patterns::Bool(),
   100                           "Solve steady-state solution. False by default (i.e. unsteady by default).");
   102         prm.declare_entry(
"error_adaptive_time_step", 
"false",
   103                           dealii::Patterns::Bool(),
   104                           "Adapt the time step on the fly for unsteady flow simulations according to an estimate of temporal error. False by default (i.e. constant time step by default).");
   106         prm.declare_entry(
"adaptive_time_step", 
"false",
   107                           dealii::Patterns::Bool(),
   108                           "Adapt the time step on the fly for unsteady flow simulations according to a CFL condition. False by default (i.e. constant time step by default).");
   110         prm.declare_entry(
"steady_state_polynomial_ramping", 
"false",
   111                           dealii::Patterns::Bool(),
   112                           "For steady-state cases, does polynomial ramping if set to true. False by default.");
   114         prm.declare_entry(
"sensitivity_table_filename", 
"sensitivity_table",
   115                           dealii::Patterns::FileName(dealii::Patterns::FileName::FileType::input),
   116                           "Filename for the sensitivity data table output file: sensitivity_table_filename.txt.");
   118         prm.declare_entry(
"restart_computation_from_file", 
"false",
   119                           dealii::Patterns::Bool(),
   120                           "Restarts the computation from the restart file. False by default.");
   122         prm.declare_entry(
"output_restart_files", 
"false",
   123                           dealii::Patterns::Bool(),
   124                           "Output restart files for restarting the computation. False by default.");
   126         prm.declare_entry(
"restart_files_directory_name", 
".",
   127                           dealii::Patterns::FileName(dealii::Patterns::FileName::FileType::input),
   128                           "Name of directory for writing and reading restart files. Current directory by default.");
   130         prm.declare_entry(
"restart_file_index", 
"1",
   131                           dealii::Patterns::Integer(1, dealii::Patterns::Integer::max_int_value),
   132                           "Index of restart file from which the computation will be restarted from. 1 by default.");
   134         prm.declare_entry(
"output_restart_files_every_x_steps", 
"1",
   135                           dealii::Patterns::Integer(1,dealii::Patterns::Integer::max_int_value),
   136                           "Outputs the restart files every x steps.");
   138         prm.declare_entry(
"output_restart_files_every_dt_time_intervals", 
"0.0",
   139                           dealii::Patterns::Double(0,dealii::Patterns::Double::max_double_value),
   140                           "Outputs the restart files at time intervals of dt.");
   142         prm.declare_entry(
"expected_order_at_final_time", 
"0.0",
   143                   dealii::Patterns::Double(0.0, 10.0),
   144                   "For convergence tests related to limiters, expected order of accuracy for final run.");
   146         prm.enter_subsection(
"grid");
   148             prm.declare_entry(
"input_mesh_filename", 
"",
   149                               dealii::Patterns::FileName(dealii::Patterns::FileName::FileType::input),
   150                               "Filename of the input mesh: input_mesh_filename.msh. For cases that import a mesh file.");
   152             prm.declare_entry(
"grid_degree", 
"1",
   153                               dealii::Patterns::Integer(1, dealii::Patterns::Integer::max_int_value),
   154                               "Polynomial degree of the grid. Curvilinear grid if set greater than 1; default is 1.");
   156             prm.declare_entry(
"grid_left_bound", 
"0.0",
   157                               dealii::Patterns::Double(-dealii::Patterns::Double::max_double_value, dealii::Patterns::Double::max_double_value),
   158                               "Left bound of domain for hyper_cube mesh based cases.");
   160             prm.declare_entry(
"grid_right_bound", 
"1.0",
   161                               dealii::Patterns::Double(-dealii::Patterns::Double::max_double_value, dealii::Patterns::Double::max_double_value),
   162                               "Right bound of domain for hyper_cube mesh based cases.");
   164             prm.declare_entry(
"number_of_grid_elements_per_dimension", 
"4",
   165                               dealii::Patterns::Integer(1, dealii::Patterns::Integer::max_int_value),
   166                               "Number of grid elements per dimension for hyper_cube mesh based cases.");
   168             prm.declare_entry(
"number_of_mesh_refinements", 
"0",
   169                               dealii::Patterns::Integer(0, dealii::Patterns::Integer::max_int_value),
   170                               "Number of mesh refinements for Gaussian bump and naca0012 based cases.");
   172             prm.declare_entry(
"use_gmsh_mesh", 
"false",
   173                               dealii::Patterns::Bool(),
   174                               "Use the input .msh file which calls read_gmsh. False by default.");
   176             prm.declare_entry(
"mesh_reader_verbose_output", 
"false",
   177                               dealii::Patterns::Bool(),
   178                               "Flag for verbose (true) or quiet (false) mesh reader output.");
   180             prm.enter_subsection(
"gmsh_boundary_IDs");
   183                 prm.declare_entry(
"use_periodic_BC_in_x", 
"false",
   184                                   dealii::Patterns::Bool(),
   185                                   "Use periodic boundary condition in the x-direction. False by default.");
   187                 prm.declare_entry(
"use_periodic_BC_in_y", 
"false",
   188                                   dealii::Patterns::Bool(),
   189                                   "Use periodic boundary condition in the y-direction. False by default.");
   191                 prm.declare_entry(
"use_periodic_BC_in_z", 
"false",
   192                                   dealii::Patterns::Bool(),
   193                                   "Use periodic boundary condition in the z-direction. False by default.");
   195                 prm.declare_entry(
"x_periodic_id_face_1", 
"2001",
   196                                   dealii::Patterns::Integer(1, dealii::Patterns::Integer::max_int_value),
   197                                   "Boundary ID for the first periodic boundary face in the x-direction.");
   199                 prm.declare_entry(
"x_periodic_id_face_2", 
"2002",
   200                                   dealii::Patterns::Integer(1, dealii::Patterns::Integer::max_int_value),
   201                                   "Boundary ID for the second periodic boundary face in the x-direction.");
   203                 prm.declare_entry(
"y_periodic_id_face_1", 
"2003",
   204                                   dealii::Patterns::Integer(1, dealii::Patterns::Integer::max_int_value),
   205                                   "Boundary ID for the first periodic boundary face in the y-direction.");
   207                 prm.declare_entry(
"y_periodic_id_face_2", 
"2004",
   208                                   dealii::Patterns::Integer(1, dealii::Patterns::Integer::max_int_value),
   209                                   "Boundary ID for the second periodic boundary face in the y-direction.");
   211                 prm.declare_entry(
"z_periodic_id_face_1", 
"2005",
   212                                   dealii::Patterns::Integer(1, dealii::Patterns::Integer::max_int_value),
   213                                   "Boundary ID for the first periodic boundary face in the z-direction.");
   215                 prm.declare_entry(
"z_periodic_id_face_2", 
"2006",
   216                                   dealii::Patterns::Integer(1, dealii::Patterns::Integer::max_int_value),
   217                                   "Boundary ID for the second periodic boundary face in the z-direction.");
   219             prm.leave_subsection();
   221             prm.enter_subsection(
"gaussian_bump");
   223                 prm.declare_entry(
"channel_length", 
"3.0",
   224                                   dealii::Patterns::Double(0, dealii::Patterns::Double::max_double_value),
   225                                   "Lenght of channel for gaussian bump meshes.");
   227                 prm.declare_entry(
"channel_height", 
"0.8",
   228                                   dealii::Patterns::Double(0, dealii::Patterns::Double::max_double_value),
   229                                   "Height of channel for gaussian bump meshes.");
   231                 prm.declare_entry(
"bump_height", 
"0.0625", 
   232                                   dealii::Patterns::Double(0, dealii::Patterns::Double::max_double_value),
   233                                   "Height of the bump for gaussian bump meshes.");
   235                 prm.declare_entry(
"number_of_subdivisions_in_x_direction", 
"0",
   236                                   dealii::Patterns::Integer(0, dealii::Patterns::Integer::max_int_value),
   237                                   "Number of subdivisions in the x direction for gaussian bump meshes.");
   239                 prm.declare_entry(
"number_of_subdivisions_in_y_direction", 
"0",
   240                                   dealii::Patterns::Integer(0, dealii::Patterns::Integer::max_int_value),
   241                                   "Number of subdivisions in the y direction for gaussian bump meshes.");
   243                 prm.declare_entry(
"number_of_subdivisions_in_z_direction", 
"0",
   244                                   dealii::Patterns::Integer(0, dealii::Patterns::Integer::max_int_value),
   245                                   "Number of subdivisions in the z direction for gaussian bump meshes.");
   247             prm.leave_subsection();
   249           prm.enter_subsection(
"grid_rectangle");
   251               prm.declare_entry(
"grid_top_bound", 
"0.0",
   252                                 dealii::Patterns::Double(-dealii::Patterns::Double::max_double_value, dealii::Patterns::Double::max_double_value),
   253                                 "Left bound of domain for hyper_cube mesh based cases.");
   255               prm.declare_entry(
"grid_bottom_bound", 
"0.0",
   256                                 dealii::Patterns::Double(-dealii::Patterns::Double::max_double_value, dealii::Patterns::Double::max_double_value),
   257                                 "Right bound of domain for hyper_cube mesh based cases.");
   259               prm.declare_entry(
"grid_z_lower_bound", 
"0.0",
   260                                 dealii::Patterns::Double(-dealii::Patterns::Double::max_double_value, dealii::Patterns::Double::max_double_value),
   261                                 "Left bound of domain for hyper_cube mesh based cases.");
   263               prm.declare_entry(
"grid_z_upper_bound", 
"0.0",
   264                                 dealii::Patterns::Double(-dealii::Patterns::Double::max_double_value, dealii::Patterns::Double::max_double_value),
   265                                 "Right bound of domain for hyper_cube mesh based cases.");
   267               prm.declare_entry(
"number_of_grid_elements_x", 
"1",
   268                                 dealii::Patterns::Integer(1, dealii::Patterns::Integer::max_int_value),
   269                                 "Number of grid elements in the x-direction.");
   271               prm.declare_entry(
"number_of_grid_elements_y", 
"1",
   272                                 dealii::Patterns::Integer(1, dealii::Patterns::Integer::max_int_value),
   273                                 "Number of grid elements in the y-direction.");
   275               prm.declare_entry(
"number_of_grid_elements_z", 
"1",
   276                                 dealii::Patterns::Integer(1, dealii::Patterns::Integer::max_int_value),
   277                                 "Number of grid elements in the z-direction.");
   279           prm.leave_subsection();
   282         prm.leave_subsection();
   284         prm.enter_subsection(
"taylor_green_vortex");
   286             prm.declare_entry(
"expected_kinetic_energy_at_final_time", 
"1",
   287                               dealii::Patterns::Double(0, dealii::Patterns::Double::max_double_value),
   288                               "For integration test purposes, expected kinetic energy at final time.");
   290             prm.declare_entry(
"expected_theoretical_dissipation_rate_at_final_time", 
"1",
   291                               dealii::Patterns::Double(0, dealii::Patterns::Double::max_double_value),
   292                               "For integration test purposes, expected theoretical kinetic energy dissipation rate at final time.");
   294             prm.declare_entry(
"density_initial_condition_type", 
"uniform",
   295                               dealii::Patterns::Selection(
   298                               "The type of density initialization. "   303             prm.declare_entry(
"do_calculate_numerical_entropy", 
"false",
   304                               dealii::Patterns::Bool(),
   305                               "Flag to calculate numerical entropy and write to file. By default, do not calculate.");
   308         prm.leave_subsection();
   310         prm.enter_subsection(
"kelvin_helmholtz_instability");
   312             prm.declare_entry(
"atwood_number", 
"0.5",
   313                               dealii::Patterns::Double(0.0, 1.0),
   314                               "Atwood number, which characterizes the density difference "   315                               "between the layers of fluid.");
   317         prm.leave_subsection();
   319         prm.enter_subsection(
"ESFR_parameter_tests");
   321             prm.declare_entry(
"number_ESFR_parameter_values", 
"0",
   322                               dealii::Patterns::Integer(),
   323                               "Number of tested ESFR parameter values");
   324             prm.declare_entry(
"ESFR_parameter_values_start", 
"1e-3",
   325                               dealii::Patterns::Double(0.0, dealii::Patterns::Double::max_double_value),
   326                               "Minimum ESFR parameter values >0 since logspace vector");
   328             prm.declare_entry(
"ESFR_parameter_values_end", 
"1e-3",
   329                               dealii::Patterns::Double(0.0, dealii::Patterns::Double::max_double_value),
   330                               "Maximum ESFR parameter values >0 since logspace vector");
   332         prm.leave_subsection();
   334         prm.declare_entry(
"apply_initial_condition_method", 
"interpolate_initial_condition_function",
   335                           dealii::Patterns::Selection(
   336                           " interpolate_initial_condition_function | "   337                           " project_initial_condition_function | "   338                           " read_values_from_file_and_project "),
   339                           "The method used for applying the initial condition. "   341                           " <interpolate_initial_condition_function | "   342                           " project_initial_condition_function | "    343                           " read_values_from_file_and_project>.");
   345         prm.declare_entry(
"input_flow_setup_filename_prefix", 
"setup",
   346                           dealii::Patterns::FileName(dealii::Patterns::FileName::FileType::input),
   347                           "Filename prefix of the input flow setup file. "   348                           "Example: 'setup' for files named setup-0000i.dat, where i is the MPI rank. "   349                           "For initializing the flow with values from a file. "   350                           "To be set when apply_initial_condition_method is read_values_from_file_and_project.");
   352         prm.enter_subsection(
"output_velocity_field");
   354             prm.declare_entry(
"output_velocity_field_at_fixed_times", 
"false",
   355                               dealii::Patterns::Bool(),
   356                               "Output velocity field (at equidistant nodes) at fixed times. False by default.");
   358             prm.declare_entry(
"output_velocity_field_times_string", 
" ",
   359                               dealii::Patterns::FileName(dealii::Patterns::FileName::FileType::input),
   360                               "String of the times at which to output the velocity field. "   361                               "Example: '0.0 1.0 2.0 3.0 ' or '0.0 1.0 2.0 3.0'");
   363             prm.declare_entry(
"output_vorticity_magnitude_field_in_addition_to_velocity", 
"false",
   364                               dealii::Patterns::Bool(),
   365                               "Output vorticity magnitude field in addition to velocity field. False by default.");
   367             prm.declare_entry(
"output_flow_field_files_directory_name", 
".",
   368                               dealii::Patterns::FileName(dealii::Patterns::FileName::FileType::input),
   369                               "Name of directory for writing flow field files. Current directory by default.");
   371         prm.leave_subsection();
   373         prm.declare_entry(
"end_exactly_at_final_time", 
"true",
   374                           dealii::Patterns::Bool(),
   375                           "Flag to adjust the last timestep such that the simulation "   376                           "ends exactly at final_time. True by default.");
   378     prm.leave_subsection();
   383     const int mpi_rank = dealii::Utilities::MPI::this_mpi_process(MPI_COMM_WORLD);
   384     dealii::ConditionalOStream pcout(std::cout, mpi_rank==0);
   385     prm.enter_subsection(
"flow_solver");
   387         const std::string flow_case_type_string = prm.get(
"flow_case_type");
   388         if      (flow_case_type_string == 
"taylor_green_vortex")        {
flow_case_type = taylor_green_vortex;}
   389         else if (flow_case_type_string == 
"decaying_homogeneous_isotropic_turbulence") 
   391         else if (flow_case_type_string == 
"burgers_viscous_snapshot")   {
flow_case_type = burgers_viscous_snapshot;}
   392         else if (flow_case_type_string == 
"burgers_rewienski_snapshot") {
flow_case_type = burgers_rewienski_snapshot;}
   393         else if (flow_case_type_string == 
"naca0012")                   {
flow_case_type = naca0012;}
   394         else if (flow_case_type_string == 
"burgers_inviscid")           {
flow_case_type = burgers_inviscid;}
   395         else if (flow_case_type_string == 
"convection_diffusion")       {
flow_case_type = convection_diffusion;}
   396         else if (flow_case_type_string == 
"advection")                  {
flow_case_type = advection;}
   397         else if (flow_case_type_string == 
"periodic_1D_unsteady")       {
flow_case_type = periodic_1D_unsteady;}
   398         else if (flow_case_type_string == 
"gaussian_bump")              {
flow_case_type = gaussian_bump;}
   399         else if (flow_case_type_string == 
"isentropic_vortex")          {
flow_case_type = isentropic_vortex;}
   400         else if (flow_case_type_string == 
"kelvin_helmholtz_instability")   
   402         else if (flow_case_type_string == 
"non_periodic_cube_flow")     {
flow_case_type = non_periodic_cube_flow;}
   404         else if (flow_case_type_string == 
"sod_shock_tube")             {
flow_case_type = sod_shock_tube;}
   405         else if (flow_case_type_string == 
"low_density")                {
flow_case_type = low_density;}
   406         else if (flow_case_type_string == 
"leblanc_shock_tube")         {
flow_case_type = leblanc_shock_tube;}
   407         else if (flow_case_type_string == 
"shu_osher_problem")          {
flow_case_type = shu_osher_problem;}
   408         else if (flow_case_type_string == 
"advection_limiter")          {
flow_case_type = advection_limiter;}
   409         else if (flow_case_type_string == 
"burgers_limiter")            {
flow_case_type = burgers_limiter;}
   410         else if (flow_case_type_string == 
"double_mach_reflection")     {
flow_case_type = double_mach_reflection;}
   411         else if (flow_case_type_string == 
"shock_diffraction")          {
flow_case_type = shock_diffraction;}
   412         else if (flow_case_type_string == 
"astrophysical_jet")          {
flow_case_type = astrophysical_jet;}
   413         else if (flow_case_type_string == 
"strong_vortex_shock_wave")   {
flow_case_type = strong_vortex_shock_wave;}
   434         struct stat info_restart;
   437                       << 
"Please create the directory and restart. Aborting..." << std::endl;
   445         prm.enter_subsection(
"grid");
   456             prm.enter_subsection(
"gmsh_boundary_IDs");
   468             prm.leave_subsection();
   470             prm.enter_subsection(
"gaussian_bump");
   479             prm.leave_subsection();
   481             prm.enter_subsection(
"grid_rectangle");
   492             prm.leave_subsection();
   494         prm.leave_subsection();
   497         prm.enter_subsection(
"taylor_green_vortex");
   502             const std::string density_initial_condition_type_string = prm.get(
"density_initial_condition_type");
   507         prm.leave_subsection();
   509         prm.enter_subsection(
"kelvin_helmholtz_instability");
   513         prm.leave_subsection();
   515         prm.enter_subsection(
"ESFR_parameter_tests");
   521         prm.leave_subsection();
   523         const std::string apply_initial_condition_method_string = prm.get(
"apply_initial_condition_method");
   524         if      (apply_initial_condition_method_string == 
"interpolate_initial_condition_function") {
apply_initial_condition_method = interpolate_initial_condition_function;}
   525         else if (apply_initial_condition_method_string == 
"project_initial_condition_function")     {
apply_initial_condition_method = project_initial_condition_function;}
   526         else if (apply_initial_condition_method_string == 
"read_values_from_file_and_project")      {
apply_initial_condition_method = read_values_from_file_and_project;}
   530         prm.enter_subsection(
"output_velocity_field");
   538             struct stat info_flow;
   541                           << 
"Please create the directory and restart. Aborting..." << std::endl;
   545         prm.leave_subsection();
   549     prm.leave_subsection();
 int number_of_subdivisions_in_y_direction
Number of subdivisions in y direction for gaussian bump case. 
int y_periodic_id_face_2
Custom Boundary IDs for the second periodic face in the y-direction. 
double channel_length
Width of channel for gaussian bump case. 
double final_time
Final solution time. 
int y_periodic_id_face_1
Custom Boundary IDs for the first periodic face in the y-direction. 
double output_restart_files_every_dt_time_intervals
Outputs the restart files at time intervals of dt. 
bool error_adaptive_time_step
Computes time step based on error. 
int x_periodic_id_face_1
Custom Boundary IDs for the first periodic face in the x-direction. 
int number_of_subdivisions_in_z_direction
Number of subdivisions in z direction for gaussian bump case. 
FlowCaseType flow_case_type
Selected FlowCaseType from the input file. 
unsigned int number_of_grid_elements_per_dimension
Number of grid elements per dimension for hyper_cube mesh based cases. 
unsigned int number_of_grid_elements_z
Number of subdivisions in z direction for a rectangle grid. 
bool steady_state
Flag for solving steady state solution. 
int z_periodic_id_face_2
Custom Boundary IDs for the first periodic face in the z-direction. 
double courant_friedrichs_lewy_number
Courant-Friedrich-Lewy (CFL) number for constant time step. 
bool adaptive_time_step
Flag for computing the time step on the fly. 
bool output_vorticity_magnitude_field_in_addition_to_velocity
Flag for outputting vorticity magnitude field in addition to velocity field. 
bool output_velocity_field_at_fixed_times
Flag for outputting velocity field at fixed times. 
int z_periodic_id_face_1
Custom Boundary IDs for the first periodic face in the z-direction. 
double ESFR_parameter_values_start
For user defined FR parameter tests, value of starting FR param. 
unsigned int grid_degree
Parameters related to mesh generation. 
double constant_time_step
Constant time step. 
double grid_bottom_bound
Minimum y bound of domain for a rectangle grid. 
bool restart_computation_from_file
Restart computation from restart file. 
int number_ESFR_parameter_values
For user defined FR parameter tests, number of values to be tested. 
double channel_height
Height of channel for gaussian bump case. 
double ESFR_parameter_values_end
For user defined FR parameter tests, value of final FR param. 
bool use_periodic_BC_in_z
Flag for using periodic boundary conditions in the z-direction. 
bool output_restart_files
Output the restart files. 
Files for the baseline physics. 
void parse_parameters(dealii::ParameterHandler &prm)
Parses input file and sets the variables. 
double grid_z_lower_bound
Minimum z bound of domain for a rectangle grid. 
double bump_height
Height of gaussian bump. 
bool mesh_reader_verbose_output
< Flag for verbose (true) or quiet (false) mesh reader output 
unsigned int poly_degree
Polynomial order (P) of the basis functions for DG. 
bool do_calculate_numerical_entropy
For TGV, flag to calculate and write numerical entropy. 
bool steady_state_polynomial_ramping
Flag for steady state polynomial ramping. 
double grid_z_upper_bound
Maximum z bound of domain for a rectangle grid. 
std::string output_velocity_field_times_string
String of velocity field output times. 
double grid_left_bound
Left bound of domain for hyper_cube mesh based cases. 
std::string input_flow_setup_filename_prefix
double expected_kinetic_energy_at_final_time
double expected_order_at_final_time
For limiter convergence tests, specify expected order at final time. 
unsigned int restart_file_index
Index of desired restart file for restarting the computation from. 
int output_restart_files_every_x_steps
Outputs the restart files every x steps. 
unsigned int number_of_grid_elements_x
Number of subdivisions in x direction for a rectangle grid. 
double grid_top_bound
Maximum y bound of domain for a rectangle grid. 
bool use_periodic_BC_in_y
Flag for using periodic boundary conditions in the y-direction. 
double expected_theoretical_dissipation_rate_at_final_time
std::string input_mesh_filename
bool end_exactly_at_final_time
Flag to adjust the last timestep such that the simulation ends exactly at final_time. 
int number_of_mesh_refinements
Number of refinements for naca0012 and Gaussian bump based cases. 
bool use_gmsh_mesh
< Flag for using input mesh file 
unsigned int number_of_times_to_output_velocity_field
Number of fixed times to output the velocity field. 
unsigned int number_of_grid_elements_y
Number of subdivisions in y direction for a rectangle grid. 
std::string unsteady_data_table_filename
double atwood_number
For KHI, the atwood number. 
int x_periodic_id_face_2
Custom Boundary IDs for the second periodic face in the x-direction. 
static void declare_parameters(dealii::ParameterHandler &prm)
Declares the possible variables and sets the defaults. 
double grid_right_bound
Right bound of domain for hyper_cube mesh based cases. 
int number_of_subdivisions_in_x_direction
Number of subdivisions in x direction for gaussian bump case. 
std::string restart_files_directory_name
Name of directory for writing and reading restart files. 
std::string sensitivity_table_filename
ApplyInitialConditionMethod apply_initial_condition_method
Selected ApplyInitialConditionMethod from the input file. 
unsigned int max_poly_degree_for_adaptation
Maximum polynomial order of the DG basis functions for adaptation. 
bool use_periodic_BC_in_x
Flag for using periodic boundary conditions in the x-direction. 
DensityInitialConditionType density_initial_condition_type
Selected DensityInitialConditionType from the input file. 
std::string output_flow_field_files_directory_name
Name of directory for writing flow field files.