15#define registerWCNSFVFlowPhysicsBaseTasks(app_name, derived_name) \
16 registerPhysicsBaseTasks(app_name, derived_name); \
17 registerMooseAction(app_name, derived_name, "add_geometric_rm"); \
18 registerMooseAction(app_name, derived_name, "add_variables_physics"); \
19 registerMooseAction(app_name, derived_name, "add_ics_physics"); \
20 registerMooseAction(app_name, derived_name, "add_materials_physics"); \
21 registerMooseAction(app_name, derived_name, "add_user_object"); \
22 registerMooseAction(app_name, derived_name, "add_postprocessor"); \
23 registerMooseAction(app_name, derived_name, "add_corrector"); \
24 registerMooseAction(app_name, derived_name, "get_turbulence_physics")
57 RealVectorValue
gravityVector()
const {
return getParam<RealVectorValue>(
"gravity"); }
const InputParameters & parameters() const
Base class to hold common parameters and utilities between all the weakly compressible Navier Stokes-...
Base class for Physics which create the Navier Stokes flow equations.
virtual void addInitialConditions() override
std::map< BoundaryName, MooseEnum > _momentum_outlet_types
Momentum outlet boundary types.
const MooseEnum _velocity_interpolation
The velocity face interpolation method for advecting other quantities.
std::vector< std::vector< SubdomainName > > _friction_blocks
Subdomains where we want to have volumetric friction.
static InputParameters validParams()
virtual void addMomentumBoussinesqKernels()=0
std::map< BoundaryName, std::vector< MooseFunctorName > > _momentum_wall_functors
Functors describing the momentum for each wall boundary.
std::map< BoundaryName, MooseEnum > _momentum_inlet_types
Momentum inlet boundary types.
void addNonPorousMediumSpeedMaterial()
Add material to define the local speed with no porous medium treatment.
std::map< BoundaryName, MooseFunctorName > _pressure_functors
Functors describing the outlet pressure on each boundary.
std::vector< PostprocessorName > _flux_inlet_pps
Postprocessors describing the momentum inlet for each boundary. Indexing based on the number of flux ...
const MooseEnum _momentum_advection_interpolation
The momentum face interpolation method for being advected.
std::vector< std::vector< std::string > > _friction_types
The friction correlation types used for each block.
bool hasFlowEquations() const
Whether the physics is actually creating the flow equations.
const MooseEnum _compressibility
Compressibility type, can be compressible, incompressible or weakly-compressible.
const NonlinearVariableName & getPressureName() const
const std::vector< std::string > _velocity_names
Velocity names.
const MooseEnum _momentum_face_interpolation
The momentum face interpolation method for stress terms.
const std::vector< BoundaryName > _wall_boundaries
Boundaries which define a wall (slip/noslip/etc.)
MooseFunctorName _flow_porosity_functor_name
Name of the porosity functor for the flow equations (if smoothed)
void addAxisymmetricViscousSource()
Adds the cylindrical source kernel for the radial momentum equation when requested and valid.
const MooseEnum & compressibility() const
Return the compressibility of the flow equations selected.
virtual void addPostprocessors() override
virtual void actOnAdditionalTasks() override
virtual MooseFunctorName getLinearFrictionCoefName() const =0
Get the name of the linear friction coefficient. Returns an empty string if no friction.
const NonlinearVariableName _pressure_name
Pressure name.
const WCNSFVTurbulencePhysicsBase * getCoupledTurbulencePhysics() const
Find the turbulence physics.
const bool _has_flow_equations
Boolean to keep track of whether the flow equations should be created.
const std::vector< BoundaryName > & getWallBoundaries() const
Get the wall boundaries.
const std::vector< std::string > & getVelocityNames() const
To interface with other Physics.
virtual void addFVKernels() override=0
bool includeIsotropicStress() const
Whether to include the isotropic viscous stress contribution.
virtual void addAxisymmetricViscousSourceKernel(const std::vector< SubdomainName > &, unsigned int)
Derived classes must override this hook to add the actual object that implements the axisymmetric vis...
virtual bool hasForchheimerFriction() const =0
Return whether a Forchheimer friction model is in use.
const NonlinearVariableName _fluid_temperature_name
Fluid temperature name.
std::vector< SubdomainName > getAxisymmetricRZBlocks() const
Return the set of blocks restricted to an RZ coordinate system.
virtual void addMomentumFrictionKernels()=0
RealVectorValue gravityVector() const
Return the gravity vector.
const NonlinearVariableName & getFluidTemperatureName() const
const MooseEnum & getVelocityFaceInterpolationMethod() const
Get the face interpolation method for velocity.
const bool _porous_medium_treatment
Whether to use the porous medium treatment.
std::map< BoundaryName, std::vector< MooseFunctorName > > _momentum_inlet_functors
Functors describing the momentum inlet for each boundary.
const MooseFunctorName & dynamicViscosityName() const
Return the name of the dynamic viscosity functor.
virtual void initializePhysicsAdditional() override
virtual void addUserObjects() override=0
const std::vector< BoundaryName > _outlet_boundaries
Boundaries with a flow outlet specified on them.
const UserObjectName & rhieChowUOName() const
Return the name of the Rhie Chow user object.
void addFluidPropertiesFunctorMaterial()
Function which adds the general functor fluid properties functor material to define fluid functor mat...
virtual void addSolverVariables() override=0
const std::vector< BoundaryName > & getOutletBoundaries() const
Get the outlet boundaries.
virtual void addInletBC()=0
Functions adding boundary conditions for the flow simulation.
std::vector< Point > _flux_inlet_directions
Direction of each flux inlet. Indexing based on the number of flux boundaries.
const MooseEnum & getMomentumFaceInterpolationMethod() const
Get the face interpolation method for momentum (mostly used in the stress terms)
const MooseFunctorName _dynamic_viscosity_name
Name of the dynamic viscosity material property.
std::map< BoundaryName, MooseEnum > _momentum_wall_types
Momentum wall boundary types.
VariableName getFlowVariableName(const std::string &default_name) const
Convenience routine to be able to retrieve the actual variable names from their default names.
virtual void addMomentumGravityKernels()=0
const std::vector< BoundaryName > _hydraulic_separators
Hydraulic separator boundaries.
const std::vector< BoundaryName > & getHydraulicSeparators() const
Get the hydraulic separator boundaries.
virtual void addMomentumPressureKernels()=0
const std::vector< BoundaryName > & getInletBoundaries() const
Get the inlet boundaries.
const bool _solve_for_dynamic_pressure
Whether we are solving for the total or dynamic pressure.
UserObjectName _rc_uo_name
name of the Rhie Chow user object
MooseFunctorName getPorosityFunctorName(const bool smoothed) const
const bool _add_rz_viscous_source
Whether to automatically add the cylindrical viscous source term.
const std::vector< PostprocessorName > & getFluxInletPPs() const
Get the inlet flux postprocessor if using a flux inlet.
virtual void addMaterials() override
virtual void addWallsBC()=0
virtual void addMomentumTimeKernels()=0
Functions adding kernels for the flow momentum equations If the material properties are not constant,...
bool hasTurbulencePhysics() const
Whether a turbulence Physics has been coupled in, to know which viscosity to pick on symmetry boundar...
const bool _include_isotropic_viscous_stress
Whether to include the isotropic viscous stress contribution.
virtual void addOutletBC()=0
bool addAxisymmetricViscousSourceEnabled() const
Whether the cylindrical viscous source helper is enabled.
const TagName _pressure_tag
Name of the vector to hold pressure momentum equation contributions.
const bool _include_symmetrized_viscous_stress
Whether to include the symmetrized viscous stress contribution.
const std::vector< Point > & getFluxInletDirections() const
Get the inlet direction if using a flux inlet.
const MooseFunctorName _density_name
Name of the density material property.
virtual void addFVBCs() override
const MooseFunctorName _porosity_name
Name of the porosity functor.
const WCNSFVTurbulencePhysicsBase * _turbulence_physics
Can be set to a coupled turbulence physics.
void addPorousMediumSpeedMaterial()
Add material to define the local speed in porous medium flows.
virtual void addSeparatorBC()=0
unsigned short getNumberAlgebraicGhostingLayersNeeded() const override
Return the number of algebraic ghosting layers needed.
std::vector< std::vector< std::string > > _friction_coeffs
The coefficients used for each item if friction type.
const std::vector< BoundaryName > _inlet_boundaries
Boundaries with a flow inlet specified on them.
const MooseFunctorName & densityName() const
Return the name of the density functor.
const MooseEnum & getMomentumAdvectionFaceInterpolationMethod() const
Get the face interpolation method for momentum in the advection term.
virtual void addRhieChowUserObjects()=0
Function which adds the RhieChow interpolator user objects for weakly and incompressible formulations...
bool includeSymmetrizedViscousStress() const
Whether to include the symmetrized contribution in the viscous stress.
bool porousMediumTreatment() const
Return whether a porous medium treatment is applied.
NS::MomentumInletTypes inletBoundaryType(const BoundaryName &boundary_name) const
Get the type of the inlet BC.
const MooseFunctorName _density_gravity_name
Name of the density material property used for gravity and Boussinesq terms.
Base class for a Physics that creates all the objects needed to add a turbulence model to an incompre...
bool hasTurbulenceModel() const
Whether a turbulence model is in use.
Creates all the objects needed to add a turbulence model to an incompressible / weakly-compressible N...