https://mooseframework.inl.gov
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Protected Member Functions | Protected Attributes | Private Types | Private Member Functions | Static Private Member Functions | Private Attributes | List of all members
FVReconstructedPressureGradient Class Reference

Gradient method that reconstructs and relaxes the pressure gradient used for Rhie-Chow momentum-pressure coupling on the linear finite-volume segregated solver. More...

#include <FVReconstructedPressureGradient.h>

Inheritance diagram for FVReconstructedPressureGradient:
[legend]

Public Types

using GradientContainer = FVGradientMethod::GradientContainer
 
using GradientView = LinearFVGradientReader::GradientContainer
 
typedef DataFileName DataFileParameterType
 

Public Member Functions

 FVReconstructedPressureGradient (const InputParameters &params)
 
void linkFlowSystem (RhieChowMassFlux &rc, const LinearFVGradientReader &pressure_gradient)
 Link this stateful method to one Rhie-Chow flow-system configuration.
 
void validateSetup (const RhieChowMassFlux &rc) const
 Validate the one-time Rhie-Chow linkage and field layouts required by reconstruction.
 
const GradientMethodName & baseGradientMethodName () const
 Name of the gradient method used before the reconstructed coupling pressure gradient exists.
 
void resetForTimeStep (const RhieChowMassFlux &rc)
 Prepare solver-iteration state for a new time-step attempt.
 
void saveLaggedVelocityGradient (RhieChowMassFlux &rc)
 Save the lagged cell velocity gradient used by the reconstruction.
 
void computeCandidateFromCorrectedFlux (const RhieChowMassFlux &rc)
 Reconstruct the conservative pressure-gradient candidate from the corrected face flux.
 
const GradientContainer & reconstructedCandidate (const RhieChowMassFlux &rc) const
 Get the conservative candidate produced by the current pressure corrector.
 
void finalizeCouplingPressureGradient (const RhieChowMassFlux &rc, const GradientView &base_gradient)
 Relax and publish the current candidate as the coupling pressure gradient.
 
virtual void meshChanged () override
 
void computeGradient (SystemBase &system, GradientContainer &gradient, const std::unordered_set< unsigned int > &variable_numbers) const
 
Moose::FV::GradientLimiterType limiterType () const
 
virtual bool enabled () const
 
std::shared_ptr< MooseObject > getSharedPtr ()
 
std::shared_ptr< const MooseObject > getSharedPtr () const
 
bool isKokkosObject () const
 
MooseApp & getMooseApp () const
 
const std::string & type () const
 
const std::string & name () const
 
std::string typeAndName () const
 
MooseObjectParameterName uniqueParameterName (const std::string &parameter_name) const
 
MooseObjectName uniqueName () const
 
const InputParameters & parameters () const
 
const hit::Node * getHitNode () const
 
bool hasBase () const
 
const std::string & getBase () const
 
const T & getParam (const std::string &name) const
 
std::vector< std::pair< T1, T2 > > getParam (const std::string &param1, const std::string &param2) const
 
const T * queryParam (const std::string &name) const
 
const T & getRenamedParam (const std::string &old_name, const std::string &new_name) const
 
T getCheckedPointerParam (const std::string &name, const std::string &error_string="") const
 
bool isParamValid (const std::string &name) const
 
bool isParamSetByUser (const std::string &name) const
 
