15 #include "libmesh/utility.h" 19 #include <unordered_map> 20 #include <unordered_set> 44 const std::vector<std::unique_ptr<libMesh::NumericVector<libMesh::Number>>> &
56 unsigned int variable_number);
63 const std::vector<std::unique_ptr<libMesh::NumericVector<libMesh::Number>>> &
71 const std::unordered_set<Moose::FV::GradientLimiterType> &
93 std::vector<std::unique_ptr<libMesh::NumericVector<libMesh::Number>>> &
105 std::vector<std::unique_ptr<libMesh::NumericVector<libMesh::Number>>> &
116 std::vector<std::unique_ptr<libMesh::NumericVector<libMesh::Number>>> &
127 const std::unordered_set<unsigned int> &
151 std::unordered_map<Moose::FV::GradientLimiterType, std::unordered_set<unsigned int>>
156 std::vector<std::unique_ptr<libMesh::NumericVector<libMesh::Number>>>>
161 std::vector<std::unique_ptr<libMesh::NumericVector<libMesh::Number>>>>
void rebuildLinearFVGradientStorage()
Rebuild persistent raw and temporary gradient storage after mesh/DOF changes.
GradientLimiterType
Cell-gradient limiter variants used for MUSCL-style reconstructions.
std::vector< std::unique_ptr< libMesh::NumericVector< libMesh::Number > > > & temporaryLinearFVLimitedGradientContainer(const Moose::FV::GradientLimiterType limiter_type)
Return temporary storage for limited gradients during gradient assembly.
std::vector< std::unique_ptr< libMesh::NumericVector< libMesh::Number > > > _temporary_gradient
Scratch storage for raw gradients assembled during the current compute pass.
SystemBase & _sys
Reference to the system object.
std::vector< std::unique_ptr< libMesh::NumericVector< libMesh::Number > > > & rawLinearFVLimitedGradientContainer(const Moose::FV::GradientLimiterType limiter_type)
Access the persisted limited-gradient storage for a specific limiter.
std::vector< std::unique_ptr< libMesh::NumericVector< libMesh::Number > > > & temporaryLinearFVGradientContainer()
Return temporary storage for gradients during gradient assembly.
std::unordered_set< Moose::FV::GradientLimiterType > _requested_limited_gradient_types
Set of requested limiter types for which limited gradients should be computed.
The following methods are specializations for using the libMesh::Parallel::packed_range_* routines fo...
Base class for a system (of equations)
std::vector< std::unique_ptr< libMesh::NumericVector< libMesh::Number > > > _raw_grad_container
Persisted raw cell-centered gradient components keyed by spatial direction.
std::unordered_map< Moose::FV::GradientLimiterType, std::unordered_set< unsigned int > > _requested_limited_gradient_variables
Variable numbers requesting limited gradients, keyed by limiter type.
bool needsLinearFVGradientStorage() const
const std::vector< std::unique_ptr< libMesh::NumericVector< libMesh::Number > > > & linearFVLimitedGradientContainer(const Moose::FV::GradientLimiterType limiter_type) const
Access the stored raw or limited cell-centered gradient components.
void requestLinearFVLimitedGradients(const Moose::FV::GradientLimiterType limiter_type, unsigned int variable_number)
Request storage and assembly of limiter-specific cell gradients.
void initializeContainer(std::vector< std::unique_ptr< libMesh::NumericVector< libMesh::Number >>> &container) const
LinearFVGradientInterface(SystemBase &sys)
const std::unordered_set< unsigned int > & requestedLinearFVLimitedGradientVariables(const Moose::FV::GradientLimiterType limiter_type) const
Access the variable numbers that requested limited gradients for a specific limiter.
const std::unordered_set< Moose::FV::GradientLimiterType > & requestedLinearFVLimitedGradientTypes() const
Access the limiter types requested for this system.
std::unordered_map< Moose::FV::GradientLimiterType, std::vector< std::unique_ptr< libMesh::NumericVector< libMesh::Number > > > > _temporary_limited_gradient
Scratch storage for limited gradients assembled during the current compute pass.
const std::vector< std::unique_ptr< libMesh::NumericVector< libMesh::Number > > > & linearFVGradientContainer() const
Access the stored raw cell-centered gradient components.
void computeGradients()
Compute and store raw and requested limited Green-Gauss gradients for linear FV variables.
Shared storage and allocation logic for linear finite-volume cell gradients for variables in the syst...
std::unordered_map< Moose::FV::GradientLimiterType, std::vector< std::unique_ptr< libMesh::NumericVector< libMesh::Number > > > > _raw_limited_grad_containers
Persisted limited gradient components keyed by limiter type.