24#ifndef OPM_BLACKOILAQUIFERMODEL_HEADER_INCLUDED
25#define OPM_BLACKOILAQUIFERMODEL_HEADER_INCLUDED
27#include <ebos/eclbaseaquifermodel.hh>
29#include <opm/input/eclipse/EclipseState/Aquifer/Aquancon.hpp>
30#include <opm/input/eclipse/EclipseState/Aquifer/AquiferCT.hpp>
31#include <opm/input/eclipse/EclipseState/Aquifer/Aquifetp.hpp>
33#include <opm/output/data/Aquifer.hpp>
35#include <opm/simulators/aquifers/AquiferCarterTracy.hpp>
36#include <opm/simulators/aquifers/AquiferFetkovich.hpp>
37#include <opm/simulators/aquifers/AquiferNumerical.hpp>
39#include <opm/grid/CpGrid.hpp>
40#ifdef USE_POLYHEDRALGRID
41#include <opm/grid/polyhedralgrid.hh>
44#include <dune/alugrid/grid.hh>
47#include <opm/material/densead/Math.hpp>
58 :
public std::bool_constant<false>
64 :
public std::bool_constant<true>
68#ifdef USE_POLYHEDRALGRID
71 :
public std::bool_constant<true>
77class SupportsFaceTag<Dune::ALUGrid<3, 3, Dune::cube, Dune::nonconforming>>
78 :
public std::bool_constant<true>
84template <
typename TypeTag>
87 using Simulator = GetPropType<TypeTag, Properties::Simulator>;
88 using RateVector = GetPropType<TypeTag, Properties::RateVector>;
94 void initialSolutionApplied();
95 void initFromRestart(
const data::Aquifers& aquiferSoln);
99 void beginIteration();
101 template <
class Context>
102 void addToSource(RateVector& rates,
const Context& context,
unsigned spaceIdx,
unsigned timeIdx)
const;
103 void addToSource(RateVector& rates,
unsigned globalSpaceIdx,
unsigned timeIdx)
const;
108 data::Aquifers aquiferData()
const;
110 template <
class Restarter>
111 void serialize(Restarter& res);
113 template <
class Restarter>
114 void deserialize(Restarter& res);
116 template<
class Serializer>
117 void serializeOp(Serializer& serializer);
121 using ElementContext = GetPropType<TypeTag, Properties::ElementContext>;
122 using Scalar = GetPropType<TypeTag, Properties::Scalar>;
124 Simulator& simulator_;
127 std::vector<std::unique_ptr<AquiferInterface<TypeTag>>> aquifers;
134 void createDynamicAquifers(
const int episode_index);
136 void initializeStaticAquifers();
138 template <
typename AquiferType,
typename AquiferData>
139 std::unique_ptr<AquiferType>
140 createAnalyticAquiferPointer(
const AquiferData& aqData,
142 std::string_view aqType)
const;
148#include "BlackoilAquiferModel_impl.hpp"
Class for handling the blackoil well model.
Definition: BlackoilAquiferModel.hpp:86
Definition: BlackoilAquiferModel.hpp:59
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition: BlackoilPhases.hpp:27