diff --git a/Grid/algorithms/multigrid/GeneralCoarsenedMatrix.h b/Grid/algorithms/multigrid/GeneralCoarsenedMatrix.h index a4098316..8e6302b2 100644 --- a/Grid/algorithms/multigrid/GeneralCoarsenedMatrix.h +++ b/Grid/algorithms/multigrid/GeneralCoarsenedMatrix.h @@ -441,8 +441,20 @@ public: std::cout << GridLogMessage<<"CoarsenOperator inv "< > &linop, Aggregation & Subspace) + { + CoarsenOperator(linop,Subspace,Subspace); + } + ////////////////////////////////////////////////////////////////////// + // Petrov - Galerkin projection of matrix + ////////////////////////////////////////////////////////////////////// + void CoarsenOperator(LinearOperatorBase > &linop, + Aggregation & U, + Aggregation & V) { std::cout << GridLogMessage<< "GeneralCoarsenMatrix "<< std::endl; GridBase *grid = FineGrid(); @@ -458,11 +470,9 @@ public: // Orthogonalise the subblocks over the basis ///////////////////////////////////////////////////////////// CoarseScalar InnerProd(CoarseGrid()); - blockOrthogonalise(InnerProd,Subspace.subspace); + blockOrthogonalise(InnerProd,V.subspace); + blockOrthogonalise(InnerProd,U.subspace); - // for(int s=0;sGlobalDimensions(); @@ -542,7 +552,7 @@ public: std::cout << GridLogMessage<< "CoarsenMatrixColoured vec "<