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".
To 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. Matrixvector 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