24#ifndef OPM_WELL_BPH_THP_CALCULATOR_HEADER_INCLUDED
25#define OPM_WELL_BPH_THP_CALCULATOR_HEADER_INCLUDED
36template<
typename Scalar,
typename IndexTraits>
class WellInterfaceGeneric;
37template<
typename Scalar,
typename IndexTraits>
class WellState;
40template<
typename Scalar,
typename IndexTraits>
59 const std::optional<Scalar>& alq,
67 const Scalar maxPerfPress,
90 template<
class EvalWell>
92 const std::vector<EvalWell>& rates,
101 const Scalar rho)
const;
105 const std::vector<Scalar>& rates,
108 std::optional<Scalar>
111 const std::vector<Scalar>& rates,
115 std::pair<Scalar, Scalar>
122 const std::array<Scalar, 2>&
range,
134 template<
class ErrorPolicy>
135 std::optional<Scalar>
136 computeBhpAtThpLimitInjImpl(
const std::function<std::vector<Scalar>(
const Scalar)>&
frates,
144 std::optional<Scalar>
145 bhpMax(
const std::function<Scalar(
const Scalar)>&
fflo,
147 const Scalar maxPerfPress,
152 std::optional<Scalar>
153 computeBhpAtThpLimit(
const std::function<std::vector<Scalar>(
const Scalar)>&
frates,
154 const std::function<Scalar(
const std::vector<Scalar>)>&
fbhp,
155 const std::array<Scalar, 2>&
range,
159 Scalar getVfpBhpAdjustment(
const Scalar
bph_tab,
const Scalar
thp_limit)
const;
162 bool bisectBracket(
const std::function<Scalar(
const Scalar)>&
eq,
163 const std::array<Scalar, 2>&
range,
169 static bool bruteForceBracket(
const std::function<Scalar(
const Scalar)>&
eq,
170 const std::array<Scalar, 2>&
range,
175 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
WellBhpThpCalculator(const WellInterfaceGeneric< Scalar, IndexTraits > &well)
Constructor sets reference to well.
Definition WellBhpThpCalculator.hpp:44
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
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:197
Scalar mostStrictBhpFromBhpLimits(const SummaryState &summaryState) const
Obtain the most strict BHP from BHP limits.
Definition WellBhpThpCalculator.cpp:93
void updateThp(const Scalar rho, const std::function< Scalar()> &alq_value, WellState< Scalar, IndexTraits > &well_state, const SummaryState &summary_state, DeferredLogger &deferred_logger) const
Update THP.
Definition WellBhpThpCalculator.cpp:301
Scalar getTHPConstraint(const SummaryState &summaryState) const
Get THP constraint for well.
Definition WellBhpThpCalculator.cpp:75
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:1011
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:280
bool wellHasTHPConstraints(const SummaryState &summaryState) const
Checks if well has THP constraints.
Definition WellBhpThpCalculator.cpp:55
Definition WellInterfaceGeneric.hpp:53
The state of a set of wells, tailored for use by the fully implicit blackoil simulator.
Definition WellState.hpp:66
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition blackoilbioeffectsmodules.hh:43
constexpr auto getPropValue()
get the value data member of a property
Definition propertysystem.hh:240