44class MultisegmentWellSegments
47 using Scalar =
typename FluidSystem::Scalar;
48 using EvalWell =
typename PrimaryVariables::EvalWell;
49 using IndexTraits =
typename FluidSystem::IndexTraitsType;
52 MultisegmentWellSegments(
const int numSegments,
56 void computeFluidProperties(
const EvalWell& temperature,
57 const EvalWell& saltConcentration,
58 const PrimaryVariables& primary_variables,
65 EvalWell getHydroPressureLoss(
const int seg,
66 const int seg_side)
const;
70 const int local_perf_index)
const;
72 EvalWell getSurfaceVolume(
const EvalWell& temperature,
73 const EvalWell& saltConcentration,
74 const PrimaryVariables& primary_variables,
75 const int pvt_region_index,
76 const int seg_idx)
const;
78 EvalWell getFrictionPressureLoss(
const int seg,
79 const bool extra_reverse_flow_derivatives =
false)
const;
82 EvalWell pressureDropSpiralICD(
const int seg,
83 const bool extra_reverse_flow_derivatives =
false)
const;
86 EvalWell pressureDropAutoICD(
const int seg,
87 const UnitSystem& unit_system,
88 const bool extra_reverse_flow_derivatives =
false)
const;
91 EvalWell pressureDropValve(
const int seg,
92 const SummaryState& st,
93 const bool extra_reverse_flow_derivatives =
false)
const;
96 EvalWell accelerationPressureLossContribution(
const int seg,
98 const bool extra_reverse_flow_derivatives =
false)
const;
100 const std::vector<std::vector<int>>& inlets()
const
105 const std::vector<int>& inlets(
const int seg)
const
110 const std::vector<std::vector<int>>& perforations()
const
112 return perforations_;
115 int upwinding_segment(
const int seg)
const
117 return upwinding_segments_[seg];
120 Scalar getRefDensity()
const
122 return densities_[0].value();
125 const EvalWell& density(
const int seg)
const
127 return densities_[seg];
130 Scalar local_perforation_depth_diff(
const int local_perf_index)
const
132 return local_perforation_depth_diffs_[local_perf_index];
147 std::vector<std::vector<int>> perforations_;
155 std::vector<Scalar> local_perforation_depth_diffs_;
158 std::vector<std::vector<int>> inlets_;
160 std::vector<Scalar> depth_diffs_;
164 std::vector<EvalWell> densities_;
167 std::vector<EvalWell> mass_rates_;
170 std::vector<EvalWell> viscosities_;
173 std::vector<int> upwinding_segments_;
175 std::vector<std::vector<EvalWell>> phase_densities_;
176 std::vector<std::vector<EvalWell>> phase_fractions_;
177 std::vector<std::vector<EvalWell>> phase_viscosities_;
181 void copyPhaseDensities(
const unsigned phaseIdx,
182 const std::size_t stride,
185 Scalar mixtureDensity(
const int seg)
const;
186 Scalar mixtureDensityWithExponents(
const int seg)
const;
187 Scalar mixtureDensityWithExponents(
const AutoICD& aicd,
const int seg)
const;
Scalar getPressureDiffSegLocalPerf(const int seg, const int local_perf_index) const
Pressure difference between segment and perforation.
Definition MultisegmentWellSegments.cpp:340