24 "Computes the volumetric flow rate of an advected quantity through a sideset.");
30 "The advected variable quantity of which to study the flow; useful for " 31 "finite element simulations");
32 params.
addParam<MooseFunctorName>(
"advected_mat_prop",
34 "The advected material property of which to study the flow; " 35 "useful for finite element simulations");
36 params.
addParam<MooseFunctorName>(
"advected_quantity",
37 "The quantity to advect. This is the canonical parameter to " 38 "set the advected quantity when finite volume is being used.");
40 params.addParam<UserObjectName>(
"rhie_chow_user_object",
"The rhie-chow user-object");
46 _vel_x(coupledValue(
"vel_x")),
47 _vel_y(coupledValue(
"vel_y")),
48 _vel_z(coupledValue(
"vel_z")),
49 _advected_variable_supplied(parameters.isParamSetByUser(
"advected_variable")),
50 _advected_variable(coupledValue(
"advected_variable")),
51 _advected_mat_prop_supplied(parameters.isParamSetByUser(
"advected_mat_prop")),
52 _advected_material_property(getFunctor<
ADReal>(
"advected_mat_prop")),
53 _adv_quant(isParamValid(
"advected_quantity") ? &getFunctor<
ADReal>(
"advected_quantity")
55 _rc_uo(isParamValid(
"rhie_chow_user_object")
61 mooseError(
"VolumetricFlowRatePostprocessor should be provided either an advected variable " 62 "or an advected material property");
66 mooseWarning(
"Advected quantity interpolation methods are currently unavailable for " 67 "advected material properties.");
72 checkFunctorSupportsSideIntegration<ADReal>(
"advected_mat_prop",
_qp_integration);
74 checkFunctorSupportsSideIntegration<ADReal>(
"advected_quantity",
_qp_integration);
79 mooseError(
"We were instructed to use finite volume, but no Rhie-Chow user object is " 80 "supplied. Please make sure to set the 'rhie_chow_user_object' parameter");
82 mooseError(
"We were instructed to use finite volume, but no 'advected_quantity' parameter is " 98 const_cast<RhieChowInterpolatorBase *>(
_rc_uo)->ghostADataOnBoundary(bid);
114 ") has been detected to be internal to the flow domain.\n" 115 "Volumetric flow rates cannot be computed on internal flow boundaries on INITIAL");
129 mooseAssert(fi,
"We should have a face info in " +
name());
130 mooseAssert(
_adv_quant,
"We should have an advected quantity in " +
name());
137 const bool correct_skewness =
147 return fi->
normal() * adv_quant_face * vel;
bool setInterpolationMethods(const MooseObject &obj, Moose::FV::InterpMethod &advected_interp_method, Moose::FV::InterpMethod &velocity_interp_method)
Sets the advection and velocity interpolation methods.
Moose::FV::InterpMethod _advected_interp_method
The interpolation method to use for the advected quantity.
const VariableValue & _vel_z
static InputParameters validParams()
InputParameters interpolationParameters()
Moose::StateArg determineState() const
virtual bool isFV() const
const std::string & getBoundaryName(BoundaryID boundary_id)
VolumetricFlowRate(const InputParameters ¶meters)
Moose::FV::InterpMethod velocityInterpolationMethod() const
Return the interpolation method used for velocity.
const MooseArray< Point > & _q_point
virtual const std::set< SubdomainID > & blockIDs() const
registerMooseObject("NavierStokesApp", VolumetricFlowRate)
Real computeFaceInfoIntegral(const FaceInfo *fi) override
virtual const std::string & name() const
void mooseWarning(Args &&... args) const
virtual VectorValue< ADReal > getVelocity(const Moose::FV::InterpMethod m, const FaceInfo &fi, const Moose::StateArg &time, const THREAD_ID tid, bool subtract_mesh_velocity) const =0
Retrieve a face velocity.
LimiterType limiterType(InterpMethod interp_method)
virtual bool segregated() const =0
Bool of the Rhie Chow user object is used in monolithic/segregated approaches.
static InputParameters validParams()
const ExecFlagEnum & getExecuteOnEnum() const
const VariableValue & _vel_y
const RhieChowInterpolatorBase *const _rc_uo
The Rhie-Chow interpolation user object.
const Moose::Functor< ADReal > *const _adv_quant
The functor representing the advected quantity for finite volume.
const Moose::Functor< ADReal > & _advected_material_property
Material property storing the advected quantity; used for finite elements.
const Point & normal() const
void paramError(const std::string ¶m, Args... args) const
This postprocessor computes the volumetric flow rate through a boundary, internal or external to the ...
const VariableValue & _advected_variable
Variable storing the advected quantity; used for finite elements.
const bool _advected_mat_prop_supplied
Whether an advected material property was supplied in the input.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
Moose::FV::InterpMethod _velocity_interp_method
The interpolation method to use for the velocity.
void meshChanged() override
const QBase *const & _qrule
const MooseArray< Point > & _normals
void mooseError(Args &&... args) const
const bool _advected_variable_supplied
Whether an advected variable was supplied in the input.
const InputParameters & parameters() const
const VariableValue & _vel_x
Velocity components.
const Elem *const & _current_elem
void initialSetup() override
Currently only requests some boundary data from the RhieChow interpolator.
Real computeQpIntegral() override
virtual const std::set< BoundaryID > & boundaryIDs() const
bool isBoundaryFullyExternalToSubdomains(BoundaryID bid, const std::set< SubdomainID > &blk_group) const
const MooseVariableFieldBase * getFieldVar(const std::string &var_name, unsigned int comp) const
const ExecFlagType EXEC_INITIAL