void connectControllableParams (const std::string &parameter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const
 
void paramError (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramWarning (const std::string &param, Args... args) const
 
void paramInfo (const std::string &param, Args... args) const
 
std::string messagePrefix (const bool hit_prefix=true) const
 
std::string errorPrefix (const std::string &) const
 
void mooseError (Args &&... args) const
 
void mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const
 
void mooseErrorNonPrefixed (Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarning (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseWarningNonPrefixed (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseDeprecated (Args &&... args) const
 
void mooseDeprecatedNoTrace (Args &&... args) const
 
void mooseInfo (Args &&... args) const
 
void callMooseError (std::string msg, const bool with_prefix, const hit::Node *node=nullptr, const bool show_trace=true) const
 
std::string getDataFileName (const std::string &param) const
 
std::string getDataFileNameByName (const std::string &relative_path) const
 
std::string getDataFilePath (const std::string &relative_path) const
 
const Parallel::Communicator & comm () const
 
processor_id_type n_processors () const
 
processor_id_type processor_id () const
 

Static Public Member Functions

static InputParameters validParams ()
 
static void callMooseError (MooseApp *const app, const InputParameters &params, std::string msg, const bool with_prefix, const hit::Node *node, const bool show_trace=true)
 

Public Attributes

 usingCombinedWarningSolutionWarnings
 
const ConsoleStream _console
 

Static Public Attributes

static const std::string type_param
 
static const std::string name_param
 
static const std::string unique_name_param
 
static const std::string app_param
 
static const std::string moose_base_param
 
static const std::string kokkos_object_param
 

Protected Member Functions

void flagInvalidSolutionInternal (const InvalidSolutionID invalid_solution_id) const
 
InvalidSolutionID registerInvalidSolutionInternal (const std::string &message, const bool warning) const
 

Protected Attributes

const bool & _enabled
 
MooseApp & _app
 
Factory & _factory
 
ActionFactory & _action_factory
 
const std::string & _type
 
const std::string & _name
 
const InputParameters & _pars
 
const Parallel::Communicator & _communicator
 
FEProblemBase & _mci_feproblem
 

Private Types

enum class  PressureGradientReconstructionState { NeedLaggedVelocityGradient , NeedCandidate , CandidateReady }
 Current stage of the pressure-gradient reconstruction cycle. More...
 
enum class  PressureGradientReconstructionEvent { Reset , SaveLaggedVelocityGradient , ReconstructCandidate , PublishCandidate }
 Operations that advance or reset the pressure-gradient reconstruction cycle. More...
 

Private Member Functions

void computeGradientWithoutLimiter (SystemBase &system, GradientContainer &gradient, const std::unordered_set< unsigned int > &variable_numbers) const override
 
void resolveGradientMethodDependencies (FEProblemBase &fe_problem) override
 
void checkFlowSystem (const RhieChowMassFlux &rc) const
 Check that a stateful operation is requested by the bound Rhie-Chow object.
 
void copyGradient (const GradientView &source, GradientContainer &destination)
 Copy gradient values while reusing compatible destination storage.
 
void transition (PressureGradientReconstructionEvent event)
 Apply and validate one reconstruction-cycle transition.
 
void updateCouplingPressureGradient (const RhieChowMassFlux &rc, const GradientView &base_gradient, const GradientContainer &reconstructed_candidate)
 Blend a reconstructed candidate into the persistent coupling pressure gradient.
 
RealVectorValue reconstructionVelocityGradient (const RhieChowMassFlux &rc, const RealVectorValue &elem_gradient, const FaceInfo &fi, bool elem_has_info, unsigned int velocity_component) const
 Interpolate a lagged velocity-component gradient to a face.
 
void assembleFaceProjection (const RhieChowMassFlux &rc, const ElemInfo &elem_info, const std::vector< RealVectorValue > &elem_velocity_gradients, const FaceInfo *fi, const Point &surface_vector, bool elem_has_info, DenseMatrix< Real > &matrix, DenseVector< Real > &projection_rhs) const
 Add one face's contribution to the area-weighted least-squares system that reconstructs the cell velocity of elem_info from corrected face fluxes.
 
DenseVector< Real > solveFaceProjection (const DenseMatrix< Real > &matrix, const DenseVector< Real > &projection_rhs) const
 Solve a cell's velocity-projection system.
 
Real reconstructPressureGradient (const RhieChowMassFlux &rc, const ElemInfo &elem_info, unsigned int component, Real reconstructed_velocity) const
 Invert one diagonal momentum equation to recover a pressure-gradient component.
 

Static Private Member Functions

static const hit::Node * getHitNode (const InputParameters &params)
 
static std::string messagePrefix (const InputParameters &params, const bool hit_prefix)
 

Private Attributes

const GradientMethodName _base_gradient_method_name
 Gradient method used before the reconstructed coupling pressure gradient exists.
 
const FVGradientMethod * _base_gradient_method = nullptr
 Resolved method used before the reconstructed coupling pressure gradient exists.
 
const Real _gradient_relaxation
 Relaxation factor applied to reconstructed pressure gradients.
 
const RhieChowMassFlux * _rhie_chow = nullptr
 Rhie-Chow object that owns this stateful reconstruction method.
 
const SystemBase * _pressure_system = nullptr
 Pressure system that owns the reconstructed pressure variable.
 
unsigned int _pressure_variable_number = libMesh::invalid_uint
 Pressure variable reconstructed by this method.
 
std::vector< const SystemBase * > _momentum_systems
 Momentum systems coupled through the owning Rhie-Chow object.
 
std::vector< const LinearFVGradientReader * > _velocity_gradient_fields
 Ordinary gradient fields for the velocity components.
 
std::vector< std::vector< std::unique_ptr< NumericVector< Number > > > > _lagged_reconstruction_velocity_gradient
 Lagged velocity gradients indexed by velocity component and spatial direction.
 
PressureGradientReconstructionState _reconstruction_state
 Current position in the pressure-gradient reconstruction cycle.
 
dof_id_type _last_reconstructed_face_flux_iteration = 0
 Corrected face-flux iteration used by the previous reconstruction.
 
GradientContainer _reconstructed_pressure_gradient
 Reconstructed pressure-gradient candidate.
 
GradientContainer _coupling_pressure_gradient
 Persistent coupling pressure gradient.
 
const Moose::FV::GradientLimiterType _limiter_type
 
const ParallelParamObject & _parent
 
const MooseBase & _si_moose_base
 
const FEProblemBase * _si_problem
 

Detailed Description

Gradient method that reconstructs and relaxes the pressure gradient used for Rhie-Chow momentum-pressure coupling on the linear finite-volume segregated solver.

Responsibilities:

Definition at line 43 of file FVReconstructedPressureGradient.h.

Member Typedef Documentation

◆ GradientContainer

Definition at line 46 of file FVReconstructedPressureGradient.h.

◆ GradientView

Definition at line 47 of file FVReconstructedPressureGradient.h.

Member Enumeration Documentation

◆ PressureGradientReconstructionEvent

Operations that advance or reset the pressure-gradient reconstruction cycle.

Enumerator
Reset 

Reset the cycle to require a new lagged velocity-gradient snapshot.

SaveLaggedVelocityGradient 

Record that the lagged velocity-gradient snapshot has been saved.

ReconstructCandidate 

Record that a pressure-gradient candidate has been reconstructed.

PublishCandidate 

Record that the reconstructed candidate has been published.

Definition at line 99 of file FVReconstructedPressureGradient.h.

100 {
102 Reset,
109 };
@ Reset
Reset the cycle to require a new lagged velocity-gradient snapshot.
@ ReconstructCandidate
Record that a pressure-gradient candidate has been reconstructed.
@ PublishCandidate
Record that the reconstructed candidate has been published.
@ SaveLaggedVelocityGradient
Record that the lagged velocity-gradient snapshot has been saved.

◆ PressureGradientReconstructionState

Current stage of the pressure-gradient reconstruction cycle.

Enumerator
NeedLaggedVelocityGradient 

The next reconstruction cycle requires a lagged velocity-gradient snapshot.

NeedCandidate 

The lagged velocity gradient is available and a reconstructed candidate is required.

CandidateReady 

The reconstructed candidate is available and ready to be published.

Definition at line 88 of file FVReconstructedPressureGradient.h.

89 {
96 };
@ CandidateReady
The reconstructed candidate is available and ready to be published.
@ NeedLaggedVelocityGradient
The next reconstruction cycle requires a lagged velocity-gradient snapshot.
@ NeedCandidate
The lagged velocity gradient is available and a reconstructed candidate is required.

Constructor & Destructor Documentation

◆ FVReconstructedPressureGradient()

FVReconstructedPressureGradient::FVReconstructedPressureGradient ( const InputParameters &  params)

Definition at line 52 of file FVReconstructedPressureGradient.C.

53 : FVGradientMethod(params),
55 _base_gradient_method_name(getParam<GradientMethodName>("base_gradient_method")),
56 _gradient_relaxation(getParam<Real>("gradient_relaxation"))
57{
58}
const GradientMethodName _base_gradient_method_name
Gradient method used before the reconstructed coupling pressure gradient exists.
const Real _gradient_relaxation
Relaxation factor applied to reconstructed pressure gradients.

Member Function Documentation

◆ assembleFaceProjection()

void FVReconstructedPressureGradient::assembleFaceProjection ( const RhieChowMassFlux &  rc,
const ElemInfo &  elem_info,
const std::vector< RealVectorValue > &  elem_velocity_gradients,
const FaceInfo *  fi,
const Point &  surface_vector,
bool  elem_has_info,
DenseMatrix< Real > &  matrix,
DenseVector< Real > &  projection_rhs 
) const
private

Add one face's contribution to the area-weighted least-squares system that reconstructs the cell velocity of elem_info from corrected face fluxes.

The pressure-corrected face-normal volumetric flux at fi, with the lagged velocity-gradient Taylor correction from the cell center to the face removed, gives one linear equation for the unknown cell velocity, u_P . n_f ~= qhat_f. This face equation contributes |S_f| n_f n_f^T to matrix and |S_f| qhat_f n_f to projection_rhs; once every face of elem_info has been added, solving that system gives the cell velocity that is later substituted into the discrete momentum balance to recover the pressure-gradient component consistent with these corrected fluxes.

Parameters
rcThe bound Rhie-Chow flow-system configuration supplying the corrected face flux and lagged velocity gradients
elem_infoThe cell whose velocity-projection system is being assembled
elem_velocity_gradientsLagged velocity gradients at the center of elem_info
fiThe face being added to the projection
surface_vectorThe coordinate-system-aware area vector of this face, outward from elem_info
elem_has_infoWhether elem_info is the "elem" side of fi, as opposed to its "neighbor" side
matrixArea-weighted normal-equation matrix accumulated over the cell's faces, updated in place with this face's contribution
projection_rhsArea-weighted right-hand side accumulated over the cell's faces, updated in place with this face's contribution

Definition at line 401 of file FVReconstructedPressureGradient.C.

410{
411 mooseAssert(fi, "FaceInfo must be available while reconstructing a cell.");
412
413 const Real surface_area = surface_vector.norm();
414 // An axisymmetric face on the symmetry axis has zero physical area and adds no projection
415 // equation.
416 if (surface_area == 0.0)
417 return;
418
419 const auto pressure_face_type =
421 // On one-sided pressure faces, RhieChow stores the flux outward from the pressure cell. On
422 // two-sided faces, it stores the flux relative to FaceInfo::normal(), so only the neighbor cell
423 // needs the opposite orientation.
424 const Real normal_alignment =
425 pressure_face_type == FaceInfo::VarFaceNeighbors::BOTH && !elem_has_info ? -1.0 : 1.0;
426 const Real face_flux = rc.getVolumetricFaceFlux(*fi);
427 mooseAssert(std::isfinite(face_flux), "Corrected face flux must be finite.");
428 Real face_normal_reconstructed_quantity = face_flux * normal_alignment;
429
430 // First-order expansion at the face gives
431 // u_f.n_f = u_P.n_f + ((grad u)_f d_Pf).n_f.
432 // Subtract the lagged Taylor term to obtain one face equation for the unknown cell velocity:
433 // u_P.n_f ~= u_f.n_f - ((grad u)_f d_Pf).n_f.
434 const Point d_pf = fi->faceCentroid() - elem_info.centroid();
435 Real gradient_flux_correction = 0.0;
436 for (const auto component : make_range(rc.dimension()))
437 {
438 const auto velocity_gradient = reconstructionVelocityGradient(
439 rc, elem_velocity_gradients[component], *fi, elem_has_info, component);
440 for ([[maybe_unused]] const auto direction : make_range(rc.dimension()))
441 mooseAssert(std::isfinite(velocity_gradient(direction)),
442 "Lagged velocity gradient must be finite.");
443
444 gradient_flux_correction += (velocity_gradient * d_pf) * surface_vector(component);
445 }
446
447 face_normal_reconstructed_quantity -= gradient_flux_correction / surface_area;
448
449 // Assemble the area-weighted least-squares projection of the corrected face equations:
450 // [sum_f |S_f| n_f n_f^T] u_P = sum_f |S_f| qhat_f n_f,
451 // where qhat_f is face_normal_reconstructed_quantity and S_f = |S_f| n_f.
452 for (const auto i : make_range(rc.dimension()))
453 {
454 projection_rhs(i) += face_normal_reconstructed_quantity * surface_vector(i);
455 for (const auto j : make_range(rc.dimension()))
456 matrix(i, j) += surface_vector(i) * surface_vector(j) / surface_area;
457 }
458}
const Point & centroid() const
RealVectorValue reconstructionVelocityGradient(const RhieChowMassFlux &rc, const RealVectorValue &elem_gradient, const FaceInfo &fi, bool elem_has_info, unsigned int velocity_component) const
Interpolate a lagged velocity-component gradient to a face.
const SystemBase * _pressure_system
Pressure system that owns the reconstructed pressure variable.
unsigned int _pressure_variable_number
Pressure variable reconstructed by this method.
VarFaceNeighbors faceType(const std::pair< unsigned int, unsigned int > &var_sys) const
const Point & faceCentroid() const
Real getVolumetricFaceFlux(const FaceInfo &fi) const
Get the volumetric face flux (used in advection terms)
unsigned int number() const
auto norm() const
bool isfinite(std::complex< T > a)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
IntRange< T > make_range(T beg, T end)

Referenced by computeCandidateFromCorrectedFlux().

◆ baseGradientMethodName()

const GradientMethodName & FVReconstructedPressureGradient::baseGradientMethodName ( ) const
inline

Name of the gradient method used before the reconstructed coupling pressure gradient exists.

Definition at line 60 of file FVReconstructedPressureGradient.h.

◆ checkFlowSystem()

void FVReconstructedPressureGradient::checkFlowSystem ( const RhieChowMassFlux &  rc) const
private

Check that a stateful operation is requested by the bound Rhie-Chow object.

Definition at line 125 of file FVReconstructedPressureGradient.C.

126{
127 mooseAssert(_rhie_chow,
128 "FVReconstructedPressureGradient must be bound to one RhieChowMassFlux before it "
129 "is used.");
130
131 mooseAssert(_rhie_chow == &rc,
132 "FVReconstructedPressureGradient is bound to a single RhieChowMassFlux and cannot "
133 "be used by another.");
134}
const RhieChowMassFlux * _rhie_chow
Rhie-Chow object that owns this stateful reconstruction method.

Referenced by computeCandidateFromCorrectedFlux(), finalizeCouplingPressureGradient(), reconstructedCandidate(), resetForTimeStep(), saveLaggedVelocityGradient(), and validateSetup().

◆ computeCandidateFromCorrectedFlux()

void FVReconstructedPressureGradient::computeCandidateFromCorrectedFlux ( const RhieChowMassFlux &  rc)

Reconstruct the conservative pressure-gradient candidate from the corrected face flux.

Definition at line 516 of file FVReconstructedPressureGradient.C.

517{
518 checkFlowSystem(rc);
520
521 const auto dimension = rc.dimension();
522 const auto & base_pressure_gradient = rc.basePressureGradientComponents();
523 const auto face_flux_iteration = rc.faceMassFluxGeneration();
524
525 mooseAssert(base_pressure_gradient.size() == dimension,
526 "A base pressure-gradient component must exist for every spatial dimension.");
527
528 mooseAssert(face_flux_iteration != _last_reconstructed_face_flux_iteration,
529 "The current pressure corrector must produce a new face flux before "
530 "reconstruction.");
531
533 for (const auto component : make_range(dimension))
534 _reconstructed_pressure_gradient.push_back(base_pressure_gradient[component]->zero_clone());
535
536 // Zero the candidate so pressure DOFs not visited during this corrector cannot retain stale
537 // reconstructed values from an earlier cycle.
538 for (auto & pressure_gradient : _reconstructed_pressure_gradient)
539 pressure_gradient->zero();
540
541 const auto & mesh = rc.pressureSystem().feProblem().mesh();
542 const auto rz_radial_coord = mesh.getAxisymmetricRadialCoord();
543 std::vector<RealVectorValue> elem_velocity_gradients(dimension);
544
545 for (const auto & elem_info : mesh.elemInfoVector())
546 {
547 if (!rc.hasBlocks(elem_info->subdomain_id()))
548 continue;
549
550 const Elem & elem = *elem_info->elem();
551 DenseMatrix<Real> matrix(dimension, dimension);
552 DenseVector<Real> projection_rhs(dimension);
553 matrix.zero();
554 projection_rhs.zero();
555
556 for (const auto component : make_range(dimension))
557 {
558 const auto & velocity = rc.velocityVariable(component);
559 const auto system_number = rc.momentumSystem(component).number();
560 const auto velocity_dof = elem_info->dofIndices()[system_number][velocity.number()];
561 for (const auto direction : make_range(dimension))
562 {
563 const auto gradient =
564 (*_lagged_reconstruction_velocity_gradient[component][direction])(velocity_dof);
565 mooseAssert(std::isfinite(gradient), "Lagged velocity gradient must be finite.");
566 elem_velocity_gradients[component](direction) = gradient;
567 }
568 }
569
570 // The coordinate-system-aware surface vector S_f supplied by loopOverElemFaceInfo is outward
571 // from this cell, including the appropriate Cartesian or axisymmetric geometric weighting.
572 auto act = [&](const Elem &,
573 const Elem * const,
574 const FaceInfo * const fi,
575 const Point & surface_vector,
576 const Real,
577 const bool elem_has_info)
578 {
580 *elem_info,
581 elem_velocity_gradients,
582 fi,
583 surface_vector,
584 elem_has_info,
585 matrix,
586 projection_rhs);
587 };
588
590 elem, mesh, act, mesh.getCoordSystem(elem.subdomain_id()), rz_radial_coord);
591
592 const auto reconstructed_quantity = solveFaceProjection(matrix, projection_rhs);
593
594 const auto pressure_dof =
595 elem_info->dofIndices()[rc.pressureSystem().number()][_pressure_variable_number];
596 for (const auto component : make_range(dimension))
597 {
598 const auto reconstructed_gradient =
599 reconstructPressureGradient(rc, *elem_info, component, reconstructed_quantity(component));
600 _reconstructed_pressure_gradient[component]->set(pressure_dof, reconstructed_gradient);
601 }
602 }
603
604 for (auto & pressure_gradient : _reconstructed_pressure_gradient)
605 pressure_gradient->close();
606
607 _last_reconstructed_face_flux_iteration = face_flux_iteration;
608}
bool hasBlocks(const SubdomainName &name) const
virtual MooseMesh & mesh() override
std::vector< std::vector< std::unique_ptr< NumericVector< Number > > > > _lagged_reconstruction_velocity_gradient
Lagged velocity gradients indexed by velocity component and spatial direction.
DenseVector< Real > solveFaceProjection(const DenseMatrix< Real > &matrix, const DenseVector< Real > &projection_rhs) const
Solve a cell's velocity-projection system.
Real reconstructPressureGradient(const RhieChowMassFlux &rc, const ElemInfo &elem_info, unsigned int component, Real reconstructed_velocity) const
Invert one diagonal momentum equation to recover a pressure-gradient component.
void transition(PressureGradientReconstructionEvent event)
Apply and validate one reconstruction-cycle transition.
void assembleFaceProjection(const RhieChowMassFlux &rc, const ElemInfo &elem_info, const std::vector< RealVectorValue > &elem_velocity_gradients, const FaceInfo *fi, const Point &surface_vector, bool elem_has_info, DenseMatrix< Real > &matrix, DenseVector< Real > &projection_rhs) const
Add one face's contribution to the area-weighted least-squares system that reconstructs the cell velo...
GradientContainer _reconstructed_pressure_gradient
Reconstructed pressure-gradient candidate.
dof_id_type _last_reconstructed_face_flux_iteration
Corrected face-flux iteration used by the previous reconstruction.
void checkFlowSystem(const RhieChowMassFlux &rc) const
Check that a stateful operation is requested by the bound Rhie-Chow object.
MooseLinearVariableFVReal & velocityVariable(unsigned int component)
Velocity variable for one spatial component.
const LinearSystem & pressureSystem() const
Pressure linear system.
dof_id_type faceMassFluxGeneration() const
Producer counter for the conservative face mass flux: incremented every time computeFaceMassFlux() ru...
LinearSystem & momentumSystem(unsigned int component)
Momentum linear system for one spatial component.
const std::vector< NumericVector< Number > * > & basePressureGradientComponents() const
Get the base-pressure gradient component vectors used to seed reconstructed updates.
unsigned int dimension() const
Number of spatial dimensions of the coupled momentum/pressure systems.
FEProblemBase & feProblem()
subdomain_id_type subdomain_id() const
MeshBase & mesh
void loopOverElemFaceInfo(const Elem &elem, const MooseMesh &mesh, ActionFunctor &act, const Moose::CoordinateSystemType coord_type, const unsigned int rz_radial_coord=libMesh::invalid_uint)
T component(const RankTwoTensorTempl< T > &r2tensor, unsigned int i, unsigned int j)
const Number zero

Referenced by RhieChowMassFlux::preparePressureRelaxation().

◆ computeGradientWithoutLimiter()

void FVReconstructedPressureGradient::computeGradientWithoutLimiter ( SystemBase &  system,
GradientContainer &  gradient,
const std::unordered_set< unsigned int > &  variable_numbers 
) const
overrideprivatevirtual

Implements FVGradientMethod.

Definition at line 217 of file FVReconstructedPressureGradient.C.

221{
222 // On a fresh run, FEProblemBase::initialSetup() calls copySolutionsBackwards() to initialize
223 // gradient time-state storage before SIMPLE or PIMPLE calls linkRhieChowUserObject(). That state
224 // initialization reaches this method with no linked Rhie-Chow pressure system, so seed the
225 // gradient history with the ordinary gradient until the executioner completes the linkage.
226 if (!_pressure_system)
227 {
228 mooseAssert(_base_gradient_method,
229 "resolveGradientMethodDependencies() must run before gradients are computed.");
230 _base_gradient_method->computeGradient(system, gradient, variable_numbers);
231 return;
232 }
233
234 mooseAssert(_pressure_system == &system,
235 "FVReconstructedPressureGradient can only compute gradients for the pressure "
236 "system it is bound to.");
237
238 mooseAssert(variable_numbers.size() == 1 && variable_numbers.count(_pressure_variable_number),
239 "FVReconstructedPressureGradient can only compute the pressure variable to which "
240 "it is bound.");
241
242 if (_coupling_pressure_gradient.empty())
243 {
244 // No flux-consistent pressure gradient exists before the first pressure corrector. Use the
245 // ordinary gradient for the initial momentum predictor instead of inventing coupling data.
246 mooseAssert(_base_gradient_method,
247 "resolveGradientMethodDependencies() must run before gradients are computed.");
248 _base_gradient_method->computeGradient(system, gradient, variable_numbers);
249 return;
250 }
251
252 mooseAssert(_coupling_pressure_gradient.size() == gradient.size(),
253 "Coupling and destination gradients must have equal component counts.");
254 for (const auto component : index_range(gradient))
255 {
256 mooseAssert(gradient[component]->type() == GHOSTED,
257 "Linear FV gradient storage must be ghosted.");
258 // Only the owned range needs to be copied here; the caller,
259 // FVGradientMethod::computeGradient(), unconditionally closes every component of gradient right
260 // after this call returns, which refreshes the ghosts needed by face interpolation from the
261 // now-matching owned entries.
263 }
264}
void computeGradient(SystemBase &system, GradientContainer &gradient, const std::unordered_set< unsigned int > &variable_numbers) const
const FVGradientMethod * _base_gradient_method
Resolved method used before the reconstructed coupling pressure gradient exists.
GradientContainer _coupling_pressure_gradient
Persistent coupling pressure gradient.
const std::string & type() const
auto index_range(const T &sizable)

◆ copyGradient()

void FVReconstructedPressureGradient::copyGradient ( const GradientView &  source,
GradientContainer &  destination 
)
private

Copy gradient values while reusing compatible destination storage.

Definition at line 267 of file FVReconstructedPressureGradient.C.

269{
270 if (destination.empty())
271 {
272 destination.reserve(source.size());
273 for (const auto component : index_range(source))
274 destination.push_back(source[component]->clone());
275 return;
276 }
277
278 mooseAssert(source.size() == destination.size(),
279 "Source and destination gradients must have equal component counts.");
280 for (const auto component : index_range(source))
281 {
282 mooseAssert(
283 source[component]->size() == destination[component]->size() &&
284 source[component]->local_size() == destination[component]->local_size() &&
285 source[component]->first_local_index() == destination[component]->first_local_index() &&
286 source[component]->last_local_index() == destination[component]->last_local_index(),
287 "Source and destination gradient component vectors must have matching parallel "
288 "layouts.");
289 *destination[component] = *source[component];
290 }
291}

Referenced by resetForTimeStep(), saveLaggedVelocityGradient(), and updateCouplingPressureGradient().

◆ finalizeCouplingPressureGradient()

void FVReconstructedPressureGradient::finalizeCouplingPressureGradient ( const RhieChowMassFlux &  rc,
const GradientView &  base_gradient 
)

Relax and publish the current candidate as the coupling pressure gradient.

Parameters
rcThe bound Rhie-Chow flow-system configuration whose pressure gradient is being finalized
base_gradientThe ordinary (unreconstructed) pressure gradient used to initialize the coupling gradient the first time it is published

Definition at line 655 of file FVReconstructedPressureGradient.C.

657{
658 checkFlowSystem(rc);
661}
void updateCouplingPressureGradient(const RhieChowMassFlux &rc, const GradientView &base_gradient, const GradientContainer &reconstructed_candidate)
Blend a reconstructed candidate into the persistent coupling pressure gradient.

Referenced by RhieChowMassFlux::finalizePressureCorrector().

◆ linkFlowSystem()

void FVReconstructedPressureGradient::linkFlowSystem ( RhieChowMassFlux &  rc,
const LinearFVGradientReader &  pressure_gradient 
)

Link this stateful method to one Rhie-Chow flow-system configuration.

Definition at line 61 of file FVReconstructedPressureGradient.C.

63{
64 mooseAssert(&pressure_gradient.system() == &rc.pressureSystem(),
65 "First binding must use the pressure system owned by the RhieChowMassFlux.");
66
67 mooseAssert(pressure_gradient.variableNumber() == rc.pressureVariableNumber(),
68 "First binding must use the pressure variable registered on the RhieChowMassFlux.");
69
70 if (!_rhie_chow)
71 {
72 _rhie_chow = &rc;
73 _pressure_system = &pressure_gradient.system();
74 _pressure_variable_number = pressure_gradient.variableNumber();
75 _momentum_systems.reserve(rc.dimension());
77 for (const auto component : make_range(rc.dimension()))
78 {
79 _momentum_systems.push_back(&rc.momentumSystem(component));
81 }
82 return;
83 }
84
85 if (_rhie_chow != &rc)
86 mooseError("FVReconstructedPressureGradient '",
87 name(),
88 "' is already bound to RhieChowMassFlux '",
90 "' and cannot also be used by RhieChowMassFlux '",
91 rc.name(),
92 "'.");
93
94 if (_pressure_system != &pressure_gradient.system())
95 mooseError("FVReconstructedPressureGradient '",
96 name(),
97 "' is already bound to pressure system '",
99 "' and cannot also be used by pressure system '",
100 pressure_gradient.system().name(),
101 "'.");
102
103 if (_pressure_variable_number != pressure_gradient.variableNumber())
104 mooseError("FVReconstructedPressureGradient '",
105 name(),
106 "' is already bound to pressure variable number ",
108 " and cannot also be used by pressure variable number ",
109 pressure_gradient.variableNumber(),
110 ".");
111
112 if (_momentum_systems.size() != rc.dimension())
113 mooseError("FVReconstructedPressureGradient '",
114 name(),
115 "' cannot be reused with a different set of momentum systems.");
116
117 for (const auto component : make_range(rc.dimension()))
118 if (_momentum_systems[component] != &rc.momentumSystem(component))
119 mooseError("FVReconstructedPressureGradient '",
120 name(),
121 "' cannot be reused with a different set of momentum systems.");
122}
std::vector< const SystemBase * > _momentum_systems
Momentum systems coupled through the owning Rhie-Chow object.
std::vector< const LinearFVGradientReader * > _velocity_gradient_fields
Ordinary gradient fields for the velocity components.
const SystemBase & system() const
unsigned int variableNumber() const
const std::string & name() const
void mooseError(Args &&... args) const
const LinearFVGradientReader & requestCellGradients(unsigned int oldest_state=0)
unsigned int pressureVariableNumber() const
Variable number of the pressure variable reconstructed by this object.
virtual const std::string & name() const
if(subdm)

Referenced by RhieChowMassFlux::linkMomentumPressureSystems().

◆ meshChanged()

void FVReconstructedPressureGradient::meshChanged ( )
overridevirtual

◆ reconstructedCandidate()

const FVReconstructedPressureGradient::GradientContainer & FVReconstructedPressureGradient::reconstructedCandidate ( const RhieChowMassFlux &  rc) const

Get the conservative candidate produced by the current pressure corrector.

Definition at line 611 of file FVReconstructedPressureGradient.C.

612{
613 checkFlowSystem(rc);
615 "No reconstructed pressure-gradient candidate is ready for the conservative "
616 "cell-velocity correction.");
618}
PressureGradientReconstructionState _reconstruction_state
Current position in the pressure-gradient reconstruction cycle.

◆ reconstructionVelocityGradient()

RealVectorValue FVReconstructedPressureGradient::reconstructionVelocityGradient ( const RhieChowMassFlux &  rc,
const RealVectorValue &  elem_gradient,
const FaceInfo &  fi,
bool  elem_has_info,
unsigned int  velocity_component 
) const
private

Interpolate a lagged velocity-component gradient to a face.

Definition at line 366 of file FVReconstructedPressureGradient.C.

372{
373 const auto dimension = rc.dimension();
374 const ElemInfo * const neighbor_info = elem_has_info ? fi.neighborInfo() : fi.elemInfo();
375 // At a domain boundary or the edge of the Rhie-Chow block restriction, use the owned cell's
376 // gradient (zero Hessian approximation). Otherwise interpolate the two lagged cell gradients to
377 // the face.
378 if (!neighbor_info || !rc.hasBlocks(neighbor_info->subdomain_id()))
379 return elem_gradient;
380
381 const auto & velocity = rc.velocityVariable(velocity_component);
382 const auto system_number = rc.momentumSystem(velocity_component).number();
383 RealVectorValue neighbor_gradient;
384 for (const auto direction : make_range(dimension))
385 neighbor_gradient(direction) =
386 (*_lagged_reconstruction_velocity_gradient[velocity_component][direction])(
387 neighbor_info->dofIndices()[system_number][velocity.number()]);
388
389 RealVectorValue face_gradient;
390 Moose::FV::interpolate(Moose::FV::InterpMethod::Average,
391 face_gradient,
392 elem_gradient,
393 neighbor_gradient,
394 fi,
395 elem_has_info);
396
397 return face_gradient;
398}
SubdomainID subdomain_id() const
const ElemInfo * elemInfo() const
const ElemInfo * neighborInfo() const
void interpolate(InterpMethod m, T &result, const T2 &value1, const T3 &value2, const FaceInfo &fi, const bool one_is_elem)

Referenced by assembleFaceProjection().

◆ reconstructPressureGradient()

Real FVReconstructedPressureGradient::reconstructPressureGradient ( const RhieChowMassFlux &  rc,
const ElemInfo &  elem_info,
unsigned int  component,
Real  reconstructed_velocity 
) const
private

Invert one diagonal momentum equation to recover a pressure-gradient component.

Definition at line 480 of file FVReconstructedPressureGradient.C.

485{
486 mooseAssert(std::isfinite(reconstructed_velocity),
487 "Reconstructed velocity component must be finite.");
488
489 const auto momentum_dof = elem_info.dofIndices()[rc.momentumSystem(component).number()][0];
490 const Real HbyA = (*rc.HbyAComponents()[component])(momentum_dof);
491 const Real Ainv = (*rc.AinvComponents()[component])(momentum_dof);
492 if (!std::isfinite(HbyA) || !std::isfinite(Ainv) || Ainv == 0.0)
493 mooseError("FVReconstructedPressureGradient '",
494 name(),
495 "' found invalid momentum-coupling data for component ",
496 component,
497 " of cell ID ",
498 elem_info.elem()->id(),
499 ": H/A = ",
500 HbyA,
501 " and 1/A = ",
502 Ainv,
503 ".");
504
505 // Invert the same diagonal momentum relation used by Rhie-Chow,
506 // u_P = -(H/A)_P - A_P^{-1} (grad p)_P,
507 // so the reconstructed pressure gradient produces the projected, flux-consistent u_P.
508 const Real reconstructed_gradient = (-reconstructed_velocity - HbyA) / Ainv;
509 mooseAssert(std::isfinite(reconstructed_gradient),
510 "Reconstructed pressure-gradient component must be finite.");
511
512 return reconstructed_gradient;
513}
const Elem * elem() const
const std::vector< std::vector< dof_id_type > > & dofIndices() const
const std::vector< std::unique_ptr< NumericVector< Number > > > & HbyAComponents() const
Get the momentum-layout H/A component vectors.
const std::vector< std::unique_ptr< NumericVector< Number > > > & AinvComponents() const
Get the momentum-layout 1/A component vectors.
dof_id_type id() const

Referenced by computeCandidateFromCorrectedFlux().

◆ resetForTimeStep()

void FVReconstructedPressureGradient::resetForTimeStep ( const RhieChowMassFlux &  rc)

Prepare solver-iteration state for a new time-step attempt.

Definition at line 325 of file FVReconstructedPressureGradient.C.

326{
327 checkFlowSystem(rc);
328 // A new time-step attempt starts from the last accepted coupling field. This keeps a converged
329 // momentum balance unchanged across time-step acceptance, rejection, restart, and recovery.
333}
void copyGradient(const GradientView &source, GradientContainer &destination)
Copy gradient values while reusing compatible destination storage.
const GradientContainer & components() const
const LinearFVGradientReader & pressureGradientField() const
Get the registered pressure gradient field used by compatible momentum pressure kernels.
StateArg oldState()

Referenced by RhieChowMassFlux::timestepSetup().

◆ resolveGradientMethodDependencies()

void FVReconstructedPressureGradient::resolveGradientMethodDependencies ( FEProblemBase &  fe_problem)
overrideprivatevirtual

Reimplemented from FVGradientMethod.

Definition at line 195 of file FVReconstructedPressureGradient.C.

196{
198 mooseError("FVReconstructedPressureGradient '",
199 name(),
200 "' cannot use itself as its base_gradient_method.");
201
202 if (_base_gradient_method_name == "green-gauss" &&
204 {
205 auto params = fe_problem.getMooseApp().getFactory().getValidParams("FVGreenGaussGradient");
206 fe_problem.addFVGradientMethod("FVGreenGaussGradient", _base_gradient_method_name, params);
207 }
208
211 "Unable to find base FVGradientMethod with name '", _base_gradient_method_name, "'.");
212
214}
virtual void addFVGradientMethod(const std::string &method_type, const std::string &name, InputParameters &parameters)
FVGradientMethod & getFVGradientMethod(const GradientMethodName &name, const THREAD_ID tid=0)
bool hasFVGradientMethod(const GradientMethodName &name) const
Factory & getFactory()
MooseApp & getMooseApp() const

◆ saveLaggedVelocityGradient()

void FVReconstructedPressureGradient::saveLaggedVelocityGradient ( RhieChowMassFlux &  rc)

Save the lagged cell velocity gradient used by the reconstruction.

Definition at line 345 of file FVReconstructedPressureGradient.C.

346{
347 checkFlowSystem(rc);
349 const auto dimension = rc.dimension();
350
351 mooseAssert(_velocity_gradient_fields.size() == dimension,
352 "A velocity gradient field must be registered for every momentum component.");
353
354 // Freeze grad(u) before the pressure corrector changes the flux. The lagged field linearizes the
355 // Taylor correction from each cell center P to its face f without coupling reconstruction back
356 // to the velocity that it is currently computing.
359
360 for (const auto component : make_range(dimension))
363}

Referenced by RhieChowMassFlux::finalizeMomentumPredictor(), and RhieChowMassFlux::preparePISOCorrector().

◆ solveFaceProjection()

DenseVector< Real > FVReconstructedPressureGradient::solveFaceProjection ( const DenseMatrix< Real > &  matrix,
const DenseVector< Real > &  projection_rhs 
) const
private

Solve a cell's velocity-projection system.

Definition at line 461 of file FVReconstructedPressureGradient.C.

463{
464 const auto dimension = projection_rhs.size();
465 DenseVector<Real> reconstructed_quantity(dimension);
466 if (dimension == 1)
467 reconstructed_quantity(0) = projection_rhs(0) / matrix(0, 0);
468 else
469 {
470 // A valid cell has face normals that span the spatial dimension, making this normal-equation
471 // matrix symmetric positive definite.
472 DenseMatrix<Real> solve_matrix(matrix);
473 solve_matrix.cholesky_solve(projection_rhs, reconstructed_quantity);
474 }
475
476 return reconstructed_quantity;
477}
virtual unsigned int size() const override final

Referenced by computeCandidateFromCorrectedFlux().

◆ transition()

void FVReconstructedPressureGradient::transition ( PressureGradientReconstructionEvent  event)
private

Apply and validate one reconstruction-cycle transition.

Definition at line 294 of file FVReconstructedPressureGradient.C.

Referenced by computeCandidateFromCorrectedFlux(), finalizeCouplingPressureGradient(), meshChanged(), resetForTimeStep(), and saveLaggedVelocityGradient().

◆ updateCouplingPressureGradient()

void FVReconstructedPressureGradient::updateCouplingPressureGradient ( const RhieChowMassFlux &  rc,
const GradientView &  base_gradient,
const GradientContainer &  reconstructed_candidate 
)
private

Blend a reconstructed candidate into the persistent coupling pressure gradient.

Definition at line 621 of file FVReconstructedPressureGradient.C.

625{
626 mooseAssert(!base_gradient.empty() && reconstructed_candidate.size() == base_gradient.size(),
627 "Base and reconstructed gradients must have equal nonzero component counts.");
628
629 if (_coupling_pressure_gradient.empty())
631
632 const auto & mesh = rc.pressureSystem().feProblem().mesh();
633 const auto pressure_system_number = rc.pressureSystem().number();
634 for (const auto component : index_range(_coupling_pressure_gradient))
635 {
636 for (const auto & elem_info : mesh.elemInfoVector())
637 {
638 if (!rc.hasBlocks(elem_info->subdomain_id()))
639 continue;
640
641 const auto pressure_dof =
642 elem_info->dofIndices()[pressure_system_number][_pressure_variable_number];
643 // Under-relax feedback to the next momentum predictor:
644 // g_coupling^{k+1} = (1-alpha) g_coupling^k + alpha g_reconstructed^k.
645 const auto updated_gradient =
646 (1.0 - _gradient_relaxation) * (*_coupling_pressure_gradient[component])(pressure_dof) +
647 _gradient_relaxation * (*reconstructed_candidate[component])(pressure_dof);
648 _coupling_pressure_gradient[component]->set(pressure_dof, updated_gradient);
649 }
651 }
652}

Referenced by finalizeCouplingPressureGradient().

◆ validateSetup()

void FVReconstructedPressureGradient::validateSetup ( const RhieChowMassFlux &  rc) const

Validate the one-time Rhie-Chow linkage and field layouts required by reconstruction.

Definition at line 137 of file FVReconstructedPressureGradient.C.

138{
139 checkFlowSystem(rc);
140
141 mooseAssert(_pressure_system == &rc.pressureSystem() &&
143 "FVReconstructedPressureGradient must be linked to the pressure field owned by its "
144 "bound RhieChowMassFlux.");
145
146 const auto & pressure_variable = rc.pressureSystem().getVariable(0, _pressure_variable_number);
147 if (pressure_variable.blockIDs() != rc.blockIDs())
148 mooseError("FVReconstructedPressureGradient '",
149 name(),
150 "' requires pressure variable '",
151 pressure_variable.name(),
152 "' and RhieChowMassFlux '",
153 rc.name(),
154 "' to have identical block restrictions. Pressure blocks: ",
155 Moose::stringify(pressure_variable.blockIDs()),
156 "; Rhie-Chow blocks: ",
158 ".");
159
160 mooseAssert(_momentum_systems.size() == rc.dimension() &&
162 "One momentum system and velocity-gradient field must be registered per spatial "
163 "component.");
164
165 for (const auto component : make_range(rc.dimension()))
166 {
167 mooseAssert(_momentum_systems[component] == &rc.momentumSystem(component),
168 "Momentum system linkage must match the RhieChowMassFlux for every spatial "
169 "component.");
170
171 const auto & velocity_variable = rc.velocityVariable(component);
172 if (velocity_variable.blockIDs() != rc.blockIDs())
173 mooseError("FVReconstructedPressureGradient '",
174 name(),
175 "' requires velocity variable '",
176 velocity_variable.name(),
177 "' and RhieChowMassFlux '",
178 rc.name(),
179 "' to have identical block restrictions. Velocity blocks: ",
180 Moose::stringify(velocity_variable.blockIDs()),
181 "; Rhie-Chow blocks: ",
183 ".");
184
185 [[maybe_unused]] const auto * const velocity_gradient = _velocity_gradient_fields[component];
186 mooseAssert(velocity_gradient &&
187 &velocity_gradient->system() == &rc.momentumSystem(component) &&
188 velocity_gradient->variableNumber() == rc.velocityVariable(component).number(),
189 "Velocity-gradient field linkage must match the RhieChowMassFlux for every "
190 "momentum component.");
191 }
192}
virtual const std::set< SubdomainID > & blockIDs() const
unsigned int number() const
MooseVariableFieldBase & getVariable(THREAD_ID tid, const std::string &var_name) const
std::string stringify(const T &t)

Referenced by RhieChowMassFlux::checkReconstructedPressureGradientCompatibility().

◆ validParams()

InputParameters FVReconstructedPressureGradient::validParams ( )
static

Definition at line 31 of file FVReconstructedPressureGradient.C.

32{
35 params.suppressParameter<MooseEnum>("limiter");
37 "Reconstructs and relaxes the pressure gradient used for Rhie-Chow momentum coupling.");
38 params.addParam<GradientMethodName>(
39 "base_gradient_method",
40 "green-gauss",
41 "Gradient method used before Rhie-Chow has computed reconstructed gradients.");
42 // A conservative 0.1 default damps pressure-velocity feedback with the standard SIMPLE
43 // relaxation settings; values near 1 can require retuning those settings to converge.
45 "gradient_relaxation",
46 0.1,
47 "0.0<gradient_relaxation<=1.0",
48 "Relaxation factor applied when updating the reconstructed pressure-coupling gradient.");
49 return params;
50}
static InputParameters validParams()
void suppressParameter(const std::string &name)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
void addRangeCheckedParam(const std::string &name, const T &value, const std::string &parsed_function, const std::string &doc_string)
static InputParameters validParams()

