37 using FluidSystem = GetPropType<TypeTag, Properties::FluidSystem>;
38 using RateVector = GetPropType<TypeTag, Properties::RateVector>;
39 using Simulator = GetPropType<TypeTag, Properties::Simulator>;
43 const Simulator& simulator)
45 , simulator_(simulator)
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 virtual void computeFaceAreaFraction(
const std::vector<double>& total_face_area) = 0;
62 virtual double totalFaceArea()
const = 0;
64 template <
class Context>
65 void addToSource(RateVector& rates,
66 const Context& context,
67 const unsigned spaceIdx,
68 const unsigned timeIdx)
70 const unsigned cellIdx = context.globalSpaceIndex(spaceIdx, timeIdx);
71 addToSource(rates, cellIdx, timeIdx);
74 virtual void addToSource(RateVector& rates,
75 const unsigned cellIdx,
76 const unsigned timeIdx) = 0;
78 int aquiferID()
const {
return this->aquiferID_; }
81 bool co2store_or_h2store_()
const
83 const auto& rspec = simulator_.vanguard().eclState().runspec();
84 return rspec.co2Storage() || rspec.h2Storage();
90 if (co2store_or_h2store_() && FluidSystem::phaseIsActive(FluidSystem::oilPhaseIdx))
91 return FluidSystem::oilPhaseIdx;
93 return FluidSystem::waterPhaseIdx;
96 const int aquiferID_{};
97 const Simulator& simulator_;