EclGenericProblem: add serialization support

This commit is contained in:
Arne Morten Kvarving
2023-02-14 15:36:24 +01:00
parent d86956d6d7
commit 1bec857445
3 changed files with 108 additions and 0 deletions
+56
View File
@@ -104,6 +104,37 @@ EclGenericProblem(const EclipseState& eclState,
{
}
template<class GridView, class FluidSystem, class Scalar>
EclGenericProblem<GridView,FluidSystem,Scalar>
EclGenericProblem<GridView,FluidSystem,Scalar>::
serializationTestObject(const EclipseState& eclState,
const Schedule& schedule,
const GridView& gridView)
{
EclGenericProblem result(eclState, schedule, gridView);
result.maxOilSaturation_ = {1.0, 2.0};
result.maxPolymerAdsorption_ = {3.0, 4.0, 5.0};
result.maxWaterSaturation_ = {6.0};
result.minOilPressure_ = {7.0, 8.0, 9.0, 10.0};
result.overburdenPressure_ = {11.0};
result.polymerConcentration_ = {12.0};
result.polymerMoleWeight_ = {13.0, 14.0};
result.solventSaturation_ = {15.0};
result.microbialConcentration_ = {16.0};
result.oxygenConcentration_ = {17.0};
result.ureaConcentration_ = {18.0};
result.biofilmConcentration_ = {19.0};
result.calciteConcentration_ = {20.0};
result.lastRv_ = {21.0};
result.maxDRv_ = {22.0, 23.0};
result.convectiveDrs_ = {24.0, 25.0, 26.0};
result.lastRs_ = {27.0};
result.maxDRs_ = {28.0};
result.dRsDtOnlyFreeGas_ = {false, true};
return result;
}
template<class GridView, class FluidSystem, class Scalar>
std::string
EclGenericProblem<GridView,FluidSystem,Scalar>::
@@ -755,6 +786,31 @@ initDRSDT_(size_t numDof,
}
}
template<class GridView, class FluidSystem, class Scalar>
bool EclGenericProblem<GridView,FluidSystem,Scalar>::
operator==(const EclGenericProblem& rhs) const
{
return this->maxOilSaturation_ == rhs.maxOilSaturation_ &&
this->maxPolymerAdsorption_ == rhs.maxPolymerAdsorption_ &&
this->maxWaterSaturation_ == rhs.maxWaterSaturation_ &&
this->minOilPressure_ == rhs.minOilPressure_ &&
this->overburdenPressure_ == rhs.overburdenPressure_ &&
this->polymerConcentration_ == rhs.polymerConcentration_ &&
this->polymerMoleWeight_ == rhs.polymerMoleWeight_ &&
this->solventSaturation_ == rhs.solventSaturation_ &&
this->microbialConcentration_ == rhs.microbialConcentration_ &&
this->oxygenConcentration_ == rhs.oxygenConcentration_ &&
this->ureaConcentration_ == rhs.ureaConcentration_ &&
this->biofilmConcentration_ == rhs.biofilmConcentration_ &&
this->calciteConcentration_ == rhs.calciteConcentration_ &&
this->lastRv_ == rhs.lastRv_ &&
this->maxDRv_ == rhs.maxDRv_ &&
this->convectiveDrs_ == rhs.convectiveDrs_ &&
this->lastRs_ == rhs.lastRs_ &&
this->maxDRs_ == rhs.maxDRs_ &&
this->dRsDtOnlyFreeGas_ == rhs.dRsDtOnlyFreeGas_;
}
#if HAVE_DUNE_FEM
template class EclGenericProblem<Dune::GridView<Dune::Fem::GridPart2GridViewTraits<Dune::Fem::AdaptiveLeafGridPart<Dune::CpGrid, Dune::PartitionIteratorType(4), false>>>,
BlackOilFluidSystem<double,BlackOilDefaultIndexTraits>,
+31
View File
@@ -74,6 +74,11 @@ public:
const Schedule& schedule,
const GridView& gridView);
static EclGenericProblem serializationTestObject(const EclipseState& eclState,
const Schedule& schedule,
const GridView& gridView);
/*!
* \copydoc FvBaseProblem::helpPreamble
*/
@@ -257,6 +262,32 @@ public:
bool vapparsActive(int episodeIdx) const;
bool operator==(const EclGenericProblem& rhs) const;
template<class Serializer>
void serializeOp(Serializer& serializer)
{
serializer(maxOilSaturation_);
serializer(maxPolymerAdsorption_);
serializer(maxWaterSaturation_);
serializer(minOilPressure_);
serializer(overburdenPressure_);
serializer(polymerConcentration_);
serializer(polymerMoleWeight_);
serializer(solventSaturation_);
serializer(microbialConcentration_);
serializer(oxygenConcentration_);
serializer(ureaConcentration_);
serializer(biofilmConcentration_);
serializer(calciteConcentration_);
serializer(lastRv_);
serializer(maxDRv_);
serializer(convectiveDrs_);
serializer(lastRs_);
serializer(maxDRs_);
serializer(dRsDtOnlyFreeGas_);
}
protected:
bool drsdtActive_(int episodeIdx) const;
bool drvdtActive_(int episodeIdx) const;