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.declare_entry(
"apply_initial_condition_method",
"interpolate_initial_condition_function",
320 dealii::Patterns::Selection(
321 " interpolate_initial_condition_function | " 322 " project_initial_condition_function | " 323 " read_values_from_file_and_project "),
324 "The method used for applying the initial condition. " 326 " <interpolate_initial_condition_function | " 327 " project_initial_condition_function | " 328 " read_values_from_file_and_project>.");
330 prm.declare_entry(
"input_flow_setup_filename_prefix",
"setup",
331 dealii::Patterns::FileName(dealii::Patterns::FileName::FileType::input),
332 "Filename prefix of the input flow setup file. " 333 "Example: 'setup' for files named setup-0000i.dat, where i is the MPI rank. " 334 "For initializing the flow with values from a file. " 335 "To be set when apply_initial_condition_method is read_values_from_file_and_project.");
337 prm.enter_subsection(
"output_velocity_field");
339 prm.declare_entry(
"output_velocity_field_at_fixed_times",
"false",
340 dealii::Patterns::Bool(),
341 "Output velocity field (at equidistant nodes) at fixed times. False by default.");
343 prm.declare_entry(
"output_velocity_field_times_string",
" ",
344 dealii::Patterns::FileName(dealii::Patterns::FileName::FileType::input),
345 "String of the times at which to output the velocity field. " 346 "Example: '0.0 1.0 2.0 3.0 ' or '0.0 1.0 2.0 3.0'");
348 prm.declare_entry(
"output_vorticity_magnitude_field_in_addition_to_velocity",
"false",
349 dealii::Patterns::Bool(),
350 "Output vorticity magnitude field in addition to velocity field. False by default.");
352 prm.declare_entry(
"output_flow_field_files_directory_name",
".",
353 dealii::Patterns::FileName(dealii::Patterns::FileName::FileType::input),
354 "Name of directory for writing flow field files. Current directory by default.");
356 prm.leave_subsection();
358 prm.declare_entry(
"end_exactly_at_final_time",
"true",
359 dealii::Patterns::Bool(),
360 "Flag to adjust the last timestep such that the simulation " 361 "ends exactly at final_time. True by default.");
363 prm.leave_subsection();
368 const int mpi_rank = dealii::Utilities::MPI::this_mpi_process(MPI_COMM_WORLD);
369 dealii::ConditionalOStream pcout(std::cout, mpi_rank==0);
370 prm.enter_subsection(
"flow_solver");
372 const std::string flow_case_type_string = prm.get(
"flow_case_type");
373 if (flow_case_type_string ==
"taylor_green_vortex") {
flow_case_type = taylor_green_vortex;}
374 else if (flow_case_type_string ==
"decaying_homogeneous_isotropic_turbulence")
376 else if (flow_case_type_string ==
"burgers_viscous_snapshot") {
flow_case_type = burgers_viscous_snapshot;}
377 else if (flow_case_type_string ==
"burgers_rewienski_snapshot") {
flow_case_type = burgers_rewienski_snapshot;}
378 else if (flow_case_type_string ==
"naca0012") {
flow_case_type = naca0012;}
379 else if (flow_case_type_string ==
"burgers_inviscid") {
flow_case_type = burgers_inviscid;}
380 else if (flow_case_type_string ==
"convection_diffusion") {
flow_case_type = convection_diffusion;}
381 else if (flow_case_type_string ==
"advection") {
flow_case_type = advection;}
382 else if (flow_case_type_string ==
"periodic_1D_unsteady") {
flow_case_type = periodic_1D_unsteady;}
383 else if (flow_case_type_string ==
"gaussian_bump") {
flow_case_type = gaussian_bump;}
384 else if (flow_case_type_string ==
"isentropic_vortex") {
flow_case_type = isentropic_vortex;}
385 else if (flow_case_type_string ==
"kelvin_helmholtz_instability")
387 else if (flow_case_type_string ==
"non_periodic_cube_flow") {
flow_case_type = non_periodic_cube_flow;}
389 else if (flow_case_type_string ==
"sod_shock_tube") {
flow_case_type = sod_shock_tube;}
390 else if (flow_case_type_string ==
"low_density") {
flow_case_type = low_density;}
391 else if (flow_case_type_string ==
"leblanc_shock_tube") {
flow_case_type = leblanc_shock_tube;}
392 else if (flow_case_type_string ==
"shu_osher_problem") {
flow_case_type = shu_osher_problem;}
393 else if (flow_case_type_string ==
"advection_limiter") {
flow_case_type = advection_limiter;}
394 else if (flow_case_type_string ==
"burgers_limiter") {
flow_case_type = burgers_limiter;}
395 else if (flow_case_type_string ==
"double_mach_reflection") {
flow_case_type = double_mach_reflection;}
396 else if (flow_case_type_string ==
"shock_diffraction") {
flow_case_type = shock_diffraction;}
397 else if (flow_case_type_string ==
"astrophysical_jet") {
flow_case_type = astrophysical_jet;}
398 else if (flow_case_type_string ==
"strong_vortex_shock_wave") {
flow_case_type = strong_vortex_shock_wave;}
419 struct stat info_restart;
422 <<
"Please create the directory and restart. Aborting..." << std::endl;
430 prm.enter_subsection(
"grid");
441 prm.enter_subsection(
"gmsh_boundary_IDs");
453 prm.leave_subsection();
455 prm.enter_subsection(
"gaussian_bump");
464 prm.leave_subsection();
466 prm.enter_subsection(
"grid_rectangle");
477 prm.leave_subsection();
479 prm.leave_subsection();
482 prm.enter_subsection(
"taylor_green_vortex");
487 const std::string density_initial_condition_type_string = prm.get(
"density_initial_condition_type");
492 prm.leave_subsection();
494 prm.enter_subsection(
"kelvin_helmholtz_instability");
498 prm.leave_subsection();
500 const std::string apply_initial_condition_method_string = prm.get(
"apply_initial_condition_method");
501 if (apply_initial_condition_method_string ==
"interpolate_initial_condition_function") {
apply_initial_condition_method = interpolate_initial_condition_function;}
502 else if (apply_initial_condition_method_string ==
"project_initial_condition_function") {
apply_initial_condition_method = project_initial_condition_function;}
503 else if (apply_initial_condition_method_string ==
"read_values_from_file_and_project") {
apply_initial_condition_method = read_values_from_file_and_project;}
507 prm.enter_subsection(
"output_velocity_field");
515 struct stat info_flow;
518 <<
"Please create the directory and restart. Aborting..." << std::endl;
522 prm.leave_subsection();
526 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.
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.
double channel_height
Height of channel for gaussian bump case.
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.