mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -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)
|
, baseif_(baseif)
|
||||||
, linSys_(*this)
|
, linSys_(*this)
|
||||||
, primary_variables_(baseif)
|
, 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_depth_diffs_(baseif_.numPerfs(), 0.0)
|
||||||
, cell_perforation_pressure_diffs_(baseif_.numPerfs(), 0.0)
|
, cell_perforation_pressure_diffs_(baseif_.numPerfs(), 0.0)
|
||||||
{
|
{
|
||||||
|
@ -60,9 +60,10 @@ namespace Opm
|
|||||||
template<class FluidSystem, class Indices>
|
template<class FluidSystem, class Indices>
|
||||||
MultisegmentWellSegments<FluidSystem,Indices>::
|
MultisegmentWellSegments<FluidSystem,Indices>::
|
||||||
MultisegmentWellSegments(const int numSegments,
|
MultisegmentWellSegments(const int numSegments,
|
||||||
|
const int num_perfs_whole_mswell,
|
||||||
WellInterfaceGeneric<Scalar>& well)
|
WellInterfaceGeneric<Scalar>& well)
|
||||||
: perforations_(numSegments)
|
: perforations_(numSegments)
|
||||||
, perforation_depth_diffs_(well.numPerfs(), 0.0)
|
, perforation_depth_diffs_(num_perfs_whole_mswell, 0.0)
|
||||||
, inlets_(well.wellEcl().getSegments().size())
|
, inlets_(well.wellEcl().getSegments().size())
|
||||||
, depth_diffs_(numSegments, 0.0)
|
, depth_diffs_(numSegments, 0.0)
|
||||||
, densities_(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
|
// the current implementation is a temporary solution for now, it should be corrected from the parser
|
||||||
// side
|
// side
|
||||||
int i_perf_wells = 0;
|
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();
|
const auto& segment_set = well_.wellEcl().getSegments();
|
||||||
for (std::size_t perf = 0; perf < completion_set.size(); ++perf) {
|
for (std::size_t perf = 0; perf < completion_set.size(); ++perf) {
|
||||||
const Connection& connection = completion_set.get(perf);
|
const Connection& connection = completion_set.get(perf);
|
||||||
|
@ -49,6 +49,7 @@ class MultisegmentWellSegments
|
|||||||
|
|
||||||
public:
|
public:
|
||||||
MultisegmentWellSegments(const int numSegments,
|
MultisegmentWellSegments(const int numSegments,
|
||||||
|
const int num_perfs_whole_mswell,
|
||||||
WellInterfaceGeneric<Scalar>& well);
|
WellInterfaceGeneric<Scalar>& well);
|
||||||
|
|
||||||
void computeFluidProperties(const EvalWell& temperature,
|
void computeFluidProperties(const EvalWell& temperature,
|
||||||
@ -148,6 +149,9 @@ private:
|
|||||||
// depth difference between the segment and the perforation
|
// depth difference between the segment and the perforation
|
||||||
// or in another way, the depth difference between the perforation and
|
// or in another way, the depth difference between the perforation and
|
||||||
// the segment the perforation belongs to
|
// 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_;
|
std::vector<Scalar> perforation_depth_diffs_;
|
||||||
|
|
||||||
// the inlet segments for each segment. It is for convenience and efficiency reason
|
// the inlet segments for each segment. It is for convenience and efficiency reason
|
||||||
|
Loading…
Reference in New Issue
Block a user