mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
MSW : Restore MSW settings per completion type
Remove the common MSW settings on well path
This commit is contained in:
@@ -57,11 +57,10 @@ RimFishbonesCollection::RimFishbonesCollection()
|
||||
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_skinFactor, "MainBoreSkinFactor", 0., "Main Bore Skin Factor [0..1]", "", "", "" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_mswParameters_OBSOLETE, "MswParameters", "Multi Segment Well Parameters", "", "", "" );
|
||||
m_mswParameters_OBSOLETE = new RimMswCompletionParameters( false );
|
||||
m_mswParameters_OBSOLETE.uiCapability()->setUiTreeHidden( true );
|
||||
m_mswParameters_OBSOLETE.uiCapability()->setUiTreeChildrenHidden( true );
|
||||
m_mswParameters_OBSOLETE.xmlCapability()->setIOWritable( false );
|
||||
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;
|
||||
|
||||
// Moved to RimMswCompletionParameters and obsoleted
|
||||
@@ -136,6 +135,8 @@ void RimFishbonesCollection::defineUiOrdering( QString uiConfigName, caf::PdmUiO
|
||||
wellGroup->add( &m_startMD );
|
||||
wellGroup->add( &m_mainBoreDiameter );
|
||||
wellGroup->add( &m_skinFactor );
|
||||
caf::PdmUiGroup* mswGroup = uiOrdering.addNewGroup( "Multi Segment Well Options" );
|
||||
m_mswParameters->uiOrdering( uiConfigName, *mswGroup );
|
||||
uiOrdering.skipRemainingFields( true );
|
||||
}
|
||||
|
||||
@@ -146,19 +147,19 @@ void RimFishbonesCollection::initAfterRead()
|
||||
{
|
||||
if ( m_linerDiameter_OBSOLETE() != m_linerDiameter_OBSOLETE.defaultValue() )
|
||||
{
|
||||
m_mswParameters_OBSOLETE->setLinerDiameter( m_linerDiameter_OBSOLETE() );
|
||||
m_mswParameters->setLinerDiameter( m_linerDiameter_OBSOLETE() );
|
||||
}
|
||||
if ( m_roughnessFactor_OBSOLETE() != m_roughnessFactor_OBSOLETE.defaultValue() )
|
||||
{
|
||||
m_mswParameters_OBSOLETE->setRoughnessFactor( m_roughnessFactor_OBSOLETE() );
|
||||
m_mswParameters->setRoughnessFactor( m_roughnessFactor_OBSOLETE() );
|
||||
}
|
||||
if ( m_pressureDrop_OBSOLETE() != m_pressureDrop_OBSOLETE.defaultValue() )
|
||||
{
|
||||
m_mswParameters_OBSOLETE->setPressureDrop( m_pressureDrop_OBSOLETE() );
|
||||
m_mswParameters->setPressureDrop( m_pressureDrop_OBSOLETE() );
|
||||
}
|
||||
if ( m_lengthAndDepth_OBSOLETE() != m_lengthAndDepth_OBSOLETE.defaultValue() )
|
||||
{
|
||||
m_mswParameters_OBSOLETE->setLengthAndDepth( m_lengthAndDepth_OBSOLETE() );
|
||||
m_mswParameters->setLengthAndDepth( m_lengthAndDepth_OBSOLETE() );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -174,6 +175,14 @@ void RimFishbonesCollection::appendFishbonesSubs( RimFishbones* subs )
|
||||
subs->recomputeLateralLocations();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const RimMswCompletionParameters* RimFishbonesCollection::mswParameters() const
|
||||
{
|
||||
return m_mswParameters();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -46,6 +46,7 @@ public:
|
||||
|
||||
RimImportedFishboneLateralsCollection* wellPathCollection() const;
|
||||
void appendFishbonesSubs( RimFishbones* subs );
|
||||
const RimMswCompletionParameters* mswParameters() const;
|
||||
|
||||
bool hasFishbones() const;
|
||||
std::vector<RimFishbones*> activeFishbonesSubs() const;
|
||||
@@ -69,6 +70,7 @@ private:
|
||||
private:
|
||||
caf::PdmChildArrayField<RimFishbones*> m_fishbones;
|
||||
caf::PdmChildField<RimImportedFishboneLateralsCollection*> m_wellPathCollection;
|
||||
caf::PdmChildField<RimMswCompletionParameters*> m_mswParameters;
|
||||
|
||||
caf::PdmField<double> m_startMD;
|
||||
caf::PdmField<double> m_skinFactor;
|
||||
@@ -80,5 +82,4 @@ private:
|
||||
|
||||
caf::PdmField<RimMswCompletionParameters::PressureDropEnum> m_pressureDrop_OBSOLETE;
|
||||
caf::PdmField<RimMswCompletionParameters::LengthAndDepthEnum> m_lengthAndDepth_OBSOLETE;
|
||||
caf::PdmChildField<RimMswCompletionParameters*> m_mswParameters_OBSOLETE;
|
||||
};
|
||||
|
||||
@@ -60,10 +60,10 @@ RimPerforationCollection::RimPerforationCollection()
|
||||
CAF_PDM_InitFieldNoDefault( &m_perforations, "Perforations", "Perforations", "", "", "" );
|
||||
m_perforations.uiCapability()->setUiHidden( true );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_mswParameters_OBSOLETE, "MswParameters", "Multi Segment Well Parameters", "", "", "" );
|
||||
m_mswParameters_OBSOLETE = new RimMswCompletionParameters;
|
||||
m_mswParameters_OBSOLETE.uiCapability()->setUiTreeHidden( true );
|
||||
m_mswParameters_OBSOLETE.uiCapability()->setUiTreeChildrenHidden( 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", "", "", "" );
|
||||
m_nonDarcyParameters = new RimNonDarcyPerforationParameters();
|
||||
@@ -176,13 +176,21 @@ std::vector<const RimPerforationInterval*> RimPerforationCollection::activePerfo
|
||||
return myActivePerforations;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimMswCompletionParameters* RimPerforationCollection::mswParameters() const
|
||||
{
|
||||
return m_mswParameters();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimPerforationCollection::defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering )
|
||||
{
|
||||
caf::PdmUiGroup* mswGroup = uiOrdering.addNewGroup( "Multi Segment Well Options" );
|
||||
m_mswParameters_OBSOLETE->uiOrdering( uiConfigName, *mswGroup );
|
||||
m_mswParameters->uiOrdering( uiConfigName, *mswGroup );
|
||||
m_nonDarcyParameters->uiOrdering( uiConfigName, uiOrdering );
|
||||
uiOrdering.skipRemainingFields( true );
|
||||
}
|
||||
|
||||
@@ -56,6 +56,8 @@ public:
|
||||
std::vector<const RimPerforationInterval*> perforations() const;
|
||||
std::vector<const RimPerforationInterval*> activePerforations() const;
|
||||
|
||||
RimMswCompletionParameters* mswParameters() const;
|
||||
|
||||
private:
|
||||
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
|
||||
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
|
||||
@@ -66,5 +68,5 @@ private:
|
||||
caf::PdmChildArrayField<RimPerforationInterval*> m_perforations;
|
||||
caf::PdmChildField<RimNonDarcyPerforationParameters*> m_nonDarcyParameters;
|
||||
|
||||
caf::PdmChildField<RimMswCompletionParameters*> m_mswParameters_OBSOLETE;
|
||||
caf::PdmChildField<RimMswCompletionParameters*> m_mswParameters;
|
||||
};
|
||||
|
||||
@@ -90,11 +90,6 @@ RimWellPathCompletionSettings::RimWellPathCompletionSettings()
|
||||
CAF_PDM_InitField( &m_wellBoreFluidPVTTable, "WellBoreFluidPVTTable", 0, "Wellbore Fluid PVT table", "", "", "" );
|
||||
CAF_PDM_InitFieldNoDefault( &m_hydrostaticDensity, "HydrostaticDensity", "Hydrostatic Density", "", "", "" );
|
||||
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( false );
|
||||
m_mswParameters.uiCapability()->setUiTreeHidden( true );
|
||||
m_mswParameters.uiCapability()->setUiTreeChildrenHidden( true );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -250,30 +245,6 @@ QString RimWellPathCompletionSettings::fluidInPlaceRegionForExport() const
|
||||
return QString( "%1" ).arg( m_fluidInPlaceRegion() );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimWellPathCompletionSettings::setUnitSystemSpecificDefaults()
|
||||
{
|
||||
m_mswParameters->setUnitSystemSpecificDefaults();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const RimMswCompletionParameters* RimWellPathCompletionSettings::mswParameters() const
|
||||
{
|
||||
return m_mswParameters();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimMswCompletionParameters* RimWellPathCompletionSettings::mswParameters()
|
||||
{
|
||||
return m_mswParameters();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -301,8 +272,6 @@ void RimWellPathCompletionSettings::defineUiOrdering( QString uiConfigName, caf:
|
||||
compExportGroup->add( &m_hydrostaticDensity );
|
||||
compExportGroup->add( &m_fluidInPlaceRegion );
|
||||
|
||||
caf::PdmUiGroup* mswGroup = uiOrdering.addNewGroup( "Multi Segment Well Options" );
|
||||
m_mswParameters->uiOrdering( uiConfigName, *mswGroup );
|
||||
uiOrdering.skipRemainingFields( true );
|
||||
}
|
||||
|
||||
|
||||
@@ -80,10 +80,6 @@ public:
|
||||
QString wellBoreFluidPVTForExport() const;
|
||||
QString hydrostaticDensityForExport() const;
|
||||
QString fluidInPlaceRegionForExport() const;
|
||||
void setUnitSystemSpecificDefaults();
|
||||
|
||||
const RimMswCompletionParameters* mswParameters() const;
|
||||
RimMswCompletionParameters* mswParameters();
|
||||
|
||||
static QRegExp wellNameForExportRegExp();
|
||||
|
||||
@@ -112,6 +108,4 @@ private:
|
||||
caf::PdmField<int> m_wellBoreFluidPVTTable;
|
||||
caf::PdmField<HydrostaticDensityEnum> m_hydrostaticDensity;
|
||||
caf::PdmField<int> m_fluidInPlaceRegion;
|
||||
|
||||
caf::PdmChildField<RimMswCompletionParameters*> m_mswParameters;
|
||||
};
|
||||
|
||||
@@ -38,10 +38,10 @@ RimWellPathFractureCollection::RimWellPathFractureCollection( void )
|
||||
setName( "Fractures" );
|
||||
nameField()->uiCapability()->setUiHidden( true );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault( &m_mswParameters_OBSOLETE, "MswParameters", "Multi Segment Well Parameters", "", "", "" );
|
||||
m_mswParameters_OBSOLETE = new RimMswCompletionParameters;
|
||||
m_mswParameters_OBSOLETE.uiCapability()->setUiTreeHidden( true );
|
||||
m_mswParameters_OBSOLETE.uiCapability()->setUiTreeChildrenHidden( 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(), "", "", "", "" );
|
||||
@@ -80,6 +80,14 @@ void RimWellPathFractureCollection::deleteFractures()
|
||||
m_fractures.deleteAllChildObjects();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
const RimMswCompletionParameters* RimWellPathFractureCollection::mswParameters() const
|
||||
{
|
||||
return m_mswParameters();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -114,6 +122,9 @@ std::vector<RimWellPathFracture*> RimWellPathFractureCollection::activeFractures
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
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 );
|
||||
}
|
||||
|
||||
@@ -141,12 +152,12 @@ void RimWellPathFractureCollection::initAfterRead()
|
||||
{
|
||||
if ( m_refMDType_OBSOLETE() != std::numeric_limits<int>::max() )
|
||||
{
|
||||
m_mswParameters_OBSOLETE->setReferenceMDType( (RimMswCompletionParameters::ReferenceMDType)m_refMDType_OBSOLETE() );
|
||||
m_mswParameters->setReferenceMDType( (RimMswCompletionParameters::ReferenceMDType)m_refMDType_OBSOLETE() );
|
||||
}
|
||||
|
||||
if ( m_refMD_OBSOLETE() != std::numeric_limits<double>::infinity() )
|
||||
{
|
||||
m_mswParameters_OBSOLETE->setManualReferenceMD( m_refMD_OBSOLETE() );
|
||||
m_mswParameters->setManualReferenceMD( m_refMD_OBSOLETE() );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -46,6 +46,7 @@ public:
|
||||
void addFracture( RimWellPathFracture* fracture );
|
||||
void deleteFractures();
|
||||
|
||||
const RimMswCompletionParameters* mswParameters() const;
|
||||
std::vector<RimWellPathFracture*> allFractures() const;
|
||||
std::vector<RimWellPathFracture*> activeFractures() const;
|
||||
|
||||
@@ -63,5 +64,5 @@ private:
|
||||
caf::PdmField<int> m_refMDType_OBSOLETE;
|
||||
caf::PdmField<double> m_refMD_OBSOLETE;
|
||||
|
||||
caf::PdmChildField<RimMswCompletionParameters*> m_mswParameters_OBSOLETE;
|
||||
caf::PdmChildField<RimMswCompletionParameters*> m_mswParameters;
|
||||
};
|
||||
|
||||
@@ -480,22 +480,9 @@ void RimWellPath::initAfterRead()
|
||||
{
|
||||
if ( RimProject::current()->isProjectFileVersionEqualOrOlderThan( "2020.10.1" ) )
|
||||
{
|
||||
if ( isTopLevelWellPath() && m_completionSettings->mswParameters()->isDefault() )
|
||||
if ( m_completionSettings->wellNameForExport().isEmpty() )
|
||||
{
|
||||
std::vector<const RimMswCompletionParameters*> allExistingMswParameters;
|
||||
descendantsOfType( allExistingMswParameters );
|
||||
for ( auto mswParameters : allExistingMswParameters )
|
||||
{
|
||||
if ( !mswParameters->isDefault() )
|
||||
{
|
||||
*( m_completionSettings->mswParameters() ) = *mswParameters;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( m_completionSettings->wellNameForExport().isEmpty() )
|
||||
{
|
||||
m_completionSettings->setWellNameForExport( name() );
|
||||
}
|
||||
m_completionSettings->setWellNameForExport( name() );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -671,12 +658,9 @@ void RimWellPath::defineUiTreeOrdering( caf::PdmUiTreeOrdering& uiTreeOrdering,
|
||||
{
|
||||
uiTreeOrdering.add( &m_wellLogFiles );
|
||||
|
||||
if ( isTopLevelWellPath() && !allCompletionsRecursively().empty() )
|
||||
if ( completionSettings() && isTopLevelWellPath() && !allCompletionsRecursively().empty() )
|
||||
{
|
||||
if ( completionSettings() )
|
||||
{
|
||||
uiTreeOrdering.add( completionSettings() );
|
||||
}
|
||||
uiTreeOrdering.add( completionSettings() );
|
||||
}
|
||||
|
||||
if ( m_completions->fishbonesCollection()->hasFishbones() )
|
||||
@@ -778,7 +762,13 @@ void RimWellPath::setUnitSystem( RiaDefines::EclipseUnitSystem unitSystem )
|
||||
m_unitSystem = unitSystem;
|
||||
|
||||
m_completions->setUnitSystemSpecificDefaults();
|
||||
m_completionSettings->setUnitSystemSpecificDefaults();
|
||||
|
||||
std::vector<RimMswCompletionParameters*> mswParameters;
|
||||
descendantsOfType( mswParameters );
|
||||
for ( auto mswParams : mswParameters )
|
||||
{
|
||||
mswParams->setUnitSystemSpecificDefaults();
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -1042,6 +1032,19 @@ bool RimWellPath::isTopLevelWellPath() const
|
||||
return this == topLevelWellPath();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimWellPath::isMultiLateralWellPath() const
|
||||
{
|
||||
auto top = topLevelWellPath();
|
||||
|
||||
std::vector<RimWellPath*> wells;
|
||||
top->descendantsIncludingThisOfType( wells );
|
||||
|
||||
return wells.size() > 1;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -155,6 +155,7 @@ public:
|
||||
std::vector<caf::PdmObjectHandle*>& referringObjects ) override;
|
||||
|
||||
bool isTopLevelWellPath() const;
|
||||
bool isMultiLateralWellPath() const;
|
||||
RimWellPath* topLevelWellPath() const;
|
||||
void updateAfterAddingToWellPathGroup();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user