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"))
256 if (!
_problem->hasScalarVariable(
"lambda"))
258 lm_params.set<SolverSystemName>(
"solver_sys") =
getSolverSystem(
"lambda");
282 if (getParam<bool>(
"pin_pressure"))
307 if (getParam<bool>(
"boussinesq_approximation"))
314 std::string mass_kernel_type =
"WCNSFVMassTimeDerivative";
315 std::string kernel_name =
prefix() +
"wcns_mass_time";
319 mass_kernel_type =
"PWCNSFVMassTimeDerivative";
320 kernel_name =
prefix() +
"pwcns_mass_time";
335 std::string kernel_type =
"INSFVMassAdvection";
336 std::string kernel_name =
prefix() +
"ins_mass_advection";
340 kernel_type =
"PINSFVMassAdvection";
341 kernel_name =
prefix() +
"pins_mass_advection";
351 getParam<MooseEnum>(
"mass_advection_interpolation");
359 const auto pin_type = getParam<MooseEnum>(
"pinned_pressure_type");
360 const auto object_type =
361 (
pin_type ==
"average") ?
"FVIntegralValueConstraint" :
"FVPointValueConstraint";
367 params.
set<PostprocessorName>(
"phi0") = getParam<PostprocessorName>(
"pinned_pressure_value");
370 params.
set<Point>(
"point") = getParam<Point>(
"pinned_pressure_point");
379 ?
"WCNSFVMomentumTimeDerivative" 380 :
"INSFVMomentumTimeDerivative";
381 std::string kernel_name =
prefix() +
388 kernel_type = (
_compressibility ==
"weakly-compressible") ?
"WCNSFVMomentumTimeDerivative" 389 :
"PINSFVMomentumTimeDerivative";
401 params.
set<
bool>(
"contribute_to_rc") =
402 getParam<bool>(
"time_derivative_contributes_to_RC_coefficients");
417 std::string kernel_type =
"INSFVMomentumAdvection";
418 std::string kernel_name =
prefix() +
"ins_momentum_advection_";
422 kernel_type =
"PINSFVMomentumAdvection";
423 kernel_name =
prefix() +
"pins_momentum_advection_";
448 std::string kernel_type =
"INSFVMomentumDiffusion";
449 std::string kernel_name =
prefix() +
"ins_momentum_diffusion_";
453 kernel_type =
"PINSFVMomentumDiffusion";
454 kernel_name =
prefix() +
"pins_momentum_diffusion_";
464 "Including the isotropic viscous stress is not supported with the porous medium " 465 "treatment. Ignoring the request.");
467 if (include_isotropic)
468 params.
set<
bool>(
"include_isotropic_viscous_stress") =
true;
469 params.
set<
MooseEnum>(
"mu_interp_method") = getParam<MooseEnum>(
"mu_interp_method");
471 getParam<MooseEnum>(
"momentum_face_interpolation");
476 "Including the symmetrized viscous stress is not supported with the porous " 477 "medium treatment. Ignoring the request.");
478 include_symmetric =
false;
480 if (include_symmetric || include_isotropic)
482 params.
set<
bool>(
"complete_expansion") =
true;
483 const std::string u_names[3] = {
"u",
"v",
"w"};
484 for (
unsigned int i = 0; i <
dimension(); ++i)
491 params.
set<
bool>(
"newton_solve") =
true;
503 const unsigned int radial_index)
514 prefix() +
"ins_momentum_viscous_source_rz_" +
522 std::string kernel_type =
"INSFVMomentumPressure";
523 std::string kernel_name =
prefix() +
"ins_momentum_pressure_";
527 kernel_type =
"PINSFVMomentumPressure";
528 kernel_name =
prefix() +
"pins_momentum_pressure_";
535 params.
set<
bool>(
"correct_skewness") =
536 getParam<MooseEnum>(
"pressure_face_interpolation") ==
"skewness-corrected";
553 std::string kernel_type =
"INSFVMomentumGravity";
554 std::string kernel_name =
prefix() +
"ins_momentum_gravity_";
558 kernel_type =
"PINSFVMomentumGravity";
559 kernel_name =
prefix() +
"pins_momentum_gravity_";
572 if (getParam<RealVectorValue>(
"gravity")(
d) != 0)
588 "We cannot use boussinesq approximation while running in weakly-compressible mode!");
590 std::string kernel_type =
"INSFVMomentumBoussinesq";
591 std::string kernel_name =
prefix() +
"ins_momentum_boussinesq_";
595 kernel_type =
"PINSFVMomentumBoussinesq";
596 kernel_name =
prefix() +
"pins_momentum_boussinesq_";
605 params.
set<
Real>(
"ref_temperature") = getParam<Real>(
"ref_temperature");
606 params.
set<MooseFunctorName>(
"alpha_name") = getParam<MooseFunctorName>(
"thermal_expansion");
610 params.
set<
bool>(
"_override_constant_check") =
true;
614 if (getParam<RealVectorValue>(
"gravity")(
d) != 0)
628 unsigned int num_used_blocks = num_friction_blocks ? num_friction_blocks : 1;
630 const std::string kernel_type =
"PINSFVMomentumFriction";
636 params.
set<
bool>(
"standard_friction_formulation") =
637 getParam<bool>(
"standard_friction_formulation");
640 for (
const auto block_i :
make_range(num_used_blocks))
642 std::string block_name =
"";
643 if (num_friction_blocks)
651 block_name = std::to_string(block_i);
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")
675 "' is not implemented");
679 prefix() +
"momentum_friction_" + block_name +
"_" +
686 const std::string correction_kernel_type =
"PINSFVMomentumFrictionCorrection";
688 if (num_friction_blocks)
694 corr_params.
set<
Real>(
"consistent_scaling") = getParam<Real>(
"consistent_scaling");
699 for (
unsigned int type_i = 0; type_i <
_friction_types[block_i].size(); ++type_i)
702 if (upper_name ==
"DARCY")
707 else if (upper_name ==
"FORCHHEIMER")
710 corr_params.
set<MooseFunctorName>(
"Forchheimer_name") =
716 prefix() +
"pins_momentum_friction_correction_" + block_name +
728 unsigned int num_velocity_functor_inlets = 0;
730 if (momentum_outlet_type ==
"fixed-velocity" || momentum_outlet_type ==
"fixed-pressure")
731 num_velocity_functor_inlets++;
736 ") is not the same as the number of entries in the momentum_inlet_types " 737 "subvector for fixed-velocities/pressures functors (size " +
738 std::to_string(num_velocity_functor_inlets) +
")");
740 unsigned int flux_bc_counter = 0;
741 unsigned int velocity_pressure_counter = 0;
744 if (momentum_inlet_type ==
"fixed-velocity")
746 const std::string bc_type =
"INSFVInletVelocityBC";
748 params.
set<std::vector<BoundaryName>>(
"boundary") = {inlet_bdy};
751 "More non-flux inlets than inlet functors (" +
756 if (momentum_functors.size() <
dimension())
758 "Subvector for boundary '" + inlet_bdy +
"' (size " +
759 std::to_string(momentum_functors.size()) +
760 ") is not the same size as the number of dimensions of the physics (" +
766 params.
set<MooseFunctorName>(
"functor") = momentum_functors[
d];
770 ++velocity_pressure_counter;
772 else if (momentum_inlet_type ==
"fixed-pressure")
774 const std::string bc_type =
"INSFVOutletPressureBC";
779 "More non-flux inlets than inlet functors (" +
782 params.
set<FunctionName>(
"function") =
784 params.
set<std::vector<BoundaryName>>(
"boundary") = {inlet_bdy};
787 ++velocity_pressure_counter;
789 else if (momentum_inlet_type ==
"flux-mass" || momentum_inlet_type ==
"flux-velocity")
792 const std::string bc_type =
800 params.
set<std::vector<BoundaryName>>(
"boundary") = {inlet_bdy};
806 "More inlet flux BCs than inlet flux pps (" +
809 if (momentum_inlet_type ==
"flux-mass")
812 params.
set<PostprocessorName>(
"area_pp") =
"area_pp_" + inlet_bdy;
829 const std::string bc_type =
"WCNSFVMassFluxBC";
833 params.
set<std::vector<BoundaryName>>(
"boundary") = {inlet_bdy};
838 if (momentum_inlet_type ==
"flux-mass")
841 params.
set<PostprocessorName>(
"area_pp") =
"area_pp_" + inlet_bdy;
862 unsigned int num_pressure_outlets = 0;
864 if (momentum_outlet_type ==
"fixed-pressure" ||
865 momentum_outlet_type ==
"fixed-pressure-zero-gradient")
866 num_pressure_outlets++;
871 ") is not the same as the number of pressure outlet boundaries in " 872 "'fixed-pressure/fixed-pressure-zero-gradient' (size " +
873 std::to_string(num_pressure_outlets) +
")");
875 const std::string u_names[3] = {
"u",
"v",
"w"};
878 if (momentum_outlet_type ==
"zero-gradient" ||
879 momentum_outlet_type ==
"fixed-pressure-zero-gradient")
883 :
"INSFVMomentumAdvectionOutflowBC";
885 params.
set<std::vector<BoundaryName>>(
"boundary") = {outlet_bdy};
891 for (
unsigned int i = 0; i <
dimension(); ++i)
904 if (momentum_outlet_type ==
"fixed-pressure" ||
905 momentum_outlet_type ==
"fixed-pressure-zero-gradient")
907 const std::string bc_type =
"INSFVOutletPressureBC";
911 params.
set<std::vector<BoundaryName>>(
"boundary") = {outlet_bdy};
915 else if (momentum_outlet_type ==
"zero-gradient")
917 const std::string bc_type =
"INSFVMassAdvectionOutflowBC";
921 params.
set<std::vector<BoundaryName>>(
"boundary") = {outlet_bdy};
934 const std::string u_names[3] = {
"u",
"v",
"w"};
937 unsigned int num_functor_walls = 0;
939 if (momentum_wall_type ==
"noslip")
943 "If any wall functors are specified, the number of boundaries requiring a momentum " 945 std::to_string(num_functor_walls) +
") and the number of functors specified (" +
948 if (wall_functors.second.size() !=
dimension())
950 "Number of wall functors (" + std::to_string(wall_functors.second.size()) +
951 ") must match dimension (" + std::to_string(
dimension()) +
952 ").\nFunctors currently specified:" +
Moose::stringify(wall_functors.second));
956 if (wall_type ==
"noslip")
958 const std::string bc_type =
"INSFVNoSlipWallBC";
960 params.
set<std::vector<BoundaryName>>(
"boundary") = {boundary_name};
966 params.
set<FunctionName>(
"function") =
"0";
973 else if (wall_type ==
"wallfunction")
975 const std::string bc_type =
"INSFVWallFunctionBC";
979 params.
set<std::vector<BoundaryName>>(
"boundary") = {boundary_name};
993 else if (wall_type ==
"slip")
995 const std::string bc_type =
"INSFVNaturalFreeSlipBC";
997 params.
set<std::vector<BoundaryName>>(
"boundary") = {boundary_name};
1008 else if (wall_type ==
"symmetry")
1011 std::string bc_type;
1013 bc_type =
"PINSFVSymmetryVelocityBC";
1015 bc_type =
"INSFVSymmetryVelocityBC";
1018 params.
set<std::vector<BoundaryName>>(
"boundary") = {boundary_name};
1023 params.
set<MooseFunctorName>(
NS::mu) = viscosity_name;
1038 const std::string bc_type =
"INSFVSymmetryPressureBC";
1041 params.
set<std::vector<BoundaryName>>(
"boundary") = {boundary_name};
1054 std::string bc_type =
"INSFVVelocityHydraulicSeparatorBC";
1066 bc_type =
"INSFVScalarFieldSeparatorBC";
1088 if (getParam<bool>(
"pin_pressure"))
1090 const auto pin_type = getParam<MooseEnum>(
"pinned_pressure_type");
1091 std::string object_type =
"NSPressurePin";
1104 params.
set<std::vector<OutputName>>(
"outputs") = {
"none"};
1114 params.
set<PostprocessorName>(
"phi0") = getParam<PostprocessorName>(
"pinned_pressure_value");
1117 params.
set<Point>(
"point") = getParam<Point>(
"pinned_pressure_point");
1119 params.
set<PostprocessorName>(
"pressure_average") =
"ns_pressure_average";
1140 ghost_layers = std::max(getParam<unsigned short>(
"porosity_smoothing_layers"), ghost_layers);
1142 getParam<MooseEnum>(
"porosity_interface_pressure_treatment") !=
"automatic") ||
1143 getParam<MooseEnum>(
"momentum_face_interpolation") ==
"skewness-corrected" ||
1144 getParam<MooseEnum>(
"pressure_face_interpolation") ==
"skewness-corrected")
1145 ghost_layers = std::max(ghost_layers, (
unsigned short)3);
1146 return ghost_layers;
1152 mooseAssert(
dimension(),
"0-dimension not supported");
1160 std::vector<UserObject *> objs;
1165 .condition<AttribThread>(0)
1167 bool have_matching_rc_uo =
false;
1168 for (
const auto & obj : objs)
1169 if (
const auto *
const rc_obj = dynamic_cast<INSFVRhieChowInterpolator *>(obj); rc_obj)
1171 if (rc_obj->blocks() ==
_blocks || (rc_obj->blocks().size() == 0 ||
_blocks.size() == 0))
1173 have_matching_rc_uo =
true;
1178 if (have_matching_rc_uo)
1184 const std::string u_names[3] = {
"u",
"v",
"w"};
1185 const auto object_type =
1198 unsigned short smoothing_layers =
isParamValid(
"porosity_smoothing_layers")
1199 ? getParam<unsigned short>(
"porosity_smoothing_layers")
1201 params.set<
unsigned short>(
"smoothing_layers") = smoothing_layers;
1207 params.set<MooseFunctorName>(
"a_u") =
"ax";
1208 params.set<MooseFunctorName>(
"a_v") =
"ay";
1209 params.set<MooseFunctorName>(
"a_w") =
"az";
1220 mooseError(
"Rhie Chow coefficient ax must be provided for advection by auxiliary velocities");
1222 mooseError(
"Rhie Chow coefficient ay must be provided for advection by auxiliary velocities");
1224 mooseError(
"Rhie Chow coefficient az must be provided for advection by auxiliary velocities");
1239 if (upper_name ==
"DARCY")
1247 bool linear_friction_factor_found =
false;
1248 MooseFunctorName linear_friction_factor;
1253 if (upper_name ==
"DARCY" && !linear_friction_factor_found)
1255 linear_friction_factor_found =
true;
1258 else if (upper_name ==
"DARCY" && !linear_friction_factor_found)
1260 mooseError(
"Multiple linear friction factor with different names have been specified. " 1261 "This is not currently supported as a single name should be retrievable. " 1262 "Use a PiecewiseByBlockFunctorMaterial to consolidate them.");
1264 if (linear_friction_factor_found)
1265 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.
KOKKOS_INLINE_FUNCTION const T * find(const T &target, const T *const begin, const T *const end)
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)
bool includeIsotropicStress() const
Whether to include the isotropic viscous stress contribution.
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.
void paramError(const std::string ¶m, Args... args) const
const T & getParam(const std::string &name) const
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()
const InputParameters & parameters() const
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.
void reportPotentiallyMissedParameters(const std::vector< std::string > ¶m_names, const std::string &object_type, const std::string &object_name="") const
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
bool includeSymmetrizedViscousStress() const
Whether to include the symmetrized contribution in the viscous stress.
static const std::string directions[3]
void addRhieChowUserObjects() override
Function which adds the RhieChow interpolator user objects for weakly and incompressible formulations...
std::string toUpper(std::string name)
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.
void addAxisymmetricViscousSource()
Adds the cylindrical source kernel for the radial momentum equation when requested and valid...
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
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)
const UserObjectName & rhieChowUOName() const
Return the name of the Rhie Chow user object.
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
void addMomentumAdvectionKernels()
bool isParamValid(const std::string &name) const
void paramWarning(const std::string ¶m, Args... args) 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)
bool isParamSetByUser(const std::string &name) const
void saveSolverVariableName(const VariableName &var_name)
static const std::string total_viscosity
void addAxisymmetricViscousSourceKernel(const std::vector< SubdomainName > &rz_blocks, unsigned int radial_index) override
Derived classes must override this hook to add the actual object that implements the axisymmetric vis...
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)