LCOV - code coverage report
Current view: top level - src/base - NSFVBase.C (source / functions) Hit Total Coverage
Test: idaholab/moose navier_stokes: 9fc4b0 Lines: 219 221 99.1 %
Date: 2025-08-14 10:14:56 Functions: 8 8 100.0 %
Legend: Lines: hit not hit

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

Generated by: LCOV version 1.14