20 MooseEnum comp_type(
"incompressible weakly-compressible",
"incompressible");
22 "compressibility", comp_type,
"Compressibility constraint for the Navier-Stokes equations.");
24 params.
addParam<std::vector<std::string>>(
26 "If supplied, the system checks for available velocity variables. " 27 "Otherwise, they are created within the action.");
29 params.
addParam<NonlinearVariableName>(
"pressure_variable",
30 "If supplied, the system checks for available pressure " 31 "variable. Otherwise, it is created within the action.");
33 params.
addParam<NonlinearVariableName>(
34 "fluid_temperature_variable",
35 "If supplied, the system checks for available fluid " 36 "temperature variable. Otherwise, it is created within the action.");
42 params.
addParam<std::vector<BoundaryName>>(
43 "inlet_boundaries", std::vector<BoundaryName>(),
"Names of inlet boundaries");
44 params.
addParam<std::vector<BoundaryName>>(
45 "outlet_boundaries", std::vector<BoundaryName>(),
"Names of outlet boundaries");
46 params.
addParam<std::vector<BoundaryName>>(
47 "wall_boundaries", std::vector<BoundaryName>(),
"Names of wall boundaries");
48 params.
addParam<std::vector<BoundaryName>>(
"hydraulic_separator_sidesets",
49 std::vector<BoundaryName>(),
50 "Sidesets which serve as hydraulic separators.");
60 "dynamic_viscosity",
NS::mu,
"The name of the dynamic viscosity");
65 params.
addParam<
bool>(
"solve_for_dynamic_pressure",
67 "Whether to solve for the dynamic pressure instead of the total pressure");
71 "pin_pressure",
false,
"Switch to enable pressure shifting for incompressible simulations.");
72 MooseEnum s_type(
"average point-value average-uo point-value-uo",
"average-uo");
74 "pinned_pressure_type",
76 "Types for shifting (pinning) the pressure in case of incompressible simulations.");
78 "pinned_pressure_point",
80 "The XYZ coordinates where pressure needs to be pinned for incompressible simulations.");
82 "pinned_pressure_value",
84 "The value used for pinning the pressure (point value/domain average).");
86 params.
addParam<
bool>(
"boussinesq_approximation",
false,
"True to have Boussinesq approximation");
89 "gravity",
RealVectorValue(0, 0, 0),
"The gravitational acceleration vector.");
94 "ref_temperature > 0.0",
95 "Value for reference temperature in case of Boussinesq approximation");
99 "The name of the thermal expansion coefficient in the Boussinesq approximation");
102 "pin_pressure pinned_pressure_type pinned_pressure_point pinned_pressure_value ",
103 "Incompressible flow pressure constraint");
105 "Gravity treatment");
110 params.
addParam<std::vector<std::vector<SubdomainName>>>(
113 "The blocks where the friction factors are applied to emulate flow resistances.");
115 params.
addParam<std::vector<std::vector<std::string>>>(
116 "friction_types", {},
"The types of friction forces for every block in 'friction_blocks'.");
118 params.
addParam<std::vector<std::vector<std::string>>>(
121 "The friction coefficients for every item in 'friction_types'. Note that if " 122 "'porous_medium_treatment' is enabled, the coefficients already contain a velocity " 123 "multiplier but they are not multiplied with density yet!");
126 "standard_friction_formulation",
128 "Flag to enable the standard friction formulation or its alternative, " 129 "which is a simplified version (see user documentation for PINSFVMomentumFriction).");
132 "standard_friction_formulation",
141 MultiMooseEnum mom_inlet_types(
"fixed-velocity flux-velocity flux-mass fixed-pressure");
144 "Types of inlet boundaries for the momentum equation.");
146 MultiMooseEnum mom_outlet_types(
"fixed-pressure zero-gradient fixed-pressure-zero-gradient");
149 "Types of outlet boundaries for the momentum equation");
150 params.
addParam<std::vector<MooseFunctorName>>(
"pressure_function",
151 std::vector<MooseFunctorName>(),
152 "Functions for boundary pressures at outlets.");
154 MultiMooseEnum mom_wall_types(
"symmetry noslip slip wallfunction");
156 "momentum_wall_types", mom_wall_types,
"Types of wall boundaries for the momentum equation");
165 params.
addParam<std::vector<std::vector<MooseFunctorName>>>(
166 "momentum_inlet_function",
167 std::vector<std::vector<MooseFunctorName>>(),
168 "Functions for inlet boundary velocities or pressures (for fixed-pressure option). Provide a " 169 "double vector where the leading dimension corresponds to the number of fixed-velocity and " 170 "fixed-pressure entries in momentum_inlet_types and the second index runs either over " 171 "dimensions for fixed-velocity boundaries or is a single function name for pressure inlets.");
172 params.
addParam<std::vector<PostprocessorName>>(
174 std::vector<PostprocessorName>(),
175 "The name of the postprocessors which compute the mass flow/ velocity magnitude. " 176 "Mainly used for coupling between different applications.");
177 params.
addParam<std::vector<Point>>(
178 "flux_inlet_directions",
179 std::vector<Point>(),
180 "The directions which can be used to define the orientation of the flux with respect to the " 181 "mesh. This can be used to define a flux which is incoming with an angle or to adjust the " 182 "flux direction with respect to the normal. If the inlet surface is defined on an internal " 183 "face, this is necessary to ensure the arbitrary orientation of the normal does not result " 184 "in non-physical results.");
195 "initial_temperature",
"300",
"The initial temperature, assumed constant everywhere");
197 params.
addParam<std::vector<std::vector<SubdomainName>>>(
198 "thermal_conductivity_blocks",
200 "The blocks where the user wants define different thermal conductivities.");
202 params.
addParam<std::vector<MooseFunctorName>>(
203 "thermal_conductivity",
204 std::vector<MooseFunctorName>({
NS::k}),
205 "The name of the fluid thermal conductivity for each block");
207 params.
addParam<MooseFunctorName>(
"specific_heat",
NS::cp,
"The name of the specific heat");
209 MultiMooseEnum en_inlet_types(
"fixed-temperature flux-mass flux-velocity heatflux");
212 "Types for the inlet boundaries for the energy equation.");
214 params.
addParam<std::vector<MooseFunctorName>>(
215 "energy_inlet_function",
216 std::vector<MooseFunctorName>(),
217 "Functions for fixed-value boundaries in the energy equation.");
219 MultiMooseEnum en_wall_types(
"fixed-temperature heatflux wallfunction convection");
221 "Set a constant fluid temperature on the wall");
222 en_wall_types.
addDocumentation(
"heatflux",
"Set a constant heat flux on the wall");
225 "Use a wall function, defined by the turbulence Physics, to compute the wall heat flux");
227 "Computes the heat transfer as h(T_fluid - T_solid), where h " 228 "generally computed using a correlation");
230 "energy_wall_types", en_wall_types,
"Types for the wall boundaries for the energy equation.");
231 params.
addParam<std::vector<BoundaryName>>(
232 "energy_wall_boundaries",
234 "Wall boundaries to apply energy boundary conditions on. If not specified, the flow equation " 235 "Physics wall boundaries will be used");
237 params.
addParam<std::vector<MooseFunctorName>>(
238 "energy_wall_function",
239 std::vector<MooseFunctorName>(),
240 "Functions for Dirichlet/Neumann boundaries in the energy equation. For wall types requiring " 241 "multiple functions, the syntax is <function_1>:<function_2>:... So, 'convection' types are " 242 "'<Tinf_function>:<htc_function>'.");
244 params.
addParam<std::vector<std::vector<SubdomainName>>>(
245 "ambient_convection_blocks",
246 std::vector<std::vector<SubdomainName>>(),
247 "The blocks where the ambient convection is present.");
249 params.
addParam<std::vector<MooseFunctorName>>(
250 "ambient_convection_alpha",
251 std::vector<MooseFunctorName>(),
252 "The heat exchange coefficients for each block in 'ambient_convection_blocks'.");
254 params.
addParam<std::vector<MooseFunctorName>>(
255 "ambient_temperature",
256 std::vector<MooseFunctorName>(),
257 "The ambient temperature for each block in 'ambient_convection_blocks'.");
260 "external_heat_source",
261 "The name of a functor which contains the external heat source for the energy equation.");
263 "external_heat_source_coeff", 1.0,
"Multiplier for the coupled heat source term.");
264 params.
addParam<
bool>(
"use_external_enthalpy_material",
266 "To indicate if the enthalpy material is set up outside of the action.");
269 "ambient_temperature",
270 "Volumetric heat convection");
281 params.
addParam<std::vector<NonlinearVariableName>>(
282 "passive_scalar_names",
283 std::vector<NonlinearVariableName>(),
284 "Vector containing the names of the advected scalar variables.");
286 params.
addParam<std::vector<FunctionName>>(
"initial_scalar_variables",
287 "Initial values of the passive scalar variables.");
289 params.
addParam<std::vector<MooseFunctorName>>(
290 "passive_scalar_diffusivity",
291 std::vector<MooseFunctorName>(),
292 "Functor names for the diffusivities used for the passive scalar fields.");
294 params.
addParam<std::vector<MooseFunctorName>>(
295 "passive_scalar_source",
296 std::vector<MooseFunctorName>(),
297 "Functor names for the sources used for the passive scalar fields.");
299 params.
addParam<std::vector<std::vector<MooseFunctorName>>>(
300 "passive_scalar_coupled_source",
301 std::vector<std::vector<MooseFunctorName>>(),
302 "Coupled variable names for the sources used for the passive scalar fields. If multiple " 303 "sources for each equation are specified, major (outer) ordering by equation.");
305 params.
addParam<std::vector<std::vector<Real>>>(
306 "passive_scalar_coupled_source_coeff",
307 std::vector<std::vector<Real>>(),
308 "Coupled variable multipliers for the sources used for the passive scalar fields. If multiple" 309 " sources for each equation are specified, major (outer) ordering by equation.");
311 MultiMooseEnum ps_inlet_types(
"fixed-value flux-mass flux-velocity");
313 "passive_scalar_inlet_types",
315 "Types for the inlet boundaries for the passive scalar equation.");
318 "passive_scalar_source passive_scalar_coupled_source " 319 "passive_scalar_coupled_source_coeff",
320 "Passive scalar control");
332 params.
addParam<std::vector<BoundaryName>>(
333 "mixing_length_walls",
334 std::vector<BoundaryName>(),
335 "Walls where the mixing length model should be utilized.");
340 "When the mixing length aux kernels should be executed.");
343 "von_karman_const", 0.41,
"Von Karman parameter for the mixing length model");
344 params.
addParam<MooseFunctorName>(
"von_karman_const_0", 0.09,
"'Escudier' model parameter");
346 "mixing_length_delta",
348 "Tunable parameter related to the thickness of the boundary layer." 349 "When it is not specified, Prandtl's original unbounded wall distance mixing length model is" 353 "turbulent_prandtl > 0",
354 "Turbulent Prandtl number for energy turbulent diffusion");
356 "passive_scalar_schmidt_number",
358 "Turbulent Schmidt numbers used for the passive scalar fields.");
359 params.
deprecateParam(
"passive_scalar_schmidt_number",
"Sc_t",
"01/01/2025");
360 params.
addParamNamesToGroup(
"mixing_length_walls mixing_length_aux_execute_on von_karman_const " 361 "von_karman_const_0 mixing_length_delta",
362 "Mixing length model");
384 "porous_medium_treatment",
false,
"Whether to use porous medium kernels or not.");
386 MooseEnum turbulence_type(
"mixing-length none",
"none");
388 "turbulence_handling",
390 "The way additional diffusivities are determined in the turbulent regime.");
392 params.
addParam<
bool>(
"initialize_variables_from_mesh_file",
394 "Determines if the variables that are added by the action are initialized " 395 "from the mesh file (only for Exodus format)");
397 "initial_from_file_timestep",
399 "Gives the timestep (or \"LATEST\") for which to read a solution from a file " 400 "for a given variable. (Default: LATEST)");
402 params.
addParam<
bool>(
"add_flow_equations",
true,
"True to add mass and momentum equations");
403 params.
addParam<
bool>(
"add_energy_equation",
false,
"True to add energy equation");
404 params.
addParam<
bool>(
"add_scalar_equation",
false,
"True to add advected scalar(s) equation");
407 "add_flow_equations add_energy_equation add_scalar_equation ",
411 "External variable");
418 "porosity",
NS::porosity,
"The name of the auxiliary variable for the porosity field.");
421 "porosity_smoothing_layers",
422 "The number of interpolation-reconstruction operations to perform on the porosity.");
424 MooseEnum porosity_interface_pressure_treatment(
"automatic bernoulli",
"automatic");
426 porosity_interface_pressure_treatment,
427 "How to treat pressure at a porosity interface");
428 params.
addParam<std::vector<BoundaryName>>(
429 "pressure_drop_sidesets", {},
"Sidesets over which form loss coefficients are to be applied");
431 "pressure_drop_form_factors",
433 "User-supplied form loss coefficients to be applied over the sidesets listed above");
435 params.
addParam<
bool>(
"use_friction_correction",
437 "If friction correction should be applied in the momentum equation.");
440 "consistent_scaling",
441 "Scaling parameter for the friction correction in the momentum equation (if requested).");
444 "consistent_scaling porosity_interface_pressure_treatment " 445 "pressure_drop_sidesets pressure_drop_form_factors",
446 "Porous medium treatment");
451 std::vector<FunctionName> default_initial_velocity = {
"1e-15",
"1e-15",
"1e-15"};
452 params.
addParam<std::vector<FunctionName>>(
"initial_velocity",
453 default_initial_velocity,
454 "The initial velocity, assumed constant everywhere");
457 "initial_pressure",
"1e5",
"The initial pressure, assumed constant everywhere");
478 params.addParam<std::vector<std::vector<std::string>>>(
479 "passive_scalar_inlet_function",
480 std::vector<std::vector<std::string>>(),
481 "Functions for inlet boundaries in the passive scalar equations.");
494 params.addParam<
MooseEnum>(
"mass_advection_interpolation",
496 "The numerical scheme to use for interpolating density, " 497 "as an advected quantity, to the face.");
498 params.addParam<
MooseEnum>(
"momentum_advection_interpolation",
500 "The numerical scheme to use for interpolating momentum/velocity, " 501 "as an advected quantity, to the face.");
502 params.addParam<
MooseEnum>(
"energy_advection_interpolation",
504 "The numerical scheme to use for interpolating energy/temperature, " 505 "as an advected quantity, to the face.");
506 params.addParam<
MooseEnum>(
"passive_scalar_advection_interpolation",
508 "The numerical scheme to use for interpolating passive scalar field, " 509 "as an advected quantity, to the face.");
511 MooseEnum face_interpol_types(
"average skewness-corrected",
"average");
512 params.addParam<
MooseEnum>(
"pressure_face_interpolation",
514 "The numerical scheme to interpolate the pressure to the " 515 "face (separate from the advected quantity interpolation).");
516 params.addParam<
MooseEnum>(
"momentum_face_interpolation",
518 "The numerical scheme to interpolate the velocity/momentum to the " 519 "face (separate from the advected quantity interpolation).");
520 params.addParam<
MooseEnum>(
"energy_face_interpolation",
522 "The numerical scheme to interpolate the temperature/energy to the " 523 "face (separate from the advected quantity interpolation).");
525 "passive_scalar_face_interpolation",
527 "The numerical scheme to interpolate the passive scalar field variables to the " 528 "face (separate from the advected quantity interpolation).");
530 MooseEnum velocity_interpolation(
"average rc",
"rc");
532 "velocity_interpolation",
533 velocity_interpolation,
534 "The interpolation to use for the velocity. Options are " 535 "'average' and 'rc' which stands for Rhie-Chow. The default is Rhie-Chow.");
537 params.addParam<
bool>(
538 "pressure_two_term_bc_expansion",
540 "If a two-term Taylor expansion is needed for the determination of the boundary values" 542 params.addParam<
bool>(
543 "pressure_allow_expansion_on_bernoulli_faces",
545 "Switch to enable the two-term extrapolation on porosity jump faces. " 546 "WARNING: Depending on the mesh, enabling this parameter may lead to " 547 "termination in parallel runs due to insufficient ghosting between " 548 "processors. An example can be the presence of multiple porosity jumps separated by only " 549 "one cell while using the Bernoulli pressure treatment. In such cases adjust the " 550 "`ghost_layers` parameter. ");
551 params.addParam<
bool>(
552 "momentum_two_term_bc_expansion",
554 "If a two-term Taylor expansion is needed for the determination of the boundary values" 555 "of the velocity/momentum.");
556 params.addParam<
bool>(
557 "energy_two_term_bc_expansion",
559 "If a two-term Taylor expansion is needed for the determination of the boundary values" 560 "of the temperature/energy.");
561 params.addParam<
bool>(
562 "passive_scalar_two_term_bc_expansion",
564 "If a two-term Taylor expansion is needed for the determination of the boundary values" 565 "of the advected passive scalar field.");
566 params.addParam<
bool>(
567 "mixing_length_two_term_bc_expansion",
569 "If a two-term Taylor expansion is needed for the determination of the boundary values" 570 "of the mixing length field.");
572 params.addRangeCheckedParam<
Real>(
575 "mass_scaling > 0.0",
576 "The scaling factor for the mass variables (for incompressible simulation " 577 "this is pressure scaling).");
578 params.addRangeCheckedParam<
Real>(
"momentum_scaling",
580 "momentum_scaling > 0.0",
581 "The scaling factor for the momentum variables.");
582 params.addRangeCheckedParam<
Real>(
583 "energy_scaling", 1.0,
"energy_scaling > 0.0",
"The scaling factor for the energy variable.");
584 params.addRangeCheckedParam<
Real>(
"passive_scalar_scaling",
586 "passive_scalar_scaling > 0.0",
587 "The scaling factor for the passive scalar field variables.");
589 params.addParamNamesToGroup(
590 "momentum_advection_interpolation energy_advection_interpolation " 591 "passive_scalar_advection_interpolation mass_advection_interpolation " 592 "momentum_face_interpolation energy_face_interpolation passive_scalar_face_interpolation " 593 "pressure_face_interpolation momentum_two_term_bc_expansion " 594 "energy_two_term_bc_expansion passive_scalar_two_term_bc_expansion " 595 "mixing_length_two_term_bc_expansion pressure_two_term_bc_expansion " 596 "pressure_allow_expansion_on_bernoulli_faces velocity_interpolation",
599 params.addParamNamesToGroup(
"momentum_scaling energy_scaling mass_scaling passive_scalar_scaling",
605 params.addRangeCheckedParam<
unsigned short>(
609 "The number of geometric/algebraic/coupling layers to ghost.");
611 params.addParamNamesToGroup(
"ghost_layers",
"Parallel Execution Tuning");
614 params.addParamNamesToGroup(
"dynamic_viscosity density thermal_expansion " 615 "thermal_conductivity_blocks thermal_conductivity specific_heat",
616 "Material property");
618 params.addParamNamesToGroup(
619 "inlet_boundaries momentum_inlet_types momentum_inlet_function energy_inlet_types " 620 "energy_inlet_function wall_boundaries momentum_wall_types energy_wall_boundaries " 621 "energy_wall_types energy_wall_function outlet_boundaries momentum_outlet_types " 622 "pressure_function passive_scalar_inlet_types passive_scalar_inlet_function flux_inlet_pps " 623 "flux_inlet_directions",
624 "Boundary condition");
626 params.addParamNamesToGroup(
627 "initial_pressure initial_velocity initial_temperature initial_scalar_variables " 628 "initialize_variables_from_mesh_file initial_from_file_timestep",
629 "Initial condition");
static InputParameters validParams()
static InputParameters uniqueParams()
Parameters of this object that should be added to the NSFV action that are unique to this object...
static const std::string density
MooseEnum interpolationMethods()
static InputParameters commonTurbulenceParams()
static InputParameters commonScalarFieldAdvectionParams()
ExecFlagEnum getDefaultExecFlagEnum()
static const std::string porosity
static const std::string cp
static InputParameters validParams()
static InputParameters uniqueParams()
Parameters of this object that should be added to the NSFV action that are unique to this object...
static InputParameters commonNavierStokesFlowParams()
static const std::string mu
static InputParameters commonMomentumBoundaryFluxesParams()
static InputParameters commonMomentumEquationParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::string alpha
void addDocumentation(const std::string &name, const std::string &doc)
static InputParameters commonFluidEnergyEquationParams()
static const std::string k
static InputParameters commonMomentumBoundaryTypesParams()