mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-12 16:32:12 -05:00
#7595 MSW : Move MSW parameters to well path
Move msw parameters to well path Make it clear when options are taken from top level well path or well path lateral Use well path lateral custom values for diameter and roughness
This commit is contained in:
1 parent
8e569bc944
commit
4f89e38334
17 files changed
+181
-261
No files matched your search
+2
-3
@@ -36,6 +36,7 @@
|
|||||||
|
|
||||||
#include "RimFishbones.h"
|
#include "RimFishbones.h"
|
||||||
#include "RimFishbonesCollection.h"
|
#include "RimFishbonesCollection.h"
|
||||||
|
#include "RimMswCompletionParameters.h"
|
||||||
#include "RimWellPath.h"
|
#include "RimWellPath.h"
|
||||||
#include "RimWellPathCompletions.h"
|
#include "RimWellPathCompletions.h"
|
||||||
|
|
||||||
@@ -208,7 +209,7 @@ void RicFishbonesTransmissibilityCalculationFeatureImp::findFishboneLateralsWell
|
|||||||
// Generate data
|
// Generate data
|
||||||
const RigEclipseCaseData* caseData = settings.caseToApply()->eclipseCaseData();
|
const RigEclipseCaseData* caseData = settings.caseToApply()->eclipseCaseData();
|
||||||
|
|
||||||
auto mswParameters = wellPath->fishbonesCollection()->mswParameters();
|
auto mswParameters = wellPath->mswCompletionParameters();
|
||||||
RiaDefines::EclipseUnitSystem unitSystem = caseData->unitsType();
|
RiaDefines::EclipseUnitSystem unitSystem = caseData->unitsType();
|
||||||
|
|
||||||
RicMswExportInfo exportInfo( wellPath,
|
RicMswExportInfo exportInfo( wellPath,
|
||||||
@@ -216,8 +217,6 @@ void RicFishbonesTransmissibilityCalculationFeatureImp::findFishboneLateralsWell
|
|||||||
wellPath->fishbonesCollection()->startMD(),
|
wellPath->fishbonesCollection()->startMD(),
|
||||||
mswParameters->lengthAndDepth().text(),
|
mswParameters->lengthAndDepth().text(),
|
||||||
mswParameters->pressureDrop().text() );
|
mswParameters->pressureDrop().text() );
|
||||||
exportInfo.setLinerDiameter( mswParameters->linerDiameter( unitSystem ) );
|
|
||||||
exportInfo.setRoughnessFactor( mswParameters->roughnessFactor( unitSystem ) );
|
|
||||||
|
|
||||||
RicWellPathExportMswCompletionsImpl::generateFishbonesMswExportInfoForWell( settings.caseToApply(),
|
RicWellPathExportMswCompletionsImpl::generateFishbonesMswExportInfoForWell( settings.caseToApply(),
|
||||||
wellPath,
|
wellPath,
|
||||||
|
|||||||
@@ -39,8 +39,6 @@ RicMswExportInfo::RicMswExportInfo( const RimWellPath* wellPath,
|
|||||||
const QString& pressureDropText )
|
const QString& pressureDropText )
|
||||||
: m_unitSystem( unitSystem )
|
: m_unitSystem( unitSystem )
|
||||||
, m_topWellBoreVolume( RicMswExportInfo::defaultDoubleValue() )
|
, m_topWellBoreVolume( RicMswExportInfo::defaultDoubleValue() )
|
||||||
, m_linerDiameter( RimMswCompletionParameters::defaultLinerDiameter( unitSystem ) )
|
|
||||||
, m_roughnessFactor( RimMswCompletionParameters::defaultRoughnessFactor( unitSystem ) )
|
|
||||||
, m_lengthAndDepthText( lengthAndDepthText )
|
, m_lengthAndDepthText( lengthAndDepthText )
|
||||||
, m_pressureDropText( pressureDropText )
|
, m_pressureDropText( pressureDropText )
|
||||||
, m_hasSubGridIntersections( false )
|
, m_hasSubGridIntersections( false )
|
||||||
@@ -52,22 +50,6 @@ RicMswExportInfo::RicMswExportInfo( const RimWellPath* wellPath,
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RicMswExportInfo::setLinerDiameter( double linerDiameter )
|
|
||||||
{
|
|
||||||
m_linerDiameter = linerDiameter;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RicMswExportInfo::setRoughnessFactor( double roughnessFactor )
|
|
||||||
{
|
|
||||||
m_roughnessFactor = roughnessFactor;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -92,22 +74,6 @@ double RicMswExportInfo::topWellBoreVolume() const
|
|||||||
return m_topWellBoreVolume;
|
return m_topWellBoreVolume;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
double RicMswExportInfo::linerDiameter() const
|
|
||||||
{
|
|
||||||
return m_linerDiameter;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
double RicMswExportInfo::roughnessFactor() const
|
|
||||||
{
|
|
||||||
return m_roughnessFactor;
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -42,14 +42,10 @@ public:
|
|||||||
const QString& lengthAndDepthText,
|
const QString& lengthAndDepthText,
|
||||||
const QString& pressureDropText );
|
const QString& pressureDropText );
|
||||||
|
|
||||||
void setLinerDiameter( double linerDiameter );
|
|
||||||
void setRoughnessFactor( double roughnessFactor );
|
|
||||||
void setHasSubGridIntersections( bool subGridIntersections );
|
void setHasSubGridIntersections( bool subGridIntersections );
|
||||||
|
|
||||||
RiaDefines::EclipseUnitSystem unitSystem() const;
|
RiaDefines::EclipseUnitSystem unitSystem() const;
|
||||||
double topWellBoreVolume() const;
|
double topWellBoreVolume() const;
|
||||||
double linerDiameter() const;
|
|
||||||
double roughnessFactor() const;
|
|
||||||
QString lengthAndDepthText() const;
|
QString lengthAndDepthText() const;
|
||||||
QString pressureDropText() const;
|
QString pressureDropText() const;
|
||||||
bool hasSubGridIntersections() const;
|
bool hasSubGridIntersections() const;
|
||||||
@@ -61,8 +57,6 @@ public:
|
|||||||
private:
|
private:
|
||||||
RiaDefines::EclipseUnitSystem m_unitSystem;
|
RiaDefines::EclipseUnitSystem m_unitSystem;
|
||||||
double m_topWellBoreVolume;
|
double m_topWellBoreVolume;
|
||||||
double m_linerDiameter;
|
|
||||||
double m_roughnessFactor;
|
|
||||||
QString m_lengthAndDepthText;
|
QString m_lengthAndDepthText;
|
||||||
QString m_pressureDropText;
|
QString m_pressureDropText;
|
||||||
bool m_hasSubGridIntersections;
|
bool m_hasSubGridIntersections;
|
||||||
|
|||||||
@@ -27,6 +27,7 @@
|
|||||||
|
|
||||||
#include "RigWellPath.h"
|
#include "RigWellPath.h"
|
||||||
|
|
||||||
|
#include "RimMswCompletionParameters.h"
|
||||||
#include "RimWellPath.h" // TODO: Consider adding wellnameforexport to RicMswExportInfo to avoid these includes
|
#include "RimWellPath.h" // TODO: Consider adding wellnameforexport to RicMswExportInfo to avoid these includes
|
||||||
#include "RimWellPathCompletionSettings.h"
|
#include "RimWellPathCompletionSettings.h"
|
||||||
|
|
||||||
@@ -724,6 +725,9 @@ void RicMswTableFormatterTools::writeWelsegsSegment( RicMswSegment*
|
|||||||
prevOutTVD = previousSegment->outputTVD();
|
prevOutTVD = previousSegment->outputTVD();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const auto linerDiameter = branch->wellPath()->mswCompletionParameters()->linerDiameter( exportInfo.unitSystem() );
|
||||||
|
const auto roughnessFactor = branch->wellPath()->mswCompletionParameters()->roughnessFactor( exportInfo.unitSystem() );
|
||||||
|
|
||||||
auto outletSegment = previousSegment;
|
auto outletSegment = previousSegment;
|
||||||
for ( const auto& [subStartMD, subEndMD] : segments )
|
for ( const auto& [subStartMD, subEndMD] : segments )
|
||||||
{
|
{
|
||||||
@@ -755,8 +759,8 @@ void RicMswTableFormatterTools::writeWelsegsSegment( RicMswSegment*
|
|||||||
formatter.add( 1 );
|
formatter.add( 1 );
|
||||||
formatter.add( length );
|
formatter.add( length );
|
||||||
formatter.add( depth );
|
formatter.add( depth );
|
||||||
formatter.add( exportInfo.linerDiameter() );
|
formatter.add( linerDiameter );
|
||||||
formatter.add( exportInfo.roughnessFactor() );
|
formatter.add( roughnessFactor );
|
||||||
formatter.rowCompleted();
|
formatter.rowCompleted();
|
||||||
( *segmentNumber )++;
|
( *segmentNumber )++;
|
||||||
outletSegment = segment;
|
outletSegment = segment;
|
||||||
@@ -800,6 +804,9 @@ void RicMswTableFormatterTools::writeValveWelsegsSegment( const RicMswSegment*
|
|||||||
auto wellPathGeometry = valve->wellPath()->wellPathGeometry();
|
auto wellPathGeometry = valve->wellPath()->wellPathGeometry();
|
||||||
CVF_ASSERT( wellPathGeometry );
|
CVF_ASSERT( wellPathGeometry );
|
||||||
|
|
||||||
|
const auto linerDiameter = valve->wellPath()->mswCompletionParameters()->linerDiameter( exportInfo.unitSystem() );
|
||||||
|
const auto roughnessFactor = valve->wellPath()->mswCompletionParameters()->roughnessFactor( exportInfo.unitSystem() );
|
||||||
|
|
||||||
for ( const auto& [subStartMD, subEndMD] : splitSegments )
|
for ( const auto& [subStartMD, subEndMD] : splitSegments )
|
||||||
{
|
{
|
||||||
int subSegmentNumber = ( *segmentNumber )++;
|
int subSegmentNumber = ( *segmentNumber )++;
|
||||||
@@ -828,8 +835,9 @@ void RicMswTableFormatterTools::writeValveWelsegsSegment( const RicMswSegment*
|
|||||||
|
|
||||||
formatter.add( length );
|
formatter.add( length );
|
||||||
formatter.add( depth );
|
formatter.add( depth );
|
||||||
formatter.add( exportInfo.linerDiameter() );
|
|
||||||
formatter.add( exportInfo.roughnessFactor() );
|
formatter.add( linerDiameter );
|
||||||
|
formatter.add( roughnessFactor );
|
||||||
formatter.rowCompleted();
|
formatter.rowCompleted();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+13
-20
@@ -43,6 +43,7 @@
|
|||||||
#include "RimFishbonesCollection.h"
|
#include "RimFishbonesCollection.h"
|
||||||
#include "RimFractureTemplate.h"
|
#include "RimFractureTemplate.h"
|
||||||
#include "RimModeledWellPath.h"
|
#include "RimModeledWellPath.h"
|
||||||
|
#include "RimMswCompletionParameters.h"
|
||||||
#include "RimPerforationCollection.h"
|
#include "RimPerforationCollection.h"
|
||||||
#include "RimPerforationInterval.h"
|
#include "RimPerforationInterval.h"
|
||||||
#include "RimProject.h"
|
#include "RimProject.h"
|
||||||
@@ -188,7 +189,7 @@ void RicWellPathExportMswCompletionsImpl::exportWellSegmentsForPerforations( Rim
|
|||||||
{
|
{
|
||||||
RiaDefines::EclipseUnitSystem unitSystem = eclipseCase->eclipseCaseData()->unitsType();
|
RiaDefines::EclipseUnitSystem unitSystem = eclipseCase->eclipseCaseData()->unitsType();
|
||||||
|
|
||||||
auto mswParameters = wellPath->perforationIntervalCollection()->mswParameters();
|
auto mswParameters = wellPath->mswCompletionParameters();
|
||||||
|
|
||||||
if ( !mswParameters ) return;
|
if ( !mswParameters ) return;
|
||||||
|
|
||||||
@@ -203,9 +204,6 @@ void RicWellPathExportMswCompletionsImpl::exportWellSegmentsForPerforations( Rim
|
|||||||
mswParameters->lengthAndDepth().text(),
|
mswParameters->lengthAndDepth().text(),
|
||||||
mswParameters->pressureDrop().text() );
|
mswParameters->pressureDrop().text() );
|
||||||
|
|
||||||
exportInfo.setLinerDiameter( mswParameters->linerDiameter( unitSystem ) );
|
|
||||||
exportInfo.setRoughnessFactor( mswParameters->roughnessFactor( unitSystem ) );
|
|
||||||
|
|
||||||
if ( generatePerforationsMswExportInfo( eclipseCase,
|
if ( generatePerforationsMswExportInfo( eclipseCase,
|
||||||
wellPath,
|
wellPath,
|
||||||
timeStep,
|
timeStep,
|
||||||
@@ -251,7 +249,7 @@ void RicWellPathExportMswCompletionsImpl::exportWellSegmentsForFractures( RimEcl
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto mswParameters = wellPath->fractureCollection()->mswParameters();
|
auto mswParameters = wellPath->mswCompletionParameters();
|
||||||
|
|
||||||
if ( !mswParameters ) return;
|
if ( !mswParameters ) return;
|
||||||
|
|
||||||
@@ -266,9 +264,6 @@ void RicWellPathExportMswCompletionsImpl::exportWellSegmentsForFractures( RimEcl
|
|||||||
mswParameters->lengthAndDepth().text(),
|
mswParameters->lengthAndDepth().text(),
|
||||||
mswParameters->pressureDrop().text() );
|
mswParameters->pressureDrop().text() );
|
||||||
|
|
||||||
exportInfo.setLinerDiameter( mswParameters->linerDiameter( unitSystem ) );
|
|
||||||
exportInfo.setRoughnessFactor( mswParameters->roughnessFactor( unitSystem ) );
|
|
||||||
|
|
||||||
generateFracturesMswExportInfo( eclipseCase,
|
generateFracturesMswExportInfo( eclipseCase,
|
||||||
wellPath,
|
wellPath,
|
||||||
initialMD,
|
initialMD,
|
||||||
@@ -283,7 +278,7 @@ void RicWellPathExportMswCompletionsImpl::exportWellSegmentsForFractures( RimEcl
|
|||||||
RifTextDataTableFormatter formatter( stream );
|
RifTextDataTableFormatter formatter( stream );
|
||||||
formatter.setOptionalComment( exportDataSourceAsComment );
|
formatter.setOptionalComment( exportDataSourceAsComment );
|
||||||
|
|
||||||
double maxSegmentLength = wellPath->fractureCollection()->mswParameters()->maxSegmentLength();
|
double maxSegmentLength = wellPath->mswCompletionParameters()->maxSegmentLength();
|
||||||
|
|
||||||
RicMswTableFormatterTools::generateWelsegsTable( formatter, exportInfo, maxSegmentLength, completionSegmentsAfterMainBore );
|
RicMswTableFormatterTools::generateWelsegsTable( formatter, exportInfo, maxSegmentLength, completionSegmentsAfterMainBore );
|
||||||
RicMswTableFormatterTools::generateCompsegTables( formatter, exportInfo );
|
RicMswTableFormatterTools::generateCompsegTables( formatter, exportInfo );
|
||||||
@@ -309,7 +304,7 @@ void RicWellPathExportMswCompletionsImpl::exportWellSegmentsForFishbones( RimEcl
|
|||||||
double initialMD = 0.0; // Start measured depth location to export MSW data for. Either based on first intersection
|
double initialMD = 0.0; // Start measured depth location to export MSW data for. Either based on first intersection
|
||||||
// with active grid, or user defined value.
|
// with active grid, or user defined value.
|
||||||
|
|
||||||
auto mswParameters = wellPath->fishbonesCollection()->mswParameters();
|
auto mswParameters = wellPath->mswCompletionParameters();
|
||||||
auto cellIntersections = generateCellSegments( eclipseCase, wellPath, mswParameters, &initialMD );
|
auto cellIntersections = generateCellSegments( eclipseCase, wellPath, mswParameters, &initialMD );
|
||||||
|
|
||||||
RiaDefines::EclipseUnitSystem unitSystem = eclipseCase->eclipseCaseData()->unitsType();
|
RiaDefines::EclipseUnitSystem unitSystem = eclipseCase->eclipseCaseData()->unitsType();
|
||||||
@@ -319,8 +314,6 @@ void RicWellPathExportMswCompletionsImpl::exportWellSegmentsForFishbones( RimEcl
|
|||||||
wellPath->fishbonesCollection()->startMD(),
|
wellPath->fishbonesCollection()->startMD(),
|
||||||
mswParameters->lengthAndDepth().text(),
|
mswParameters->lengthAndDepth().text(),
|
||||||
mswParameters->pressureDrop().text() );
|
mswParameters->pressureDrop().text() );
|
||||||
exportInfo.setLinerDiameter( mswParameters->linerDiameter( unitSystem ) );
|
|
||||||
exportInfo.setRoughnessFactor( mswParameters->roughnessFactor( unitSystem ) );
|
|
||||||
|
|
||||||
generateFishbonesMswExportInfo( eclipseCase,
|
generateFishbonesMswExportInfo( eclipseCase,
|
||||||
wellPath,
|
wellPath,
|
||||||
@@ -339,7 +332,7 @@ void RicWellPathExportMswCompletionsImpl::exportWellSegmentsForFishbones( RimEcl
|
|||||||
RifTextDataTableFormatter formatter( stream );
|
RifTextDataTableFormatter formatter( stream );
|
||||||
formatter.setOptionalComment( exportDataSourceAsComment );
|
formatter.setOptionalComment( exportDataSourceAsComment );
|
||||||
|
|
||||||
double maxSegmentLength = wellPath->fishbonesCollection()->mswParameters()->maxSegmentLength();
|
double maxSegmentLength = wellPath->mswCompletionParameters()->maxSegmentLength();
|
||||||
|
|
||||||
RicMswTableFormatterTools::generateWelsegsTable( formatter, exportInfo, maxSegmentLength, completionSegmentsAfterMainBore );
|
RicMswTableFormatterTools::generateWelsegsTable( formatter, exportInfo, maxSegmentLength, completionSegmentsAfterMainBore );
|
||||||
RicMswTableFormatterTools::generateCompsegTables( formatter, exportInfo );
|
RicMswTableFormatterTools::generateCompsegTables( formatter, exportInfo );
|
||||||
@@ -387,7 +380,7 @@ void RicWellPathExportMswCompletionsImpl::generateFishbonesMswExportInfo(
|
|||||||
std::vector<WellPathCellIntersectionInfo> filteredIntersections =
|
std::vector<WellPathCellIntersectionInfo> filteredIntersections =
|
||||||
filterIntersections( cellIntersections, initialMD, wellPath->wellPathGeometry(), eclipseCase );
|
filterIntersections( cellIntersections, initialMD, wellPath->wellPathGeometry(), eclipseCase );
|
||||||
|
|
||||||
auto mswParameters = wellPath->fishbonesCollection()->mswParameters();
|
auto mswParameters = wellPath->mswCompletionParameters();
|
||||||
|
|
||||||
bool foundSubGridIntersections = false;
|
bool foundSubGridIntersections = false;
|
||||||
|
|
||||||
@@ -527,7 +520,7 @@ void RicWellPathExportMswCompletionsImpl::generateFishbonesMswExportInfo(
|
|||||||
for ( auto childWellPath : connectedWellPaths )
|
for ( auto childWellPath : connectedWellPaths )
|
||||||
{
|
{
|
||||||
auto childMswBranch = createChildMswBranch( childWellPath );
|
auto childMswBranch = createChildMswBranch( childWellPath );
|
||||||
auto mswParameters = childWellPath->perforationIntervalCollection()->mswParameters();
|
auto mswParameters = childWellPath->mswCompletionParameters();
|
||||||
|
|
||||||
double startOfChildMD = 0.0; // this is currently not used, as the tie-in MD is used
|
double startOfChildMD = 0.0; // this is currently not used, as the tie-in MD is used
|
||||||
auto childCellIntersections = generateCellSegments( eclipseCase, childWellPath, mswParameters, &startOfChildMD );
|
auto childCellIntersections = generateCellSegments( eclipseCase, childWellPath, mswParameters, &startOfChildMD );
|
||||||
@@ -556,7 +549,7 @@ void RicWellPathExportMswCompletionsImpl::generateFishbonesMswExportInfoForWell(
|
|||||||
double initialMD = 0.0; // Start measured depth location to export MSW data for. Either based on first intersection
|
double initialMD = 0.0; // Start measured depth location to export MSW data for. Either based on first intersection
|
||||||
// with active grid, or user defined value.
|
// with active grid, or user defined value.
|
||||||
|
|
||||||
auto mswParameters = wellPath->fishbonesCollection()->mswParameters();
|
auto mswParameters = wellPath->mswCompletionParameters();
|
||||||
auto cellIntersections = generateCellSegments( eclipseCase, wellPath, mswParameters, &initialMD );
|
auto cellIntersections = generateCellSegments( eclipseCase, wellPath, mswParameters, &initialMD );
|
||||||
|
|
||||||
RiaDefines::EclipseUnitSystem unitSystem = eclipseCase->eclipseCaseData()->unitsType();
|
RiaDefines::EclipseUnitSystem unitSystem = eclipseCase->eclipseCaseData()->unitsType();
|
||||||
@@ -576,7 +569,7 @@ bool RicWellPathExportMswCompletionsImpl::generateFracturesMswExportInfo(
|
|||||||
gsl::not_null<RicMswExportInfo*> exportInfo,
|
gsl::not_null<RicMswExportInfo*> exportInfo,
|
||||||
gsl::not_null<RicMswBranch*> branch )
|
gsl::not_null<RicMswBranch*> branch )
|
||||||
{
|
{
|
||||||
auto mswParameters = wellPath->fractureCollection()->mswParameters();
|
auto mswParameters = wellPath->mswCompletionParameters();
|
||||||
auto fractures = wellPath->fractureCollection()->activeFractures();
|
auto fractures = wellPath->fractureCollection()->activeFractures();
|
||||||
|
|
||||||
std::vector<WellPathCellIntersectionInfo> filteredIntersections =
|
std::vector<WellPathCellIntersectionInfo> filteredIntersections =
|
||||||
@@ -650,7 +643,7 @@ bool RicWellPathExportMswCompletionsImpl::generateFracturesMswExportInfo(
|
|||||||
for ( auto childWellPath : connectedWellPaths )
|
for ( auto childWellPath : connectedWellPaths )
|
||||||
{
|
{
|
||||||
auto childMswBranch = createChildMswBranch( childWellPath );
|
auto childMswBranch = createChildMswBranch( childWellPath );
|
||||||
auto mswParameters = childWellPath->perforationIntervalCollection()->mswParameters();
|
auto mswParameters = childWellPath->mswCompletionParameters();
|
||||||
|
|
||||||
double startOfChildMD = 0.0; // this is currently not used, as the tie-in MD is used
|
double startOfChildMD = 0.0; // this is currently not used, as the tie-in MD is used
|
||||||
auto childCellIntersections = generateCellSegments( eclipseCase, childWellPath, mswParameters, &startOfChildMD );
|
auto childCellIntersections = generateCellSegments( eclipseCase, childWellPath, mswParameters, &startOfChildMD );
|
||||||
@@ -747,7 +740,7 @@ bool RicWellPathExportMswCompletionsImpl::generatePerforationsMswExportInfo(
|
|||||||
for ( auto childWellPath : connectedWellPaths )
|
for ( auto childWellPath : connectedWellPaths )
|
||||||
{
|
{
|
||||||
auto childMswBranch = createChildMswBranch( childWellPath );
|
auto childMswBranch = createChildMswBranch( childWellPath );
|
||||||
auto mswParameters = childWellPath->perforationIntervalCollection()->mswParameters();
|
auto mswParameters = childWellPath->mswCompletionParameters();
|
||||||
|
|
||||||
double startOfChildMD = 0.0; // this is currently not used, as the tie-in MD is used
|
double startOfChildMD = 0.0; // this is currently not used, as the tie-in MD is used
|
||||||
auto childCellIntersections = generateCellSegments( eclipseCase, childWellPath, mswParameters, &startOfChildMD );
|
auto childCellIntersections = generateCellSegments( eclipseCase, childWellPath, mswParameters, &startOfChildMD );
|
||||||
@@ -799,7 +792,7 @@ std::vector<WellPathCellIntersectionInfo>
|
|||||||
std::vector<WellPathCellIntersectionInfo> continuousIntersections =
|
std::vector<WellPathCellIntersectionInfo> continuousIntersections =
|
||||||
RigWellPathIntersectionTools::buildContinuousIntersections( allIntersections, mainGrid );
|
RigWellPathIntersectionTools::buildContinuousIntersections( allIntersections, mainGrid );
|
||||||
|
|
||||||
if ( mswParameters->referenceMDType() == RimMswCompletionParameters::MANUAL_REFERENCE_MD )
|
if ( mswParameters->referenceMDType() == RimMswCompletionParameters::ReferenceMDType::MANUAL_REFERENCE_MD )
|
||||||
{
|
{
|
||||||
*initialMD = mswParameters->manualReferenceMD();
|
*initialMD = mswParameters->manualReferenceMD();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,21 +52,7 @@ RimFishbonesCollection::RimFishbonesCollection()
|
|||||||
CAF_PDM_InitField( &m_startMD, "StartMD", HUGE_VAL, "Start MD", "", "", "" );
|
CAF_PDM_InitField( &m_startMD, "StartMD", HUGE_VAL, "Start MD", "", "", "" );
|
||||||
CAF_PDM_InitField( &m_mainBoreDiameter, "MainBoreDiameter", 0.216, "Main Bore Diameter", "", "", "" );
|
CAF_PDM_InitField( &m_mainBoreDiameter, "MainBoreDiameter", 0.216, "Main Bore Diameter", "", "", "" );
|
||||||
CAF_PDM_InitField( &m_skinFactor, "MainBoreSkinFactor", 0., "Main Bore Skin Factor [0..1]", "", "", "" );
|
CAF_PDM_InitField( &m_skinFactor, "MainBoreSkinFactor", 0., "Main Bore Skin Factor [0..1]", "", "", "" );
|
||||||
CAF_PDM_InitFieldNoDefault( &m_mswParameters, "MswParameters", "Multi Segment Well Parameters", "", "", "" );
|
|
||||||
m_mswParameters = new RimMswCompletionParameters( false );
|
|
||||||
m_mswParameters.uiCapability()->setUiTreeHidden( true );
|
|
||||||
m_mswParameters.uiCapability()->setUiTreeChildrenHidden( true );
|
|
||||||
manuallyModifiedStartMD = false;
|
manuallyModifiedStartMD = false;
|
||||||
|
|
||||||
// Moved to RimMswCompletionParameters and obsoleted
|
|
||||||
CAF_PDM_InitField( &m_linerDiameter_OBSOLETE, "LinerDiameter", 0.152, "Liner Inner Diameter", "", "", "" );
|
|
||||||
CAF_PDM_InitField( &m_roughnessFactor_OBSOLETE, "RoughnessFactor", 1e-05, "Roughness Factor", "", "", "" );
|
|
||||||
CAF_PDM_InitFieldNoDefault( &m_pressureDrop_OBSOLETE, "PressureDrop", "Pressure Drop", "", "", "" );
|
|
||||||
CAF_PDM_InitFieldNoDefault( &m_lengthAndDepth_OBSOLETE, "LengthAndDepth", "Length and Depth", "", "", "" );
|
|
||||||
m_linerDiameter_OBSOLETE.xmlCapability()->setIOWritable( false );
|
|
||||||
m_roughnessFactor_OBSOLETE.xmlCapability()->setIOWritable( false );
|
|
||||||
m_pressureDrop_OBSOLETE.xmlCapability()->setIOWritable( false );
|
|
||||||
m_lengthAndDepth_OBSOLETE.xmlCapability()->setIOWritable( false );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -120,32 +106,8 @@ void RimFishbonesCollection::defineUiOrdering( QString uiConfigName, caf::PdmUiO
|
|||||||
wellGroup->add( &m_startMD );
|
wellGroup->add( &m_startMD );
|
||||||
wellGroup->add( &m_mainBoreDiameter );
|
wellGroup->add( &m_mainBoreDiameter );
|
||||||
wellGroup->add( &m_skinFactor );
|
wellGroup->add( &m_skinFactor );
|
||||||
caf::PdmUiGroup* mswGroup = uiOrdering.addNewGroup( "Multi Segment Well Options" );
|
|
||||||
m_mswParameters->uiOrdering( uiConfigName, *mswGroup );
|
|
||||||
uiOrdering.skipRemainingFields( true );
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
uiOrdering.skipRemainingFields( true );
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RimFishbonesCollection::initAfterRead()
|
|
||||||
{
|
|
||||||
if ( m_linerDiameter_OBSOLETE() != m_linerDiameter_OBSOLETE.defaultValue() )
|
|
||||||
{
|
|
||||||
m_mswParameters->setLinerDiameter( m_linerDiameter_OBSOLETE() );
|
|
||||||
}
|
|
||||||
if ( m_roughnessFactor_OBSOLETE() != m_roughnessFactor_OBSOLETE.defaultValue() )
|
|
||||||
{
|
|
||||||
m_mswParameters->setRoughnessFactor( m_roughnessFactor_OBSOLETE() );
|
|
||||||
}
|
|
||||||
if ( m_pressureDrop_OBSOLETE() != m_pressureDrop_OBSOLETE.defaultValue() )
|
|
||||||
{
|
|
||||||
m_mswParameters->setPressureDrop( m_pressureDrop_OBSOLETE() );
|
|
||||||
}
|
|
||||||
if ( m_lengthAndDepth_OBSOLETE() != m_lengthAndDepth_OBSOLETE.defaultValue() )
|
|
||||||
{
|
|
||||||
m_mswParameters->setLengthAndDepth( m_lengthAndDepth_OBSOLETE() );
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -160,14 +122,6 @@ void RimFishbonesCollection::appendFishbonesSubs( RimFishbones* subs )
|
|||||||
subs->recomputeLateralLocations();
|
subs->recomputeLateralLocations();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
const RimMswCompletionParameters* RimFishbonesCollection::mswParameters() const
|
|
||||||
{
|
|
||||||
return m_mswParameters();
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "RimCheckableNamedObject.h"
|
#include "RimCheckableNamedObject.h"
|
||||||
#include "RimMswCompletionParameters.h"
|
|
||||||
|
|
||||||
#include "RiaDefines.h"
|
#include "RiaDefines.h"
|
||||||
|
|
||||||
@@ -44,7 +43,6 @@ public:
|
|||||||
RimFishbonesCollection();
|
RimFishbonesCollection();
|
||||||
|
|
||||||
void appendFishbonesSubs( RimFishbones* subs );
|
void appendFishbonesSubs( RimFishbones* subs );
|
||||||
const RimMswCompletionParameters* mswParameters() const;
|
|
||||||
|
|
||||||
bool hasFishbones() const;
|
bool hasFishbones() const;
|
||||||
std::vector<RimFishbones*> activeFishbonesSubs() const;
|
std::vector<RimFishbones*> activeFishbonesSubs() const;
|
||||||
@@ -60,23 +58,15 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
||||||
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
||||||
void initAfterRead() override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
cvf::Color3f nextFishbonesColor() const;
|
cvf::Color3f nextFishbonesColor() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmChildArrayField<RimFishbones*> m_fishbones;
|
caf::PdmChildArrayField<RimFishbones*> m_fishbones;
|
||||||
caf::PdmChildField<RimMswCompletionParameters*> m_mswParameters;
|
|
||||||
|
|
||||||
caf::PdmField<double> m_startMD;
|
caf::PdmField<double> m_startMD;
|
||||||
caf::PdmField<double> m_skinFactor;
|
caf::PdmField<double> m_skinFactor;
|
||||||
caf::PdmField<double> m_mainBoreDiameter;
|
caf::PdmField<double> m_mainBoreDiameter;
|
||||||
bool manuallyModifiedStartMD;
|
bool manuallyModifiedStartMD;
|
||||||
|
|
||||||
caf::PdmField<double> m_linerDiameter_OBSOLETE;
|
|
||||||
caf::PdmField<double> m_roughnessFactor_OBSOLETE;
|
|
||||||
|
|
||||||
caf::PdmField<RimMswCompletionParameters::PressureDropEnum> m_pressureDrop_OBSOLETE;
|
|
||||||
caf::PdmField<RimMswCompletionParameters::LengthAndDepthEnum> m_lengthAndDepth_OBSOLETE;
|
|
||||||
};
|
};
|
||||||
@@ -15,6 +15,7 @@
|
|||||||
// for more details.
|
// for more details.
|
||||||
//
|
//
|
||||||
/////////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "RimMswCompletionParameters.h"
|
#include "RimMswCompletionParameters.h"
|
||||||
|
|
||||||
#include "RiaEclipseUnitTools.h"
|
#include "RiaEclipseUnitTools.h"
|
||||||
@@ -30,26 +31,28 @@ namespace caf
|
|||||||
template <>
|
template <>
|
||||||
void RimMswCompletionParameters::ReferenceMDEnum::setUp()
|
void RimMswCompletionParameters::ReferenceMDEnum::setUp()
|
||||||
{
|
{
|
||||||
addItem( RimMswCompletionParameters::AUTO_REFERENCE_MD, "GridIntersectionRefMD", "Grid Entry Point" );
|
addItem( RimMswCompletionParameters::ReferenceMDType::AUTO_REFERENCE_MD, "GridIntersectionRefMD", "Grid Entry Point" );
|
||||||
addItem( RimMswCompletionParameters::MANUAL_REFERENCE_MD, "ManualRefMD", "User Defined" );
|
addItem( RimMswCompletionParameters::ReferenceMDType::MANUAL_REFERENCE_MD, "ManualRefMD", "User Defined" );
|
||||||
setDefault( RimMswCompletionParameters::AUTO_REFERENCE_MD );
|
setDefault( RimMswCompletionParameters::ReferenceMDType::AUTO_REFERENCE_MD );
|
||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
void RimMswCompletionParameters::PressureDropEnum::setUp()
|
void RimMswCompletionParameters::PressureDropEnum::setUp()
|
||||||
{
|
{
|
||||||
addItem( RimMswCompletionParameters::HYDROSTATIC, "H--", "Hydrostatic" );
|
addItem( RimMswCompletionParameters::PressureDropType::HYDROSTATIC, "H--", "Hydrostatic" );
|
||||||
addItem( RimMswCompletionParameters::HYDROSTATIC_FRICTION, "HF-", "Hydrostatic + Friction" );
|
addItem( RimMswCompletionParameters::PressureDropType::HYDROSTATIC_FRICTION, "HF-", "Hydrostatic + Friction" );
|
||||||
addItem( RimMswCompletionParameters::HYDROSTATIC_FRICTION_ACCELERATION, "HFA", "Hydrostatic + Friction + Acceleration" );
|
addItem( RimMswCompletionParameters::PressureDropType::HYDROSTATIC_FRICTION_ACCELERATION,
|
||||||
setDefault( RimMswCompletionParameters::HYDROSTATIC_FRICTION );
|
"HFA",
|
||||||
|
"Hydrostatic + Friction + Acceleration" );
|
||||||
|
setDefault( RimMswCompletionParameters::PressureDropType::HYDROSTATIC_FRICTION );
|
||||||
}
|
}
|
||||||
|
|
||||||
template <>
|
template <>
|
||||||
void RimMswCompletionParameters::LengthAndDepthEnum::setUp()
|
void RimMswCompletionParameters::LengthAndDepthEnum::setUp()
|
||||||
{
|
{
|
||||||
addItem( RimMswCompletionParameters::INC, "INC", "Incremental" );
|
addItem( RimMswCompletionParameters::LengthAndDepthType::INC, "INC", "Incremental" );
|
||||||
addItem( RimMswCompletionParameters::ABS, "ABS", "Absolute" );
|
addItem( RimMswCompletionParameters::LengthAndDepthType::ABS, "ABS", "Absolute" );
|
||||||
setDefault( RimMswCompletionParameters::ABS );
|
setDefault( RimMswCompletionParameters::LengthAndDepthType::ABS );
|
||||||
}
|
}
|
||||||
} // namespace caf
|
} // namespace caf
|
||||||
|
|
||||||
@@ -58,20 +61,14 @@ CAF_PDM_SOURCE_INIT( RimMswCompletionParameters, "RimMswCompletionParameters" );
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RimMswCompletionParameters::RimMswCompletionParameters( bool enableReferenceDepth /* = true */ )
|
RimMswCompletionParameters::RimMswCompletionParameters()
|
||||||
: m_enableReferenceDepth( enableReferenceDepth )
|
|
||||||
{
|
{
|
||||||
CAF_PDM_InitObject( "MSW Completion Parameters", ":/CompletionsSymbol16x16.png", "", "" );
|
CAF_PDM_InitObject( "MSW Completion Parameters", ":/CompletionsSymbol16x16.png", "", "" );
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault( &m_refMDType, "RefMDType", "Reference MD", "", "", "" );
|
CAF_PDM_InitFieldNoDefault( &m_refMDType, "RefMDType", "Reference MD", "", "", "" );
|
||||||
CAF_PDM_InitField( &m_refMD, "RefMD", 0.0, "", "", "", "" );
|
CAF_PDM_InitField( &m_refMD, "RefMD", 0.0, "", "", "", "" );
|
||||||
|
|
||||||
if ( !m_enableReferenceDepth )
|
CAF_PDM_InitField( &m_customValuesForLateral, "CustomValuesForLateral", false, "Custom Values for Lateral", "", "", "" );
|
||||||
{
|
|
||||||
m_refMDType.xmlCapability()->disableIO();
|
|
||||||
m_refMD.xmlCapability()->disableIO();
|
|
||||||
}
|
|
||||||
|
|
||||||
CAF_PDM_InitField( &m_linerDiameter,
|
CAF_PDM_InitField( &m_linerDiameter,
|
||||||
"LinerDiameter",
|
"LinerDiameter",
|
||||||
std::numeric_limits<double>::infinity(),
|
std::numeric_limits<double>::infinity(),
|
||||||
@@ -142,7 +139,7 @@ RimMswCompletionParameters::ReferenceMDType RimMswCompletionParameters::referenc
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
double RimMswCompletionParameters::manualReferenceMD() const
|
double RimMswCompletionParameters::manualReferenceMD() const
|
||||||
{
|
{
|
||||||
if ( m_refMDType == AUTO_REFERENCE_MD )
|
if ( m_refMDType == ReferenceMDType::AUTO_REFERENCE_MD )
|
||||||
{
|
{
|
||||||
return std::numeric_limits<double>::infinity();
|
return std::numeric_limits<double>::infinity();
|
||||||
}
|
}
|
||||||
@@ -156,17 +153,24 @@ double RimMswCompletionParameters::linerDiameter( RiaDefines::EclipseUnitSystem
|
|||||||
{
|
{
|
||||||
RimWellPath* wellPath;
|
RimWellPath* wellPath;
|
||||||
firstAncestorOrThisOfTypeAsserted( wellPath );
|
firstAncestorOrThisOfTypeAsserted( wellPath );
|
||||||
|
|
||||||
|
double diameter = m_linerDiameter();
|
||||||
|
if ( !wellPath->isTopLevelWellPath() && !m_customValuesForLateral )
|
||||||
|
{
|
||||||
|
diameter = wellPath->topLevelWellPath()->mswCompletionParameters()->m_linerDiameter();
|
||||||
|
}
|
||||||
|
|
||||||
if ( wellPath->unitSystem() == RiaDefines::EclipseUnitSystem::UNITS_FIELD &&
|
if ( wellPath->unitSystem() == RiaDefines::EclipseUnitSystem::UNITS_FIELD &&
|
||||||
unitSystem == RiaDefines::EclipseUnitSystem::UNITS_METRIC )
|
unitSystem == RiaDefines::EclipseUnitSystem::UNITS_METRIC )
|
||||||
{
|
{
|
||||||
return RiaEclipseUnitTools::feetToMeter( m_linerDiameter() );
|
return RiaEclipseUnitTools::feetToMeter( diameter );
|
||||||
}
|
}
|
||||||
else if ( wellPath->unitSystem() == RiaDefines::EclipseUnitSystem::UNITS_METRIC &&
|
else if ( wellPath->unitSystem() == RiaDefines::EclipseUnitSystem::UNITS_METRIC &&
|
||||||
unitSystem == RiaDefines::EclipseUnitSystem::UNITS_FIELD )
|
unitSystem == RiaDefines::EclipseUnitSystem::UNITS_FIELD )
|
||||||
{
|
{
|
||||||
return RiaEclipseUnitTools::meterToFeet( m_linerDiameter() );
|
return RiaEclipseUnitTools::meterToFeet( diameter );
|
||||||
}
|
}
|
||||||
return m_linerDiameter();
|
return diameter;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -191,17 +195,25 @@ double RimMswCompletionParameters::roughnessFactor( RiaDefines::EclipseUnitSyste
|
|||||||
{
|
{
|
||||||
RimWellPath* wellPath;
|
RimWellPath* wellPath;
|
||||||
firstAncestorOrThisOfTypeAsserted( wellPath );
|
firstAncestorOrThisOfTypeAsserted( wellPath );
|
||||||
|
|
||||||
|
double rFactor = m_roughnessFactor();
|
||||||
|
if ( !wellPath->isTopLevelWellPath() && !m_customValuesForLateral )
|
||||||
|
{
|
||||||
|
rFactor = wellPath->topLevelWellPath()->mswCompletionParameters()->m_roughnessFactor();
|
||||||
|
}
|
||||||
|
|
||||||
if ( wellPath->unitSystem() == RiaDefines::EclipseUnitSystem::UNITS_FIELD &&
|
if ( wellPath->unitSystem() == RiaDefines::EclipseUnitSystem::UNITS_FIELD &&
|
||||||
unitSystem == RiaDefines::EclipseUnitSystem::UNITS_METRIC )
|
unitSystem == RiaDefines::EclipseUnitSystem::UNITS_METRIC )
|
||||||
{
|
{
|
||||||
return RiaEclipseUnitTools::feetToMeter( m_roughnessFactor() );
|
return RiaEclipseUnitTools::feetToMeter( rFactor );
|
||||||
}
|
}
|
||||||
else if ( wellPath->unitSystem() == RiaDefines::EclipseUnitSystem::UNITS_METRIC &&
|
else if ( wellPath->unitSystem() == RiaDefines::EclipseUnitSystem::UNITS_METRIC &&
|
||||||
unitSystem == RiaDefines::EclipseUnitSystem::UNITS_FIELD )
|
unitSystem == RiaDefines::EclipseUnitSystem::UNITS_FIELD )
|
||||||
{
|
{
|
||||||
return RiaEclipseUnitTools::meterToFeet( m_roughnessFactor() );
|
return RiaEclipseUnitTools::meterToFeet( rFactor );
|
||||||
}
|
}
|
||||||
return m_roughnessFactor();
|
|
||||||
|
return rFactor;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -300,7 +312,7 @@ void RimMswCompletionParameters::fieldChangedByUi( const caf::PdmFieldHandle* ch
|
|||||||
{
|
{
|
||||||
if ( changedField == &m_refMDType )
|
if ( changedField == &m_refMDType )
|
||||||
{
|
{
|
||||||
m_refMD.uiCapability()->setUiHidden( m_refMDType == AUTO_REFERENCE_MD );
|
m_refMD.uiCapability()->setUiHidden( m_refMDType == ReferenceMDType::AUTO_REFERENCE_MD );
|
||||||
this->updateAllRequiredEditors();
|
this->updateAllRequiredEditors();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -316,7 +328,6 @@ void RimMswCompletionParameters::fieldChangedByUi( const caf::PdmFieldHandle* ch
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimMswCompletionParameters::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering )
|
void RimMswCompletionParameters::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering )
|
||||||
{
|
{
|
||||||
{
|
|
||||||
RimWellPath* wellPath;
|
RimWellPath* wellPath;
|
||||||
firstAncestorOrThisOfType( wellPath );
|
firstAncestorOrThisOfType( wellPath );
|
||||||
if ( wellPath )
|
if ( wellPath )
|
||||||
@@ -331,15 +342,12 @@ void RimMswCompletionParameters::defineUiOrdering( QString uiConfigName, caf::Pd
|
|||||||
m_linerDiameter.uiCapability()->setUiName( "Liner Inner Diameter [ft]" );
|
m_linerDiameter.uiCapability()->setUiName( "Liner Inner Diameter [ft]" );
|
||||||
m_roughnessFactor.uiCapability()->setUiName( "Roughness Factor [ft]" );
|
m_roughnessFactor.uiCapability()->setUiName( "Roughness Factor [ft]" );
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( m_enableReferenceDepth )
|
if ( wellPath->isTopLevelWellPath() )
|
||||||
{
|
{
|
||||||
uiOrdering.add( &m_refMDType );
|
uiOrdering.add( &m_refMDType );
|
||||||
uiOrdering.add( &m_refMD );
|
uiOrdering.add( &m_refMD );
|
||||||
m_refMD.uiCapability()->setUiHidden( m_refMDType == AUTO_REFERENCE_MD );
|
m_refMD.uiCapability()->setUiHidden( m_refMDType == ReferenceMDType::AUTO_REFERENCE_MD );
|
||||||
}
|
|
||||||
|
|
||||||
uiOrdering.add( &m_linerDiameter );
|
uiOrdering.add( &m_linerDiameter );
|
||||||
uiOrdering.add( &m_roughnessFactor );
|
uiOrdering.add( &m_roughnessFactor );
|
||||||
@@ -347,6 +355,18 @@ void RimMswCompletionParameters::defineUiOrdering( QString uiConfigName, caf::Pd
|
|||||||
uiOrdering.add( &m_lengthAndDepth );
|
uiOrdering.add( &m_lengthAndDepth );
|
||||||
uiOrdering.add( &m_enforceMaxSegmentLength );
|
uiOrdering.add( &m_enforceMaxSegmentLength );
|
||||||
uiOrdering.add( &m_maxSegmentLength );
|
uiOrdering.add( &m_maxSegmentLength );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
uiOrdering.add( &m_customValuesForLateral );
|
||||||
|
|
||||||
|
uiOrdering.add( &m_linerDiameter );
|
||||||
|
uiOrdering.add( &m_roughnessFactor );
|
||||||
|
|
||||||
|
m_linerDiameter.uiCapability()->setUiReadOnly( !m_customValuesForLateral() );
|
||||||
|
m_linerDiameter.uiCapability()->setUiReadOnly( !m_customValuesForLateral() );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
uiOrdering.skipRemainingFields( true );
|
uiOrdering.skipRemainingFields( true );
|
||||||
}
|
}
|
||||||
@@ -376,3 +396,21 @@ void RimMswCompletionParameters::setUnitSystemSpecificDefaults()
|
|||||||
m_roughnessFactor = defaultRoughnessFactor( wellPath->unitSystem() );
|
m_roughnessFactor = defaultRoughnessFactor( wellPath->unitSystem() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RimMswCompletionParameters::updateFromTopLevelWell( const RimMswCompletionParameters* topLevelWellParameters )
|
||||||
|
{
|
||||||
|
m_refMDType = topLevelWellParameters->m_refMDType();
|
||||||
|
m_refMD = topLevelWellParameters->m_refMD();
|
||||||
|
m_pressureDrop = topLevelWellParameters->m_pressureDrop();
|
||||||
|
m_enforceMaxSegmentLength = topLevelWellParameters->m_enforceMaxSegmentLength();
|
||||||
|
m_maxSegmentLength = topLevelWellParameters->m_maxSegmentLength();
|
||||||
|
|
||||||
|
// The following parameters can be defined per lateral
|
||||||
|
/*
|
||||||
|
m_linerDiameter = rhs.m_linerDiameter();
|
||||||
|
m_roughnessFactor = rhs.m_roughnessFactor();
|
||||||
|
*/
|
||||||
|
}
|
||||||
@@ -28,30 +28,30 @@ class RimMswCompletionParameters : public caf::PdmObject
|
|||||||
CAF_PDM_HEADER_INIT;
|
CAF_PDM_HEADER_INIT;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum ReferenceMDType
|
enum class ReferenceMDType
|
||||||
{
|
{
|
||||||
AUTO_REFERENCE_MD = 0,
|
AUTO_REFERENCE_MD = 0,
|
||||||
MANUAL_REFERENCE_MD
|
MANUAL_REFERENCE_MD
|
||||||
};
|
};
|
||||||
|
|
||||||
enum PressureDropType
|
enum class PressureDropType
|
||||||
{
|
{
|
||||||
HYDROSTATIC,
|
HYDROSTATIC,
|
||||||
HYDROSTATIC_FRICTION,
|
HYDROSTATIC_FRICTION,
|
||||||
HYDROSTATIC_FRICTION_ACCELERATION
|
HYDROSTATIC_FRICTION_ACCELERATION
|
||||||
};
|
};
|
||||||
|
|
||||||
enum LengthAndDepthType
|
enum class LengthAndDepthType
|
||||||
{
|
{
|
||||||
ABS,
|
ABS,
|
||||||
INC
|
INC
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef caf::AppEnum<ReferenceMDType> ReferenceMDEnum;
|
using ReferenceMDEnum = caf::AppEnum<ReferenceMDType>;
|
||||||
typedef caf::AppEnum<PressureDropType> PressureDropEnum;
|
using PressureDropEnum = caf::AppEnum<PressureDropType>;
|
||||||
typedef caf::AppEnum<LengthAndDepthType> LengthAndDepthEnum;
|
using LengthAndDepthEnum = caf::AppEnum<LengthAndDepthType>;
|
||||||
|
|
||||||
RimMswCompletionParameters( bool enableReferenceDepth = true );
|
RimMswCompletionParameters();
|
||||||
~RimMswCompletionParameters() override;
|
~RimMswCompletionParameters() override;
|
||||||
|
|
||||||
bool isDefault() const;
|
bool isDefault() const;
|
||||||
@@ -76,8 +76,11 @@ public:
|
|||||||
|
|
||||||
void setUnitSystemSpecificDefaults();
|
void setUnitSystemSpecificDefaults();
|
||||||
|
|
||||||
protected:
|
void updateFromTopLevelWell( const RimMswCompletionParameters* topLevelWellParameters );
|
||||||
|
|
||||||
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
||||||
|
|
||||||
|
protected:
|
||||||
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
||||||
void initAfterRead() override;
|
void initAfterRead() override;
|
||||||
|
|
||||||
@@ -85,6 +88,7 @@ private:
|
|||||||
caf::PdmField<ReferenceMDEnum> m_refMDType;
|
caf::PdmField<ReferenceMDEnum> m_refMDType;
|
||||||
caf::PdmField<double> m_refMD;
|
caf::PdmField<double> m_refMD;
|
||||||
|
|
||||||
|
caf::PdmField<bool> m_customValuesForLateral;
|
||||||
caf::PdmField<double> m_linerDiameter;
|
caf::PdmField<double> m_linerDiameter;
|
||||||
caf::PdmField<double> m_roughnessFactor;
|
caf::PdmField<double> m_roughnessFactor;
|
||||||
|
|
||||||
@@ -93,6 +97,4 @@ private:
|
|||||||
|
|
||||||
caf::PdmField<bool> m_enforceMaxSegmentLength;
|
caf::PdmField<bool> m_enforceMaxSegmentLength;
|
||||||
caf::PdmField<double> m_maxSegmentLength;
|
caf::PdmField<double> m_maxSegmentLength;
|
||||||
|
|
||||||
bool m_enableReferenceDepth;
|
|
||||||
};
|
};
|
||||||
@@ -23,7 +23,6 @@
|
|||||||
|
|
||||||
#include "Rim3dView.h"
|
#include "Rim3dView.h"
|
||||||
#include "RimEclipseCase.h"
|
#include "RimEclipseCase.h"
|
||||||
#include "RimMswCompletionParameters.h"
|
|
||||||
#include "RimNonDarcyPerforationParameters.h"
|
#include "RimNonDarcyPerforationParameters.h"
|
||||||
#include "RimPerforationInterval.h"
|
#include "RimPerforationInterval.h"
|
||||||
#include "RimProject.h"
|
#include "RimProject.h"
|
||||||
@@ -34,17 +33,6 @@
|
|||||||
|
|
||||||
#include "Riu3DMainWindowTools.h"
|
#include "Riu3DMainWindowTools.h"
|
||||||
|
|
||||||
namespace caf
|
|
||||||
{
|
|
||||||
template <>
|
|
||||||
void RimPerforationCollection::ReferenceMDEnum::setUp()
|
|
||||||
{
|
|
||||||
addItem( RimPerforationCollection::AUTO_REFERENCE_MD, "GridIntersectionRefMD", "Grid Entry Point" );
|
|
||||||
addItem( RimPerforationCollection::MANUAL_REFERENCE_MD, "ManualRefMD", "User Defined" );
|
|
||||||
setDefault( RimPerforationCollection::AUTO_REFERENCE_MD );
|
|
||||||
}
|
|
||||||
} // namespace caf
|
|
||||||
|
|
||||||
CAF_PDM_SOURCE_INIT( RimPerforationCollection, "PerforationCollection" );
|
CAF_PDM_SOURCE_INIT( RimPerforationCollection, "PerforationCollection" );
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -60,11 +48,6 @@ RimPerforationCollection::RimPerforationCollection()
|
|||||||
CAF_PDM_InitFieldNoDefault( &m_perforations, "Perforations", "Perforations", "", "", "" );
|
CAF_PDM_InitFieldNoDefault( &m_perforations, "Perforations", "Perforations", "", "", "" );
|
||||||
m_perforations.uiCapability()->setUiHidden( true );
|
m_perforations.uiCapability()->setUiHidden( true );
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault( &m_mswParameters, "MswParameters", "Multi Segment Well Parameters", "", "", "" );
|
|
||||||
m_mswParameters = new RimMswCompletionParameters;
|
|
||||||
m_mswParameters.uiCapability()->setUiTreeHidden( true );
|
|
||||||
m_mswParameters.uiCapability()->setUiTreeChildrenHidden( true );
|
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault( &m_nonDarcyParameters, "NonDarcyParameters", "Non-Darcy Parameters", "", "", "" );
|
CAF_PDM_InitFieldNoDefault( &m_nonDarcyParameters, "NonDarcyParameters", "Non-Darcy Parameters", "", "", "" );
|
||||||
m_nonDarcyParameters = new RimNonDarcyPerforationParameters();
|
m_nonDarcyParameters = new RimNonDarcyPerforationParameters();
|
||||||
m_nonDarcyParameters.uiCapability()->setUiTreeHidden( true );
|
m_nonDarcyParameters.uiCapability()->setUiTreeHidden( true );
|
||||||
@@ -176,21 +159,11 @@ std::vector<const RimPerforationInterval*> RimPerforationCollection::activePerfo
|
|||||||
return myActivePerforations;
|
return myActivePerforations;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
RimMswCompletionParameters* RimPerforationCollection::mswParameters() const
|
|
||||||
{
|
|
||||||
return m_mswParameters();
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimPerforationCollection::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering )
|
void RimPerforationCollection::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering )
|
||||||
{
|
{
|
||||||
caf::PdmUiGroup* mswGroup = uiOrdering.addNewGroup( "Multi Segment Well Options" );
|
|
||||||
m_mswParameters->uiOrdering( uiConfigName, *mswGroup );
|
|
||||||
m_nonDarcyParameters->uiOrdering( uiConfigName, uiOrdering );
|
m_nonDarcyParameters->uiOrdering( uiConfigName, uiOrdering );
|
||||||
uiOrdering.skipRemainingFields( true );
|
uiOrdering.skipRemainingFields( true );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,7 +27,6 @@
|
|||||||
#include "cafPdmObject.h"
|
#include "cafPdmObject.h"
|
||||||
|
|
||||||
class RimPerforationInterval;
|
class RimPerforationInterval;
|
||||||
class RimMswCompletionParameters;
|
|
||||||
class RimNonDarcyPerforationParameters;
|
class RimNonDarcyPerforationParameters;
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
@@ -40,13 +39,6 @@ class RimPerforationCollection : public RimCheckableNamedObject
|
|||||||
CAF_PDM_HEADER_INIT;
|
CAF_PDM_HEADER_INIT;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
enum ReferenceMDType
|
|
||||||
{
|
|
||||||
AUTO_REFERENCE_MD = 0,
|
|
||||||
MANUAL_REFERENCE_MD
|
|
||||||
};
|
|
||||||
typedef caf::AppEnum<ReferenceMDType> ReferenceMDEnum;
|
|
||||||
|
|
||||||
RimPerforationCollection();
|
RimPerforationCollection();
|
||||||
~RimPerforationCollection() override;
|
~RimPerforationCollection() override;
|
||||||
|
|
||||||
@@ -56,8 +48,6 @@ public:
|
|||||||
std::vector<const RimPerforationInterval*> perforations() const;
|
std::vector<const RimPerforationInterval*> perforations() const;
|
||||||
std::vector<const RimPerforationInterval*> activePerforations() const;
|
std::vector<const RimPerforationInterval*> activePerforations() const;
|
||||||
|
|
||||||
RimMswCompletionParameters* mswParameters() const;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
||||||
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
||||||
@@ -67,6 +57,4 @@ private:
|
|||||||
private:
|
private:
|
||||||
caf::PdmChildArrayField<RimPerforationInterval*> m_perforations;
|
caf::PdmChildArrayField<RimPerforationInterval*> m_perforations;
|
||||||
caf::PdmChildField<RimNonDarcyPerforationParameters*> m_nonDarcyParameters;
|
caf::PdmChildField<RimNonDarcyPerforationParameters*> m_nonDarcyParameters;
|
||||||
|
|
||||||
caf::PdmChildField<RimMswCompletionParameters*> m_mswParameters;
|
|
||||||
};
|
};
|
||||||
@@ -20,6 +20,7 @@
|
|||||||
#include "RiaStdStringTools.h"
|
#include "RiaStdStringTools.h"
|
||||||
#include "RimMswCompletionParameters.h"
|
#include "RimMswCompletionParameters.h"
|
||||||
|
|
||||||
|
#include "RimWellPath.h"
|
||||||
#include "cafPdmDoubleStringValidator.h"
|
#include "cafPdmDoubleStringValidator.h"
|
||||||
#include "cafPdmUiLineEditor.h"
|
#include "cafPdmUiLineEditor.h"
|
||||||
#include "cafPdmUiOrdering.h"
|
#include "cafPdmUiOrdering.h"
|
||||||
@@ -90,6 +91,11 @@ RimWellPathCompletionSettings::RimWellPathCompletionSettings()
|
|||||||
CAF_PDM_InitField( &m_wellBoreFluidPVTTable, "WellBoreFluidPVTTable", 0, "Wellbore Fluid PVT table", "", "", "" );
|
CAF_PDM_InitField( &m_wellBoreFluidPVTTable, "WellBoreFluidPVTTable", 0, "Wellbore Fluid PVT table", "", "", "" );
|
||||||
CAF_PDM_InitFieldNoDefault( &m_hydrostaticDensity, "HydrostaticDensity", "Hydrostatic Density", "", "", "" );
|
CAF_PDM_InitFieldNoDefault( &m_hydrostaticDensity, "HydrostaticDensity", "Hydrostatic Density", "", "", "" );
|
||||||
CAF_PDM_InitField( &m_fluidInPlaceRegion, "FluidInPlaceRegion", 0, "Fluid In-Place Region", "", "", "" );
|
CAF_PDM_InitField( &m_fluidInPlaceRegion, "FluidInPlaceRegion", 0, "Fluid In-Place Region", "", "", "" );
|
||||||
|
|
||||||
|
CAF_PDM_InitFieldNoDefault( &m_mswParameters, "MswParameters", "Multi Segment Well Parameters", "", "", "" );
|
||||||
|
m_mswParameters = new RimMswCompletionParameters;
|
||||||
|
m_mswParameters.uiCapability()->setUiTreeHidden( true );
|
||||||
|
m_mswParameters.uiCapability()->setUiTreeChildrenHidden( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -254,11 +260,24 @@ QRegExp RimWellPathCompletionSettings::wellNameForExportRegExp()
|
|||||||
return rx;
|
return rx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RimMswCompletionParameters* RimWellPathCompletionSettings::mswCompletionParameters() const
|
||||||
|
{
|
||||||
|
return m_mswParameters();
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RimWellPathCompletionSettings::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering )
|
void RimWellPathCompletionSettings::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering )
|
||||||
{
|
{
|
||||||
|
RimWellPath* wellPath = nullptr;
|
||||||
|
this->firstAncestorOrThisOfTypeAsserted( wellPath );
|
||||||
|
|
||||||
|
if ( wellPath->isTopLevelWellPath() )
|
||||||
|
{
|
||||||
caf::PdmUiGroup* compExportGroup = uiOrdering.addNewGroup( "Completion Export Parameters" );
|
caf::PdmUiGroup* compExportGroup = uiOrdering.addNewGroup( "Completion Export Parameters" );
|
||||||
compExportGroup->add( &m_wellNameForExport );
|
compExportGroup->add( &m_wellNameForExport );
|
||||||
compExportGroup->add( &m_wellGroupName );
|
compExportGroup->add( &m_wellGroupName );
|
||||||
@@ -271,6 +290,10 @@ void RimWellPathCompletionSettings::defineUiOrdering( QString uiConfigName, caf:
|
|||||||
compExportGroup->add( &m_wellBoreFluidPVTTable );
|
compExportGroup->add( &m_wellBoreFluidPVTTable );
|
||||||
compExportGroup->add( &m_hydrostaticDensity );
|
compExportGroup->add( &m_hydrostaticDensity );
|
||||||
compExportGroup->add( &m_fluidInPlaceRegion );
|
compExportGroup->add( &m_fluidInPlaceRegion );
|
||||||
|
}
|
||||||
|
|
||||||
|
caf::PdmUiGroup* mswGroup = uiOrdering.addNewGroup( "Multi Segment Well Options" );
|
||||||
|
m_mswParameters->uiOrdering( uiConfigName, *mswGroup );
|
||||||
|
|
||||||
uiOrdering.skipRemainingFields( true );
|
uiOrdering.skipRemainingFields( true );
|
||||||
}
|
}
|
||||||
@@ -282,6 +305,8 @@ void RimWellPathCompletionSettings::fieldChangedByUi( const caf::PdmFieldHandle*
|
|||||||
const QVariant& oldValue,
|
const QVariant& oldValue,
|
||||||
const QVariant& newValue )
|
const QVariant& newValue )
|
||||||
{
|
{
|
||||||
|
m_mswParameters->fieldChangedByUi( changedField, oldValue, newValue );
|
||||||
|
|
||||||
if ( changedField == &m_referenceDepth )
|
if ( changedField == &m_referenceDepth )
|
||||||
{
|
{
|
||||||
if ( !RiaStdStringTools::isNumber( m_referenceDepth.v().toStdString(), '.' ) )
|
if ( !RiaStdStringTools::isNumber( m_referenceDepth.v().toStdString(), '.' ) )
|
||||||
|
|||||||
@@ -83,6 +83,8 @@ public:
|
|||||||
|
|
||||||
static QRegExp wellNameForExportRegExp();
|
static QRegExp wellNameForExportRegExp();
|
||||||
|
|
||||||
|
RimMswCompletionParameters* mswCompletionParameters() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
||||||
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
||||||
@@ -108,4 +110,6 @@ private:
|
|||||||
caf::PdmField<int> m_wellBoreFluidPVTTable;
|
caf::PdmField<int> m_wellBoreFluidPVTTable;
|
||||||
caf::PdmField<HydrostaticDensityEnum> m_hydrostaticDensity;
|
caf::PdmField<HydrostaticDensityEnum> m_hydrostaticDensity;
|
||||||
caf::PdmField<int> m_fluidInPlaceRegion;
|
caf::PdmField<int> m_fluidInPlaceRegion;
|
||||||
|
|
||||||
|
caf::PdmChildField<RimMswCompletionParameters*> m_mswParameters;
|
||||||
};
|
};
|
||||||
@@ -38,14 +38,6 @@ RimWellPathFractureCollection::RimWellPathFractureCollection( void )
|
|||||||
setName( "Fractures" );
|
setName( "Fractures" );
|
||||||
nameField()->uiCapability()->setUiHidden( true );
|
nameField()->uiCapability()->setUiHidden( true );
|
||||||
|
|
||||||
CAF_PDM_InitFieldNoDefault( &m_mswParameters, "MswParameters", "Multi Segment Well Parameters", "", "", "" );
|
|
||||||
m_mswParameters = new RimMswCompletionParameters;
|
|
||||||
m_mswParameters.uiCapability()->setUiTreeHidden( true );
|
|
||||||
m_mswParameters.uiCapability()->setUiTreeChildrenHidden( true );
|
|
||||||
|
|
||||||
CAF_PDM_InitField( &m_refMDType_OBSOLETE, "RefMDType", std::numeric_limits<int>::max(), "Reference MD", "", "", "" );
|
|
||||||
CAF_PDM_InitField( &m_refMD_OBSOLETE, "RefMD", std::numeric_limits<double>::infinity(), "", "", "", "" );
|
|
||||||
|
|
||||||
setDeletable( true );
|
setDeletable( true );
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -80,14 +72,6 @@ void RimWellPathFractureCollection::deleteFractures()
|
|||||||
m_fractures.deleteAllChildObjects();
|
m_fractures.deleteAllChildObjects();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
const RimMswCompletionParameters* RimWellPathFractureCollection::mswParameters() const
|
|
||||||
{
|
|
||||||
return m_mswParameters();
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -117,17 +101,6 @@ std::vector<RimWellPathFracture*> RimWellPathFractureCollection::activeFractures
|
|||||||
return active;
|
return active;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RimWellPathFractureCollection::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering )
|
|
||||||
{
|
|
||||||
caf::PdmUiGroup* mswGroup = uiOrdering.addNewGroup( "Multi Segment Well Options" );
|
|
||||||
m_mswParameters->uiOrdering( uiConfigName, *mswGroup );
|
|
||||||
|
|
||||||
uiOrdering.skipRemainingFields( true );
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -145,22 +118,6 @@ void RimWellPathFractureCollection::fieldChangedByUi( const caf::PdmFieldHandle*
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
void RimWellPathFractureCollection::initAfterRead()
|
|
||||||
{
|
|
||||||
if ( m_refMDType_OBSOLETE() != std::numeric_limits<int>::max() )
|
|
||||||
{
|
|
||||||
m_mswParameters->setReferenceMDType( (RimMswCompletionParameters::ReferenceMDType)m_refMDType_OBSOLETE() );
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( m_refMD_OBSOLETE() != std::numeric_limits<double>::infinity() )
|
|
||||||
{
|
|
||||||
m_mswParameters->setManualReferenceMD( m_refMD_OBSOLETE() );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -19,7 +19,6 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include "RimCheckableNamedObject.h"
|
#include "RimCheckableNamedObject.h"
|
||||||
#include "RimMswCompletionParameters.h"
|
|
||||||
|
|
||||||
#include "cafPdmChildArrayField.h"
|
#include "cafPdmChildArrayField.h"
|
||||||
#include "cafPdmChildField.h"
|
#include "cafPdmChildField.h"
|
||||||
@@ -46,7 +45,6 @@ public:
|
|||||||
void addFracture( RimWellPathFracture* fracture );
|
void addFracture( RimWellPathFracture* fracture );
|
||||||
void deleteFractures();
|
void deleteFractures();
|
||||||
|
|
||||||
const RimMswCompletionParameters* mswParameters() const;
|
|
||||||
std::vector<RimWellPathFracture*> allFractures() const;
|
std::vector<RimWellPathFracture*> allFractures() const;
|
||||||
std::vector<RimWellPathFracture*> activeFractures() const;
|
std::vector<RimWellPathFracture*> activeFractures() const;
|
||||||
|
|
||||||
@@ -54,15 +52,8 @@ public:
|
|||||||
std::vector<caf::PdmObjectHandle*>& referringObjects ) override;
|
std::vector<caf::PdmObjectHandle*>& referringObjects ) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
|
||||||
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
||||||
void initAfterRead() override;
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
caf::PdmChildArrayField<RimWellPathFracture*> m_fractures;
|
caf::PdmChildArrayField<RimWellPathFracture*> m_fractures;
|
||||||
|
|
||||||
caf::PdmField<int> m_refMDType_OBSOLETE;
|
|
||||||
caf::PdmField<double> m_refMD_OBSOLETE;
|
|
||||||
|
|
||||||
caf::PdmChildField<RimMswCompletionParameters*> m_mswParameters;
|
|
||||||
};
|
};
|
||||||
@@ -37,6 +37,7 @@
|
|||||||
#include "RimFishbones.h"
|
#include "RimFishbones.h"
|
||||||
#include "RimFishbonesCollection.h"
|
#include "RimFishbonesCollection.h"
|
||||||
#include "RimMainPlotCollection.h"
|
#include "RimMainPlotCollection.h"
|
||||||
|
#include "RimMswCompletionParameters.h"
|
||||||
#include "RimPerforationCollection.h"
|
#include "RimPerforationCollection.h"
|
||||||
#include "RimProject.h"
|
#include "RimProject.h"
|
||||||
#include "RimStimPlanModelCollection.h"
|
#include "RimStimPlanModelCollection.h"
|
||||||
@@ -284,7 +285,7 @@ const RimWellPathCompletions* RimWellPath::completions() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
/// Returns top-level completion settings
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
const RimWellPathCompletionSettings* RimWellPath::completionSettings() const
|
const RimWellPathCompletionSettings* RimWellPath::completionSettings() const
|
||||||
{
|
{
|
||||||
@@ -294,7 +295,7 @@ const RimWellPathCompletionSettings* RimWellPath::completionSettings() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
/// Returns top-level completion settings
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RimWellPathCompletionSettings* RimWellPath::completionSettings()
|
RimWellPathCompletionSettings* RimWellPath::completionSettings()
|
||||||
{
|
{
|
||||||
@@ -303,6 +304,40 @@ RimWellPathCompletionSettings* RimWellPath::completionSettings()
|
|||||||
return topLevelWellPath()->completionSettings();
|
return topLevelWellPath()->completionSettings();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
RimMswCompletionParameters* RimWellPath::mswCompletionParameters()
|
||||||
|
{
|
||||||
|
auto params = m_completionSettings->mswCompletionParameters();
|
||||||
|
if ( !isTopLevelWellPath() )
|
||||||
|
{
|
||||||
|
auto topMsw = topLevelWellPath()->mswCompletionParameters();
|
||||||
|
|
||||||
|
// Propagate most settings from top level well into lateral parameters
|
||||||
|
params->updateFromTopLevelWell( topMsw );
|
||||||
|
}
|
||||||
|
|
||||||
|
return params;
|
||||||
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
const RimMswCompletionParameters* RimWellPath::mswCompletionParameters() const
|
||||||
|
{
|
||||||
|
auto params = m_completionSettings->mswCompletionParameters();
|
||||||
|
if ( !isTopLevelWellPath() )
|
||||||
|
{
|
||||||
|
auto topMsw = topLevelWellPath()->mswCompletionParameters();
|
||||||
|
|
||||||
|
// Propagate most settings from top level well into lateral parameters
|
||||||
|
params->updateFromTopLevelWell( topMsw );
|
||||||
|
}
|
||||||
|
|
||||||
|
return params;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@@ -670,9 +705,9 @@ void RimWellPath::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering,
|
|||||||
{
|
{
|
||||||
uiTreeOrdering.add( &m_wellLogFiles );
|
uiTreeOrdering.add( &m_wellLogFiles );
|
||||||
|
|
||||||
if ( completionSettings() && isTopLevelWellPath() && !allCompletionsRecursively().empty() )
|
if ( m_completionSettings() && !allCompletionsRecursively().empty() )
|
||||||
{
|
{
|
||||||
uiTreeOrdering.add( completionSettings() );
|
uiTreeOrdering.add( m_completionSettings() );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( m_completions->fishbonesCollection()->hasFishbones() )
|
if ( m_completions->fishbonesCollection()->hasFishbones() )
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ class RimWellPathFractureCollection;
|
|||||||
class Rim3dWellLogCurve;
|
class Rim3dWellLogCurve;
|
||||||
class Rim3dWellLogCurveCollection;
|
class Rim3dWellLogCurveCollection;
|
||||||
class RimWellPathTieIn;
|
class RimWellPathTieIn;
|
||||||
|
class RimMswCompletionParameters;
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
///
|
///
|
||||||
@@ -122,6 +123,8 @@ public:
|
|||||||
const RimWellPathCompletions* completions() const;
|
const RimWellPathCompletions* completions() const;
|
||||||
const RimWellPathCompletionSettings* completionSettings() const;
|
const RimWellPathCompletionSettings* completionSettings() const;
|
||||||
RimWellPathCompletionSettings* completionSettings();
|
RimWellPathCompletionSettings* completionSettings();
|
||||||
|
RimMswCompletionParameters* mswCompletionParameters();
|
||||||
|
const RimMswCompletionParameters* mswCompletionParameters() const;
|
||||||
|
|
||||||
RimFishbonesCollection* fishbonesCollection();
|
RimFishbonesCollection* fishbonesCollection();
|
||||||
const RimFishbonesCollection* fishbonesCollection() const;
|
const RimFishbonesCollection* fishbonesCollection() const;
|
||||||
|
|||||||
Reference in new issue
Block a user