Member Data Documentation

◆ _base_gradient_method

const FVGradientMethod* FVReconstructedPressureGradient::_base_gradient_method = nullptr
private

Resolved method used before the reconstructed coupling pressure gradient exists.

Definition at line 185 of file FVReconstructedPressureGradient.h.

Referenced by computeGradientWithoutLimiter(), and resolveGradientMethodDependencies().

◆ _base_gradient_method_name

const GradientMethodName FVReconstructedPressureGradient::_base_gradient_method_name
private

Gradient method used before the reconstructed coupling pressure gradient exists.

Definition at line 182 of file FVReconstructedPressureGradient.h.

Referenced by baseGradientMethodName(), and resolveGradientMethodDependencies().

◆ _coupling_pressure_gradient

GradientContainer FVReconstructedPressureGradient::_coupling_pressure_gradient
private

Persistent coupling pressure gradient.

Definition at line 220 of file FVReconstructedPressureGradient.h.

Referenced by computeGradientWithoutLimiter(), meshChanged(), resetForTimeStep(), and updateCouplingPressureGradient().

◆ _gradient_relaxation

const Real FVReconstructedPressureGradient::_gradient_relaxation
private

Relaxation factor applied to reconstructed pressure gradients.

Definition at line 188 of file FVReconstructedPressureGradient.h.

