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,
61 const double thp_limit,
67 const SummaryState& summary_state,
68 const double maxPerfPress,
70 const double alq_value,
71 const double thp_limit,
77 const SummaryState& summary_state,
79 const double flo_rel_tol,
80 const int max_iteration,
81 const bool throwOnError,
86 const bool stop_or_zero_rate_target,
87 const std::function<
double()>& alq_value,
88 const std::array<unsigned,3>& active,
90 const SummaryState& summary_state,
93 template<
class EvalWell>
94 EvalWell calculateBhpFromThp(
const WellState& well_state,
95 const std::vector<EvalWell>& rates,
97 const SummaryState& summaryState,
101 double calculateMinimumBhpFromThp(
const WellState& well_state,
103 const SummaryState& summaryState,
104 const double rho)
const;
106 bool isStableSolution(
const WellState& well_state,
108 const std::vector<double>& rates,
109 const SummaryState& summaryState)
const;
111 std::optional<double>
112 estimateStableBhp (
const WellState& well_state,
114 const std::vector<double>& rates,
116 const SummaryState& summaryState)
const;
118 std::pair<double, double>
121 const SummaryState& summary_state)
const;
125 template<
class ErrorPolicy>
126 std::optional<double>
127 computeBhpAtThpLimitInjImpl(
const std::function<std::vector<double>(
const double)>& frates,
128 const SummaryState& summary_state,
130 const double flo_rel_tol,
131 const int max_iteration,
135 std::optional<double>
136 bhpMax(
const std::function<
double(
const double)>& fflo,
137 const double bhp_limit,
138 const double maxPerfPress,
139 const double vfp_flo_front,
143 std::optional<double>
144 computeBhpAtThpLimit(
const std::function<std::vector<double>(
const double)>& frates,
145 const std::function<
double(
const std::vector<double>)>& fbhp,
146 const std::array<double, 2>& range,
150 double getVfpBhpAdjustment(
const double bph_tab,
const double thp_limit)
const;
153 bool bisectBracket(
const std::function<
double(
const double)>& eq,
154 const std::array<double, 2>& range,
155 double& low,
double& high,
156 std::optional<double>& approximate_solution,
160 static bool bruteForceBracket(
const std::function<
double(
const double)>& eq,
161 const std::array<double, 2>& range,
162 double& low,
double& high,
165 double findThpFromBhpIteratively(
const std::function<
double(
const double,
const double)>& thp_func,
167 const double thp_limit,
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:61
This file contains a set of helper functions used by VFPProd / VFPInj.
Definition BlackoilPhases.hpp:27