55    : gridGeometry_(gridGeometry)
 
   56    , refineBound_(std::numeric_limits<Scalar>::max())
 
   57    , coarsenBound_(std::numeric_limits<Scalar>::lowest())
 
   58    , maxSaturationDelta_(gridGeometry_->gridView().size(0), 0.0)
 
 
  105                   Scalar refineTol = 0.05,
 
  106                   Scalar coarsenTol = 0.001)
 
  109        refineBound_ = std::numeric_limits<Scalar>::max();
 
  110        coarsenBound_ = std::numeric_limits<Scalar>::lowest();
 
  111        maxSaturationDelta_.assign(gridGeometry_->gridView().size(0), 0.0);
 
  114        if (minLevel_ >= maxLevel_)
 
  118        if (coarsenTol > refineTol)
 
  119            DUNE_THROW(Dune::InvalidStateException, 
"Refine tolerance must be higher than coarsen tolerance");
 
  122        Scalar globalMax = std::numeric_limits<Scalar>::lowest();
 
  123        Scalar globalMin = std::numeric_limits<Scalar>::max();
 
  126        for (
const auto& element : elements(gridGeometry_->gridView()))
 
  129            const auto globalIdxI = gridGeometry_->elementMapper().index(element);
 
  132            const auto geometry = element.geometry();
 
  134            const Scalar satI = 
evalSolution(element, geometry, *gridGeometry_, elemSol, geometry.center())[saturationIdx];
 
  139            globalMin = min(satI, globalMin);
 
  140            globalMax = max(satI, globalMax);
 
  143            for (
const auto& intersection : intersections(gridGeometry_->gridView(), element))
 
  146                if (intersection.neighbor())
 
  149                    const auto outside = intersection.outside();
 
  150                    const auto globalIdxJ = gridGeometry_->elementMapper().index(outside);
 
  153                    if (element.level() > outside.level() || (element.level() == outside.level() && globalIdxI < globalIdxJ))
 
  156                        const auto outsideGeometry = outside.geometry();
 
  158                        const Scalar satJ = 
evalSolution(outside, outsideGeometry, *gridGeometry_, elemSolJ, outsideGeometry.center())[saturationIdx];
 
  161                        Scalar localdelta = abs(satI - satJ);
 
  162                        maxSaturationDelta_[globalIdxI] = max(maxSaturationDelta_[globalIdxI], localdelta);
 
  163                        maxSaturationDelta_[globalIdxJ] = max(maxSaturationDelta_[globalIdxJ], localdelta);
 
  170        const auto globalDelta = globalMax - globalMin;
 
  173        refineBound_ = refineTol*globalDelta;
 
  174        coarsenBound_ = coarsenTol*globalDelta;
 
  192        for (
const auto& element : elements(gridGeometry_->gridView(), Dune::Partitions::interior))
 
  193            if (this->
operator()(element) > 0)
 
  194                checkNeighborsRefine_(element);