|
DOUG 0.2
|
Implementation is based on the work by Ivan Graham, Robert Scheichl and Jan Van lent, "Robust Coarse Spaces for Overlapping Schwarz Methods".
- injection matrices mapping from the vectors taking values at all points of the fine mesh to vectors taking values at the points in the interior of the support of basis function i. This also identifies aggregates with the overlap included (although no aggregate neighbour information is directly available).
- restriction matrix from fine space to coarse space
- number of coarse nodes (number of coarse node supports), also number of fine aggregatesTo get restriction matrix we need to solve the problem (g - vector of Lagrange multipliers in the energy minimization problem)
The CG solver (see preconditioner below) can be found in pcg_forRCS(). Because matrix B is not sparse special datatype RobustCoarseMtx_mod::SumOfInversedSubMtx has been introduced. Matrix-vector multiplication for this type of matrix is implemented in the subroutine SOISMtx_pmvm().
Then we get
- rows of the
with
The implementation of this last step can be found in RobustRestrictMtxBuild().
CG is slow, so preconditioner must be introduced for
.
Preconditioner C for the B is
Multiplying a vector by the matrix C can be implemented efficiently using the following formulas which involve only sparse matrices
The data of C preconditioner is stored in pcgRobust_mod::RobustPreconditionMtx datatype. The implementation of preconditioner is in 2 subroutines
1.7.3-20110217