#include <multigrid_amg.h>
Public Member Functions | |
MatrixFreeProjector (const OperatorType &mf_operator_, const std::vector< TrilinosWrappers::SparseMatrix * > transfers_) | |
void | compute_level_matrices (MGLevelObject< LinearOperatorMG< VectorType, VectorType > > &mg_matrices) |
Private Types | |
using | VectorType = LinearAlgebra::distributed::Vector<Number> |
Private Attributes | |
MPI_Comm | communicator |
const OperatorType * | mf_operator |
std::vector< TrilinosWrappers::SparseMatrix * > | transfer_matrices |
std::vector< LinearOperatorMG< VectorType, VectorType > > | level_operators |
LinearOperatorMG< VectorType, VectorType > | mf_linear_operator |
This class is responsible for the setup of level matrices for a given (matrix-free) operator evaluation. Such level matrices are the "level matrices" to be used in a multigrid method. The difference compared to standard multilevel methods is that we construct such matrices using a Galerkin projection.
Definition at line 42 of file multigrid_amg.h.
|
private |
Definition at line 45 of file multigrid_amg.h.
|
inline |
Constructor. It takes the matrix-free operator evaluation on the finest level, and a series of transfers from levels.
Definition at line 76 of file multigrid_amg.h.
References Assert, dealii::MatrixFreeProjector< dim, OperatorType, Number >::communicator, l(), dealii::MatrixFreeProjector< dim, OperatorType, Number >::level_operators, dealii::MatrixFreeProjector< dim, OperatorType, Number >::mf_linear_operator, dealii::MatrixFreeProjector< dim, OperatorType, Number >::mf_operator, LinearAlgebra::distributed::Vector< typename Number, typename MemorySpace >::reinit(), and dealii::MatrixFreeProjector< dim, OperatorType, Number >::transfer_matrices.
|
inline |
Initialize level matrices using the operator evaluation and the transfer matrices provided in the constructor.
In particular, matrix[0]= A0, while for the other levels it holds that: matrix[l] = P_l^T A0 P_l, being P_l the injection from the fine level (indexed by 0) and level l.
Definition at line 176 of file multigrid_amg.h.
References Assert, l(), dealii::MatrixFreeProjector< dim, OperatorType, Number >::level_operators, dealii::MatrixFreeProjector< dim, OperatorType, Number >::mf_linear_operator, and transpose_operator().
|
private |
MPI communicator used by Trilinos objects.
Definition at line 49 of file multigrid_amg.h.
Referenced by dealii::MatrixFreeProjector< dim, OperatorType, Number >::MatrixFreeProjector().
|
private |
LinearOperatorMG for each level, storing Galerkin projections.
Definition at line 64 of file multigrid_amg.h.
Referenced by dealii::MatrixFreeProjector< dim, OperatorType, Number >::compute_level_matrices(), and dealii::MatrixFreeProjector< dim, OperatorType, Number >::MatrixFreeProjector().
|
private |
For matrix-free operator evaluation
Definition at line 69 of file multigrid_amg.h.
Referenced by dealii::MatrixFreeProjector< dim, OperatorType, Number >::compute_level_matrices(), and dealii::MatrixFreeProjector< dim, OperatorType, Number >::MatrixFreeProjector().
|
private |
Matrix-free operator evaluation.
Definition at line 54 of file multigrid_amg.h.
Referenced by dealii::MatrixFreeProjector< dim, OperatorType, Number >::MatrixFreeProjector().
|
private |
Vector of (pointers of) Trilinos Matrices storing two-level projections.
Definition at line 59 of file multigrid_amg.h.
Referenced by dealii::MatrixFreeProjector< dim, OperatorType, Number >::MatrixFreeProjector().