make WellSegments constructible from variables

also add accessors and equality operator
This commit is contained in:
Arne Morten Kvarving
2019-12-12 11:12:46 +01:00
parent 6ea8dd8104
commit d1d2414f4e
2 changed files with 46 additions and 1 deletions

View File

@@ -62,6 +62,15 @@ namespace Opm {
WellSegments() = default;
WellSegments(const std::string& wname,
double depthTopSeg,
double lengthTopSeg,
double volumeTopSeg,
LengthDepth lenDepType,
CompPressureDrop compDrop,
MultiPhaseModel multiPhase,
const std::vector<Segment>& segments,
const std::map<int,int>& segmentNumberIdx);
const std::string& wellName() const;
int size() const;
@@ -70,6 +79,7 @@ namespace Opm {
double volumeTopSegment() const;
CompPressureDrop compPressureDrop() const;
LengthDepth lengthDepthType() const;
MultiPhaseModel multiPhaseModel() const;
// mapping the segment number to the index in the vector of segments
@@ -92,6 +102,8 @@ namespace Opm {
// it returns true if there is no error encountered during the update
bool updateWSEGSICD(const std::vector<std::pair<int, SpiralICD> >& sicd_pairs);
const std::vector<Segment>& segments() const;
const std::map<int,int>& segmentNumberIndex() const;
bool updateWSEGVALV(const std::vector<std::pair<int, Valve> >& valve_pairs);

View File

@@ -36,6 +36,27 @@
namespace Opm {
WellSegments::WellSegments(const std::string& wname,
double depthTopSeg,
double lengthTopSeg,
double volumeTopSeg,
LengthDepth lenDepType,
CompPressureDrop compDrop,
MultiPhaseModel multiPhase,
const std::vector<Segment>& segments,
const std::map<int,int>& segmentNumberIdx)
: m_well_name(wname)
, m_depth_top(depthTopSeg)
, m_length_top(lengthTopSeg)
, m_volume_top(volumeTopSeg)
, m_length_depth_type(lenDepType)
, m_comp_pressure_drop(compDrop)
, m_multiphase_model(multiPhase)
, m_segments(segments)
, segment_number_to_index(segmentNumberIdx)
{
}
const std::string& WellSegments::wellName() const {
return m_well_name;
}
@@ -560,6 +581,18 @@ WellSegments::MultiPhaseModel WellSegments::MultiPhaseModelFromString(const std:
} else {
throw std::invalid_argument("Unknown enum string_value: " + string_value + " for MultiPhaseModel");
}
}
WellSegments::LengthDepth WellSegments::lengthDepthType() const {
return m_length_depth_type;
}
const std::vector<Segment>& WellSegments::segments() const {
return m_segments;
}
const std::map<int,int>& WellSegments::segmentNumberIndex() const {
return segment_number_to_index;
}
}
}