72 GetPropType<TypeTag, Properties::Indices>,
73 GetPropType<TypeTag, Properties::Scalar>>
87 using GLiftOptWells =
typename BlackoilWellModel<TypeTag>::GLiftOptWells;
88 using GLiftProdWells =
typename BlackoilWellModel<TypeTag>::GLiftProdWells;
89 using GLiftWellStateMap =
90 typename BlackoilWellModel<TypeTag>::GLiftWellStateMap;
91 using GLiftSyncGroups =
typename GasLiftSingleWellGeneric::GLiftSyncGroups;
95 using VectorBlockType = Dune::FieldVector<Scalar, Indices::numEq>;
96 using MatrixBlockType = Dune::FieldMatrix<Scalar, Indices::numEq, Indices::numEq>;
97 using BVector = Dune::BlockVector<VectorBlockType>;
98 using Eval = DenseAd::Evaluation<Scalar, Indices::numEq>;
99 using PressureMatrix = Dune::BCRSMatrix<Opm::MatrixBlock<double, 1, 1>>;
101 using RateConverterType =
127 Indices::compositionSwitchIdx >= 0,
132 Indices::numPhases >;
139 const int pvtRegionIdx,
141 const int num_phases,
143 const std::vector<PerforationData>& perf_data);
152 const std::vector< Scalar >&
B_avg,
155 virtual void initPrimaryVariablesEvaluation() = 0;
159 void assembleWellEq(
const Simulator& ebosSimulator,
165 virtual void computeWellRatesWithBhp(
166 const Simulator& ebosSimulator,
172 virtual std::optional<double> computeBhpAtThpLimitProdWithAlq(
187 virtual void apply(
const BVector& x, BVector&
Ax)
const = 0;
190 virtual void apply(BVector&
r)
const = 0;
193 virtual void computeWellPotentials(
const Simulator& ebosSimulator,
195 std::vector<double>& well_potentials,
198 virtual void updateWellStateWithTarget(
const Simulator&
ebos_simulator,
203 virtual bool updateWellStateWithTHPTargetProd(
const Simulator&
ebos_simulator,
207 enum class IndividualOrGroup { Individual, Group, Both };
209 const IndividualOrGroup
iog,
218 virtual void calculateExplicitQuantities(
const Simulator& ebosSimulator,
222 virtual void updateProductivityIndex(
const Simulator& ebosSimulator,
234 virtual void addWellContributions(SparseMatrixAdapter&)
const = 0;
236 virtual void addWellPressureEquations(PressureMatrix& mat,
238 const int pressureVarIndex,
242 void addCellRates(RateVector& rates,
int cellIdx)
const;
244 Scalar volumetricSurfaceRateForConnection(
int cellIdx,
int phaseIdx)
const;
246 template <
class EvalWell>
247 Eval restrictEval(
const EvalWell&
in)
const
250 out.setValue(
in.value());
259 void wellTesting(
const Simulator& simulator,
260 const double simulation_time,
261 WellState& well_state,
const GroupState& group_state, WellTestState& welltest_state,
262 DeferredLogger& deferred_logger);
264 void checkWellOperability(
const Simulator& ebos_simulator,
const WellState& well_state, DeferredLogger& deferred_logger);
266 void gliftBeginTimeStepWellTestUpdateALQ(
const Simulator& ebos_simulator,
267 WellState& well_state,
268 DeferredLogger& deferred_logger);
272 void updateWellOperability(
const Simulator& ebos_simulator,
273 const WellState& well_state,
274 DeferredLogger& deferred_logger);
278 virtual void updateWaterThroughput(
const double dt, WellState& well_state)
const = 0;
292 void solveWellEquation(
const Simulator& ebosSimulator,
297 const std::vector<RateVector>& connectionRates()
const
299 return connectionRates_;
305 const ModelParameters& param_;
307 std::vector<RateVector> connectionRates_;
309 std::vector< Scalar > B_avg_;
311 bool changed_to_stopped_this_step_ =
false;
313 double wpolymer()
const;
315 double wfoam()
const;
317 double wsalt()
const;
319 double wmicrobes()
const;
321 double woxygen()
const;
323 double wurea()
const;
325 virtual double getRefDensity()
const = 0;
328 const std::vector<double>& compFrac()
const;
330 std::vector<double> initialWellRateFractions(
const Simulator& ebosSimulator,
const WellState& well_state)
const;
340 virtual void assembleWellEqWithoutIteration(
const Simulator& ebosSimulator,
349 virtual bool iterateWellEqWithControl(
const Simulator& ebosSimulator,
357 bool iterateWellEquations(
const Simulator& ebosSimulator,
363 bool solveWellForTesting(
const Simulator& ebosSimulator,
WellState& well_state,
const GroupState& group_state,
366 Eval getPerfCellPressure(
const FluidState&
fs)
const;