diff --git a/grid/alu3dgrid/alu3dgrid.cc b/grid/alu3dgrid/alu3dgrid.cc index 9ad3c95c09548571af2a710e0f948478f72ecfdb..fce5061510230aa1fd13db34b0c90b56d37a662a 100644 --- a/grid/alu3dgrid/alu3dgrid.cc +++ b/grid/alu3dgrid/alu3dgrid.cc @@ -260,12 +260,17 @@ namespace Dune { template <int dim, int dimworld> template <class DofManagerType, class RestrictProlongOperatorType> inline bool ALU3dGrid<dim,dimworld>:: - adapt(DofManagerType & dm, RestrictProlongOperatorType & rpo) + adapt(DofManagerType & dm, RestrictProlongOperatorType & rpo, bool verbose ) { + assert( ((verbose) ? (std::cout << "ALU3dGrid :: adapt() new method called!\n", 1) : 1 ) ); EntityImp f ( *this, this->maxlevel() ); EntityImp s ( *this, this->maxlevel() ); - int newElements = 16*refineMarked_; // guess how many new elements we get + int defaultChunk = newElementsChunk_; + int actChunk = refineEstimate_ * refineMarked_; + + // guess how many new elements we get + int newElements = std::max( actChunk , defaultChunk ); ALU3DSPACE AdaptRestrictProlongImpl<ALU3dGrid<dim,dimworld>, EntityImp, DofManagerType, RestrictProlongOperatorType > rp(*this,f,s,dm,rpo, newElements); @@ -274,7 +279,7 @@ namespace Dune { // if new maxlevel was claculated if(rp.maxlevel() >= 0) maxlevel_ = rp.maxlevel(); - //std::cout << maxlevel_ << "\n"; + assert( ((verbose) ? (std::cout << "maxlevel = " << maxlevel_ << "!\n", 1) : 1 ) ); if(ref) { @@ -288,6 +293,7 @@ namespace Dune { communicate(dm); postAdapt(); + assert( ((verbose) ? (std::cout << "ALU3dGrid :: adapt() new method finished!\n", 1) : 1 ) ); return ref; }