From 24fe32bf54d0bacc636fbc91dafdefb648e41a06 Mon Sep 17 00:00:00 2001 From: Kristian Bendiksen Date: Fri, 25 Sep 2020 15:10:41 +0200 Subject: [PATCH] #6234 Move reference stress and temperature to template. --- .../Completions/RimFractureModel.cpp | 78 +---------- .../Completions/RimFractureModel.h | 7 - .../Completions/RimFractureModelTemplate.cpp | 125 ++++++++++++++++++ .../Completions/RimFractureModelTemplate.h | 19 +++ 4 files changed, 151 insertions(+), 78 deletions(-) diff --git a/ApplicationCode/ProjectDataModel/Completions/RimFractureModel.cpp b/ApplicationCode/ProjectDataModel/Completions/RimFractureModel.cpp index b3bb90abdb..14f46eb6d6 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimFractureModel.cpp +++ b/ApplicationCode/ProjectDataModel/Completions/RimFractureModel.cpp @@ -135,41 +135,6 @@ RimFractureModel::RimFractureModel() CAF_PDM_InitScriptableField( &m_boundingBoxHorizontal, "BoundingBoxHorizontal", 50.0, "Bounding Box Horizontal", "", "", "" ); CAF_PDM_InitScriptableField( &m_boundingBoxVertical, "BoundingBoxVertical", 100.0, "Bounding Box Vertical", "", "", "" ); - // Stress unit: bar - // Stress gradient unit: bar/m - // Depth is meter - double defaultStressGradient = 0.238; - double defaultStressDepth = computeDefaultStressDepth(); - double defaultStress = defaultStressDepth * defaultStressGradient; - - CAF_PDM_InitScriptableField( &m_verticalStress, "VerticalStress", defaultStress, "Vertical Stress", "", "", "" ); - m_verticalStress.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleValueEditor::uiEditorTypeName() ); - CAF_PDM_InitScriptableField( &m_verticalStressGradient, - "VerticalStressGradient", - defaultStressGradient, - "Vertical Stress Gradient", - "", - "", - "" ); - CAF_PDM_InitScriptableField( &m_stressDepth, "StressDepth", defaultStressDepth, "Stress Depth", "", "", "" ); - m_stressDepth.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleValueEditor::uiEditorTypeName() ); - - CAF_PDM_InitScriptableField( &m_referenceTemperature, "ReferenceTemperature", 70.0, "Temperature [C]", "", "", "" ); - CAF_PDM_InitScriptableField( &m_referenceTemperatureGradient, - "ReferenceTemperatureGradient", - 0.025, - "Temperature Gradient [C/m]", - "", - "", - "" ); - CAF_PDM_InitScriptableField( &m_referenceTemperatureDepth, - "ReferenceTemperatureDepth", - 2500.0, - "Temperature Depth [m]", - "", - "", - "" ); - CAF_PDM_InitScriptableField( &m_useDetailedFluidLoss, "UseDetailedFluidLoss", true, "Use Detailed Fluid Loss", "", "", "" ); CAF_PDM_InitScriptableField( &m_relativePermeabilityFactorDefault, @@ -309,10 +274,6 @@ void RimFractureModel::fieldChangedByUi( const caf::PdmFieldHandle* changedField m_relativePermeabilityFactorDefault.uiCapability()->setUiReadOnly( !m_useDetailedFluidLoss ); m_poroElasticConstantDefault.uiCapability()->setUiReadOnly( !m_useDetailedFluidLoss ); m_thermalExpansionCoeffientDefault.uiCapability()->setUiReadOnly( !m_useDetailedFluidLoss ); - - m_referenceTemperature.uiCapability()->setUiReadOnly( !m_useDetailedFluidLoss ); - m_referenceTemperatureGradient.uiCapability()->setUiReadOnly( !m_useDetailedFluidLoss ); - m_referenceTemperatureDepth.uiCapability()->setUiReadOnly( !m_useDetailedFluidLoss ); } if ( changedField == &m_editFractureModelTemplate ) @@ -745,22 +706,12 @@ void RimFractureModel::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderin boundingBoxGroup->add( &m_boundingBoxHorizontal ); boundingBoxGroup->add( &m_boundingBoxVertical ); - caf::PdmUiOrdering* referenceStressGroup = uiOrdering.addNewGroup( "Reference Stress" ); - referenceStressGroup->add( &m_verticalStress ); - referenceStressGroup->add( &m_verticalStressGradient ); - referenceStressGroup->add( &m_stressDepth ); - caf::PdmUiOrdering* detailedFluidLossGroup = uiOrdering.addNewGroup( "Detailed Fluid Loss" ); detailedFluidLossGroup->add( &m_useDetailedFluidLoss ); detailedFluidLossGroup->add( &m_relativePermeabilityFactorDefault ); detailedFluidLossGroup->add( &m_poroElasticConstantDefault ); detailedFluidLossGroup->add( &m_thermalExpansionCoeffientDefault ); - caf::PdmUiOrdering* temperatureGroup = detailedFluidLossGroup->addNewGroup( "Temperature" ); - temperatureGroup->add( &m_referenceTemperature ); - temperatureGroup->add( &m_referenceTemperatureGradient ); - temperatureGroup->add( &m_referenceTemperatureDepth ); - caf::PdmUiOrdering* perforationGroup = uiOrdering.addNewGroup( "Perforation" ); perforationGroup->add( &m_perforationLength ); perforationGroup->add( &m_fractureOrientation ); @@ -781,8 +732,7 @@ void RimFractureModel::defineEditorAttribute( const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute ) { - if ( field == &m_stressDepth || field == &m_verticalStress || field == &m_formationDip || field == &m_barrierDip || - field == &m_distanceToBarrier ) + if ( field == &m_formationDip || field == &m_barrierDip || field == &m_distanceToBarrier ) { auto doubleAttr = dynamic_cast( attribute ); if ( doubleAttr ) @@ -1087,7 +1037,7 @@ bool RimFractureModel::hasDefaultValueForProperty( RiaDefines::CurveProperty cur //-------------------------------------------------------------------------------------------------- double RimFractureModel::verticalStress() const { - return m_verticalStress; + return m_fractureModelTemplate() ? m_fractureModelTemplate()->verticalStress() : 0.0; } //-------------------------------------------------------------------------------------------------- @@ -1095,7 +1045,7 @@ double RimFractureModel::verticalStress() const //-------------------------------------------------------------------------------------------------- double RimFractureModel::verticalStressGradient() const { - return m_verticalStressGradient; + return m_fractureModelTemplate() ? m_fractureModelTemplate()->verticalStressGradient() : 0.0; } //-------------------------------------------------------------------------------------------------- @@ -1103,7 +1053,7 @@ double RimFractureModel::verticalStressGradient() const //-------------------------------------------------------------------------------------------------- double RimFractureModel::stressDepth() const { - return m_stressDepth; + return m_fractureModelTemplate() ? m_fractureModelTemplate()->stressDepth() : 0.0; } //-------------------------------------------------------------------------------------------------- @@ -1216,7 +1166,7 @@ void RimFractureModel::setMD( double md ) //-------------------------------------------------------------------------------------------------- double RimFractureModel::referenceTemperature() const { - return m_referenceTemperature; + return m_fractureModelTemplate() ? m_fractureModelTemplate()->referenceTemperature() : 0.0; } //-------------------------------------------------------------------------------------------------- @@ -1224,7 +1174,7 @@ double RimFractureModel::referenceTemperature() const //-------------------------------------------------------------------------------------------------- double RimFractureModel::referenceTemperatureGradient() const { - return m_referenceTemperatureGradient; + return m_fractureModelTemplate() ? m_fractureModelTemplate()->referenceTemperatureGradient() : 0.0; } //-------------------------------------------------------------------------------------------------- @@ -1232,7 +1182,7 @@ double RimFractureModel::referenceTemperatureGradient() const //-------------------------------------------------------------------------------------------------- double RimFractureModel::referenceTemperatureDepth() const { - return m_referenceTemperatureDepth; + return m_fractureModelTemplate() ? m_fractureModelTemplate()->referenceTemperatureDepth() : 0.0; } //-------------------------------------------------------------------------------------------------- @@ -1259,20 +1209,6 @@ RigEclipseCaseData* RimFractureModel::getEclipseCaseData() return eclipseCase->eclipseCaseData(); } -//-------------------------------------------------------------------------------------------------- -/// -//-------------------------------------------------------------------------------------------------- -double RimFractureModel::computeDefaultStressDepth() -{ - const double stressDepth = 1000.0; - - RimEclipseCase* eclipseCase = getEclipseCase(); - if ( !eclipseCase ) return stressDepth; - - // Use top of active cells as reference stress depth - return -eclipseCase->activeCellsBoundingBox().max().z(); -} - //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/Completions/RimFractureModel.h b/ApplicationCode/ProjectDataModel/Completions/RimFractureModel.h index efa9cced62..575f6ebdad 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimFractureModel.h +++ b/ApplicationCode/ProjectDataModel/Completions/RimFractureModel.h @@ -160,7 +160,6 @@ private: static QString vecToString( const cvf::Vec3d& vec ); void updateThicknessDirectionWellPathName(); - static double computeDefaultStressDepth(); static RigEclipseCaseData* getEclipseCaseData(); static RimEclipseCase* getEclipseCase(); @@ -189,12 +188,6 @@ protected: caf::PdmField m_boundingBoxVertical; caf::PdmField m_boundingBoxHorizontal; caf::PdmPtrField m_thicknessDirectionWellPath; - caf::PdmField m_verticalStress; - caf::PdmField m_verticalStressGradient; - caf::PdmField m_stressDepth; - caf::PdmField m_referenceTemperature; - caf::PdmField m_referenceTemperatureGradient; - caf::PdmField m_referenceTemperatureDepth; caf::PdmField m_relativePermeabilityFactorDefault; caf::PdmField m_poroElasticConstantDefault; caf::PdmField m_thermalExpansionCoeffientDefault; diff --git a/ApplicationCode/ProjectDataModel/Completions/RimFractureModelTemplate.cpp b/ApplicationCode/ProjectDataModel/Completions/RimFractureModelTemplate.cpp index c11a3d2bf9..079838b599 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimFractureModelTemplate.cpp +++ b/ApplicationCode/ProjectDataModel/Completions/RimFractureModelTemplate.cpp @@ -83,6 +83,41 @@ RimFractureModelTemplate::RimFractureModelTemplate() CAF_PDM_InitScriptableField( &m_defaultPorosity, "DefaultPorosity", 0.0, "Default Porosity", "", "", "" ); CAF_PDM_InitScriptableField( &m_defaultPermeability, "DefaultPermeability", 10.0e-6, "Default Permeability", "", "", "" ); + // Stress unit: bar + // Stress gradient unit: bar/m + // Depth is meter + double defaultStressGradient = 0.238; + double defaultStressDepth = computeDefaultStressDepth(); + double defaultStress = defaultStressDepth * defaultStressGradient; + + CAF_PDM_InitScriptableField( &m_verticalStress, "VerticalStress", defaultStress, "Vertical Stress", "", "", "" ); + m_verticalStress.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleValueEditor::uiEditorTypeName() ); + CAF_PDM_InitScriptableField( &m_verticalStressGradient, + "VerticalStressGradient", + defaultStressGradient, + "Vertical Stress Gradient", + "", + "", + "" ); + CAF_PDM_InitScriptableField( &m_stressDepth, "StressDepth", defaultStressDepth, "Stress Depth", "", "", "" ); + m_stressDepth.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleValueEditor::uiEditorTypeName() ); + + CAF_PDM_InitScriptableField( &m_referenceTemperature, "ReferenceTemperature", 70.0, "Temperature [C]", "", "", "" ); + CAF_PDM_InitScriptableField( &m_referenceTemperatureGradient, + "ReferenceTemperatureGradient", + 0.025, + "Temperature Gradient [C/m]", + "", + "", + "" ); + CAF_PDM_InitScriptableField( &m_referenceTemperatureDepth, + "ReferenceTemperatureDepth", + 2500.0, + "Temperature Depth [m]", + "", + "", + "" ); + CAF_PDM_InitScriptableField( &m_overburdenHeight, "OverburdenHeight", 50.0, "Overburden Height", "", "", "" ); CAF_PDM_InitScriptableFieldNoDefault( &m_overburdenFormation, "OverburdenFormation", "Overburden Formation", "", "", "" ); CAF_PDM_InitScriptableFieldNoDefault( &m_overburdenFacies, "OverburdenFacies", "Overburden Facies", "", "", "" ); @@ -197,6 +232,16 @@ void RimFractureModelTemplate::defineUiOrdering( QString uiConfigName, caf::PdmU defaultsGroup->add( &m_defaultPorosity ); defaultsGroup->add( &m_defaultPermeability ); + caf::PdmUiOrdering* referenceStressGroup = uiOrdering.addNewGroup( "Reference Stress" ); + referenceStressGroup->add( &m_verticalStress ); + referenceStressGroup->add( &m_verticalStressGradient ); + referenceStressGroup->add( &m_stressDepth ); + + caf::PdmUiOrdering* temperatureGroup = uiOrdering.addNewGroup( "Temperature" ); + temperatureGroup->add( &m_referenceTemperature ); + temperatureGroup->add( &m_referenceTemperatureGradient ); + temperatureGroup->add( &m_referenceTemperatureDepth ); + caf::PdmUiOrdering* overburdenGroup = uiOrdering.addNewGroup( "Overburden" ); overburdenGroup->add( &m_overburdenHeight ); overburdenGroup->add( &m_overburdenFormation ); @@ -214,6 +259,24 @@ void RimFractureModelTemplate::defineUiOrdering( QString uiConfigName, caf::PdmU underburdenGroup->add( &m_underburdenFluidDensity ); } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RimFractureModelTemplate::defineEditorAttribute( const caf::PdmFieldHandle* field, + QString uiConfigName, + caf::PdmUiEditorAttribute* attribute ) +{ + if ( field == &m_stressDepth || field == &m_verticalStress ) + { + auto doubleAttr = dynamic_cast( attribute ); + if ( doubleAttr ) + { + doubleAttr->m_decimals = 2; + doubleAttr->m_numberFormat = caf::PdmUiDoubleValueEditorAttribute::NumberFormat::FIXED; + } + } +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -426,6 +489,68 @@ QString RimFractureModelTemplate::underburdenFacies() const return m_underburdenFacies; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +double RimFractureModelTemplate::verticalStress() const +{ + return m_verticalStress; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +double RimFractureModelTemplate::verticalStressGradient() const +{ + return m_verticalStressGradient; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +double RimFractureModelTemplate::stressDepth() const +{ + return m_stressDepth; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +double RimFractureModelTemplate::referenceTemperature() const +{ + return m_referenceTemperature; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +double RimFractureModelTemplate::referenceTemperatureGradient() const +{ + return m_referenceTemperatureGradient; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +double RimFractureModelTemplate::referenceTemperatureDepth() const +{ + return m_referenceTemperatureDepth; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +double RimFractureModelTemplate::computeDefaultStressDepth() +{ + const double stressDepth = 1000.0; + + RimEclipseCase* eclipseCase = getEclipseCase(); + if ( !eclipseCase ) return stressDepth; + + // Use top of active cells as reference stress depth + return -eclipseCase->activeCellsBoundingBox().max().z(); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/Completions/RimFractureModelTemplate.h b/ApplicationCode/ProjectDataModel/Completions/RimFractureModelTemplate.h index b6760d11c6..ebda9b711b 100644 --- a/ApplicationCode/ProjectDataModel/Completions/RimFractureModelTemplate.h +++ b/ApplicationCode/ProjectDataModel/Completions/RimFractureModelTemplate.h @@ -74,6 +74,14 @@ public: double overburdenFluidDensity() const; double underburdenFluidDensity() const; + double referenceTemperature() const; + double referenceTemperatureGradient() const; + double referenceTemperatureDepth() const; + + double verticalStress() const; + double verticalStressGradient() const; + double stressDepth() const; + void loadDataAndUpdate(); void setElasticProperties( RimElasticProperties* elasticProperties ); @@ -89,16 +97,27 @@ protected: QList calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly ) override; void initAfterRead() override; + void defineEditorAttribute( const caf::PdmFieldHandle* field, + QString uiConfigName, + caf::PdmUiEditorAttribute* attribute ) override; static RimEclipseCase* getEclipseCase(); static RigEclipseCaseData* getEclipseCaseData(); void faciesPropertiesChanged( const caf::SignalEmitter* emitter ); + static double computeDefaultStressDepth(); + protected: caf::PdmField m_id; caf::PdmField m_defaultPorosity; caf::PdmField m_defaultPermeability; + caf::PdmField m_verticalStress; + caf::PdmField m_verticalStressGradient; + caf::PdmField m_stressDepth; + caf::PdmField m_referenceTemperature; + caf::PdmField m_referenceTemperatureGradient; + caf::PdmField m_referenceTemperatureDepth; caf::PdmField m_overburdenHeight; caf::PdmField m_overburdenPorosity; caf::PdmField m_overburdenPermeability;