From 131f9cd61c345af56fa67ee3e5cbfda21b9b8c58 Mon Sep 17 00:00:00 2001 From: Oliver Sander <sander@igpm.rwth-aachen.de> Date: Wed, 14 May 2014 12:14:39 +0000 Subject: [PATCH] Use the transfer operators to determine the sizes of the hasObstacle arrays That works for fe spaces of all orders. [[Imported from SVN: r9725]] --- dune/gfe/riemanniantrsolver.cc | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/dune/gfe/riemanniantrsolver.cc b/dune/gfe/riemanniantrsolver.cc index 5d8ea2c3..2834be94 100644 --- a/dune/gfe/riemanniantrsolver.cc +++ b/dune/gfe/riemanniantrsolver.cc @@ -132,25 +132,14 @@ setup(const GridType& grid, assembler_->getNeighborsPerVertex(indices); indices.exportIdx(*hessianMatrix_); - // ////////////////////////////////////////////////////////// - // Create obstacles - // ////////////////////////////////////////////////////////// + // //////////////////////////////////// + // Create the transfer operators + // //////////////////////////////////// - hasObstacle_.resize(numLevels); #if defined THIRD_ORDER || defined SECOND_ORDER BasisType basis(grid_->leafGridView()); - hasObstacle_.back().resize(basis.size(), true); - - for (int i=0; i<hasObstacle_.size()-1; i++) - hasObstacle_[i].resize(grid_->size(i+1, gridDim),true); -#else - for (size_t i=0; i<hasObstacle_.size(); i++) - hasObstacle_[i].resize(grid_->size(i, gridDim),true); #endif - // //////////////////////////////////// - // Create the transfer operators - // //////////////////////////////////// for (size_t k=0; k<mmgStep->mgTransfer_.size(); k++) delete(mmgStep->mgTransfer_[k]); @@ -179,6 +168,15 @@ setup(const GridType& grid, mmgStep->mgTransfer_[i] = newTransferOp; } #endif + + // ////////////////////////////////////////////////////////// + // Create obstacles + // ////////////////////////////////////////////////////////// + + hasObstacle_.resize(numLevels); + hasObstacle_.back().resize(basis.size(), true); + for (int i=0; i<hasObstacle_.size()-1; i++) + hasObstacle_[i].resize(dynamic_cast<TruncatedCompressedMGTransfer<CorrectionType>* >(mmgStep->mgTransfer_[i])->getMatrix().M(),true); } -- GitLab