51 using Simulator = GetPropType<TypeTag, Properties::Simulator>;
52 using RateVector = GetPropType<TypeTag, Properties::RateVector>;
58 void initialSolutionApplied();
59 void initFromRestart(
const data::Aquifers& aquiferSoln);
63 void beginIteration();
65 template <
class Context>
66 void addToSource(RateVector& rates,
const Context& context,
unsigned spaceIdx,
unsigned timeIdx)
const;
67 void addToSource(RateVector& rates,
unsigned globalSpaceIdx,
unsigned timeIdx)
const;
72 data::Aquifers aquiferData()
const;
74 template <
class Restarter>
75 void serialize(Restarter& res);
77 template <
class Restarter>
78 void deserialize(Restarter& res);
80 template<
class Serializer>
81 void serializeOp(Serializer& serializer);
85 using ElementContext = GetPropType<TypeTag, Properties::ElementContext>;
86 using Scalar = GetPropType<TypeTag, Properties::Scalar>;
88 Simulator& simulator_;
91 std::vector<std::unique_ptr<AquiferInterface<TypeTag>>> aquifers;
98 void createDynamicAquifers(
const int episode_index);
100 void initializeStaticAquifers();
101 void initializeRestartDynamicAquifers();
103 bool needRestartDynamicAquifers()
const;
105 template <
typename AquiferType,
typename AquiferData>
106 std::unique_ptr<AquiferType>
107 createAnalyticAquiferPointer(
const AquiferData& aqData,
109 std::string_view aqType)
const;
111 void computeConnectionAreaFraction()
const;