mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
Add Support for Initialising Constant Flux Aquifers from Restart
In particular, form constant flux aquifer objects from the restart step's collection if available and properly initialise their total produced volume.
This commit is contained in:
parent
3b11aba5f2
commit
7a77f28b71
@ -91,12 +91,18 @@ public:
|
||||
aquifer_data_ = aquifer;
|
||||
}
|
||||
|
||||
void initFromRestart(const data::Aquifers& /* aquiferSoln */) override {
|
||||
void initFromRestart(const data::Aquifers& aquiferSoln) override
|
||||
{
|
||||
auto xaqPos = aquiferSoln.find(this->aquiferID());
|
||||
if (xaqPos == aquiferSoln.end()) {
|
||||
return;
|
||||
}
|
||||
|
||||
void initialSolutionApplied() override {
|
||||
this->cumulative_flux_ = this->area_fraction_ * xaqPos->second.volume;
|
||||
}
|
||||
|
||||
void initialSolutionApplied() override
|
||||
{}
|
||||
|
||||
void beginTimeStep() override
|
||||
{}
|
||||
|
@ -134,6 +134,9 @@ private:
|
||||
void createDynamicAquifers(const int episode_index);
|
||||
|
||||
void initializeStaticAquifers();
|
||||
void initializeRestartDynamicAquifers();
|
||||
|
||||
bool needRestartDynamicAquifers() const;
|
||||
|
||||
template <typename AquiferType, typename AquiferData>
|
||||
std::unique_ptr<AquiferType>
|
||||
|
@ -165,6 +165,9 @@ void BlackoilAquiferModel<TypeTag>::init()
|
||||
this->initializeStaticAquifers();
|
||||
}
|
||||
|
||||
if (this->needRestartDynamicAquifers()) {
|
||||
this->initializeRestartDynamicAquifers();
|
||||
}
|
||||
}
|
||||
|
||||
template<typename TypeTag>
|
||||
@ -202,6 +205,15 @@ serializeOp(Serializer& serializer)
|
||||
}
|
||||
}
|
||||
|
||||
template <typename TypeTag>
|
||||
void BlackoilAquiferModel<TypeTag>::initializeRestartDynamicAquifers()
|
||||
{
|
||||
const auto rstStep = this->simulator_.vanguard().eclState()
|
||||
.getInitConfig().getRestartStep() - 1;
|
||||
|
||||
this->createDynamicAquifers(rstStep);
|
||||
}
|
||||
|
||||
template <typename TypeTag>
|
||||
void BlackoilAquiferModel<TypeTag>::initializeStaticAquifers()
|
||||
{
|
||||
@ -248,6 +260,20 @@ void BlackoilAquiferModel<TypeTag>::initializeStaticAquifers()
|
||||
}
|
||||
}
|
||||
|
||||
template <typename TypeTag>
|
||||
bool BlackoilAquiferModel<TypeTag>::needRestartDynamicAquifers() const
|
||||
{
|
||||
const auto& initconfig =
|
||||
this->simulator_.vanguard().eclState().getInitConfig();
|
||||
|
||||
if (! initconfig.restartRequested()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return this->simulator_.vanguard()
|
||||
.schedule()[initconfig.getRestartStep() - 1].hasAnalyticalAquifers();
|
||||
}
|
||||
|
||||
template <typename TypeTag>
|
||||
template <typename AquiferType, typename AquiferData>
|
||||
std::unique_ptr<AquiferType>
|
||||
|
Loading…
Reference in New Issue
Block a user