Referenced by updateCouplingPressureGradient().

◆ _lagged_reconstruction_velocity_gradient

std::vector<std::vector<std::unique_ptr<NumericVector<Number> > > > FVReconstructedPressureGradient::_lagged_reconstruction_velocity_gradient
private

Lagged velocity gradients indexed by velocity component and spatial direction.

Definition at line 207 of file FVReconstructedPressureGradient.h.

Referenced by computeCandidateFromCorrectedFlux(), meshChanged(), reconstructionVelocityGradient(), and saveLaggedVelocityGradient().

◆ _last_reconstructed_face_flux_iteration

dof_id_type FVReconstructedPressureGradient::_last_reconstructed_face_flux_iteration = 0
private

Corrected face-flux iteration used by the previous reconstruction.

Definition at line 214 of file FVReconstructedPressureGradient.h.

Referenced by computeCandidateFromCorrectedFlux().

◆ _momentum_systems

std::vector<const SystemBase *> FVReconstructedPressureGradient::_momentum_systems
private

Momentum systems coupled through the owning Rhie-Chow object.

Definition at line 200 of file FVReconstructedPressureGradient.h.

Referenced by linkFlowSystem(), and validateSetup().

◆ _pressure_system

const SystemBase* FVReconstructedPressureGradient::_pressure_system = nullptr
private

