24#ifndef OPM_WELL_BPH_THP_CALCULATOR_HEADER_INCLUDED
25#define OPM_WELL_BPH_THP_CALCULATOR_HEADER_INCLUDED
36template<
class Scalar>
class WellInterfaceGeneric;
37template<
class Scalar>
class WellState;
59 const std::optional<Scalar>& alq,
67 const Scalar maxPerfPress,
86 const std::array<unsigned,3>& active,
91 template<
class EvalWell>
93 const std::vector<EvalWell>& rates,
102 const Scalar rho)
const;
106 const std::vector<Scalar>& rates,
109 std::optional<Scalar>
112 const std::vector<Scalar>& rates,
116 std::pair<Scalar, Scalar>
123 const std::array<Scalar, 2>&
range,
135 template<
class ErrorPolicy>
136 std::optional<Scalar>
137 computeBhpAtThpLimitInjImpl(
const std::function<std::vector<Scalar>(
const Scalar)>&
frates,
145 std::optional<Scalar>
146 bhpMax(
const std::function<Scalar(
const Scalar)>&
fflo,
148 const Scalar maxPerfPress,
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,
170 static bool bruteForceBracket(
const std::function<Scalar(
const Scalar)>&
eq,
171 const std::array<Scalar, 2>&
range,
176 Scalar findThpFromBhpIteratively(
const std::function<Scalar(
const Scalar,
const Scalar)>&
thp_func,
Definition DeferredLogger.hpp:57
Class for computing BHP limits.
Definition WellBhpThpCalculator.hpp:41
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
bool wellHasTHPConstraints(const SummaryState &summaryState) const
Checks if well has THP constraints.
Definition WellBhpThpCalculator.cpp:55
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
Scalar getTHPConstraint(const SummaryState &summaryState) const
Get THP constraint for well.
Definition WellBhpThpCalculator.cpp:75
WellBhpThpCalculator(const WellInterfaceGeneric< Scalar > &well)
Constructor sets reference to well.
Definition WellBhpThpCalculator.hpp:44
Scalar mostStrictBhpFromBhpLimits(const SummaryState &summaryState) const
Obtain the most strict BHP from BHP limits.
Definition WellBhpThpCalculator.cpp:93
Definition WellInterfaceGeneric.hpp:52
The state of a set of wells, tailored for use by the fully implicit blackoil simulator.
Definition WellState.hpp:62
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition blackoilboundaryratevector.hh:37
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:242