mirror of
https://github.com/OPM/opm-simulators.git
synced 2025-02-25 18:55:30 -06:00
documenting the class WellMultiSegment
This commit is contained in:
@@ -51,43 +51,88 @@ namespace Opm
|
|||||||
typedef Eigen::Array<double, Eigen::Dynamic, 1> V;
|
typedef Eigen::Array<double, Eigen::Dynamic, 1> V;
|
||||||
typedef Eigen::SparseMatrix<double> M;
|
typedef Eigen::SparseMatrix<double> M;
|
||||||
|
|
||||||
|
/// Constructor of WellMultiSegment
|
||||||
|
/// \param[in] well information from EclipseState
|
||||||
|
/// \param[in] current time step
|
||||||
|
/// \param[in[ pointer to Wells structure, to be removed eventually
|
||||||
WellMultiSegment(WellConstPtr well, size_t time_step, const Wells* wells);
|
WellMultiSegment(WellConstPtr well, size_t time_step, const Wells* wells);
|
||||||
|
|
||||||
|
/// Well name.
|
||||||
const std::string& name() const;
|
const std::string& name() const;
|
||||||
|
|
||||||
|
/// Flag indicating if the well is a multi-segment well.
|
||||||
bool isMultiSegmented() const;
|
bool isMultiSegmented() const;
|
||||||
|
|
||||||
|
/// Number of the perforations.
|
||||||
int numberOfPerforations() const;
|
int numberOfPerforations() const;
|
||||||
|
|
||||||
|
/// Number of the segments.
|
||||||
int numberOfSegments() const;
|
int numberOfSegments() const;
|
||||||
|
|
||||||
|
/// Components of the pressure drop invloved.
|
||||||
|
/// HFA Hydrostatic + friction + acceleration
|
||||||
|
/// HF- Hydrostatic + friction
|
||||||
|
/// H-- Hydrostatic only.
|
||||||
std::string compPressureDrop() const;
|
std::string compPressureDrop() const;
|
||||||
|
|
||||||
|
/// Well control.
|
||||||
const WellControls* wellControls() const;
|
const WellControls* wellControls() const;
|
||||||
|
|
||||||
|
/// Component fractions for each well.
|
||||||
const std::vector<double>& compFrac() const;
|
const std::vector<double>& compFrac() const;
|
||||||
|
|
||||||
|
/// Number of phases.
|
||||||
int numberOfPhases() const;
|
int numberOfPhases() const;
|
||||||
|
|
||||||
|
/// Well type.
|
||||||
WellType wellType() const;
|
WellType wellType() const;
|
||||||
|
|
||||||
|
/// Well productivity index.
|
||||||
const std::vector<double>& wellIndex() const;
|
const std::vector<double>& wellIndex() const;
|
||||||
|
|
||||||
|
/// Depth of the perforations.
|
||||||
const std::vector<double>& perfDepth() const;
|
const std::vector<double>& perfDepth() const;
|
||||||
|
|
||||||
|
/// Indices of the grid blocks that perforations are completed in.
|
||||||
const std::vector<int>& wellCells() const;
|
const std::vector<int>& wellCells() const;
|
||||||
|
|
||||||
|
/// Indices of the gird blocks that segments locate at.
|
||||||
const std::vector<int>& segmentCells() const;
|
const std::vector<int>& segmentCells() const;
|
||||||
|
|
||||||
|
/// Outlet segments, a segment (except top segment) can only have one outlet segment.
|
||||||
|
/// For top segment, its outlet segments is -1 always, which means no outlet segment for top segment.
|
||||||
const std::vector<int>& outletSegment() const;
|
const std::vector<int>& outletSegment() const;
|
||||||
|
|
||||||
|
/// Inlet segments. a segment can have more than one inlet segments.
|
||||||
const std::vector<std::vector<int>>& inletSegments() const;
|
const std::vector<std::vector<int>>& inletSegments() const;
|
||||||
|
|
||||||
|
/// The length of the segment nodes down the wellbore from the reference point.
|
||||||
const std::vector<double>& segmentLength() const;
|
const std::vector<double>& segmentLength() const;
|
||||||
|
|
||||||
|
/// The depth of the segment nodes.
|
||||||
const std::vector<double>& segmentDepth() const;
|
const std::vector<double>& segmentDepth() const;
|
||||||
|
|
||||||
|
/// Tubing internal diameter.
|
||||||
const std::vector<double>& segmentDiameter() const;
|
const std::vector<double>& segmentDiameter() const;
|
||||||
|
|
||||||
|
/// Cross-sectional area.
|
||||||
const std::vector<double>& segmentCrossArea() const;
|
const std::vector<double>& segmentCrossArea() const;
|
||||||
|
|
||||||
|
/// Effective absolute roughness of the tube.
|
||||||
const std::vector<double>& segmentRoughness() const;
|
const std::vector<double>& segmentRoughness() const;
|
||||||
|
|
||||||
|
/// Volume of segment.
|
||||||
const std::vector<double>& segmentVolume() const;
|
const std::vector<double>& segmentVolume() const;
|
||||||
|
|
||||||
|
/// Perforations related to each segment.
|
||||||
const std::vector<std::vector<int>>& segmentPerforations() const;
|
const std::vector<std::vector<int>>& segmentPerforations() const;
|
||||||
|
|
||||||
|
/// Struct for the well operator matrices.
|
||||||
|
/// All the operator matrics only apply to the one specifi well.
|
||||||
struct WellOps {
|
struct WellOps {
|
||||||
M s2p; // segment -> perf (scatter)
|
M s2p; // segment -> perf (scatter)
|
||||||
M p2s; // perf -> segment (gather)
|
M p2s; // perf -> segment (gather)
|
||||||
M p2s_average; // perf -> segment (avarage)
|
M p2s_average; // perf -> segment (avarage)
|
||||||
// M w2p; // well -> perf (scatter)
|
|
||||||
// M p2w; // perf - > well (gather)
|
|
||||||
// but since only one well, so it is just an arrary
|
|
||||||
// not needed now.
|
|
||||||
// M w2s; // well -> segment (scatter)
|
|
||||||
M s2s_gather; // segment -> segment (in an accumlative way)
|
M s2s_gather; // segment -> segment (in an accumlative way)
|
||||||
// means the outlet segments will gather all the contribution
|
// means the outlet segments will gather all the contribution
|
||||||
// from all the inlet segments in a recurisive way
|
// from all the inlet segments in a recurisive way
|
||||||
@@ -96,6 +141,7 @@ namespace Opm
|
|||||||
M s2s_outlet; // segment -> its outlet segment
|
M s2s_outlet; // segment -> its outlet segment
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/// Well operator matrics
|
||||||
const WellOps& wellOps() const;
|
const WellOps& wellOps() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
Reference in New Issue
Block a user