diff --git a/opm/simulators/flow/GenericOutputBlackoilModule.cpp b/opm/simulators/flow/GenericOutputBlackoilModule.cpp index 34a3d09179..92a4f6b073 100644 --- a/opm/simulators/flow/GenericOutputBlackoilModule.cpp +++ b/opm/simulators/flow/GenericOutputBlackoilModule.cpp @@ -125,7 +125,6 @@ GenericOutputBlackoilModule(const EclipseState& eclState, , enableSaltPrecipitation_(enableSaltPrecipitation) , enableExtbo_(enableExtbo) , enableMICP_(enableMICP) - , tracerC_(eclState_) , flowsC_(schedule, summaryConfig) , rftC_(eclState_, schedule_, [this](const std::string& wname) @@ -481,7 +480,7 @@ assignToSolution(data::Solution& sol) this->fipC_.outputRestart(sol); // Tracers - this->tracerC_.outputRestart(sol); + this->tracerC_.outputRestart(sol, eclState_.tracer()); } template @@ -915,7 +914,7 @@ doAllocBuffers(const unsigned bufferSize, } // tracers - this->tracerC_.allocate(bufferSize); + this->tracerC_.allocate(bufferSize, eclState_.tracer()); //Warn for any unhandled keyword if (log) { diff --git a/opm/simulators/flow/MICPContainer.hpp b/opm/simulators/flow/MICPContainer.hpp index 7e63f374d4..8d863e45ae 100644 --- a/opm/simulators/flow/MICPContainer.hpp +++ b/opm/simulators/flow/MICPContainer.hpp @@ -31,7 +31,7 @@ namespace Opm { namespace data { class Solution; } -template class MICPSolutionContainer; +template struct MICPSolutionContainer; template class MICPContainer diff --git a/opm/simulators/flow/TracerContainer.cpp b/opm/simulators/flow/TracerContainer.cpp index 9f73e758c5..edc848db38 100644 --- a/opm/simulators/flow/TracerContainer.cpp +++ b/opm/simulators/flow/TracerContainer.cpp @@ -23,7 +23,7 @@ #include #include -#include +#include #include #include @@ -38,9 +38,9 @@ namespace Opm { template void TracerContainer:: -allocate(const unsigned bufferSize) +allocate(const unsigned bufferSize, + const TracerConfig& tracers) { - const auto& tracers = eclState_.tracer(); if (!tracers.empty()) { allocated_ = true; freeConcentrations_.resize(tracers.size()); @@ -93,13 +93,13 @@ assignSolConcentrations(const unsigned globalDofIdx, template void TracerContainer:: -outputRestart(data::Solution& sol) +outputRestart(data::Solution& sol, + const TracerConfig& tracers) { if (!this->allocated_) { return; } - const auto& tracers = this->eclState_.tracer(); std::for_each(tracers.begin(), tracers.end(), [idx = 0, &sol, this](const auto& tracer) mutable { diff --git a/opm/simulators/flow/TracerContainer.hpp b/opm/simulators/flow/TracerContainer.hpp index dfd8ff86a8..0d1ea1e3e3 100644 --- a/opm/simulators/flow/TracerContainer.hpp +++ b/opm/simulators/flow/TracerContainer.hpp @@ -32,7 +32,7 @@ namespace Opm { namespace data { class Solution; } -class EclipseState; +class TracerConfig; template class TracerContainer @@ -41,11 +41,8 @@ class TracerContainer using ScalarBuffer = std::vector; public: - TracerContainer(const EclipseState& eclState) - : eclState_(eclState) - {} - - void allocate(const unsigned bufferSize); + void allocate(const unsigned bufferSize, + const TracerConfig& tracers); using AssignFunction = std::function; @@ -55,11 +52,10 @@ public: void assignSolConcentrations(const unsigned globalDofIdx, const AssignFunction& concentration); - void outputRestart(data::Solution& sol); + void outputRestart(data::Solution& sol, + const TracerConfig& tracers); private: - const EclipseState& eclState_; - std::vector freeConcentrations_{}; std::vector solConcentrations_{}; bool allocated_{false};