35 GetPropType<TypeTag, Properties::Indices>,
36 GetPropType<TypeTag, Properties::Scalar>>
50 using typename Base::RateConverterType;
54 using Base::has_solvent;
55 using Base::has_polymer;
77 const int pvtRegionIdx,
81 const std::vector<PerforationData>& perf_data);
87 const std::vector< Scalar >&
B_avg,
90 void initPrimaryVariablesEvaluation()
override;
101 const std::vector<double>&
B_avg,
106 virtual void apply(
const BVector& x, BVector&
Ax)
const override;
108 virtual void apply(BVector&
r)
const override;
120 std::vector<double>& well_potentials,
131 virtual void calculateExplicitQuantities(
const Simulator& ebosSimulator,
135 virtual void updateProductivityIndex(
const Simulator& ebosSimulator,
143 void addWellContributions(SparseMatrixAdapter&
jacobian)
const override;
145 void addWellPressureEquations(PressureMatrix& mat,
147 const int pressureVarIndex,
149 const WellState& well_state)
const override;
154 std::optional<double>
160 std::vector<double> getPrimaryVars()
const override;
162 int setPrimaryVars(std::vector<double>::const_iterator it)
override;
170 std::vector<std::vector<double> > segment_fluid_initial_;
172 mutable int debug_cost_counter_ = 0;
176 const BVectorWell&
dwells,
183 void computeInitialSegmentFluids(
const Simulator&
ebos_simulator);
186 void computePerfCellPressDiffs(
const Simulator& ebosSimulator);
188 template<
class Value>
189 void computePerfRate(
const IntensiveQuantities&
int_quants,
196 std::vector<Value>&
cq_s,
201 template<
class Value>
212 const std::vector<Value>&
cmix_s,
213 std::vector<Value>&
cq_s,
220 void computeSegmentFluidProperties(
const Simulator& ebosSimulator,
224 template<
class Value>
225 void getMobility(
const Simulator& ebosSimulator,
227 std::vector<Value>&
mob,
230 void computeWellRatesAtBhpLimit(
const Simulator& ebosSimulator,
234 void computeWellRatesWithBhp(
const Simulator& ebosSimulator,
239 void computeWellRatesWithBhpIterations(
const Simulator& ebosSimulator,
244 std::vector<double> computeWellPotentialWithTHP(
249 virtual double getRefDensity()
const override;
251 virtual bool iterateWellEqWithControl(
const Simulator& ebosSimulator,
259 virtual bool iterateWellEqWithSwitching(
const Simulator& ebosSimulator,
267 virtual void assembleWellEqWithoutIteration(
const Simulator& ebosSimulator,
275 virtual void updateWaterThroughput(
const double dt,
WellState& well_state)
const override;
284 bool openCrossFlowAvoidSingularity(
const Simulator&
ebos_simulator)
const;
288 bool allDrawDownWrongDirection(
const Simulator&
ebos_simulator)
const;
292 std::optional<double> computeBhpAtThpLimitProd(
298 std::optional<double> computeBhpAtThpLimitInj(
const Simulator&
ebos_simulator,
virtual void updateWellStateWithTarget(const Simulator &ebos_simulator, const GroupState &group_state, WellState &well_state, DeferredLogger &deferred_logger) const override
updating the well state based the current control mode
Definition MultisegmentWell_impl.hpp:174
virtual std::vector< double > computeCurrentWellRates(const Simulator &ebosSimulator, DeferredLogger &deferred_logger) const override
Compute well rates based on current reservoir conditions and well variables.
Definition MultisegmentWell_impl.hpp:1979
void recoverWellSolutionAndUpdateWellState(const SummaryState &summary_state, const BVector &x, WellState &well_state, DeferredLogger &deferred_logger) override
using the solution x to recover the solution xw for wells and applying xw to update Well State
Definition MultisegmentWell_impl.hpp:255
virtual ConvergenceReport getWellConvergence(const SummaryState &summary_state, const WellState &well_state, const std::vector< double > &B_avg, DeferredLogger &deferred_logger, const bool relax_tolerance) const override
check whether the well equations get converged for this well
Definition MultisegmentWell_impl.hpp:195
virtual void computeWellPotentials(const Simulator &ebosSimulator, const WellState &well_state, std::vector< double > &well_potentials, DeferredLogger &deferred_logger) override
computing the well potentials for group control
Definition MultisegmentWell_impl.hpp:276