19 #ifndef GEOS_LINEARALGEBRA_MULTISCALE_MSRSBSTRATEGY_HPP
20 #define GEOS_LINEARALGEBRA_MULTISCALE_MSRSBSTRATEGY_HPP
22 #include "linearAlgebra/common/PreconditionerBase.hpp"
36 template<
typename LAI >
65 MPI_Comm
const & comm )
override;
73 Matrix const & fineMatrix )
override;
117 void createSmoothers();
119 void writeProlongationForDebug()
const;
144 integer m_lastNumIter = std::numeric_limits< integer >::max();
The DoFManager is responsible for allocating global dofs, constructing sparsity patterns,...
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
integer numComponents(string const &fieldName) const
Base class for level builder implementations.
typename LAI::ParallelVector Vector
Alias for vector type.
typename LAI::ParallelMatrix Matrix
Alias for matrix type.
MeshObjectManager & cellManager()
MeshObjectManager & nodeManager()
Mesh object manager used in multiscale preconditioners to keep a simplified (node/cell only) represen...
Base class for MsRSB level builders.
string m_name
Level name (label)
Matrix m_matrix
Level operator matrix.
multiscale::DofManager m_dofManager
DofManager for the matrix.
std::unique_ptr< Operator > m_restriction
Restriction (kept as abstract operator to allow for memory efficiency, e.g. when R = P^T)
multiscale::DofManager & dofManager()
LinearSolverParameters m_params
Linear solver top-level parameters.
MsrsbLevelBuilderBase const * m_fineLevel
Pointer to the fine level.
std::unique_ptr< PreconditionerBase< LAI > > m_postSmoother
Post-smoothing operator.
typename Base::Matrix Matrix
Alias for matrix type.
std::unique_ptr< PreconditionerBase< LAI > > m_preSmoother
Pre-smoothing operator.
Matrix m_prolongation
Prolongation matrix P.
typename Base::Vector Vector
Alias for vector type.
MsRSB level builder for single-physics problems.
multiscale::MeshLevel const & mesh() const
multiscale::MeshObjectManager const & manager() const
virtual std::unique_ptr< PreconditionerBase< LAI > > makeCoarseSolver() const override
Instantiate coarsest level solver.
multiscale::MeshObjectManager & manager()
multiscale::MeshLevel & mesh()
virtual void initializeFineLevel(DomainPartition &domain, geos::DofManager const &dofManager, MPI_Comm const &comm) override
Initialize the finest level (level 0).
virtual void initializeCoarseLevel(LevelBuilderBase< LAI > &fineLevel, Matrix const &fineMatrix) override
Initialize a coarse level (levels 1 and above).
MsrsbLevelBuilder(string name, LinearSolverParameters params)
Constructor.
virtual bool updateProlongation(Matrix const &fineMatrix) override
Update current level's prolongation using a new previous level matrix.
FieldLocation
Enum defining the possible location of a field on the mesh.
@ Node
location is node (like displacements in finite elements)
int integer
Signed integer type.
Array< T, 1 > array1d
Alias for 1D array.
Set of parameters for a linear solver or preconditioner.