mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Improve MSW export including multi lateral wells
Based on branch https://github.com/OPM/ResInsight/tree/system-msw-refactor - Move completion settings to property of well path - Rename to RimFishbones - Export implicit COMPSEGS for fishbones main bore - Add valve for each branch - Increase version number to be able to handle import of legacy project files
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
#pragma once
|
||||
|
||||
#include "RicMswSubSegment.h"
|
||||
#include "RicMswBranch.h"
|
||||
|
||||
#include "RigCompletionData.h"
|
||||
|
||||
@@ -33,38 +33,31 @@ class RimWellPathValve;
|
||||
//==================================================================================================
|
||||
///
|
||||
//==================================================================================================
|
||||
class RicMswCompletion
|
||||
class RicMswCompletion : public RicMswBranch
|
||||
{
|
||||
public:
|
||||
RicMswCompletion( const QString& label, size_t index = cvf::UNDEFINED_SIZE_T, int branchNumber = cvf::UNDEFINED_INT );
|
||||
RicMswCompletion( const QString& label,
|
||||
const RimWellPath* wellPath,
|
||||
double startMD,
|
||||
double startTVD,
|
||||
size_t index = cvf::UNDEFINED_SIZE_T );
|
||||
|
||||
virtual RigCompletionData::CompletionType completionType() const = 0;
|
||||
|
||||
const QString& label() const;
|
||||
size_t index() const;
|
||||
int branchNumber() const;
|
||||
void setBranchNumber( int branchNumber );
|
||||
|
||||
void addSubSegment( std::shared_ptr<RicMswSubSegment> subSegment );
|
||||
|
||||
std::vector<std::shared_ptr<RicMswSubSegment>>& subSegments();
|
||||
const std::vector<std::shared_ptr<RicMswSubSegment>>& subSegments() const;
|
||||
|
||||
void setLabel( const QString& label );
|
||||
size_t index() const;
|
||||
|
||||
private:
|
||||
QString m_label;
|
||||
size_t m_index;
|
||||
int m_branchNumber;
|
||||
|
||||
std::vector<std::shared_ptr<RicMswSubSegment>> m_subSegments;
|
||||
size_t m_index;
|
||||
};
|
||||
|
||||
class RicMswFishbones : public RicMswCompletion
|
||||
{
|
||||
public:
|
||||
RicMswFishbones( const QString& label, size_t index = cvf::UNDEFINED_SIZE_T, int branchNumber = cvf::UNDEFINED_INT )
|
||||
: RicMswCompletion( label, index, branchNumber )
|
||||
RicMswFishbones( const QString& label,
|
||||
const RimWellPath* wellPath,
|
||||
double startMD,
|
||||
double startTVD,
|
||||
size_t index = cvf::UNDEFINED_SIZE_T )
|
||||
: RicMswCompletion( label, wellPath, startMD, startTVD, index )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -77,7 +70,11 @@ public:
|
||||
class RicMswFracture : public RicMswCompletion
|
||||
{
|
||||
public:
|
||||
RicMswFracture( const QString& label, size_t index = cvf::UNDEFINED_SIZE_T, int branchNumber = cvf::UNDEFINED_INT );
|
||||
RicMswFracture( const QString& label,
|
||||
const RimWellPath* wellPath,
|
||||
double startMD,
|
||||
double startTVD,
|
||||
size_t index = cvf::UNDEFINED_SIZE_T );
|
||||
RigCompletionData::CompletionType completionType() const override;
|
||||
};
|
||||
|
||||
@@ -87,7 +84,11 @@ public:
|
||||
class RicMswPerforation : public RicMswCompletion
|
||||
{
|
||||
public:
|
||||
RicMswPerforation( const QString& label, size_t index = cvf::UNDEFINED_SIZE_T, int branchNumber = cvf::UNDEFINED_INT );
|
||||
RicMswPerforation( const QString& label,
|
||||
const RimWellPath* wellPath,
|
||||
double startMD,
|
||||
double startTVD,
|
||||
size_t index = cvf::UNDEFINED_SIZE_T );
|
||||
RigCompletionData::CompletionType completionType() const override;
|
||||
};
|
||||
|
||||
@@ -97,7 +98,11 @@ public:
|
||||
class RicMswValve : public RicMswCompletion
|
||||
{
|
||||
public:
|
||||
RicMswValve( const QString& label, const RimWellPathValve* wellPathValve );
|
||||
RicMswValve( const QString& label,
|
||||
const RimWellPath* wellPath,
|
||||
double startMD,
|
||||
double startTVD,
|
||||
const RimWellPathValve* wellPathValve );
|
||||
|
||||
virtual ~RicMswValve() {}
|
||||
|
||||
@@ -106,6 +111,12 @@ public:
|
||||
bool isValid() const;
|
||||
void setIsValid( bool valid );
|
||||
|
||||
static std::unique_ptr<RicMswValve> createExportValve( const QString& label,
|
||||
const RimWellPath* wellPath,
|
||||
double startMD,
|
||||
double startTVD,
|
||||
const RimWellPathValve* wellPathValve );
|
||||
|
||||
private:
|
||||
bool m_valid;
|
||||
const RimWellPathValve* m_wellPathValve;
|
||||
@@ -117,7 +128,11 @@ private:
|
||||
class RicMswWsegValve : public RicMswValve
|
||||
{
|
||||
public:
|
||||
RicMswWsegValve( const QString& label, const RimWellPathValve* wellPathValve );
|
||||
RicMswWsegValve( const QString& label,
|
||||
const RimWellPath* wellPath,
|
||||
double startMD,
|
||||
double startTVD,
|
||||
const RimWellPathValve* wellPathValve );
|
||||
|
||||
double flowCoefficient() const;
|
||||
double area() const;
|
||||
@@ -135,7 +150,11 @@ private:
|
||||
class RicMswFishbonesICD : public RicMswWsegValve
|
||||
{
|
||||
public:
|
||||
RicMswFishbonesICD( const QString& label, const RimWellPathValve* wellPathValve );
|
||||
RicMswFishbonesICD( const QString& label,
|
||||
const RimWellPath* wellPath,
|
||||
double startMD,
|
||||
double startTVD,
|
||||
const RimWellPathValve* wellPathValve );
|
||||
RigCompletionData::CompletionType completionType() const override;
|
||||
};
|
||||
|
||||
@@ -145,7 +164,11 @@ public:
|
||||
class RicMswPerforationICD : public RicMswWsegValve
|
||||
{
|
||||
public:
|
||||
RicMswPerforationICD( const QString& label, const RimWellPathValve* wellPathValve );
|
||||
RicMswPerforationICD( const QString& label,
|
||||
const RimWellPath* wellPath,
|
||||
double startMD,
|
||||
double startTVD,
|
||||
const RimWellPathValve* wellPathValve );
|
||||
RigCompletionData::CompletionType completionType() const override;
|
||||
};
|
||||
|
||||
@@ -155,7 +178,11 @@ public:
|
||||
class RicMswPerforationICV : public RicMswWsegValve
|
||||
{
|
||||
public:
|
||||
RicMswPerforationICV( const QString& label, const RimWellPathValve* wellPathValve );
|
||||
RicMswPerforationICV( const QString& label,
|
||||
const RimWellPath* wellPath,
|
||||
double startMD,
|
||||
double startTVD,
|
||||
const RimWellPathValve* wellPathValve );
|
||||
RigCompletionData::CompletionType completionType() const override;
|
||||
};
|
||||
|
||||
@@ -165,7 +192,11 @@ public:
|
||||
class RicMswPerforationAICD : public RicMswValve
|
||||
{
|
||||
public:
|
||||
RicMswPerforationAICD( const QString& label, const RimWellPathValve* wellPathValve );
|
||||
RicMswPerforationAICD( const QString& label,
|
||||
const RimWellPath* wellPath,
|
||||
double startMD,
|
||||
double startTVD,
|
||||
const RimWellPathValve* wellPathValve );
|
||||
RigCompletionData::CompletionType completionType() const override;
|
||||
|
||||
bool isOpen() const;
|
||||
|
||||
Reference in New Issue
Block a user