mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-01-11 00:41:56 -06:00
Store all (global) perforations depths and differences in perforation_depth_diffs_ and well.perfDepth()
This commit is contained in:
parent
dadfe3a634
commit
8a01b89ec9
@ -59,7 +59,7 @@ MultisegmentWellEval(WellInterfaceIndices<FluidSystem,Indices>& baseif, const Pa
|
||||
, baseif_(baseif)
|
||||
, linSys_(*this)
|
||||
, primary_variables_(baseif)
|
||||
, segments_(this->numberOfSegments(), baseif)
|
||||
, segments_(this->numberOfSegments(), pw_info.communication().sum(baseif.numPerfs()), baseif)
|
||||
, cell_perforation_depth_diffs_(baseif_.numPerfs(), 0.0)
|
||||
, cell_perforation_pressure_diffs_(baseif_.numPerfs(), 0.0)
|
||||
{
|
||||
|
@ -60,9 +60,10 @@ namespace Opm
|
||||
template<class FluidSystem, class Indices>
|
||||
MultisegmentWellSegments<FluidSystem,Indices>::
|
||||
MultisegmentWellSegments(const int numSegments,
|
||||
const int num_perfs_whole_mswell,
|
||||
WellInterfaceGeneric<Scalar>& well)
|
||||
: perforations_(numSegments)
|
||||
, perforation_depth_diffs_(well.numPerfs(), 0.0)
|
||||
, perforation_depth_diffs_(num_perfs_whole_mswell, 0.0)
|
||||
, inlets_(well.wellEcl().getSegments().size())
|
||||
, depth_diffs_(numSegments, 0.0)
|
||||
, densities_(numSegments, 0.0)
|
||||
@ -85,7 +86,8 @@ MultisegmentWellSegments(const int numSegments,
|
||||
// the current implementation is a temporary solution for now, it should be corrected from the parser
|
||||
// side
|
||||
int i_perf_wells = 0;
|
||||
well.perfDepth().resize(well_.numPerfs(), 0.);
|
||||
// The perfDepth vector will contain the depths of all perforations across all processes of this well!
|
||||
well.perfDepth().resize(num_perfs_whole_mswell, 0.0);
|
||||
const auto& segment_set = well_.wellEcl().getSegments();
|
||||
for (std::size_t perf = 0; perf < completion_set.size(); ++perf) {
|
||||
const Connection& connection = completion_set.get(perf);
|
||||
|
@ -49,6 +49,7 @@ class MultisegmentWellSegments
|
||||
|
||||
public:
|
||||
MultisegmentWellSegments(const int numSegments,
|
||||
const int num_perfs_whole_mswell,
|
||||
WellInterfaceGeneric<Scalar>& well);
|
||||
|
||||
void computeFluidProperties(const EvalWell& temperature,
|
||||
@ -148,6 +149,9 @@ private:
|
||||
// depth difference between the segment and the perforation
|
||||
// or in another way, the depth difference between the perforation and
|
||||
// the segment the perforation belongs to
|
||||
// This vector contains the depth differences for *all* perforations across all processes
|
||||
// that this well lies on, its size is well.wellEcl().getConnections().size(),
|
||||
// also it works with *global* perforation indices!
|
||||
std::vector<Scalar> perforation_depth_diffs_;
|
||||
|
||||
// the inlet segments for each segment. It is for convenience and efficiency reason
|
||||
|
Loading…
Reference in New Issue
Block a user