47 using Scalar =
typename FluidSystem::Scalar;
52 std::vector<Scalar> b_perf{};
53 std::vector<Scalar> rsmax_perf{};
54 std::vector<Scalar> rvmax_perf{};
55 std::vector<Scalar> rvwmax_perf{};
56 std::vector<Scalar> rswmax_perf{};
57 std::vector<Scalar> surf_dens_perf{};
62 std::function<Scalar(
int,
int)> getTemperature{};
63 std::function<Scalar(
int)> getSaltConcentration{};
64 std::function<int(
int)> pvtRegionIdx{};
65 std::function<Scalar(
int)> solventInverseFormationVolumeFactor{};
66 std::function<Scalar(
int)> solventRefDensity{};
71 std::function<void(
int,
const std::vector<int>&, std::vector<Scalar>&)> mobility{};
72 std::function<void(
int,
const std::vector<int>&, std::vector<Scalar>&)> densityInCell{};
97 Scalar
rho(
const typename std::vector<Scalar>::size_type i)
const
99 return (i < this->perf_densities_.size())
100 ? this->perf_densities_[i]
106 {
return perf_pressure_diffs_[perf]; }
108 using Eval =
typename WellInterfaceIndices<FluidSystem,Indices>::Eval;
111 Eval connectionRateBrine(Scalar& rate,
112 const Scalar vap_wat_rate,
113 const std::vector<EvalWell>& cq_s,
114 const std::variant<Scalar,EvalWell>& saltConcentration)
const;
116 Eval connectionRateFoam(
const std::vector<EvalWell>& cq_s,
117 const std::variant<Scalar,EvalWell>& foamConcentration,
118 const Phase transportPhase,
121 std::tuple<Eval,EvalWell>
122 connectionRatePolymer(Scalar& rate,
123 const std::vector<EvalWell>& cq_s,
124 const std::variant<Scalar,EvalWell>& polymerConcentration)
const;
126 std::tuple<Eval,Eval,Eval>
127 connectionRatesMICP(
const std::vector<EvalWell>& cq_s,
128 const std::variant<Scalar,EvalWell>& microbialConcentration,
129 const std::variant<Scalar,EvalWell>& oxygenConcentration,
130 const std::variant<Scalar,EvalWell>& ureaConcentration)
const;
132 std::tuple<Eval,EvalWell>
133 connectionRatezFraction(Scalar& rate,
134 const Scalar dis_gas_rate,
135 const std::vector<EvalWell>& cq_s,
136 const std::variant<Scalar, std::array<EvalWell,2>>& solventConcentration)
const;
139 void computePressureDelta();
143 void computeDensities(
const std::vector<Scalar>& perfComponentRates,
144 const Properties& props,
147 void computeDensitiesForStoppedProducer(
const DensityPropertyFunctions& prop_func);
150 calculatePerforationOutflow(
const std::vector<Scalar>& perfComponentRates)
const;
152 void initialiseConnectionMixture(
const int num_comp,
154 const std::vector<Scalar>& q_out_perf,
155 const std::vector<Scalar>& currentMixture,
156 std::vector<Scalar>& previousMixture)
const;
159 copyInPerforationRates(
const Properties& props,
164 std::vector<Scalar> perf_densities_;
165 std::vector<Scalar> perf_pressure_diffs_;
void computeProperties(const bool stop_or_zero_rate_target, const WellState< Scalar > &well_state, const DensityPropertyFunctions &prop_func, const Properties &props, DeferredLogger &deferred_logger)
Compute connection properties (densities, pressure drop, ...)
Definition StandardWellConnections.cpp:666
Scalar rho(const typename std::vector< Scalar >::size_type i) const
Returns density for specific perforation/connection.
Definition StandardWellConnections.hpp:97
DenseAd::DynamicEvaluation< Scalar, numStaticWellEq+Indices::numEq+1 > EvalWell
Evaluation for the well equations.
Definition StandardWellPrimaryVariables.hpp:87