diff --git a/ebos/eclgenerictracermodel.cc b/ebos/eclgenerictracermodel.cc index a2b48f632..38dc02542 100644 --- a/ebos/eclgenerictracermodel.cc +++ b/ebos/eclgenerictracermodel.cc @@ -45,6 +45,8 @@ #include #include #include +#include +#include namespace Opm { @@ -53,11 +55,13 @@ EclGenericTracerModel:: EclGenericTracerModel(const GridView& gridView, const EclipseState& eclState, const CartesianIndexMapper& cartMapper, - const DofMapper& dofMapper) + const DofMapper& dofMapper, + const std::function(int)> centroids) : gridView_(gridView) , eclState_(eclState) , cartMapper_(cartMapper) , dofMapper_(dofMapper) + , centroids_(centroids) { } @@ -137,12 +141,10 @@ doInit(bool enabled, size_t numGridDof, } //TVDPF keyword else { - const auto& eclGrid = eclState_.getInputGrid(); - for (size_t globalDofIdx = 0; globalDofIdx < numGridDof; ++globalDofIdx){ - int cartDofIdx = cartMapper_.cartesianIndex(globalDofIdx); - const auto& center = eclGrid.getCellCenter(cartDofIdx); - tracerConcentration_[tracerIdx][globalDofIdx] = tracer.free_tvdp.evaluate("TRACER_CONCENTRATION", center[2]); + tracerConcentration_[tracerIdx][globalDofIdx] = + tracer.free_tvdp.evaluate("TRACER_CONCENTRATION", + centroids_(globalDofIdx)[2]); } } ++tracerIdx; diff --git a/ebos/eclgenerictracermodel.hh b/ebos/eclgenerictracermodel.hh index db59f1753..aa02163e5 100644 --- a/ebos/eclgenerictracermodel.hh +++ b/ebos/eclgenerictracermodel.hh @@ -51,7 +51,7 @@ public: using TracerMatrix = Dune::BCRSMatrix>; using TracerVector = Dune::BlockVector>; using CartesianIndexMapper = Dune::CartesianIndexMapper; - + static const int dimWorld = Grid::dimensionworld; /*! * \brief Return the number of tracers considered by the tracerModel. */ @@ -78,7 +78,8 @@ protected: EclGenericTracerModel(const GridView& gridView, const EclipseState& eclState, const CartesianIndexMapper& cartMapper, - const DofMapper& dofMapper); + const DofMapper& dofMapper, + const std::function(int)> centroids); /*! * \brief Initialize all internal data structures needed by the tracer module @@ -109,7 +110,8 @@ protected: // -> wellRate std::map, double> wellTracerRate_; - + /// \brief Function returning the cell centers + std::function(int)> centroids_; }; } // namespace Opm diff --git a/ebos/ecltracermodel.hh b/ebos/ecltracermodel.hh index 10acccfbd..034a6e420 100644 --- a/ebos/ecltracermodel.hh +++ b/ebos/ecltracermodel.hh @@ -90,7 +90,8 @@ public: : BaseType(simulator.vanguard().gridView(), simulator.vanguard().eclState(), simulator.vanguard().cartesianIndexMapper(), - simulator.model().dofMapper()) + simulator.model().dofMapper(), + simulator.vanguard().cellCentroids()) , simulator_(simulator) , wat_(TracerBatch(waterPhaseIdx)) , oil_(TracerBatch(oilPhaseIdx))