EclTracerModel: move code using WellTracerProperties to compile unit

This commit is contained in:
Arne Morten Kvarving 2023-01-13 11:52:04 +01:00
parent 325963fb63
commit 188d19fcf0
3 changed files with 14 additions and 6 deletions

View File

@ -34,6 +34,8 @@
#include <opm/input/eclipse/EclipseState/Phase.hpp>
#include <opm/input/eclipse/EclipseState/Tables/TracerVdTable.hpp>
#include <opm/input/eclipse/Schedule/Well/WellTracerProperties.hpp>
#include <dune/istl/operators.hh>
#include <dune/istl/solvers.hh>
#include <dune/istl/schwarz.hh>
@ -70,6 +72,7 @@ struct TracerSolverSelector
using TracerOperator = Dune::OverlappingSchwarzOperator<M, V, V, Comm>;
using type = Dune::FlexibleSolver<TracerOperator>;
};
template<class Vector, class Grid, class Matrix>
std::tuple<std::unique_ptr<Dune::OverlappingSchwarzOperator<Matrix,Vector,Vector,
Dune::OwnerOverlapCopyCommunication<int,int>>>,
@ -111,7 +114,6 @@ EclGenericTracerModel(const GridView& gridView,
{
}
template<class Grid,class GridView, class DofMapper, class Stencil, class Scalar>
Scalar EclGenericTracerModel<Grid,GridView,DofMapper,Stencil,Scalar>::
tracerConcentration(int tracerIdx, int globalDofIdx) const
@ -122,7 +124,6 @@ tracerConcentration(int tracerIdx, int globalDofIdx) const
return tracerConcentration_[tracerIdx][globalDofIdx];
}
template<class Grid,class GridView, class DofMapper, class Stencil, class Scalar>
void EclGenericTracerModel<Grid,GridView,DofMapper,Stencil,Scalar>::
setTracerConcentration(int tracerIdx, int globalDofIdx, Scalar value)
@ -144,6 +145,13 @@ fname(int tracerIdx) const
return this->eclState_.tracer()[tracerIdx].fname();
}
template<class Grid,class GridView, class DofMapper, class Stencil, class Scalar>
double EclGenericTracerModel<Grid,GridView,DofMapper,Stencil,Scalar>::
currentConcentration_(const Well& eclWell, const std::string& name) const
{
return eclWell.getTracerProperties().getConcentration(name);
}
template<class Grid,class GridView, class DofMapper, class Stencil, class Scalar>
const std::string& EclGenericTracerModel<Grid,GridView,DofMapper,Stencil,Scalar>::
name(int tracerIdx) const
@ -151,7 +159,6 @@ name(int tracerIdx) const
return this->eclState_.tracer()[tracerIdx].name;
}
template<class Grid,class GridView, class DofMapper, class Stencil, class Scalar>
void EclGenericTracerModel<Grid,GridView,DofMapper,Stencil,Scalar>::
doInit(bool rst, size_t numGridDof,

View File

@ -44,6 +44,7 @@
namespace Opm {
class EclipseState;
class Well;
template<class Grid, class GridView, class DofMapper, class Stencil, class Scalar>
class EclGenericTracerModel {
@ -96,6 +97,8 @@ protected:
bool linearSolveBatchwise_(const TracerMatrix& M, std::vector<TracerVector>& x, std::vector<TracerVector>& b);
double currentConcentration_(const Well& eclWell, const std::string& name) const;
const GridView& gridView_;
const EclipseState& eclState_;
const CartesianIndexMapper& cartMapper_;

View File

@ -30,8 +30,6 @@
#include <ebos/eclgenerictracermodel.hh>
#include <opm/input/eclipse/Schedule/Well/WellTracerProperties.hpp>
#include <opm/models/utils/propertysystem.hh>
#include <opm/simulators/utils/VectorVectorDataHandle.hpp>
@ -341,7 +339,7 @@ protected:
std::vector<double> wtracer(tr.numTracer());
for (int tIdx = 0; tIdx < tr.numTracer(); ++tIdx) {
wtracer[tIdx] = eclWell.getTracerProperties().getConcentration(this->name(tr.idx_[tIdx]));
wtracer[tIdx] = this->currentConcentration_(eclWell, this->name(tr.idx_[tIdx]));
}
for (auto& perfData : well.perforationData()) {