LCOV - code coverage report
Current view: top level - src/base - NSFVBase.C (source / functions) Hit Total Coverage
Test: idaholab/moose navier_stokes: #31706 (f8ed4a) with base bb0a08 Lines: 220 222 99.1 %
Date: 2025-11-03 17:26:04 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       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 : }

Generated by: LCOV version 1.14