Pass bool flag rst to Tracer initialization

This commit is contained in:
Joakim Hove
2021-11-26 17:31:53 +01:00
parent 3522118c60
commit 609bdbb92b
4 changed files with 8 additions and 10 deletions

View File

@@ -149,7 +149,7 @@ name(int tracerIdx) const
template<class Grid,class GridView, class DofMapper, class Stencil, class Scalar>
void EclGenericTracerModel<Grid,GridView,DofMapper,Stencil,Scalar>::
doInit(bool enabled, size_t numGridDof,
doInit(bool enabled, bool rst, size_t numGridDof,
size_t gasPhaseIdx, size_t oilPhaseIdx, size_t waterPhaseIdx)
{
const auto& tracers = eclState_.tracer();
@@ -187,6 +187,9 @@ doInit(bool enabled, size_t numGridDof,
tracerConcentration_[tracerIdx].resize(numGridDof);
storageOfTimeIndex1_[tracerIdx].resize(numGridDof);
if (rst)
continue;
//TBLK keyword
if (tracer.free_concentration.has_value()){

View File

@@ -87,6 +87,7 @@ protected:
* \brief Initialize all internal data structures needed by the tracer module
*/
void doInit(bool enabled,
bool rst,
size_t numGridDof,
size_t gasPhaseIdx,
size_t oilPhaseIdx,

View File

@@ -875,6 +875,7 @@ public:
transmissibilities_.finishInit();
const auto& initconfig = eclState.getInitConfig();
tracerModel_.init(initconfig.restartRequested());
if (initconfig.restartRequested())
readEclRestartSolution_();
else
@@ -889,8 +890,6 @@ public:
this->maxPolymerAdsorption_.resize(numElements, 0.0);
}
tracerModel_.init();
readBoundaryConditions_();
if (enableDriftCompensation_) {
@@ -2478,11 +2477,6 @@ private:
for (size_t pvtRegionIdx = 0; pvtRegionIdx < this->maxDRv_.size(); ++pvtRegionIdx)
this->maxDRv_[pvtRegionIdx] = oilVaporizationControl.getMaxDRVDT(pvtRegionIdx)*simulator.timeStepSize();
if (tracerModel().numTracers() > 0 && this->gridView().comm().rank() == 0)
std::cout << "Warning: Restart is not implemented for the tracer model, it will initialize itself "
<< "with the initial tracer concentration.\n"
<< std::flush;
// assign the restart solution to the current solution. note that we still need
// to compute real initial solution after this because the initial fluid states
// need to be correct for stuff like boundary conditions.

View File

@@ -103,10 +103,10 @@ public:
/*!
* \brief Initialize all internal data structures needed by the tracer module
*/
void init()
void init(bool rst)
{
bool enabled = EWOMS_GET_PARAM(TypeTag, bool, EnableTracerModel);
this->doInit(enabled, simulator_.model().numGridDof(),
this->doInit(enabled, rst, simulator_.model().numGridDof(),
gasPhaseIdx, oilPhaseIdx, waterPhaseIdx);
prepareTracerBatches();