24#ifndef OPM_WELL_BPH_THP_CALCULATOR_HEADER_INCLUDED
25#define OPM_WELL_BPH_THP_CALCULATOR_HEADER_INCLUDED
38class WellInterfaceGeneric;
60 const std::optional<double>& alq,
68 const double maxPerfPress,
88 const std::array<unsigned,3>&
active,
93 template<
class EvalWell>
94 EvalWell calculateBhpFromThp(
const WellState& well_state,
95 const std::vector<EvalWell>& rates,
103 template<
class ErrorPolicy>
104 std::optional<double>
105 computeBhpAtThpLimitInjImpl(
const std::function<std::vector<double>(
const double)>&
frates,
113 std::optional<double>
114 bhpMax(
const std::function<
double(
const double)>&
fflo,
116 const double maxPerfPress,
121 std::optional<double>
122 computeBhpAtThpLimit(
const std::function<std::vector<double>(
const double)>&
frates,
123 const std::function<
double(
const std::vector<double>)>&
fbhp,
124 const std::array<double, 2>&
range,
128 double getVfpBhpAdjustment(
const double bph_tab,
const double thp_limit)
const;
131 bool bisectBracket(
const std::function<
double(
const double)>&
eq,
132 const std::array<double, 2>&
range,
138 static bool bruteForceBracket(
const std::function<
double(
const double)>&
eq,
139 const std::array<double, 2>&
range,
143 double findThpFromBhpIteratively(
const std::function<
double(
const double,
const double)>&
thp_func,
Definition AquiferInterface.hpp:35
Definition DeferredLogger.hpp:57
Class for computing BHP limits.
Definition WellBhpThpCalculator.hpp:42
std::optional< double > computeBhpAtThpLimitProd(const std::function< std::vector< double >(const double)> &frates, const SummaryState &summary_state, const double maxPerfPress, const double rho, const double alq_value, const double thp_limit, DeferredLogger &deferred_logger) const
Compute BHP from THP limit for a producer.
Definition WellBhpThpCalculator.cpp:193
void updateThp(const double rho, const bool stop_or_zero_rate_target, const std::function< double()> &alq_value, const std::array< unsigned, 3 > &active, WellState &well_state, const SummaryState &summary_state, DeferredLogger &deferred_logger) const
Update THP.
Definition WellBhpThpCalculator.cpp:285
double mostStrictBhpFromBhpLimits(const SummaryState &summaryState) const
Obtain the most strict BHP from BHP limits.
Definition WellBhpThpCalculator.cpp:89
bool wellHasTHPConstraints(const SummaryState &summaryState) const
Checks if well has THP constraints.
Definition WellBhpThpCalculator.cpp:55
double getTHPConstraint(const SummaryState &summaryState) const
Get THP constraint for well.
Definition WellBhpThpCalculator.cpp:73
double calculateThpFromBhp(const std::vector< double > &rates, const double bhp, const double rho, const std::optional< double > &alq, const double thp_limit, DeferredLogger &deferred_logger) const
Calculates THP from BHP.
Definition WellBhpThpCalculator.cpp:105
std::optional< double > computeBhpAtThpLimitInj(const std::function< std::vector< double >(const double)> &frates, const SummaryState &summary_state, const double rho, const double 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:266
WellBhpThpCalculator(const WellInterfaceGeneric &well)
Constructor sets reference to well.
Definition WellBhpThpCalculator.hpp:45
Definition WellInterfaceGeneric.hpp:51
The state of a set of wells, tailored for use by the fully implicit blackoil simulator.
Definition WellState.hpp:60
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition BlackoilPhases.hpp:27