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_variable"); \ 19 registerMooseAction(app_name, derived_name, "add_ic"); \ 20 registerMooseAction(app_name, derived_name, "add_material"); \ 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") bool hasFlowEquations() const
Whether the physics is actually creating the flow equations.
const bool _has_flow_equations
Boolean to keep track of whether the flow equations should be created.
unsigned short getNumberAlgebraicGhostingLayersNeeded() const override
Return the number of algebraic ghosting layers needed.
const std::vector< std::string > & getVelocityNames() const
To interface with other Physics.
Creates all the objects needed to add a turbulence model to an incompressible / weakly-compressible N...
const MooseFunctorName & dynamicViscosityName() const
Return the name of the dynamic viscosity functor.
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.
const std::vector< BoundaryName > _outlet_boundaries
Boundaries with a flow outlet specified on them.
virtual void addSeparatorBC()=0
const std::vector< BoundaryName > & getOutletBoundaries() const
Get the outlet boundaries.
virtual void initializePhysicsAdditional() override
virtual void addSolverVariables() override=0
const std::vector< BoundaryName > & getInletBoundaries() const
Get the inlet boundaries.
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.
virtual void addMaterials() override
virtual void actOnAdditionalTasks() override
const WCNSFVTurbulencePhysics * _turbulence_physics
Can be set to a coupled turbulence physics.
virtual void addMomentumTimeKernels()=0
Functions adding kernels for the flow momentum equations If the material properties are not constant...
std::map< BoundaryName, std::vector< MooseFunctorName > > _momentum_inlet_functors
Functors describing the momentum inlet for each boundary.
virtual void addOutletBC()=0
const MooseEnum _momentum_advection_interpolation
The momentum face interpolation method for being advected.
virtual MooseFunctorName getLinearFrictionCoefName() const =0
Get the name of the linear friction coefficient. Returns an empty string if no friction.
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.
virtual void addWallsBC()=0
static InputParameters validParams()
const bool _porous_medium_treatment
Whether to use the porous medium treatment.
const std::vector< BoundaryName > & getHydraulicSeparators() const
Get the hydraulic separator boundaries.
const std::vector< BoundaryName > _wall_boundaries
Boundaries which define a wall (slip/noslip/etc.)
virtual void addPostprocessors() override
const MooseFunctorName & densityName() const
Return the name of the density functor.
bool porousMediumTreatment() const
Return whether a porous medium treatment is applied.
const MooseEnum & getMomentumAdvectionFaceInterpolationMethod() const
Get the face interpolation method for momentum in the advection term.
const MooseEnum & getVelocityFaceInterpolationMethod() const
Get the face interpolation method for velocity.
virtual void addRhieChowUserObjects()=0
Function which adds the RhieChow interpolator user objects for weakly and incompressible formulations...
virtual UserObjectName rhieChowUOName() const =0
Return the name of the Rhie Chow user object.
const MooseEnum & compressibility() const
Return the compressibility of the flow equations selected.
RealVectorValue gravityVector() const
Return the gravity vector.
std::vector< std::vector< SubdomainName > > _friction_blocks
Subdomains where we want to have volumetric friction.
const NonlinearVariableName & getFluidTemperatureName() const
std::vector< PostprocessorName > _flux_inlet_pps
Postprocessors describing the momentum inlet for each boundary. Indexing based on the number of flux ...
virtual void addUserObjects() override=0
std::map< BoundaryName, MooseEnum > _momentum_outlet_types
Momentum outlet boundary types.
const std::vector< std::string > _velocity_names
Velocity names.
virtual void addInletBC()=0
Functions adding boundary conditions for the flow simulation.
MooseFunctorName getPorosityFunctorName(const bool smoothed) const
Base class for Physics which create the Navier Stokes flow equations.
const std::vector< PostprocessorName > & getFluxInletPPs() const
Get the inlet flux postprocessor if using a flux inlet.
const MooseEnum & getMomentumFaceInterpolationMethod() const
Get the face interpolation method for momentum (mostly used in the stress terms)
const WCNSFVTurbulencePhysics * getCoupledTurbulencePhysics() const
Find the turbulence physics.
const TagName _pressure_tag
Name of the vector to hold pressure momentum equation contributions.
const MooseFunctorName _dynamic_viscosity_name
Name of the dynamic viscosity material property.
const bool _solve_for_dynamic_pressure
Whether we are solving for the total or dynamic pressure.
const MooseEnum _compressibility
Compressibility type, can be compressible, incompressible or weakly-compressible. ...
MooseFunctorName _flow_porosity_functor_name
Name of the porosity functor for the flow equations (if smoothed)
virtual void addMomentumBoussinesqKernels()=0
virtual void addFVKernels() override=0
void addPorousMediumSpeedMaterial()
Add material to define the local speed in porous medium flows.
std::map< BoundaryName, MooseEnum > _momentum_wall_types
Momentum wall boundary types.
const NonlinearVariableName _fluid_temperature_name
Fluid temperature name.
VariableName getFlowVariableName(const std::string &default_name) const
Convenience routine to be able to retrieve the actual variable names from their default names...
void addNonPorousMediumSpeedMaterial()
Add material to define the local speed with no porous medium treatment.
const MooseEnum _momentum_face_interpolation
The momentum face interpolation method for stress terms.
bool hasTurbulenceModel() const
Whether a turbulence model is in use.
const MooseEnum _velocity_interpolation
The velocity face interpolation method for advecting other quantities.
virtual void addMomentumFrictionKernels()=0
std::map< BoundaryName, MooseFunctorName > _pressure_functors
Functors describing the outlet pressure on each boundary.
virtual bool hasForchheimerFriction() const =0
Return whether a Forchheimer friction model is in use.
bool hasTurbulencePhysics() const
Whether a turbulence Physics has been coupled in, to know which viscosity to pick on symmetry boundar...
virtual void addMomentumGravityKernels()=0
virtual void addFVBCs() override
const std::vector< BoundaryName > _hydraulic_separators
Hydraulic separator boundaries.
const InputParameters & parameters() const
virtual void addInitialConditions() override
virtual void addMomentumPressureKernels()=0
WCNSFVFlowPhysicsBase(const InputParameters ¶meters)
Base class to hold common parameters and utilities between all the weakly compressible Navier Stokes-...
const std::vector< BoundaryName > _inlet_boundaries
Boundaries with a flow inlet specified on them.
const std::vector< Point > & getFluxInletDirections() const
Get the inlet direction if using a flux inlet.
std::vector< Point > _flux_inlet_directions
Direction of each flux inlet. Indexing based on the number of flux boundaries.
std::vector< std::vector< std::string > > _friction_coeffs
The coefficients used for each item if friction type.
const std::vector< BoundaryName > & getWallBoundaries() const
Get the wall boundaries.
const NonlinearVariableName & getPressureName() const