diff --git a/dune/solvers/transferoperators/genericmultigridtransfer.hh b/dune/solvers/transferoperators/genericmultigridtransfer.hh index 8e7a2a300334970bf8b47de90eb8112c1bfef277..988976638daf42ab4e6777dfe53f640caa4cda4a 100644 --- a/dune/solvers/transferoperators/genericmultigridtransfer.hh +++ b/dune/solvers/transferoperators/genericmultigridtransfer.hh @@ -78,11 +78,6 @@ public: int rows = grid.size(fL, dim); int cols = grid.size(cL, dim); - // Make identity matrix - TransferMatrixBlock identity(0); - for (size_t i=0; i<identity.N(); i++) - identity[i][i] = 1; - // A factory for the shape functions typedef typename Dune::PQkLocalFiniteElementCache<ctype, field_type, dim, 1> P1FECache; typedef typename P1FECache::FiniteElementType FEType; @@ -217,9 +212,7 @@ public: const Dune::LocalKey& iLocalKey = coarseBaseSet.localCoefficients().localKey(i); int globalCoarse = coarseIndexSet.subIndex(*cIt, iLocalKey.subEntity(), iLocalKey.codim()); - TransferMatrixBlock matValue = identity; - matValue *= values[i]; - matrix[globalFine][globalCoarse] = matValue; + matrix[globalFine][globalCoarse] = Dune::ScaledIdentityMatrix<ctype,TransferMatrixBlock::rows>(values[i]); } } }