55    void eval(
const std::vector<std::size_t>& dofsToNeglect = std::vector<std::size_t>())
 
   57        for (
auto& q : averagedQuantity_)
 
   60        std::vector<bool> poreVisited(problem_().gridGeometry().numDofs(), 
false);
 
   61        std::vector<Scalar> weights(averagedQuantityInfo_.size(), 0.0);
 
   63        auto fvGeometry = 
localView(problem_().gridGeometry());
 
   64        auto elemVolVars = 
localView(gridVariables_.curGridVolVars());
 
   66        for (
const auto& element : elements(problem_().gridGeometry().gridView()))
 
   68            fvGeometry.bind(element);
 
   69            elemVolVars.bind(element, fvGeometry, sol_);
 
   71            for (
int scvIdx = 0; scvIdx < fvGeometry.numScv(); ++scvIdx)
 
   73                static constexpr auto dofCodim = std::decay_t<
decltype(problem_().gridGeometry().gridView())>::dimension;
 
   74                const int dofIdxGlobal = problem_().gridGeometry().vertexMapper().subIndex(element, scvIdx, dofCodim);
 
   76                if (poreVisited[dofIdxGlobal])
 
   78                else if (!dofsToNeglect.empty() && std::any_of(dofsToNeglect.begin(), dofsToNeglect.end(), [&](
int dofIdx){ return dofIdx == dofIdxGlobal; }))
 
   82                    const auto& volVars = elemVolVars[scvIdx];
 
   83                    for (
int i = 0; i < averagedQuantityInfo_.size(); ++i)
 
   85                        const Scalar weight = averagedQuantityInfo_[i].weight(volVars);
 
   86                        averagedQuantity_[i] += averagedQuantityInfo_[i].quantity(volVars) * weight;
 
   89                    poreVisited[dofIdxGlobal] = 
true;
 
   94        for (
int i = 0; i < averagedQuantityInfo_.size(); ++i)
 
   95            averagedQuantity_[i] /= weights[i];