22#ifndef OPM_AQUIFERINTERFACE_HEADER_INCLUDED
23#define OPM_AQUIFERINTERFACE_HEADER_INCLUDED
25#include <opm/models/common/multiphasebaseproperties.hh>
26#include <opm/models/discretization/common/fvbaseproperties.hh>
28#include <opm/output/data/Aquifer.hpp>
33template <
typename TypeTag>
37 using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
38 using RateVector = GetPropType<TypeTag, Properties::RateVector>;
39 using Simulator = GetPropType<TypeTag, Properties::Simulator>;
43 const Simulator& ebosSimulator)
45 , ebos_simulator_(ebosSimulator)
52 virtual void initFromRestart(
const data::Aquifers& aquiferSoln) = 0;
54 virtual void initialSolutionApplied() = 0;
56 virtual void beginTimeStep() = 0;
57 virtual void endTimeStep() = 0;
59 virtual data::AquiferData aquiferData()
const = 0;
61 template <
class Context>
62 void addToSource(RateVector& rates,
63 const Context& context,
64 const unsigned spaceIdx,
65 const unsigned timeIdx)
67 const unsigned cellIdx = context.globalSpaceIndex(spaceIdx, timeIdx);
68 addToSource(rates, cellIdx, timeIdx);
71 virtual void addToSource(RateVector& rates,
72 const unsigned cellIdx,
73 const unsigned timeIdx) = 0;
75 int aquiferID()
const {
return this->aquiferID_; }
78 bool co2store_()
const
80 return ebos_simulator_.vanguard().eclState().runspec().co2Storage();
86 if (co2store_() && FluidSystem::phaseIsActive(FluidSystem::oilPhaseIdx))
87 return FluidSystem::oilPhaseIdx;
89 return FluidSystem::waterPhaseIdx;
92 const int aquiferID_{};
93 const Simulator& ebos_simulator_;
Definition: AquiferInterface.hpp:35
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition: BlackoilPhases.hpp:27