Line data Source code
1 : //* This file is part of the MOOSE framework
2 : //* https://mooseframework.inl.gov
3 : //*
4 : //* All rights reserved, see COPYRIGHT for full restrictions
5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 : //*
7 : //* Licensed under LGPL 2.1, please see LICENSE for details
8 : //* https://www.gnu.org/licenses/lgpl-2.1.html
9 :
10 : #include "NSFVBase.h"
11 : #include "NS.h"
12 : #include "Action.h"
13 : #include "INSFVMomentumAdvection.h"
14 : #include "INSFVRhieChowInterpolator.h"
15 :
16 : InputParameters
17 50922 : NSFVBase::commonNavierStokesFlowParams()
18 : {
19 50922 : InputParameters params = emptyInputParameters();
20 101844 : MooseEnum comp_type("incompressible weakly-compressible", "incompressible");
21 101844 : params.addParam<MooseEnum>(
22 : "compressibility", comp_type, "Compressibility constraint for the Navier-Stokes equations.");
23 :
24 101844 : params.addParam<std::vector<std::string>>(
25 : "velocity_variable",
26 : "If supplied, the system checks for available velocity variables. "
27 : "Otherwise, they are created within the action.");
28 :
29 101844 : params.addParam<NonlinearVariableName>("pressure_variable",
30 : "If supplied, the system checks for available pressure "
31 : "variable. Otherwise, it is created within the action.");
32 :
33 101844 : 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.");
37 :
38 : /**
39 : * Parameters used to define the boundaries of the domain.
40 : */
41 :
42 50922 : params.addParam<std::vector<BoundaryName>>(
43 50922 : "inlet_boundaries", std::vector<BoundaryName>(), "Names of inlet boundaries");
44 50922 : params.addParam<std::vector<BoundaryName>>(
45 50922 : "outlet_boundaries", std::vector<BoundaryName>(), "Names of outlet boundaries");
46 50922 : params.addParam<std::vector<BoundaryName>>(
47 50922 : "wall_boundaries", std::vector<BoundaryName>(), "Names of wall boundaries");
48 50922 : params.addParam<std::vector<BoundaryName>>("hydraulic_separator_sidesets",
49 50922 : std::vector<BoundaryName>(),
50 : "Sidesets which serve as hydraulic separators.");
51 50922 : return params;
52 50922 : }
53 :
54 : InputParameters
55 50922 : NSFVBase::commonMomentumEquationParams()
56 : {
57 50922 : InputParameters params = emptyInputParameters();
58 :
59 101844 : params.addParam<MooseFunctorName>(
60 : "dynamic_viscosity", NS::mu, "The name of the dynamic viscosity");
61 101844 : params.addParam<MooseFunctorName>("density", NS::density, "The name of the density");
62 :
63 : // Dynamic pressure parameter
64 : // TODO: make default
65 101844 : params.addParam<bool>("solve_for_dynamic_pressure",
66 101844 : false,
67 : "Whether to solve for the dynamic pressure instead of the total pressure");
68 50922 : params.addParam<Point>("reference_pressure_point",
69 50922 : Point(0, 0, 0),
70 : "Point at which the gravity term for the static pressure is zero");
71 101844 : params.addParam<Real>("reference_pressure", 1e5, "Total pressure at the reference point");
72 101844 : params.addParamNamesToGroup(
73 : "solve_for_dynamic_pressure reference_pressure_point reference_pressure", "Dynamic pressure");
74 :
75 : // Pressure pin parameters
76 101844 : params.addParam<bool>(
77 101844 : "pin_pressure", false, "Switch to enable pressure shifting for incompressible simulations.");
78 101844 : MooseEnum s_type("average point-value average-uo point-value-uo", "average-uo");
79 101844 : params.addParam<MooseEnum>(
80 : "pinned_pressure_type",
81 : s_type,
82 : "Types for shifting (pinning) the pressure in case of incompressible simulations.");
83 50922 : params.addParam<Point>(
84 : "pinned_pressure_point",
85 50922 : Point(),
86 : "The XYZ coordinates where pressure needs to be pinned for incompressible simulations.");
87 101844 : params.addParam<PostprocessorName>(
88 : "pinned_pressure_value",
89 : "1e5",
90 : "The value used for pinning the pressure (point value/domain average).");
91 :
92 101844 : params.addParam<bool>("boussinesq_approximation", false, "True to have Boussinesq approximation");
93 :
94 50922 : params.addParam<RealVectorValue>(
95 50922 : "gravity", RealVectorValue(0, 0, 0), "The gravitational acceleration vector.");
96 :
97 152766 : params.addRangeCheckedParam<Real>(
98 : "ref_temperature",
99 101844 : 273.15,
100 : "ref_temperature > 0.0",
101 : "Value for reference temperature in case of Boussinesq approximation");
102 101844 : params.addParam<MooseFunctorName>(
103 : "thermal_expansion",
104 : NS::alpha,
105 : "The name of the thermal expansion coefficient in the Boussinesq approximation");
106 :
107 101844 : params.addParamNamesToGroup(
108 : "pin_pressure pinned_pressure_type pinned_pressure_point pinned_pressure_value ",
109 : "Incompressible flow pressure constraint");
110 101844 : params.addParamNamesToGroup("ref_temperature boussinesq_approximation gravity",
111 : "Gravity treatment");
112 :
113 : /**
114 : * Parameters controlling the friction terms in case of porous medium simulations.
115 : */
116 101844 : params.addParam<std::vector<std::vector<SubdomainName>>>(
117 : "friction_blocks",
118 : {},
119 : "The blocks where the friction factors are applied to emulate flow resistances.");
120 :
121 101844 : params.addParam<std::vector<std::vector<std::string>>>(
122 : "friction_types", {}, "The types of friction forces for every block in 'friction_blocks'.");
123 :
124 101844 : params.addParam<std::vector<std::vector<std::string>>>(
125 : "friction_coeffs",
126 : {},
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!");
130 :
131 101844 : params.addParam<bool>(
132 : "standard_friction_formulation",
133 101844 : true,
134 : "Flag to enable the standard friction formulation or its alternative, "
135 : "which is a simplified version (see user documentation for PINSFVMomentumFriction).");
136 :
137 101844 : params.addParamNamesToGroup("friction_blocks friction_types friction_coeffs "
138 : "standard_friction_formulation",
139 : "Friction control");
140 50922 : return params;
141 50922 : }
142 :
143 : InputParameters
144 50922 : NSFVBase::commonMomentumBoundaryTypesParams()
145 : {
146 50922 : InputParameters params = emptyInputParameters();
147 50922 : MultiMooseEnum mom_inlet_types("fixed-velocity flux-velocity flux-mass fixed-pressure");
148 101844 : params.addParam<MultiMooseEnum>("momentum_inlet_types",
149 : mom_inlet_types,
150 : "Types of inlet boundaries for the momentum equation.");
151 :
152 50922 : MultiMooseEnum mom_outlet_types("fixed-pressure zero-gradient fixed-pressure-zero-gradient");
153 101844 : params.addParam<MultiMooseEnum>("momentum_outlet_types",
154 : mom_outlet_types,
155 : "Types of outlet boundaries for the momentum equation");
156 50922 : params.addParam<std::vector<MooseFunctorName>>("pressure_functors",
157 50922 : std::vector<MooseFunctorName>(),
158 : "Functions for boundary pressures at outlets.");
159 :
160 50922 : MultiMooseEnum mom_wall_types("symmetry noslip slip wallfunction");
161 101844 : params.addParam<MultiMooseEnum>(
162 : "momentum_wall_types", mom_wall_types, "Types of wall boundaries for the momentum equation");
163 :
164 50922 : return params;
165 50922 : }
166 :
167 : InputParameters
168 50922 : NSFVBase::commonMomentumBoundaryFluxesParams()
169 : {
170 50922 : InputParameters params = emptyInputParameters();
171 50922 : params.addParam<std::vector<std::vector<MooseFunctorName>>>(
172 : "momentum_inlet_functors",
173 50922 : 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 50922 : params.addParam<std::vector<PostprocessorName>>(
179 : "flux_inlet_pps",
180 50922 : 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 50922 : params.addParam<std::vector<Point>>(
184 : "flux_inlet_directions",
185 50922 : 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.");
191 101844 : params.addParamNamesToGroup("flux_inlet_pps flux_inlet_directions", "Boundary condition");
192 :
193 50922 : return params;
194 0 : }
195 :
196 : InputParameters
197 50331 : NSFVBase::commonFluidEnergyEquationParams()
198 : {
199 50331 : InputParameters params = emptyInputParameters();
200 100662 : params.addParam<FunctionName>(
201 : "initial_temperature", "300", "The initial temperature, assumed constant everywhere");
202 :
203 100662 : params.addParam<std::vector<std::vector<SubdomainName>>>(
204 : "thermal_conductivity_blocks",
205 : {},
206 : "The blocks where the user wants define different thermal conductivities.");
207 :
208 100662 : params.addParam<std::vector<MooseFunctorName>>(
209 : "thermal_conductivity",
210 150993 : std::vector<MooseFunctorName>({NS::k}),
211 : "The name of the fluid thermal conductivity for each block");
212 :
213 100662 : params.addParam<MooseFunctorName>("specific_heat", NS::cp, "The name of the specific heat");
214 :
215 50331 : MultiMooseEnum en_inlet_types("fixed-temperature flux-mass flux-velocity heatflux");
216 100662 : params.addParam<MultiMooseEnum>("energy_inlet_types",
217 : en_inlet_types,
218 : "Types for the inlet boundaries for the energy equation.");
219 :
220 50331 : params.addParam<std::vector<MooseFunctorName>>(
221 : "energy_inlet_functors",
222 50331 : std::vector<MooseFunctorName>(),
223 : "Functions for fixed-value boundaries in the energy equation.");
224 :
225 50331 : MultiMooseEnum en_wall_types("fixed-temperature heatflux wallfunction convection");
226 100662 : en_wall_types.addDocumentation("fixed-temperature",
227 : "Set a constant fluid temperature on the wall");
228 100662 : en_wall_types.addDocumentation("heatflux", "Set a constant heat flux on the wall");
229 100662 : en_wall_types.addDocumentation(
230 : "wallfunction",
231 : "Use a wall function, defined by the turbulence Physics, to compute the wall heat flux");
232 100662 : en_wall_types.addDocumentation("convection",
233 : "Computes the heat transfer as h(T_fluid - T_solid), where h "
234 : "generally computed using a correlation");
235 100662 : params.addParam<MultiMooseEnum>(
236 : "energy_wall_types", en_wall_types, "Types for the wall boundaries for the energy equation.");
237 100662 : params.addParam<std::vector<BoundaryName>>(
238 : "energy_wall_boundaries",
239 : {},
240 : "Wall boundaries to apply energy boundary conditions on. If not specified, the flow equation "
241 : "Physics wall boundaries will be used");
242 :
243 50331 : params.addParam<std::vector<MooseFunctorName>>(
244 : "energy_wall_functors",
245 50331 : 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>'.");
249 :
250 50331 : params.addParam<std::vector<std::vector<SubdomainName>>>(
251 : "ambient_convection_blocks",
252 50331 : std::vector<std::vector<SubdomainName>>(),
253 : "The blocks where the ambient convection is present.");
254 :
255 50331 : params.addParam<std::vector<MooseFunctorName>>(
256 : "ambient_convection_alpha",
257 50331 : std::vector<MooseFunctorName>(),
258 : "The heat exchange coefficients for each block in 'ambient_convection_blocks'.");
259 :
260 50331 : params.addParam<std::vector<MooseFunctorName>>(
261 : "ambient_temperature",
262 50331 : std::vector<MooseFunctorName>(),
263 : "The ambient temperature for each block in 'ambient_convection_blocks'.");
264 :
265 100662 : params.addParam<MooseFunctorName>(
266 : "external_heat_source",
267 : "The name of a functor which contains the external heat source for the energy equation.");
268 100662 : params.addParam<Real>(
269 100662 : "external_heat_source_coeff", 1.0, "Multiplier for the coupled heat source term.");
270 100662 : params.addParam<bool>("use_external_enthalpy_material",
271 100662 : false,
272 : "To indicate if the enthalpy material is set up outside of the action.");
273 :
274 100662 : params.addParamNamesToGroup("ambient_convection_alpha ambient_convection_blocks "
275 : "ambient_temperature",
276 : "Volumetric heat convection");
277 100662 : params.addParamNamesToGroup("external_heat_source external_heat_source_coeff", "Heat source");
278 100662 : params.addParamNamesToGroup("use_external_enthalpy_material", "Material properties");
279 :
280 50331 : return params;
281 50331 : }
282 :
283 : InputParameters
284 50136 : NSFVBase::commonScalarFieldAdvectionParams()
285 : {
286 50136 : InputParameters params = emptyInputParameters();
287 50136 : params.addParam<std::vector<NonlinearVariableName>>(
288 : "passive_scalar_names",
289 50136 : std::vector<NonlinearVariableName>(),
290 : "Vector containing the names of the advected scalar variables.");
291 :
292 100272 : params.addParam<std::vector<FunctionName>>("initial_scalar_variables",
293 : "Initial values of the passive scalar variables.");
294 :
295 50136 : params.addParam<std::vector<MooseFunctorName>>(
296 : "passive_scalar_diffusivity",
297 50136 : std::vector<MooseFunctorName>(),
298 : "Functor names for the diffusivities used for the passive scalar fields.");
299 :
300 50136 : params.addParam<std::vector<MooseFunctorName>>(
301 : "passive_scalar_source",
302 50136 : std::vector<MooseFunctorName>(),
303 : "Functor names for the sources used for the passive scalar fields.");
304 :
305 50136 : params.addParam<std::vector<std::vector<MooseFunctorName>>>(
306 : "passive_scalar_coupled_source",
307 50136 : 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.");
310 :
311 50136 : params.addParam<std::vector<std::vector<Real>>>(
312 : "passive_scalar_coupled_source_coeff",
313 50136 : 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.");
316 :
317 50136 : MultiMooseEnum ps_inlet_types("fixed-value flux-mass flux-velocity");
318 100272 : params.addParam<MultiMooseEnum>(
319 : "passive_scalar_inlet_types",
320 : ps_inlet_types,
321 : "Types for the inlet boundaries for the passive scalar equation.");
322 :
323 100272 : params.addParamNamesToGroup("passive_scalar_names passive_scalar_diffusivity "
324 : "passive_scalar_source passive_scalar_coupled_source "
325 : "passive_scalar_coupled_source_coeff",
326 : "Passive scalar control");
327 50136 : return params;
328 50136 : }
329 :
330 : InputParameters
331 50057 : NSFVBase::commonTurbulenceParams()
332 : {
333 50057 : InputParameters params = emptyInputParameters();
334 :
335 : /**
336 : * Parameter controlling the turbulence handling used for the equations.
337 : */
338 50057 : params.addParam<std::vector<BoundaryName>>(
339 : "mixing_length_walls",
340 50057 : std::vector<BoundaryName>(),
341 : "Walls where the mixing length model should be utilized.");
342 :
343 50057 : ExecFlagEnum exec_enum = MooseUtils::getDefaultExecFlagEnum();
344 100114 : params.addParam<ExecFlagEnum>("mixing_length_aux_execute_on",
345 : exec_enum,
346 : "When the mixing length aux kernels should be executed.");
347 :
348 100114 : params.addParam<MooseFunctorName>(
349 100114 : "von_karman_const", 0.41, "Von Karman parameter for the mixing length model");
350 100114 : params.addParam<MooseFunctorName>("von_karman_const_0", 0.09, "'Escudier' model parameter");
351 100114 : params.addParam<MooseFunctorName>(
352 : "mixing_length_delta",
353 100114 : 1.0,
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"
356 : "retrieved.");
357 100114 : params.addRangeCheckedParam<Real>("turbulent_prandtl",
358 : 1,
359 : "turbulent_prandtl > 0",
360 : "Turbulent Prandtl number for energy turbulent diffusion");
361 50057 : params.addParam<std::vector<Real>>(
362 50057 : "Sc_t", std::vector<Real>(), "Turbulent Schmidt numbers used for the passive scalar fields.");
363 100114 : 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");
366 :
367 50057 : return params;
368 0 : }
369 :
370 : InputParameters
371 48941 : NSFVBase::validParams()
372 : {
373 48941 : InputParameters params = Action::validParams();
374 :
375 : /**
376 : * Add params relevant to the objects we may add
377 : */
378 48941 : params += INSFVRhieChowInterpolator::uniqueParams();
379 48941 : params += INSFVMomentumAdvection::uniqueParams();
380 :
381 : /**
382 : * General parameters used to set up the simulation.
383 : */
384 48941 : params += NSFVBase::commonNavierStokesFlowParams();
385 :
386 97882 : params.addParam<bool>(
387 97882 : "porous_medium_treatment", false, "Whether to use porous medium kernels or not.");
388 :
389 97882 : MooseEnum turbulence_type("mixing-length none", "none");
390 97882 : params.addParam<MooseEnum>(
391 : "turbulence_handling",
392 : turbulence_type,
393 : "The way additional diffusivities are determined in the turbulent regime.");
394 :
395 97882 : params.addParam<bool>("initialize_variables_from_mesh_file",
396 97882 : false,
397 : "Determines if the variables that are added by the action are initialized "
398 : "from the mesh file (only for Exodus format)");
399 97882 : params.addParam<std::string>(
400 : "initial_from_file_timestep",
401 : "LATEST",
402 : "Gives the timestep (or \"LATEST\") for which to read a solution from a file "
403 : "for a given variable. (Default: LATEST)");
404 :
405 97882 : params.addParam<bool>("add_flow_equations", true, "True to add mass and momentum equations");
406 97882 : params.addParam<bool>("add_energy_equation", false, "True to add energy equation");
407 97882 : params.addParam<bool>("add_scalar_equation", false, "True to add advected scalar(s) equation");
408 :
409 97882 : params.addParamNamesToGroup("compressibility porous_medium_treatment turbulence_handling "
410 : "add_flow_equations add_energy_equation add_scalar_equation ",
411 : "General control");
412 :
413 97882 : params.addParamNamesToGroup("velocity_variable pressure_variable fluid_temperature_variable",
414 : "External variable");
415 :
416 : /**
417 : * Parameters influencing the porous medium treatment.
418 : */
419 :
420 97882 : params.addParam<MooseFunctorName>(
421 : "porosity", NS::porosity, "The name of the auxiliary variable for the porosity field.");
422 :
423 97882 : params.addParam<unsigned short>(
424 : "porosity_smoothing_layers",
425 : "The number of interpolation-reconstruction operations to perform on the porosity.");
426 :
427 97882 : MooseEnum porosity_interface_pressure_treatment("automatic bernoulli", "automatic");
428 97882 : params.addParam<MooseEnum>("porosity_interface_pressure_treatment",
429 : porosity_interface_pressure_treatment,
430 : "How to treat pressure at a porosity interface");
431 97882 : params.addParam<std::vector<BoundaryName>>(
432 : "pressure_drop_sidesets", {}, "Sidesets over which form loss coefficients are to be applied");
433 97882 : params.addParam<std::vector<Real>>(
434 : "pressure_drop_form_factors",
435 : {},
436 : "User-supplied form loss coefficients to be applied over the sidesets listed above");
437 :
438 97882 : params.addParam<bool>("use_friction_correction",
439 97882 : false,
440 : "If friction correction should be applied in the momentum equation.");
441 :
442 97882 : params.addParam<Real>(
443 : "consistent_scaling",
444 : "Scaling parameter for the friction correction in the momentum equation (if requested).");
445 :
446 97882 : params.addParamNamesToGroup("porosity porosity_smoothing_layers use_friction_correction "
447 : "consistent_scaling porosity_interface_pressure_treatment "
448 : "pressure_drop_sidesets pressure_drop_form_factors",
449 : "Porous medium treatment");
450 :
451 : /**
452 : * Parameters used to define the handling of the momentum-mass equations.
453 : */
454 48941 : std::vector<FunctionName> default_initial_velocity = {"1e-15", "1e-15", "1e-15"};
455 97882 : params.addParam<std::vector<FunctionName>>("initial_velocity",
456 : default_initial_velocity,
457 : "The initial velocity, assumed constant everywhere");
458 :
459 97882 : params.addParam<FunctionName>(
460 : "initial_pressure", "1e5", "The initial pressure, assumed constant everywhere");
461 :
462 48941 : params += NSFVBase::commonMomentumEquationParams();
463 :
464 : /**
465 : * Parameters describing the momentum equations boundary conditions
466 : */
467 48941 : params += NSFVBase::commonMomentumBoundaryTypesParams();
468 48941 : params += NSFVBase::commonMomentumBoundaryFluxesParams();
469 :
470 : /**
471 : * Parameters describing the fluid energy equation
472 : */
473 48941 : params += NSFVBase::commonFluidEnergyEquationParams();
474 :
475 : /**
476 : * Parameters describing the handling of advected scalar fields
477 : */
478 48941 : params += NSFVBase::commonScalarFieldAdvectionParams();
479 :
480 : /**
481 : * Parameters describing the handling of turbulence
482 : */
483 48941 : params += NSFVBase::commonTurbulenceParams();
484 :
485 : /**
486 : * Parameters allowing the control over numerical schemes for different terms in the
487 : * Navier-Stokes + energy equations.
488 : */
489 :
490 48941 : MooseEnum adv_interpol_types(Moose::FV::interpolationMethods());
491 97882 : params.addParam<MooseEnum>("mass_advection_interpolation",
492 : adv_interpol_types,
493 : "The numerical scheme to use for interpolating density, "
494 : "as an advected quantity, to the face.");
495 97882 : params.addParam<MooseEnum>("momentum_advection_interpolation",
496 : adv_interpol_types,
497 : "The numerical scheme to use for interpolating momentum/velocity, "
498 : "as an advected quantity, to the face.");
499 97882 : params.addParam<MooseEnum>("energy_advection_interpolation",
500 : adv_interpol_types,
501 : "The numerical scheme to use for interpolating energy/temperature, "
502 : "as an advected quantity, to the face.");
503 97882 : params.addParam<MooseEnum>("passive_scalar_advection_interpolation",
504 : adv_interpol_types,
505 : "The numerical scheme to use for interpolating passive scalar field, "
506 : "as an advected quantity, to the face.");
507 :
508 97882 : MooseEnum face_interpol_types("average skewness-corrected", "average");
509 97882 : params.addParam<MooseEnum>("pressure_face_interpolation",
510 : face_interpol_types,
511 : "The numerical scheme to interpolate the pressure to the "
512 : "face (separate from the advected quantity interpolation).");
513 97882 : params.addParam<MooseEnum>("momentum_face_interpolation",
514 : face_interpol_types,
515 : "The numerical scheme to interpolate the velocity/momentum to the "
516 : "face (separate from the advected quantity interpolation).");
517 97882 : params.addParam<MooseEnum>("energy_face_interpolation",
518 : face_interpol_types,
519 : "The numerical scheme to interpolate the temperature/energy to the "
520 : "face (separate from the advected quantity interpolation).");
521 97882 : params.addParam<MooseEnum>(
522 : "passive_scalar_face_interpolation",
523 : face_interpol_types,
524 : "The numerical scheme to interpolate the passive scalar field variables to the "
525 : "face (separate from the advected quantity interpolation).");
526 :
527 97882 : MooseEnum velocity_interpolation("average rc", "rc");
528 97882 : params.addParam<MooseEnum>(
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.");
533 :
534 97882 : params.addParam<bool>(
535 : "pressure_two_term_bc_expansion",
536 97882 : true,
537 : "If a two-term Taylor expansion is needed for the determination of the boundary values"
538 : "of the pressure.");
539 97882 : params.addParam<bool>(
540 : "pressure_allow_expansion_on_bernoulli_faces",
541 97882 : false,
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 97882 : params.addParam<bool>(
549 : "momentum_two_term_bc_expansion",
550 97882 : true,
551 : "If a two-term Taylor expansion is needed for the determination of the boundary values"
552 : "of the velocity/momentum.");
553 97882 : params.addParam<bool>(
554 : "energy_two_term_bc_expansion",
555 97882 : true,
556 : "If a two-term Taylor expansion is needed for the determination of the boundary values"
557 : "of the temperature/energy.");
558 97882 : params.addParam<bool>(
559 : "passive_scalar_two_term_bc_expansion",
560 97882 : true,
561 : "If a two-term Taylor expansion is needed for the determination of the boundary values"
562 : "of the advected passive scalar field.");
563 97882 : params.addParam<bool>(
564 : "mixing_length_two_term_bc_expansion",
565 97882 : true,
566 : "If a two-term Taylor expansion is needed for the determination of the boundary values"
567 : "of the mixing length field.");
568 :
569 146823 : params.addRangeCheckedParam<Real>(
570 : "mass_scaling",
571 97882 : 1.0,
572 : "mass_scaling > 0.0",
573 : "The scaling factor for the mass variables (for incompressible simulation "
574 : "this is pressure scaling).");
575 146823 : params.addRangeCheckedParam<Real>("momentum_scaling",
576 97882 : 1.0,
577 : "momentum_scaling > 0.0",
578 : "The scaling factor for the momentum variables.");
579 146823 : params.addRangeCheckedParam<Real>(
580 97882 : "energy_scaling", 1.0, "energy_scaling > 0.0", "The scaling factor for the energy variable.");
581 146823 : params.addRangeCheckedParam<Real>("passive_scalar_scaling",
582 97882 : 1.0,
583 : "passive_scalar_scaling > 0.0",
584 : "The scaling factor for the passive scalar field variables.");
585 :
586 97882 : 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",
594 : "Numerical scheme");
595 :
596 97882 : params.addParamNamesToGroup("momentum_scaling energy_scaling mass_scaling passive_scalar_scaling",
597 : "Scaling");
598 :
599 : /**
600 : * Parameters controlling the ghosting/parallel execution
601 : */
602 146823 : params.addRangeCheckedParam<unsigned short>(
603 : "ghost_layers",
604 97882 : 2,
605 : "ghost_layers > 0",
606 : "The number of geometric/algebraic/coupling layers to ghost.");
607 :
608 97882 : params.addParamNamesToGroup("ghost_layers", "Parallel Execution Tuning");
609 :
610 : // Create input parameter groups
611 97882 : params.addParamNamesToGroup("dynamic_viscosity density thermal_expansion "
612 : "thermal_conductivity_blocks thermal_conductivity specific_heat",
613 : "Material property");
614 :
615 97882 : 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");
621 :
622 97882 : 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");
626 :
627 48941 : return params;
628 48941 : }
|