59 const std::optional<Scalar>& alq,
60 const Scalar thp_limit,
66 const SummaryState& summary_state,
67 const Scalar maxPerfPress,
69 const Scalar alq_value,
70 const Scalar thp_limit,
76 const SummaryState& summary_state,
78 const Scalar flo_rel_tol,
79 const int max_iteration,
80 const bool throwOnError,
85 const std::function<Scalar()>& alq_value,
86 const std::array<unsigned,3>& active,
88 const SummaryState& summary_state,
91 template<
class EvalWell>
93 const std::vector<EvalWell>& rates,
95 const SummaryState& summaryState,
101 const SummaryState& summaryState,
102 const Scalar rho)
const;
106 const std::vector<Scalar>& rates,
107 const SummaryState& summaryState)
const;
109 std::optional<Scalar>
112 const std::vector<Scalar>& rates,
114 const SummaryState& summaryState)
const;
116 std::pair<Scalar, Scalar>
119 const SummaryState& summary_state)
const;
123 const std::array<Scalar, 2>& range,
124 Scalar& low, Scalar& high,
125 std::optional<Scalar>& approximate_solution,
131 Scalar& min_thp, Scalar& max_thp);
135 template<
class ErrorPolicy>
136 std::optional<Scalar>
137 computeBhpAtThpLimitInjImpl(
const std::function<std::vector<Scalar>(
const Scalar)>& frates,
138 const SummaryState& summary_state,
140 const Scalar flo_rel_tol,
141 const int max_iteration,
145 std::optional<Scalar>
146 bhpMax(
const std::function<Scalar(
const Scalar)>& fflo,
147 const Scalar bhp_limit,
148 const Scalar maxPerfPress,
149 const Scalar vfp_flo_front,
153 std::optional<Scalar>
154 computeBhpAtThpLimit(
const std::function<std::vector<Scalar>(
const Scalar)>& frates,
155 const std::function<Scalar(
const std::vector<Scalar>)>& fbhp,
156 const std::array<Scalar, 2>& range,
160 Scalar getVfpBhpAdjustment(
const Scalar bph_tab,
const Scalar thp_limit)
const;
163 bool bisectBracket(
const std::function<Scalar(
const Scalar)>& eq,
164 const std::array<Scalar, 2>& range,
165 Scalar& low, Scalar& high,
166 std::optional<Scalar>& approximate_solution,
170 static bool bruteForceBracket(
const std::function<Scalar(
const Scalar)>& eq,
171 const std::array<Scalar, 2>& range,
172 Scalar& low, Scalar& high,
176 Scalar findThpFromBhpIteratively(
const std::function<Scalar(
const Scalar,
const Scalar)>& thp_func,
178 const Scalar thp_limit,
static bool bruteForceBracketCommonTHP(const std::function< Scalar(const Scalar)> &eq, const std::array< Scalar, 2 > &range, Scalar &low, Scalar &high, std::optional< Scalar > &approximate_solution, const Scalar &limit, DeferredLogger &deferred_logger)
Find limits using brute-force solver.
Definition WellBhpThpCalculator.cpp:1010
std::optional< Scalar > computeBhpAtThpLimitProd(const std::function< std::vector< Scalar >(const Scalar)> &frates, const SummaryState &summary_state, const Scalar maxPerfPress, const Scalar rho, const Scalar alq_value, const Scalar thp_limit, DeferredLogger &deferred_logger) const
Compute BHP from THP limit for a producer.
Definition WellBhpThpCalculator.cpp:202
void updateThp(const Scalar rho, const std::function< Scalar()> &alq_value, const std::array< unsigned, 3 > &active, WellState< Scalar > &well_state, const SummaryState &summary_state, DeferredLogger &deferred_logger) const
Update THP.
Definition WellBhpThpCalculator.cpp:306
std::optional< Scalar > computeBhpAtThpLimitInj(const std::function< std::vector< Scalar >(const Scalar)> &frates, const SummaryState &summary_state, const Scalar rho, const Scalar flo_rel_tol, const int max_iteration, const bool throwOnError, DeferredLogger &deferred_logger) const
Compute BHP from THP limit for an injector.
Definition WellBhpThpCalculator.cpp:285
Scalar calculateThpFromBhp(const std::vector< Scalar > &rates, const Scalar bhp, const Scalar rho, const std::optional< Scalar > &alq, const Scalar thp_limit, DeferredLogger &deferred_logger) const
Calculates THP from BHP.
Definition WellBhpThpCalculator.cpp:111