46class MultisegmentWellEval :
public MultisegmentWellGeneric<typename FluidSystem::Scalar,
47 typename FluidSystem::IndexTraitsType>
50 using Scalar =
typename FluidSystem::Scalar;
51 using IndexTraits =
typename FluidSystem::IndexTraitsType;
53 static constexpr int numWellEq = PrimaryVariables::numWellEq;
54 static constexpr int SPres = PrimaryVariables::SPres;
55 static constexpr int WQTotal = PrimaryVariables::WQTotal;
60 using BVector =
typename Equations::BVector;
61 using BVectorWell =
typename Equations::BVectorWell;
66 using EvalWell =
typename PrimaryVariables::EvalWell;
67 using Eval = DenseAd::Evaluation<Scalar, Indices::numEq>;
78 void initMatrixAndVectors();
80 void assembleDefaultPressureEq(
const int seg,
82 const bool use_average_density);
85 void assembleICDPressureEq(
const int seg,
86 const UnitSystem& unit_system,
88 const SummaryState& summary_state,
89 const bool use_average_density,
92 void assembleAccelerationAndHydroPressureLosses(
const int seg,
94 const bool use_average_density);
97 void assemblePressureEq(
const int seg,
98 const UnitSystem& unit_system,
100 const SummaryState& summary_state,
101 const bool use_average_density,
106 const std::vector<Scalar>& B_avg,
108 const Scalar max_residual_allowed,
109 const Scalar tolerance_wells,
110 const Scalar relaxed_inner_tolerance_flow_ms_well,
111 const Scalar tolerance_pressure_ms_wells,
112 const Scalar relaxed_inner_tolerance_pressure_ms_well,
113 const bool relax_tolerance,
114 const bool well_is_stopped)
const;
116 std::pair<bool, std::vector<Scalar> >
117 getFiniteWellResiduals(
const std::vector<Scalar>& B_avg,
121 const Scalar tolerance_wells,
122 const Scalar tolerance_pressure_ms_wells,
126 const std::vector<Scalar>& residuals,
127 const Scalar tolerance_wells,
128 const Scalar tolerance_pressure_ms_wells,
131 void assembleAccelerationPressureLoss(
const int seg,
134 EvalWell pressureDropAutoICD(
const int seg,
135 const UnitSystem& unit_system)
const;
138 EvalWell extendEval(
const Eval& in)
const;
147 std::vector<Scalar> cell_perforation_depth_diffs_;
150 std::vector<Scalar> cell_perforation_pressure_diffs_;
ConvergenceReport getWellConvergence(const WellState< Scalar, IndexTraits > &well_state, const std::vector< Scalar > &B_avg, DeferredLogger &deferred_logger, const Scalar max_residual_allowed, const Scalar tolerance_wells, const Scalar relaxed_inner_tolerance_flow_ms_well, const Scalar tolerance_pressure_ms_wells, const Scalar relaxed_inner_tolerance_pressure_ms_well, const bool relax_tolerance, const bool well_is_stopped) const
check whether the well equations get converged for this well
Definition MultisegmentWellEval.cpp:82