3#include <deal.II/base/parameter_handler.h>
9#include <meltpooldg/utilities/better_enum.hpp>
20 lax_friedrichs_modified,
28 BETTER_ENUM(OutputType,
char, conserved_variables, primitive_variables, material_quantities);
33 template <typename number>
43 NumericalFluxType numerical_flux_type = NumericalFluxType::lax_friedrichs_modified;
48 LinearizedConvectiveFluxJumpType linearization_jump_convective_flux =
49 LinearizedConvectiveFluxJumpType::complete_fd;
52 JacobianType jacobian_type = JacobianType::exact;
55 number courant_number = 0.15;
58 number viscous_courant_number = 1.0;
61 bool do_cfl_time_stepping =
false;
64 number gravity_constant = 0.0;
67 std::string domain_representation_type =
"fitted";
70 int verbosity_level = -1;
75 std::vector<OutputType> output_variables = {OutputType::conserved_variables};
80 bool do_output =
false;
84 bool print_summary =
false;
88 std::string output_filename =
"eigenvalues";
91 unsigned int n_eigenvalues_to_compute = 100;
102 prm.enter_subsection(
"compressible navier stokes");
105 time_integrator.add_parameters(prm);
107 "linearization jump convective flux",
108 linearization_jump_convective_flux,
109 "Calculation method of the linearized jump operator in the convective "
110 "numerical flux (required for implicit time stepping). The options are \"analytic\","
111 " \"complete_fd\" and \"lambda_fd\".");
112 prm.add_parameter(
"numerical flux type",
114 "Type of the numerical flux.");
115 prm.add_parameter(
"courant number",
117 "Courant number for convective time-step limit.");
118 prm.add_parameter(
"viscous courant number",
119 viscous_courant_number,
120 "Characteristic Courant-like number for viscous time-step limit.");
122 prm.add_parameter(
"jacobian type",
124 "Type of the jacobian. Choose between 'exact' and 'finite_difference'.");
127 do_cfl_time_stepping,
128 "If set to true, the CFL time step size criteria is used to determine the time step"
129 " size in each iteration.");
130 prm.add_parameter(
"gravity constant", gravity_constant,
"Gravity constant.");
131 prm.add_parameter(
"domain representation type",
132 domain_representation_type,
133 "Domain representation type. Choose between 'fitted' and 'cut'.",
134 dealii::Patterns::Selection(
"fitted|cut"));
135 prm.add_parameter(
"verbosity level", verbosity_level,
"Verbosity level for output.");
138 prm.leave_subsection();
140 prm.enter_subsection(
"output");
142 prm.enter_subsection(
"paraview");
144 prm.add_parameter(
"compressible output types",
146 "Type of the variables added to the output.");
148 prm.leave_subsection();
149 prm.enter_subsection(
"eigenvalues");
151 prm.add_parameter(
"enable",
152 eigenvalues_data.do_output,
153 "Whether to output eigenvalues of the Jacobian.");
156 eigenvalues_data.output_filename,
157 "Name of the file to which eigenvalues are written. A file ending is not required and will be added automatically.");
160 eigenvalues_data.print_summary,
161 "Whether to print a summary of the eigenvalues to the console on output time steps.");
162 prm.add_parameter(
"number of eigenvalues",
163 eigenvalues_data.n_eigenvalues_to_compute,
164 "Number of eigenvalues to compute if output_eigenvalues is true.");
166 prm.leave_subsection();
168 prm.leave_subsection();
180 fe.
post(base_fe_data);
181 AssertThrow(fe.
type == FiniteElementType::FE_DGQ,
183 "The compressible flow solver only supports elements of type 'FE_DGQ'."));
186 if (domain_representation_type ==
"cut")
188 if (time_integrator.integrator_type ==
189 TimeIntegration::TimeIntegratorSchemes::not_initialized)
190 time_integrator.integrator_type =
191 TimeIntegration::TimeIntegratorSchemes::explicit_euler;
193 time_integrator.integrator_type ==
194 TimeIntegration::TimeIntegratorSchemes::explicit_euler,
196 "The cut compressible flow solver only supports explicit Euler time integration."));
200 if (verbosity_level < 0)
201 verbosity_level = base_verbosity_level;
209 template <
typename number>
231 prm.enter_subsection(
"cut");
233 prm.add_parameter(
"unfitted flow boundary condition",
235 "Flow boundary condition type at the unfitted boundary. "
236 "Choose between 'no_slip_wall' and 'inflow'.");
240 prm.leave_subsection();
This file contains various functions that can be used to set and evaluate boundary conditions for the...
Definition boundary_condition_functions.hpp:17
analytic
Definition operation_data.hpp:24
lambda_fd
Definition operation_data.hpp:24
complete_fd
Definition operation_data.hpp:24
BETTER_ENUM(RampUpType, char, none, linear, exponential, cosine)
Enum for the type of ramp up function used for the velocity at an inflow boundary.
Collection of cut-related solver parameters required by the cut single-phase and multiphase compressi...
Definition operation_data.hpp:211
CutStabilizationData< number > stabilization
cut-related stabilization parameters
Definition operation_data.hpp:218
std::string unfitted_flow_boundary_condition
Definition operation_data.hpp:215
CutRepartitionData repartition
cut-related repartitioning parameters
Definition operation_data.hpp:221
void add_parameters(dealii::ParameterHandler &prm)
Add cut parameters in the parameter handler.
Definition operation_data.hpp:229
Collection of parameters required by the compressible Navier-Stokes operator.
Definition operation_data.hpp:35
TimeIntegration::TimeIntegratorData< number > time_integrator
Time integration data.
Definition operation_data.hpp:40
void add_parameters(dealii::ParameterHandler &prm)
Add compressible flow parameters in the parameter handler.
Definition operation_data.hpp:100
Utilities::LimiterData< number > limiter_data
Definition operation_data.hpp:72
FiniteElementData fe
Finite element data.
Definition operation_data.hpp:37
void post(const FiniteElementData &base_fe_data, const unsigned int base_verbosity_level)
Finalizes, adjusts and checks compressible flow parameters after reading user input.
Definition operation_data.hpp:178
Collection of parameters for the weighted repartitioning of the triangulation in cut applications.
Definition cut_data.hpp:74
void add_parameters(dealii::ParameterHandler &prm)
Add the repartitioning parameters in the parameter handler.
Definition cut_data.cpp:46
Collection of parameters for the stabilization of cutFEM and cutDG applications.
Definition cut_data.hpp:48
Definition finite_element_data.hpp:12
void add_parameters(dealii::ParameterHandler &prm)
Definition finite_element_data.cpp:8
void post(const FiniteElementData &base_fe_data)
Definition finite_element_data.cpp:30
FiniteElementType type
Definition finite_element_data.hpp:13
Definition limiters.hpp:32
void add_parameters(dealii::ParameterHandler &prm)
Definition limiters.templates.hpp:28