45class StandardWellConnections
48 using Scalar =
typename FluidSystem::Scalar;
49 using IndexTraits =
typename FluidSystem::IndexTraitsType;
54 std::vector<Scalar> b_perf{};
55 std::vector<Scalar> rsmax_perf{};
56 std::vector<Scalar> rvmax_perf{};
57 std::vector<Scalar> rvwmax_perf{};
58 std::vector<Scalar> rswmax_perf{};
59 std::vector<Scalar> surf_dens_perf{};
64 std::function<Scalar(
int,
int)> getTemperature{};
65 std::function<Scalar(
int)> getSaltConcentration{};
66 std::function<int(
int)> pvtRegionIdx{};
67 std::function<Scalar(
int)> solventInverseFormationVolumeFactor{};
68 std::function<Scalar(
int)> solventRefDensity{};
73 std::function<void(
int,
const std::vector<int>&, std::vector<Scalar>&)> mobility{};
74 std::function<void(
int,
const std::vector<int>&, std::vector<Scalar>&)> densityInCell{};
93 Scalar
rho(
const typename std::vector<Scalar>::size_type i)
const
95 return (i < this->perf_densities_.size())
96 ? this->perf_densities_[i]
102 {
return perf_pressure_diffs_[perf]; }
104 using Eval =
typename WellInterfaceIndices<FluidSystem, Indices>::Eval;
107 Eval connectionRateBrine(Scalar& rate,
108 const Scalar vap_wat_rate,
109 const std::vector<EvalWell>& cq_s,
110 const std::variant<Scalar,EvalWell>& saltConcentration)
const;
112 Eval connectionRateFoam(
const std::vector<EvalWell>& cq_s,
113 const std::variant<Scalar,EvalWell>& foamConcentration,
114 const Phase transportPhase,
117 std::tuple<Eval,EvalWell>
118 connectionRatePolymer(Scalar& rate,
119 const std::vector<EvalWell>& cq_s,
120 const std::variant<Scalar,EvalWell>& polymerConcentration)
const;
122 Eval connectionRateBioeffects(Scalar& rate,
123 const Scalar vap_wat_rate,
124 const std::vector<EvalWell>& cq_s,
125 const std::variant<Scalar,EvalWell>& microbialConcentration)
const;
127 std::tuple<Eval,Eval,Eval>
128 connectionRatesMICP(Scalar& rate_m,
131 const std::vector<EvalWell>& cq_s,
132 const std::variant<Scalar,EvalWell>& microbialConcentration,
133 const std::variant<Scalar,EvalWell>& oxygenConcentration,
134 const std::variant<Scalar,EvalWell>& ureaConcentration)
const;
136 std::tuple<Eval,EvalWell>
137 connectionRatezFraction(Scalar& rate,
138 const Scalar dis_gas_rate,
139 const std::vector<EvalWell>& cq_s,
140 const std::variant<Scalar, std::array<EvalWell,2>>& solventConcentration)
const;
143 void computePressureDelta();
147 void computeDensities(
const std::vector<Scalar>& perfComponentRates,
148 const Properties& props,
151 void computeDensitiesForStoppedProducer(
const DensityPropertyFunctions& prop_func);
154 calculatePerforationOutflow(
const std::vector<Scalar>& perfComponentRates)
const;
156 template <
typename Ix>
157 void initialiseConnectionMixture(
const int num_comp,
159 const std::optional<Ix> preferredPhaseIdx,
160 const std::vector<Scalar>& q_out_perf,
161 const std::vector<Scalar>& currentMixture,
162 std::vector<Scalar>& previousMixture)
const;
165 copyInPerforationRates(
const Properties& props,
170 std::vector<Scalar> perf_densities_;
171 std::vector<Scalar> perf_pressure_diffs_;
void computeProperties(const bool stop_or_zero_rate_target, const WellState< Scalar, IndexTraits > &well_state, const DensityPropertyFunctions &prop_func, const Properties &props, DeferredLogger &deferred_logger)
Compute connection properties (densities, pressure drop, ...).
Definition StandardWellConnections.cpp:669