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");
68 params.
addParam<Point>(
"reference_pressure_point",
70 "Point at which the gravity term for the static pressure is zero");
71 params.
addParam<
Real>(
"reference_pressure", 1e5,
"Total pressure at the reference point");
73 "solve_for_dynamic_pressure reference_pressure_point reference_pressure",
"Dynamic pressure");
77 "pin_pressure",
false,
"Switch to enable pressure shifting for incompressible simulations.");
78 MooseEnum s_type(
"average point-value average-uo point-value-uo",
"average-uo");
80 "pinned_pressure_type",
82 "Types for shifting (pinning) the pressure in case of incompressible simulations.");
84 "pinned_pressure_point",
86 "The XYZ coordinates where pressure needs to be pinned for incompressible simulations.");
88 "pinned_pressure_value",
90 "The value used for pinning the pressure (point value/domain average).");
92 params.
addParam<
bool>(
"boussinesq_approximation",
false,
"True to have Boussinesq approximation");
95 "gravity",
RealVectorValue(0, 0, 0),
"The gravitational acceleration vector.");
100 "ref_temperature > 0.0",
101 "Value for reference temperature in case of Boussinesq approximation");
105 "The name of the thermal expansion coefficient in the Boussinesq approximation");
108 "pin_pressure pinned_pressure_type pinned_pressure_point pinned_pressure_value ",
109 "Incompressible flow pressure constraint");
111 "Gravity treatment");
116 params.
addParam<std::vector<std::vector<SubdomainName>>>(
119 "The blocks where the friction factors are applied to emulate flow resistances.");
121 params.
addParam<std::vector<std::vector<std::string>>>(
122 "friction_types", {},
"The types of friction forces for every block in 'friction_blocks'.");
124 params.
addParam<std::vector<std::vector<std::string>>>(
127 "The friction coefficients for every item in 'friction_types'. Note that if " 128 "'porous_medium_treatment' is enabled, the coefficients already contain a velocity " 129 "multiplier but they are not multiplied with density yet!");
132 "standard_friction_formulation",
134 "Flag to enable the standard friction formulation or its alternative, " 135 "which is a simplified version (see user documentation for PINSFVMomentumFriction).");
138 "standard_friction_formulation",
147 MultiMooseEnum mom_inlet_types(
"fixed-velocity flux-velocity flux-mass fixed-pressure");
150 "Types of inlet boundaries for the momentum equation.");
152 MultiMooseEnum mom_outlet_types(
"fixed-pressure zero-gradient fixed-pressure-zero-gradient");
155 "Types of outlet boundaries for the momentum equation");
156 params.
addParam<std::vector<MooseFunctorName>>(
"pressure_functors",
157 std::vector<MooseFunctorName>(),
158 "Functions for boundary pressures at outlets.");
160 MultiMooseEnum mom_wall_types(
"symmetry noslip slip wallfunction");
162 "momentum_wall_types", mom_wall_types,
"Types of wall boundaries for the momentum equation");
171 params.
addParam<std::vector<std::vector<MooseFunctorName>>>(
172 "momentum_inlet_functors",
173 std::vector<std::vector<MooseFunctorName>>(),
174 "Functions for inlet boundary velocities or pressures (for fixed-pressure option). Provide a " 175 "double vector where the leading dimension corresponds to the number of fixed-velocity and " 176 "fixed-pressure entries in momentum_inlet_types and the second index runs either over " 177 "dimensions for fixed-velocity boundaries or is a single function name for pressure inlets.");
178 params.
addParam<std::vector<PostprocessorName>>(
180 std::vector<PostprocessorName>(),
181 "The name of the postprocessors which compute the mass flow/ velocity magnitude. " 182 "Mainly used for coupling between different applications.");
183 params.
addParam<std::vector<Point>>(
184 "flux_inlet_directions",
185 std::vector<Point>(),
186 "The directions which can be used to define the orientation of the flux with respect to the " 187 "mesh. This can be used to define a flux which is incoming with an angle or to adjust the " 188 "flux direction with respect to the normal. If the inlet surface is defined on an internal " 189 "face, this is necessary to ensure the arbitrary orientation of the normal does not result " 190 "in non-physical results.");
201 "initial_temperature",
"300",
"The initial temperature, assumed constant everywhere");
203 params.
addParam<std::vector<std::vector<SubdomainName>>>(
204 "thermal_conductivity_blocks",
206 "The blocks where the user wants define different thermal conductivities.");
208 params.
addParam<std::vector<MooseFunctorName>>(
209 "thermal_conductivity",
210 std::vector<MooseFunctorName>({
NS::k}),
211 "The name of the fluid thermal conductivity for each block");
213 params.
addParam<MooseFunctorName>(
"specific_heat",
NS::cp,
"The name of the specific heat");
215 MultiMooseEnum en_inlet_types(
"fixed-temperature flux-mass flux-velocity heatflux");
218 "Types for the inlet boundaries for the energy equation.");
220 params.
addParam<std::vector<MooseFunctorName>>(
221 "energy_inlet_functors",
222 std::vector<MooseFunctorName>(),
223 "Functions for fixed-value boundaries in the energy equation.");
225 MultiMooseEnum en_wall_types(
"fixed-temperature heatflux wallfunction convection");
227 "Set a constant fluid temperature on the wall");
228 en_wall_types.
addDocumentation(
"heatflux",
"Set a constant heat flux on the wall");
231 "Use a wall function, defined by the turbulence Physics, to compute the wall heat flux");
233 "Computes the heat transfer as h(T_fluid - T_solid), where h " 234 "generally computed using a correlation");
236 "energy_wall_types", en_wall_types,
"Types for the wall boundaries for the energy equation.");
237 params.
addParam<std::vector<BoundaryName>>(
238 "energy_wall_boundaries",
240 "Wall boundaries to apply energy boundary conditions on. If not specified, the flow equation " 241 "Physics wall boundaries will be used");
243 params.
addParam<std::vector<MooseFunctorName>>(
244 "energy_wall_functors",
245 std::vector<MooseFunctorName>(),
246 "Functions for Dirichlet/Neumann boundaries in the energy equation. For wall types requiring " 247 "multiple functions, the syntax is <function_1>:<function_2>:... So, 'convection' types are " 248 "'<Tinf_function>:<htc_function>'.");
250 params.
addParam<std::vector<std::vector<SubdomainName>>>(
251 "ambient_convection_blocks",
252 std::vector<std::vector<SubdomainName>>(),
253 "The blocks where the ambient convection is present.");
255 params.
addParam<std::vector<MooseFunctorName>>(
256 "ambient_convection_alpha",
257 std::vector<MooseFunctorName>(),
258 "The heat exchange coefficients for each block in 'ambient_convection_blocks'.");
260 params.
addParam<std::vector<MooseFunctorName>>(
261 "ambient_temperature",
262 std::vector<MooseFunctorName>(),
263 "The ambient temperature for each block in 'ambient_convection_blocks'.");
266 "external_heat_source",
267 "The name of a functor which contains the external heat source for the energy equation.");
269 "external_heat_source_coeff", 1.0,
"Multiplier for the coupled heat source term.");
270 params.
addParam<
bool>(
"use_external_enthalpy_material",
272 "To indicate if the enthalpy material is set up outside of the action.");
275 "ambient_temperature",
276 "Volumetric heat convection");
287 params.
addParam<std::vector<NonlinearVariableName>>(
288 "passive_scalar_names",
289 std::vector<NonlinearVariableName>(),
290 "Vector containing the names of the advected scalar variables.");
292 params.
addParam<std::vector<FunctionName>>(
"initial_scalar_variables",
293 "Initial values of the passive scalar variables.");
295 params.
addParam<std::vector<MooseFunctorName>>(
296 "passive_scalar_diffusivity",
297 std::vector<MooseFunctorName>(),
298 "Functor names for the diffusivities used for the passive scalar fields.");
300 params.
addParam<std::vector<MooseFunctorName>>(
301 "passive_scalar_source",
302 std::vector<MooseFunctorName>(),
303 "Functor names for the sources used for the passive scalar fields.");
305 params.
addParam<std::vector<std::vector<MooseFunctorName>>>(
306 "passive_scalar_coupled_source",
307 std::vector<std::vector<MooseFunctorName>>(),
308 "Coupled variable names for the sources used for the passive scalar fields. If multiple " 309 "sources for each equation are specified, major (outer) ordering by equation.");
311 params.
addParam<std::vector<std::vector<Real>>>(
312 "passive_scalar_coupled_source_coeff",
313 std::vector<std::vector<Real>>(),
314 "Coupled variable multipliers for the sources used for the passive scalar fields. If multiple" 315 " sources for each equation are specified, major (outer) ordering by equation.");
317 MultiMooseEnum ps_inlet_types(
"fixed-value flux-mass flux-velocity");
319 "passive_scalar_inlet_types",
321 "Types for the inlet boundaries for the passive scalar equation.");
324 "passive_scalar_source passive_scalar_coupled_source " 325 "passive_scalar_coupled_source_coeff",
326 "Passive scalar control");
338 params.
addParam<std::vector<BoundaryName>>(
339 "mixing_length_walls",
340 std::vector<BoundaryName>(),
341 "Walls where the mixing length model should be utilized.");
346 "When the mixing length aux kernels should be executed.");
349 "von_karman_const", 0.41,
"Von Karman parameter for the mixing length model");
350 params.
addParam<MooseFunctorName>(
"von_karman_const_0", 0.09,
"'Escudier' model parameter");
352 "mixing_length_delta",
354 "Tunable parameter related to the thickness of the boundary layer." 355 "When it is not specified, Prandtl's original unbounded wall distance mixing length model is" 359 "turbulent_prandtl > 0",
360 "Turbulent Prandtl number for energy turbulent diffusion");
362 "Sc_t", std::vector<Real>(),
"Turbulent Schmidt numbers used for the passive scalar fields.");
363 params.
addParamNamesToGroup(
"mixing_length_walls mixing_length_aux_execute_on von_karman_const " 364 "von_karman_const_0 mixing_length_delta",
365 "Mixing length model");
387 "porous_medium_treatment",
false,
"Whether to use porous medium kernels or not.");
389 MooseEnum turbulence_type(
"mixing-length none",
"none");
391 "turbulence_handling",
393 "The way additional diffusivities are determined in the turbulent regime.");
395 params.
addParam<
bool>(
"initialize_variables_from_mesh_file",
397 "Determines if the variables that are added by the action are initialized " 398 "from the mesh file (only for Exodus format)");
400 "initial_from_file_timestep",
402 "Gives the timestep (or \"LATEST\") for which to read a solution from a file " 403 "for a given variable. (Default: LATEST)");
405 params.
addParam<
bool>(
"add_flow_equations",
true,
"True to add mass and momentum equations");
406 params.
addParam<
bool>(
"add_energy_equation",
false,
"True to add energy equation");
407 params.
addParam<
bool>(
"add_scalar_equation",
false,
"True to add advected scalar(s) equation");
410 "add_flow_equations add_energy_equation add_scalar_equation ",
414 "External variable");
421 "porosity",
NS::porosity,
"The name of the auxiliary variable for the porosity field.");
424 "porosity_smoothing_layers",
425 "The number of interpolation-reconstruction operations to perform on the porosity.");
427 MooseEnum porosity_interface_pressure_treatment(
"automatic bernoulli",
"automatic");
429 porosity_interface_pressure_treatment,
430 "How to treat pressure at a porosity interface");
431 params.
addParam<std::vector<BoundaryName>>(
432 "pressure_drop_sidesets", {},
"Sidesets over which form loss coefficients are to be applied");
434 "pressure_drop_form_factors",
436 "User-supplied form loss coefficients to be applied over the sidesets listed above");
438 params.
addParam<
bool>(
"use_friction_correction",
440 "If friction correction should be applied in the momentum equation.");
443 "consistent_scaling",
444 "Scaling parameter for the friction correction in the momentum equation (if requested).");
447 "consistent_scaling porosity_interface_pressure_treatment " 448 "pressure_drop_sidesets pressure_drop_form_factors",
449 "Porous medium treatment");
454 std::vector<FunctionName> default_initial_velocity = {
"1e-15",
"1e-15",
"1e-15"};
455 params.
addParam<std::vector<FunctionName>>(
"initial_velocity",
456 default_initial_velocity,
457 "The initial velocity, assumed constant everywhere");
460 "initial_pressure",
"1e5",
"The initial pressure, assumed constant everywhere");
491 params.addParam<
MooseEnum>(
"mass_advection_interpolation",
493 "The numerical scheme to use for interpolating density, " 494 "as an advected quantity, to the face.");
495 params.addParam<
MooseEnum>(
"momentum_advection_interpolation",
497 "The numerical scheme to use for interpolating momentum/velocity, " 498 "as an advected quantity, to the face.");
499 params.addParam<
MooseEnum>(
"energy_advection_interpolation",
501 "The numerical scheme to use for interpolating energy/temperature, " 502 "as an advected quantity, to the face.");
503 params.addParam<
MooseEnum>(
"passive_scalar_advection_interpolation",
505 "The numerical scheme to use for interpolating passive scalar field, " 506 "as an advected quantity, to the face.");
508 MooseEnum face_interpol_types(
"average skewness-corrected",
"average");
509 params.addParam<
MooseEnum>(
"pressure_face_interpolation",
511 "The numerical scheme to interpolate the pressure to the " 512 "face (separate from the advected quantity interpolation).");
513 params.addParam<
MooseEnum>(
"momentum_face_interpolation",
515 "The numerical scheme to interpolate the velocity/momentum to the " 516 "face (separate from the advected quantity interpolation).");
517 params.addParam<
MooseEnum>(
"energy_face_interpolation",
519 "The numerical scheme to interpolate the temperature/energy to the " 520 "face (separate from the advected quantity interpolation).");
522 "passive_scalar_face_interpolation",
524 "The numerical scheme to interpolate the passive scalar field variables to the " 525 "face (separate from the advected quantity interpolation).");
527 MooseEnum velocity_interpolation(
"average rc",
"rc");
529 "velocity_interpolation",
530 velocity_interpolation,
531 "The interpolation to use for the velocity. Options are " 532 "'average' and 'rc' which stands for Rhie-Chow. The default is Rhie-Chow.");
534 params.addParam<
bool>(
535 "pressure_two_term_bc_expansion",
537 "If a two-term Taylor expansion is needed for the determination of the boundary values" 539 params.addParam<
bool>(
540 "pressure_allow_expansion_on_bernoulli_faces",
542 "Switch to enable the two-term extrapolation on porosity jump faces. " 543 "WARNING: Depending on the mesh, enabling this parameter may lead to " 544 "termination in parallel runs due to insufficient ghosting between " 545 "processors. An example can be the presence of multiple porosity jumps separated by only " 546 "one cell while using the Bernoulli pressure treatment. In such cases adjust the " 547 "`ghost_layers` parameter. ");
548 params.addParam<
bool>(
549 "momentum_two_term_bc_expansion",
551 "If a two-term Taylor expansion is needed for the determination of the boundary values" 552 "of the velocity/momentum.");
553 params.addParam<
bool>(
554 "energy_two_term_bc_expansion",
556 "If a two-term Taylor expansion is needed for the determination of the boundary values" 557 "of the temperature/energy.");
558 params.addParam<
bool>(
559 "passive_scalar_two_term_bc_expansion",
561 "If a two-term Taylor expansion is needed for the determination of the boundary values" 562 "of the advected passive scalar field.");
563 params.addParam<
bool>(
564 "mixing_length_two_term_bc_expansion",
566 "If a two-term Taylor expansion is needed for the determination of the boundary values" 567 "of the mixing length field.");
569 params.addRangeCheckedParam<
Real>(
572 "mass_scaling > 0.0",
573 "The scaling factor for the mass variables (for incompressible simulation " 574 "this is pressure scaling).");
575 params.addRangeCheckedParam<
Real>(
"momentum_scaling",
577 "momentum_scaling > 0.0",
578 "The scaling factor for the momentum variables.");
579 params.addRangeCheckedParam<
Real>(
580 "energy_scaling", 1.0,
"energy_scaling > 0.0",
"The scaling factor for the energy variable.");
581 params.addRangeCheckedParam<
Real>(
"passive_scalar_scaling",
583 "passive_scalar_scaling > 0.0",
584 "The scaling factor for the passive scalar field variables.");
586 params.addParamNamesToGroup(
587 "momentum_advection_interpolation energy_advection_interpolation " 588 "passive_scalar_advection_interpolation mass_advection_interpolation " 589 "momentum_face_interpolation energy_face_interpolation passive_scalar_face_interpolation " 590 "pressure_face_interpolation momentum_two_term_bc_expansion " 591 "energy_two_term_bc_expansion passive_scalar_two_term_bc_expansion " 592 "mixing_length_two_term_bc_expansion pressure_two_term_bc_expansion " 593 "pressure_allow_expansion_on_bernoulli_faces velocity_interpolation",
596 params.addParamNamesToGroup(
"momentum_scaling energy_scaling mass_scaling passive_scalar_scaling",
602 params.addRangeCheckedParam<
unsigned short>(
606 "The number of geometric/algebraic/coupling layers to ghost.");
608 params.addParamNamesToGroup(
"ghost_layers",
"Parallel Execution Tuning");
611 params.addParamNamesToGroup(
"dynamic_viscosity density thermal_expansion " 612 "thermal_conductivity_blocks thermal_conductivity specific_heat",
613 "Material property");
615 params.addParamNamesToGroup(
616 "inlet_boundaries momentum_inlet_types momentum_inlet_functors energy_inlet_types " 617 "energy_inlet_functors wall_boundaries momentum_wall_types energy_wall_boundaries " 618 "energy_wall_types energy_wall_functors outlet_boundaries momentum_outlet_types " 619 "pressure_functors passive_scalar_inlet_types flux_inlet_pps flux_inlet_directions",
620 "Boundary condition");
622 params.addParamNamesToGroup(
623 "initial_pressure initial_velocity initial_temperature initial_scalar_variables " 624 "initialize_variables_from_mesh_file initial_from_file_timestep",
625 "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()