19 #ifndef GEOS_LINEARALGEBRA_MULTISCALE_MSRSBLEVELBUILDERCOUPLED_HPP
20 #define GEOS_LINEARALGEBRA_MULTISCALE_MSRSBLEVELBUILDERCOUPLED_HPP
34 template<
typename LAI >
63 MPI_Comm
const & comm )
override;
71 Matrix const & fineMatrix )
override;
80 virtual std::unique_ptr< PreconditionerBase< LAI > >
makeCoarseSolver()
const override;
94 void initializeCommon(
DomainPartition & domain, MPI_Comm
const & comm );
96 void createSmoothers();
98 void buildProlongationStructure(
DofManager const & fineDofManager );
101 std::vector< string > m_fields;
104 std::vector< Matrix > m_selectors;
107 std::vector< std::unique_ptr< MsrsbLevelBuilder< LAI > > > m_builders;
110 std::vector< CRSMatrix< real64, globalIndex > > m_prolongationBlocks;
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...
Degree-of-freedom manager that works with multiscale mesh levels.
Base class for level builder implementations.
typename LAI::ParallelVector Vector
Alias for vector type.
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 coupled problems.
virtual void initializeFineLevel(DomainPartition &domain, geos::DofManager const &dofManager, MPI_Comm const &comm) override
Initialize the finest level (level 0).
typename Base::Matrix Matrix
Alias for matrix type.
virtual std::unique_ptr< PreconditionerBase< LAI > > makeCoarseSolver() const override
Instantiate coarsest level solver.
MsrsbLevelBuilderCoupled(string name, LinearSolverParameters params)
Constructor.
virtual bool updateProlongation(Matrix const &fineMatrix) override
Update current level's prolongation using a new previous level matrix.
virtual void initializeCoarseLevel(LevelBuilderBase< LAI > &fineLevel, Matrix const &fineMatrix) override
Initialize a coarse level (levels 1 and above).
LvArray::CRSMatrix< T, COL_INDEX, INDEX_TYPE, LvArray::ChaiBuffer > CRSMatrix
Alias for CRS Matrix class.
Set of parameters for a linear solver or preconditioner.