50 static constexpr int numEq = BlackoilIndices::numEq;
51 using Eval = DenseAd::Evaluation<
double, numEq>;
59 , connection_flux_ (connections_.size(), Eval{0})
61 this->initializeConnections();
67 result.cumulative_flux_ = 1.0;
79 void initFromRestart(
const data::Aquifers& )
override {
82 void initialSolutionApplied()
override {
86 void beginTimeStep()
override
89 void endTimeStep()
override
91 this->flux_rate_ = this->totalFluxRate();
92 this->cumulative_flux_ +=
93 this->flux_rate_ * this->ebos_simulator_.timeStepSize();
96 data::AquiferData aquiferData()
const override
98 data::AquiferData data;
100 data.aquiferID = this->aquifer_data_.id;
104 data.fluxRate = this->totalFluxRate();
106 data.volume = this->cumulative_flux_;
109 data.initPressure = 0.0;
114 void addToSource(RateVector& rates,
118 const int idx = this->cellToConnectionIdx_[
cellIdx];
123 const auto& model = this->ebos_simulator_.model();
125 const auto fw = this->aquifer_data_.flux;
127 this->connection_flux_[
idx] =
fw * this->connections_[
idx].effective_facearea;
129 rates[BlackoilIndices::conti0EqIdx + compIdx_()]
130 += this->connection_flux_[
idx] / model.dofTotalVolume(
cellIdx);
133 template<
class Serializer>
141 return this->cumulative_flux_ == rhs.cumulative_flux_;
145 const std::vector<Aquancon::AquancCell>& connections_;
148 std::vector<Eval> connection_flux_{};
149 std::vector<int> cellToConnectionIdx_{};
151 double cumulative_flux_{};
153 void initializeConnections() {
154 this->cellToConnectionIdx_.resize(this->ebos_simulator_.gridView().size(0), -1);
155 for (std::size_t
idx = 0;
idx < this->connections_.size(); ++
idx) {
157 const int cell_index = this->ebos_simulator_.vanguard()
160 if (cell_index < 0) {
164 this->cellToConnectionIdx_[cell_index] =
idx;
175 if (this->co2store_())
176 return FluidSystem::oilCompIdx;
178 return FluidSystem::waterCompIdx;
181 double totalFluxRate()
const
183 return std::accumulate(this->connection_flux_.begin(),
184 this->connection_flux_.end(), 0.0,
185 [](
const double rate,
const auto&
q)
187 return rate + getValue(q);