16 #include <unordered_map> 18 #include <unordered_set> 44 bool subtract_mesh_velocity)
const override;
59 "addToA function is not implemented for the RhieChow interpolation in segregated solvers.");
79 const std::vector<unsigned int> & momentum_system_numbers,
80 const TagID pressure_gradient_tag);
91 const std::vector<unsigned int> & var_nums);
105 std::vector<std::unique_ptr<NumericVector<Number>>>
_HbyA_raw;
114 std::unique_ptr<PiecewiseByBlockLambdaFunctor<ADRealVectorValue>>
_vel;
bool segregated() const override
Bool of the Rhie Chow user object is used in monolithic/segregated approaches.
std::vector< libMesh::NonlinearImplicitSystem * > _momentum_implicit_systems
Pointers to the momentum equation implicit system(s)
std::vector< NonlinearSystemBase * > _momentum_systems
Pointers to the nonlinear system(s) corresponding to the momentum equation(s)
std::vector< unsigned int > _momentum_system_numbers
Numbers of the momentum system(s)
A functor whose evaluation relies on querying a map where the keys are face info ids and the values c...
void initialize() override
VectorValue< ADReal > getVelocity(const Moose::FV::InterpMethod m, const FaceInfo &fi, const Moose::StateArg &time, const THREAD_ID tid, bool subtract_mesh_velocity) const override
Get the face velocity (used in advection terms)
The following methods are specializations for using the Parallel::packed_range_* routines for a vecto...
DualNumber< Real, DNDerivativeType, true > ADReal
CellCenteredMapFunctor< RealVectorValue, std::unordered_map< dof_id_type, RealVectorValue > > _Ainv
A map functor from element IDs to $1/A_i$.
void computeFaceVelocity()
Update the values of the face velocities in the containers.
std::vector< std::unique_ptr< NumericVector< Number > > > _HbyA_raw
We hold on to the cell-based HbyA vectors so that we can easily reconstruct the cell velocities as we...
FaceCenteredMapFunctor< RealVectorValue, std::unordered_map< dof_id_type, RealVectorValue > > _face_velocity
A map functor from faces to face velocities which are used in the advection terms.
void addToA(const libMesh::Elem *, unsigned int, const ADReal &) override
We disable this for the segregated solver.
static InputParameters validParams()
void populateHbyA(const std::vector< std::unique_ptr< NumericVector< Number >>> &raw_hbya, const std::vector< unsigned int > &var_nums)
Populate the face values of the H/A field.
FaceCenteredMapFunctor< RealVectorValue, std::unordered_map< dof_id_type, RealVectorValue > > _HbyA
A map functor from faces to $HbyA_{ij} = (A_{offdiag}*{(predicted~velocity)} - {Source})_{ij}/A_{ij}$...
void computeCellVelocity()
Update the cell values of the velocity variables.
TagID _pressure_gradient_tag
Residual tag corresponding to the pressure gradient contribution.
void mooseError(Args &&... args) const
void meshChanged() override
std::unique_ptr< PiecewiseByBlockLambdaFunctor< ADRealVectorValue > > _vel
A functor for computing the (non-RC corrected) velocity.
INSFVRhieChowInterpolatorSegregated(const InputParameters ¶ms)
void computeHbyA(bool verbose)
Computes the inverse of the digaonal (1/A) of the system matrix plus the H/A components for the press...
A user object which implements the Rhie Chow interpolation for segregated momentum-pressure systems...
void linkMomentumSystem(std::vector< NonlinearSystemBase *> momentum_systems, const std::vector< unsigned int > &momentum_system_numbers, const TagID pressure_gradient_tag)
Update the momentum system-related information.
A functor whose evaluation relies on querying a map where the keys are element ids and the values cor...
void initFaceVelocities()
Initialize the container for face velocities.