diff --git a/dune/istl/paamg/hierarchy.hh b/dune/istl/paamg/hierarchy.hh index 8e6a44108fa400b03dd60e217e17aff5c6bdb92a..dd9b972d4a926396cbf5b66cd14f3cfce4a48e00 100644 --- a/dune/istl/paamg/hierarchy.hh +++ b/dune/istl/paamg/hierarchy.hh @@ -128,7 +128,7 @@ namespace Dune */ void addCoarser(Arguments& args); - void addRedistributedOnCoarsest(T* t); + void addRedistributedOnCoarsest(Arguments& args); /** * @brief Add an element on a finer level. @@ -1112,7 +1112,7 @@ namespace Dune Iterator matrix = matrices_.finest(), coarsest = matrices_.coarsest(); int level=0; if(redist->isSetup()) - hierarchy.addRedistributedOnCoarsest(new BlockVector<V,TA>(matrix.getRedistributed().getmat().N())); + hierarchy.addRedistributedOnCoarsest(matrix.getRedistributed().getmat().N()); Dune::dvverb<<"Level "<<level<<" has "<<matrices_.finest()->getmat().N()<<" unknowns!"<<std::endl; while(matrix != coarsest) { @@ -1121,7 +1121,7 @@ namespace Dune hierarchy.addCoarser(matrix->getmat().N()); if(redist->isSetup()) - hierarchy.addRedistributedOnCoarsest(new BlockVector<V,TA>(matrix.getRedistributed().getmat().N())); + hierarchy.addRedistributedOnCoarsest(matrix.getRedistributed().getmat().N()); } @@ -1260,9 +1260,9 @@ namespace Dune } template<class T, class A> - void Hierarchy<T,A>::addRedistributedOnCoarsest(T* t) + void Hierarchy<T,A>::addRedistributedOnCoarsest(Arguments& args) { - coarsest_->redistributed_ = t; + coarsest_->redistributed_ = ConstructionTraits<MemberType>::construct(args); } template<class T, class A>