28 "Define the Navier Stokes weakly-compressible mass and momentum equations");
33 "time_derivative_contributes_to_RC_coefficients",
35 "Whether the time derivative term should contribute to the Rhie Chow coefficients. This adds " 36 "stabilization, but makes the solution dependent on the time step size");
37 params.
addParamNamesToGroup(
"time_derivative_contributes_to_RC_coefficients characteristic_speed",
42 "density_for_gravity_terms",
43 "If specified, replaces the 'density' for the Boussinesq and gravity momentum kernels");
51 "pressure_drop_sidesets");
59 params.
addParam<PhysicsName>(
"coupled_turbulence_physics",
60 "Turbulence Physics coupled with the flow");
67 "pressure_allow_expansion_on_bernoulli_faces");
76 "porosity_interface_pressure_treatment pressure_allow_expansion_on_bernoulli_faces " 77 "porosity_smoothing_layers use_friction_correction consistent_scaling " 78 "pressure_drop_sidesets pressure_drop_form_factors",
79 "Flow medium discontinuity treatment");
81 "mass_advection_interpolation momentum_advection_interpolation " 82 "mass_scaling momentum_scaling characteristic_speed",
92 _porosity_smoothing_layers(isParamValid(
"porosity_smoothing_layers")
93 ? getParam<unsigned short>(
"porosity_smoothing_layers")
97 getParam<unsigned short>(
"porosity_smoothing_layers")
102 if (getParam<bool>(
"pin_pressure") &&
103 getParam<std::vector<MooseFunctorName>>(
"pressure_functors").size())
104 paramError(
"pin_pressure",
"Cannot pin the pressure if a pressure boundary exists");
109 if (getParam<bool>(
"pin_pressure"))
111 if ((std::string(getParam<MooseEnum>(
"pinned_pressure_type")).find(
"point") !=
112 std::string::npos) &&
115 "This parameter must be set to specify the pinned pressure point");
116 else if ((std::string(getParam<MooseEnum>(
"pinned_pressure_type")).find(
"point") ==
117 std::string::npos) &&
120 "This parameter should not be given by the user with the corresponding " 121 "pinned_pressure_type setting: " +
122 std::string(getParam<MooseEnum>(
"pinned_pressure_type")) +
".");
129 "porosity_interface_pressure_treatment");
130 if (getParam<MooseEnum>(
"porosity_interface_pressure_treatment") !=
"bernoulli")
133 {
"pressure_allow_expansion_on_bernoulli_faces",
134 "pressure_drop_sidesets",
135 "pressure_drop_form_factors"});
154 "The number of velocity variable names supplied to the NSFVAction is not " +
156 ((
dimension() == 3) ?
"" :
" or 3!") +
"\nVelocity variables " +
165 "momentum_face_interpolation",
166 "momentum_two_term_bc_expansion"},
167 "INSFVVelocityVariable");
170 std::string variable_type =
"INSFVVelocityVariable";
172 variable_type =
"PINSFVSuperficialVelocityVariable";
176 params.set<std::vector<Real>>(
"scaling") = {getParam<Real>(
"momentum_scaling")};
177 params.set<
MooseEnum>(
"face_interp_method") =
178 getParam<MooseEnum>(
"momentum_face_interpolation");
179 params.set<
bool>(
"two_term_boundary_expansion") =
180 getParam<bool>(
"momentum_two_term_bc_expansion");
188 ") supplied to the WCNSFVFlowPhysics does not exist!");
192 const bool using_bernouilli_pressure_var =
194 getParam<MooseEnum>(
"porosity_interface_pressure_treatment") !=
"automatic";
195 const auto pressure_type =
196 using_bernouilli_pressure_var ?
"BernoulliPressureVariable" :
"INSFVPressureVariable";
199 std::vector<std::string> potentially_missed = {
"system_names",
201 "pressure_face_interpolation",
202 "pressure_two_term_bc_expansion"};
203 if (using_bernouilli_pressure_var)
205 std::vector<std::string> other_missed = {
"pressure_allow_expansion_on_bernoulli_faces",
206 "pressure_drop_sidesets",
207 "pressure_drop_form_factors"};
208 potentially_missed.insert(potentially_missed.end(), other_missed.begin(), other_missed.end());
216 params.set<std::vector<Real>>(
"scaling") = {getParam<Real>(
"mass_scaling")};
217 params.set<
MooseEnum>(
"face_interp_method") =
218 getParam<MooseEnum>(
"pressure_face_interpolation");
219 params.set<
bool>(
"two_term_boundary_expansion") =
220 getParam<bool>(
"pressure_two_term_bc_expansion");
222 if (using_bernouilli_pressure_var)
231 params.set<
bool>(
"allow_two_term_expansion_on_bernoulli_faces") =
232 getParam<bool>(
"pressure_allow_expansion_on_bernoulli_faces");
233 params.set<std::vector<BoundaryName>>(
"pressure_drop_sidesets") =
234 getParam<std::vector<BoundaryName>>(
"pressure_drop_sidesets");
235 params.set<std::vector<Real>>(
"pressure_drop_form_factors") =
236 getParam<std::vector<Real>>(
"pressure_drop_form_factors");
244 ") supplied to the WCNSFVFlowPhysics does not exist!");
247 if (getParam<bool>(
"pin_pressure"))
249 auto type = getParam<MooseEnum>(
"pinned_pressure_type");
252 lm_params.set<
MooseEnum>(
"order") =
"first";
254 if ((
type ==
"point-value" ||
type ==
"average") && !
_problem->hasScalarVariable(
"lambda"))
256 lm_params.set<SolverSystemName>(
"solver_sys") =
getSolverSystem(
"lambda");
279 if (getParam<bool>(
"pin_pressure"))
303 if (getParam<bool>(
"boussinesq_approximation"))
310 std::string mass_kernel_type =
"WCNSFVMassTimeDerivative";
311 std::string kernel_name =
prefix() +
"wcns_mass_time";
315 mass_kernel_type =
"PWCNSFVMassTimeDerivative";
316 kernel_name =
prefix() +
"pwcns_mass_time";
331 std::string kernel_type =
"INSFVMassAdvection";
332 std::string kernel_name =
prefix() +
"ins_mass_advection";
336 kernel_type =
"PINSFVMassAdvection";
337 kernel_name =
prefix() +
"pins_mass_advection";
347 getParam<MooseEnum>(
"mass_advection_interpolation");
355 const auto pin_type = getParam<MooseEnum>(
"pinned_pressure_type");
356 const auto object_type =
357 (
pin_type ==
"average") ?
"FVIntegralValueConstraint" :
"FVPointValueConstraint";
363 params.
set<PostprocessorName>(
"phi0") = getParam<PostprocessorName>(
"pinned_pressure_value");
366 params.
set<Point>(
"point") = getParam<Point>(
"pinned_pressure_point");
375 ?
"WCNSFVMomentumTimeDerivative" 376 :
"INSFVMomentumTimeDerivative";
377 std::string kernel_name =
prefix() +
384 kernel_type = (
_compressibility ==
"weakly-compressible") ?
"WCNSFVMomentumTimeDerivative" 385 :
"PINSFVMomentumTimeDerivative";
397 params.
set<
bool>(
"contribute_to_rc") =
398 getParam<bool>(
"time_derivative_contributes_to_RC_coefficients");
413 std::string kernel_type =
"INSFVMomentumAdvection";
414 std::string kernel_name =
prefix() +
"ins_momentum_advection_";
418 kernel_type =
"PINSFVMomentumAdvection";
419 kernel_name =
prefix() +
"pins_momentum_advection_";
444 std::string kernel_type =
"INSFVMomentumDiffusion";
445 std::string kernel_name =
prefix() +
"ins_momentum_diffusion_";
449 kernel_type =
"PINSFVMomentumDiffusion";
450 kernel_name =
prefix() +
"pins_momentum_diffusion_";
457 params.
set<
MooseEnum>(
"mu_interp_method") = getParam<MooseEnum>(
"mu_interp_method");
459 getParam<MooseEnum>(
"momentum_face_interpolation");
460 if (getParam<bool>(
"include_deviatoric_stress"))
462 params.
set<
bool>(
"complete_expansion") =
true;
463 const std::string u_names[3] = {
"u",
"v",
"w"};
464 for (
unsigned int i = 0; i <
dimension(); ++i)
471 params.
set<
bool>(
"newton_solve") =
true;
484 std::string kernel_type =
"INSFVMomentumPressure";
485 std::string kernel_name =
prefix() +
"ins_momentum_pressure_";
489 kernel_type =
"PINSFVMomentumPressure";
490 kernel_name =
prefix() +
"pins_momentum_pressure_";
497 params.
set<
bool>(
"correct_skewness") =
498 getParam<MooseEnum>(
"pressure_face_interpolation") ==
"skewness-corrected";
515 std::string kernel_type =
"INSFVMomentumGravity";
516 std::string kernel_name =
prefix() +
"ins_momentum_gravity_";
520 kernel_type =
"PINSFVMomentumGravity";
521 kernel_name =
prefix() +
"pins_momentum_gravity_";
534 if (getParam<RealVectorValue>(
"gravity")(
d) != 0)
550 "We cannot use boussinesq approximation while running in weakly-compressible mode!");
552 std::string kernel_type =
"INSFVMomentumBoussinesq";
553 std::string kernel_name =
prefix() +
"ins_momentum_boussinesq_";
557 kernel_type =
"PINSFVMomentumBoussinesq";
558 kernel_name =
prefix() +
"pins_momentum_boussinesq_";
567 params.
set<
Real>(
"ref_temperature") = getParam<Real>(
"ref_temperature");
568 params.
set<MooseFunctorName>(
"alpha_name") = getParam<MooseFunctorName>(
"thermal_expansion");
572 params.
set<
bool>(
"_override_constant_check") =
true;
587 unsigned int num_used_blocks = num_friction_blocks ? num_friction_blocks : 1;
589 const std::string kernel_type =
"PINSFVMomentumFriction";
595 params.
set<
bool>(
"standard_friction_formulation") =
596 getParam<bool>(
"standard_friction_formulation");
599 for (
const auto block_i :
make_range(num_used_blocks))
601 std::string block_name =
"";
602 if (num_friction_blocks)
610 block_name = std::to_string(block_i);
617 for (
unsigned int type_i = 0; type_i <
_friction_types[block_i].size(); ++type_i)
620 if (upper_name ==
"DARCY")
625 else if (upper_name ==
"FORCHHEIMER")
634 "' is not implemented");
638 prefix() +
"momentum_friction_" + block_name +
"_" +
645 const std::string correction_kernel_type =
"PINSFVMomentumFrictionCorrection";
647 if (num_friction_blocks)
653 corr_params.
set<
Real>(
"consistent_scaling") = getParam<Real>(
"consistent_scaling");
658 for (
unsigned int type_i = 0; type_i <
_friction_types[block_i].size(); ++type_i)
661 if (upper_name ==
"DARCY")
666 else if (upper_name ==
"FORCHHEIMER")
669 corr_params.
set<MooseFunctorName>(
"Forchheimer_name") =
675 prefix() +
"pins_momentum_friction_correction_" + block_name +
687 unsigned int num_velocity_functor_inlets = 0;
689 if (momentum_outlet_type ==
"fixed-velocity" || momentum_outlet_type ==
"fixed-pressure")
690 num_velocity_functor_inlets++;
695 ") is not the same as the number of entries in the momentum_inlet_types " 696 "subvector for fixed-velocities/pressures functors (size " +
697 std::to_string(num_velocity_functor_inlets) +
")");
699 unsigned int flux_bc_counter = 0;
700 unsigned int velocity_pressure_counter = 0;
703 if (momentum_inlet_type ==
"fixed-velocity")
705 const std::string bc_type =
"INSFVInletVelocityBC";
707 params.
set<std::vector<BoundaryName>>(
"boundary") = {inlet_bdy};
710 "More non-flux inlets than inlet functors (" +
715 if (momentum_functors.size() <
dimension())
717 "Subvector for boundary '" + inlet_bdy +
"' (size " +
718 std::to_string(momentum_functors.size()) +
719 ") is not the same size as the number of dimensions of the physics (" +
725 params.
set<MooseFunctorName>(
"functor") = momentum_functors[
d];
729 ++velocity_pressure_counter;
731 else if (momentum_inlet_type ==
"fixed-pressure")
733 const std::string bc_type =
"INSFVOutletPressureBC";
738 "More non-flux inlets than inlet functors (" +
741 params.
set<FunctionName>(
"function") =
743 params.
set<std::vector<BoundaryName>>(
"boundary") = {inlet_bdy};
746 ++velocity_pressure_counter;
748 else if (momentum_inlet_type ==
"flux-mass" || momentum_inlet_type ==
"flux-velocity")
751 const std::string bc_type =
759 params.
set<std::vector<BoundaryName>>(
"boundary") = {inlet_bdy};
765 "More inlet flux BCs than inlet flux pps (" +
768 if (momentum_inlet_type ==
"flux-mass")
771 params.
set<PostprocessorName>(
"area_pp") =
"area_pp_" + inlet_bdy;
788 const std::string bc_type =
"WCNSFVMassFluxBC";
792 params.
set<std::vector<BoundaryName>>(
"boundary") = {inlet_bdy};
797 if (momentum_inlet_type ==
"flux-mass")
800 params.
set<PostprocessorName>(
"area_pp") =
"area_pp_" + inlet_bdy;
821 unsigned int num_pressure_outlets = 0;
823 if (momentum_outlet_type ==
"fixed-pressure" ||
824 momentum_outlet_type ==
"fixed-pressure-zero-gradient")
825 num_pressure_outlets++;
830 ") is not the same as the number of pressure outlet boundaries in " 831 "'fixed-pressure/fixed-pressure-zero-gradient' (size " +
832 std::to_string(num_pressure_outlets) +
")");
834 const std::string u_names[3] = {
"u",
"v",
"w"};
837 if (momentum_outlet_type ==
"zero-gradient" ||
838 momentum_outlet_type ==
"fixed-pressure-zero-gradient")
842 :
"INSFVMomentumAdvectionOutflowBC";
844 params.
set<std::vector<BoundaryName>>(
"boundary") = {outlet_bdy};
850 for (
unsigned int i = 0; i <
dimension(); ++i)
863 if (momentum_outlet_type ==
"fixed-pressure" ||
864 momentum_outlet_type ==
"fixed-pressure-zero-gradient")
866 const std::string bc_type =
"INSFVOutletPressureBC";
870 params.
set<std::vector<BoundaryName>>(
"boundary") = {outlet_bdy};
874 else if (momentum_outlet_type ==
"zero-gradient")
876 const std::string bc_type =
"INSFVMassAdvectionOutflowBC";
880 params.
set<std::vector<BoundaryName>>(
"boundary") = {outlet_bdy};
893 const std::string u_names[3] = {
"u",
"v",
"w"};
896 unsigned int num_functor_walls = 0;
898 if (momentum_wall_type ==
"noslip")
902 "If any wall functors are specified, the number of boundaries requiring a momentum " 904 std::to_string(num_functor_walls) +
") and the number of functors specified (" +
907 if (wall_functors.second.size() !=
dimension())
909 "Number of wall functors (" + std::to_string(wall_functors.second.size()) +
910 ") must match dimension (" + std::to_string(
dimension()) +
911 ").\nFunctors currently specified:" +
Moose::stringify(wall_functors.second));
915 if (wall_type ==
"noslip")
917 const std::string bc_type =
"INSFVNoSlipWallBC";
919 params.
set<std::vector<BoundaryName>>(
"boundary") = {boundary_name};
925 params.
set<FunctionName>(
"function") =
"0";
932 else if (wall_type ==
"wallfunction")
934 const std::string bc_type =
"INSFVWallFunctionBC";
938 params.
set<std::vector<BoundaryName>>(
"boundary") = {boundary_name};
952 else if (wall_type ==
"slip")
954 const std::string bc_type =
"INSFVNaturalFreeSlipBC";
956 params.
set<std::vector<BoundaryName>>(
"boundary") = {boundary_name};
967 else if (wall_type ==
"symmetry")
972 bc_type =
"PINSFVSymmetryVelocityBC";
974 bc_type =
"INSFVSymmetryVelocityBC";
977 params.
set<std::vector<BoundaryName>>(
"boundary") = {boundary_name};
982 params.
set<MooseFunctorName>(
NS::mu) = viscosity_name;
997 const std::string bc_type =
"INSFVSymmetryPressureBC";
1000 params.
set<std::vector<BoundaryName>>(
"boundary") = {boundary_name};
1013 std::string bc_type =
"INSFVVelocityHydraulicSeparatorBC";
1025 bc_type =
"INSFVScalarFieldSeparatorBC";
1047 if (getParam<bool>(
"pin_pressure"))
1049 const auto pin_type = getParam<MooseEnum>(
"pinned_pressure_type");
1050 std::string object_type =
"NSPressurePin";
1063 params.
set<std::vector<OutputName>>(
"outputs") = {
"none"};
1073 params.
set<PostprocessorName>(
"phi0") = getParam<PostprocessorName>(
"pinned_pressure_value");
1076 params.
set<Point>(
"point") = getParam<Point>(
"pinned_pressure_point");
1078 params.
set<PostprocessorName>(
"pressure_average") =
"ns_pressure_average";
1099 ghost_layers = std::max(getParam<unsigned short>(
"porosity_smoothing_layers"), ghost_layers);
1101 getParam<MooseEnum>(
"porosity_interface_pressure_treatment") !=
"automatic") ||
1102 getParam<MooseEnum>(
"momentum_face_interpolation") ==
"skewness-corrected" ||
1103 getParam<MooseEnum>(
"pressure_face_interpolation") ==
"skewness-corrected")
1104 ghost_layers = std::max(ghost_layers, (
unsigned short)3);
1105 return ghost_layers;
1111 mooseAssert(
dimension(),
"0-dimension not supported");
1119 std::vector<UserObject *> objs;
1124 .condition<AttribThread>(0)
1126 bool have_matching_rc_uo =
false;
1127 for (
const auto & obj : objs)
1128 if (
const auto *
const rc_obj = dynamic_cast<INSFVRhieChowInterpolator *>(obj); rc_obj)
1130 if (rc_obj->blocks() ==
_blocks || (rc_obj->blocks().size() == 0 ||
_blocks.size() == 0))
1132 have_matching_rc_uo =
true;
1137 if (have_matching_rc_uo)
1143 const std::string u_names[3] = {
"u",
"v",
"w"};
1144 const auto object_type =
1157 unsigned short smoothing_layers =
isParamValid(
"porosity_smoothing_layers")
1158 ? getParam<unsigned short>(
"porosity_smoothing_layers")
1160 params.set<
unsigned short>(
"smoothing_layers") = smoothing_layers;
1166 params.set<MooseFunctorName>(
"a_u") =
"ax";
1167 params.set<MooseFunctorName>(
"a_v") =
"ay";
1168 params.set<MooseFunctorName>(
"a_w") =
"az";
1179 mooseError(
"Rhie Chow coefficient ax must be provided for advection by auxiliary velocities");
1181 mooseError(
"Rhie Chow coefficient ay must be provided for advection by auxiliary velocities");
1183 mooseError(
"Rhie Chow coefficient az must be provided for advection by auxiliary velocities");
1189 mooseAssert(!
_rc_uo_name.empty(),
"The Rhie-Chow user-object name should be set!");
1205 if (upper_name ==
"DARCY")
1213 bool linear_friction_factor_found =
false;
1214 MooseFunctorName linear_friction_factor;
1219 if (upper_name ==
"DARCY" && !linear_friction_factor_found)
1221 linear_friction_factor_found =
true;
1224 else if (upper_name ==
"DARCY" && !linear_friction_factor_found)
1226 mooseError(
"Multiple linear friction factor with different names have been specified. " 1227 "This is not currently supported as a single name should be retrievable. " 1228 "Use a PiecewiseByBlockFunctorMaterial to consolidate them.");
1230 if (linear_friction_factor_found)
1231 return linear_friction_factor;
std::string prefix() const
static InputParameters validParams()
void addMomentumTimeKernels() override
Functions adding kernels for the incompressible momentum equation If the material properties are not ...
const bool _has_flow_equations
Boolean to keep track of whether the flow equations should be created.
void addMomentumBoussinesqKernels() override
unsigned short getNumberAlgebraicGhostingLayersNeeded() const override
Return the number of algebraic ghosting layers needed.
void assignBlocks(InputParameters ¶ms, const std::vector< SubdomainName > &blocks) const
bool shouldCreateVariable(const VariableName &var_name, const std::vector< SubdomainName > &blocks, const bool error_if_aux)
std::vector< std::vector< std::string > > _friction_types
The friction correlation types used for each block.
std::map< BoundaryName, MooseEnum > _momentum_inlet_types
Momentum inlet boundary types.
std::string toUpper(const std::string &name)
static const std::string speed
static InputParameters validParams()
void addInletBC() override
Functions adding boundary conditions for the incompressible simulation.
const MooseFunctorName _density_name
Name of the density material property.
const MooseFunctorName _density_gravity_name
Name of the density material property used for gravity and Boussinesq terms.
static const std::string smoothed_porosity
void addMomentumViscousDissipationKernels()
virtual void addUserObjects() override
void addMassKernels()
Function adding kernels for the incompressible continuity equation.
void addPressurePinKernel()
Function adding the pressure constraint.
static const std::string density
InputParameters getValidParams(const std::string &name) const
Creates all the objects needed to solve the Navier Stokes mass and momentum equations.
UserObjectName _rc_uo_name
Name of the user object in charge of computing the Rhie Chow coefficients.
void checkRhieChowFunctorsDefined() const
Checks that sufficient Rhie Chow coefficients have been defined for the given dimension, used for scalar or temperature advection by auxiliary variables.
std::map< BoundaryName, std::vector< MooseFunctorName > > _momentum_inlet_functors
Functors describing the momentum inlet for each boundary.
const MooseEnum _momentum_advection_interpolation
The momentum face interpolation method for being advected.
std::map< BoundaryName, std::vector< MooseFunctorName > > _momentum_wall_functors
Functors describing the momentum for each wall boundary.
const NonlinearVariableName _pressure_name
Pressure name.
const MooseFunctorName _porosity_name
Name of the porosity functor.
bool shouldCreateTimeDerivative(const VariableName &var_name, const std::vector< SubdomainName > &blocks, const bool error_if_already_defined) const
static const std::string pin_type
static InputParameters validParams()
static InputParameters validParams()
const bool _porous_medium_treatment
Whether to use the porous medium treatment.
std::vector< SubdomainName > _blocks
unsigned int dimension() const
static const std::string directions[3]
void addRhieChowUserObjects() override
Function which adds the RhieChow interpolator user objects for weakly and incompressible formulations...
bool isParamValid(const std::string &name) const
UserObjectName rhieChowUOName() const override
Return the name of the Rhie Chow user object.
virtual FEProblemBase & getProblem()
virtual void addPostprocessor(const std::string &pp_name, const std::string &name, InputParameters ¶meters)
static const std::string porosity
void addOutletBC() override
virtual void addCorrectors() override
WCNSFVFlowPhysics(const InputParameters ¶meters)
unsigned short getNumberAlgebraicGhostingLayersNeeded() const override
Return the number of algebraic ghosting layers needed.
const SolverSystemName & getSolverSystem(unsigned int variable_index) const
static const std::string T_fluid
std::vector< std::vector< SubdomainName > > _friction_blocks
Subdomains where we want to have volumetric friction.
void addMassTimeKernels()
Function adding kernels for the time derivative term of the weakly compressible continuity equation...
std::vector< PostprocessorName > _flux_inlet_pps
Postprocessors describing the momentum inlet for each boundary. Indexing based on the number of flux ...
TheWarehouse & theWarehouse() const
void addMomentumPressureKernels() override
std::map< BoundaryName, MooseEnum > _momentum_outlet_types
Momentum outlet boundary types.
static const std::string mu
const std::vector< std::string > _velocity_names
Velocity names.
static std::vector< std::string > listOfCommonParams()
const std::string & type() const
Base class for Physics which create the Navier Stokes flow equations.
const T & getParam(const std::string &name) const
void paramError(const std::string ¶m, Args... args) const
const MooseFunctorName _dynamic_viscosity_name
Name of the dynamic viscosity material property.
std::string stringify(const T &t)
const bool _solve_for_dynamic_pressure
Whether we are solving for the total or dynamic pressure.
virtual void addVariable(const std::string &var_type, const std::string &var_name, InputParameters ¶ms)
const MooseEnum _compressibility
Compressibility type, can be compressible, incompressible or weakly-compressible. ...
void addSeparatorBC() override
MooseFunctorName _flow_porosity_functor_name
Name of the porosity functor for the flow equations (if smoothed)
bool _define_variables
Whether to define variables if they do not exist.
virtual void addSolverVariables() override
virtual MooseFunctorName getLinearFrictionCoefName() const override
Get the name of the linear friction coefficient. Returns an empty string if no friction.
static std::vector< std::string > listOfCommonParams()
void addMomentumFrictionKernels() override
void addMomentumGravityKernels() override
bool isParamSetByUser(const std::string &nm) const
std::map< BoundaryName, MooseEnum > _momentum_wall_types
Momentum wall boundary types.
const NonlinearVariableName _fluid_temperature_name
Fluid temperature name.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const MooseEnum _velocity_interpolation
The velocity face interpolation method for advecting other quantities.
std::vector< VariableName > CoupledName
std::map< BoundaryName, MooseFunctorName > _pressure_functors
Functors describing the outlet pressure on each boundary.
bool hasTurbulencePhysics() const
Whether a turbulence Physics has been coupled in, to know which viscosity to pick on symmetry boundar...
virtual std::vector< std::shared_ptr< UserObject > > addUserObject(const std::string &user_object_name, const std::string &name, InputParameters ¶meters)
IntRange< T > make_range(T beg, T end)
void mooseError(Args &&... args) const
registerWCNSFVFlowPhysicsBaseTasks("NavierStokesApp", WCNSFVFlowPhysics)
const std::vector< BoundaryName > _hydraulic_separators
Hydraulic separator boundaries.
std::shared_ptr< FEProblemBase > & _problem
const InputParameters & parameters() const
void addMomentumAdvectionKernels()
void reportPotentiallyMissedParameters(const std::vector< std::string > ¶m_names, const std::string &object_type) const
const std::string velocity_vector[3]
registerMooseAction("NavierStokesApp", WCNSFVFlowPhysics, "add_fv_kernel")
std::vector< Point > _flux_inlet_directions
Direction of each flux inlet. Indexing based on the number of flux boundaries.
void addWallsBC() override
virtual void addFVKernel(const std::string &kernel_name, const std::string &name, InputParameters ¶meters)
virtual void addFVBC(const std::string &fv_bc_name, const std::string &name, InputParameters ¶meters)
void saveSolverVariableName(const VariableName &var_name)
static const std::string total_viscosity
auto index_range(const T &sizable)
std::vector< std::vector< std::string > > _friction_coeffs
The coefficients used for each item if friction type.
bool hasForchheimerFriction() const override
Return whether a Forchheimer friction model is in use.
virtual void addFVKernels() override
std::string time_deriv(const std::string &var)