Pressure system that owns the reconstructed pressure variable.

Definition at line 194 of file FVReconstructedPressureGradient.h.

Referenced by assembleFaceProjection(), computeGradientWithoutLimiter(), linkFlowSystem(), and validateSetup().

◆ _pressure_variable_number

unsigned int FVReconstructedPressureGradient::_pressure_variable_number = libMesh::invalid_uint
private

◆ _reconstructed_pressure_gradient

GradientContainer FVReconstructedPressureGradient::_reconstructed_pressure_gradient
private

Reconstructed pressure-gradient candidate.

Definition at line 217 of file FVReconstructedPressureGradient.h.

Referenced by computeCandidateFromCorrectedFlux(), finalizeCouplingPressureGradient(), meshChanged(), and reconstructedCandidate().

◆ _reconstruction_state

PressureGradientReconstructionState FVReconstructedPressureGradient::_reconstruction_state
private
Initial value:

Current position in the pressure-gradient reconstruction cycle.

Definition at line 210 of file FVReconstructedPressureGradient.h.

Referenced by reconstructedCandidate(), and transition().

◆ _rhie_chow

const RhieChowMassFlux* FVReconstructedPressureGradient::_rhie_chow = nullptr
private

Rhie-Chow object that owns this stateful reconstruction method.

Definition at line 191 of file FVReconstructedPressureGradient.h.

Referenced by checkFlowSystem(), and linkFlowSystem().

◆ _velocity_gradient_fields

std::vector<const LinearFVGradientReader *> FVReconstructedPressureGradient::_velocity_gradient_fields
private

Ordinary gradient fields for the velocity components.

Definition at line 203 of file FVReconstructedPressureGradient.h.

Referenced by linkFlowSystem(), saveLaggedVelocityGradient(), and validateSetup().


The documentation for this class was generated from the following files: