Line data Source code
1 : //* This file is part of the MOOSE framework 2 : //* https://mooseframework.inl.gov 3 : //* 4 : //* All rights reserved, see COPYRIGHT for full restrictions 5 : //* https://github.com/idaholab/moose/blob/master/COPYRIGHT 6 : //* 7 : //* Licensed under LGPL 2.1, please see LICENSE for details 8 : //* https://www.gnu.org/licenses/lgpl-2.1.html 9 : 10 : #pragma once 11 : 12 : #include "GeneralUserObject.h" 13 : #include "BlockRestrictable.h" 14 : #include "FaceArgInterface.h" 15 : #include "MooseTypes.h" 16 : 17 : class MooseMesh; 18 : namespace libMesh 19 : { 20 : class Elem; 21 : class MeshBase; 22 : } 23 : 24 : class RhieChowFaceFluxProvider : public GeneralUserObject, 25 : public BlockRestrictable, 26 : public FaceArgInterface 27 : { 28 : public: 29 : static InputParameters validParams(); 30 : RhieChowFaceFluxProvider(const InputParameters & params); 31 : 32 : /** 33 : * Retrieve the volumetric face flux, will not include derivatives 34 : * @param m The velocity interpolation method. This is either Rhie-Chow or Average. Rhie-Chow is 35 : * recommended as it avoids checkerboards in the pressure field 36 : * @param fi The face that we wish to retrieve the velocity for 37 : * @param tid The thread ID 38 : * @return The face velocity 39 : */ 40 : virtual Real getVolumetricFaceFlux(const Moose::FV::InterpMethod m, 41 : const FaceInfo & fi, 42 : const Moose::StateArg & time, 43 : const THREAD_ID tid, 44 : bool subtract_mesh_velocity) const = 0; 45 : 46 : bool hasFaceSide(const FaceInfo & fi, const bool fi_elem_side) const override; 47 : 48 : /// Returns whether the UO can support mesh velocity advection 49 0 : virtual bool supportMeshVelocity() const { return true; } 50 : };