#6284 Mud Weight Window: add option for non-reservoir pore pressure data.

This commit is contained in:
Kristian Bendiksen
2020-08-10 19:30:41 +02:00
parent e3628906c8
commit e93c4e75f2
4 changed files with 74 additions and 11 deletions

View File

@@ -23,6 +23,7 @@
#include "RifElementPropertyReader.h" #include "RifElementPropertyReader.h"
#include "RifGeoMechReaderInterface.h" #include "RifGeoMechReaderInterface.h"
#include "RimMudWeightWindowParameters.h"
#ifdef USE_ODB_API #ifdef USE_ODB_API
#include "RifOdbReader.h" #include "RifOdbReader.h"
@@ -1707,9 +1708,18 @@ double RigFemPartResultsCollection::shMultiplierMudWeightWindow() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimMudWeightWindowParameters::UpperLimitType RigFemPartResultsCollection::upperLimitParameterMudWeightWindow() const double RigFemPartResultsCollection::hydrostaticMultiplierPPNonRes() const
{ {
return m_upperLimitParameterMudWeightWindow; return m_hydrostaticMultiplierPPNonResMudWeightWindow;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimMudWeightWindowParameters::NonReservoirPorePressureType
RigFemPartResultsCollection::nonReservoirPorePressureTypeMudWeightWindow() const
{
return m_nonReservoirPorePressureTypeMudWeightWindow;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -1720,6 +1730,14 @@ RimMudWeightWindowParameters::LowerLimitType RigFemPartResultsCollection::lowerL
return m_lowerLimitParameterMudWeightWindow; return m_lowerLimitParameterMudWeightWindow;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimMudWeightWindowParameters::UpperLimitType RigFemPartResultsCollection::upperLimitParameterMudWeightWindow() const
{
return m_upperLimitParameterMudWeightWindow;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -1737,7 +1755,9 @@ void RigFemPartResultsCollection::setMudWeightWindowParameters(
RimMudWeightWindowParameters::LowerLimitType lowerLimit, RimMudWeightWindowParameters::LowerLimitType lowerLimit,
int referenceLayer, int referenceLayer,
RimMudWeightWindowParameters::FractureGradientCalculationType fgCalculationType, RimMudWeightWindowParameters::FractureGradientCalculationType fgCalculationType,
double shMultiplier ) double shMultiplier,
RimMudWeightWindowParameters::NonReservoirPorePressureType nonReservoirPorePressureType,
double hydrostaticMultiplierPPNonRes )
{ {
m_airGapMudWeightWindow = airGap; m_airGapMudWeightWindow = airGap;
m_upperLimitParameterMudWeightWindow = upperLimit; m_upperLimitParameterMudWeightWindow = upperLimit;
@@ -1745,6 +1765,8 @@ void RigFemPartResultsCollection::setMudWeightWindowParameters(
m_referenceLayerMudWeightWindow = referenceLayer; m_referenceLayerMudWeightWindow = referenceLayer;
m_fractureGradientCalculationTypeMudWeightWindow = fgCalculationType; m_fractureGradientCalculationTypeMudWeightWindow = fgCalculationType;
m_shMultiplierMudWeightWindow = shMultiplier; m_shMultiplierMudWeightWindow = shMultiplier;
m_nonReservoirPorePressureTypeMudWeightWindow = nonReservoirPorePressureType;
m_hydrostaticMultiplierPPNonResMudWeightWindow = hydrostaticMultiplierPPNonRes;
// Invalidate dependent results // Invalidate dependent results
for ( auto result : mudWeightWindowResults() ) for ( auto result : mudWeightWindowResults() )

View File

@@ -88,15 +88,21 @@ public:
double getCalculationParameterValue( RimMudWeightWindowParameters::ParameterType ) const; double getCalculationParameterValue( RimMudWeightWindowParameters::ParameterType ) const;
QString getCalculationParameterAddress( RimMudWeightWindowParameters::ParameterType ) const; QString getCalculationParameterAddress( RimMudWeightWindowParameters::ParameterType ) const;
void setMudWeightWindowParameters( double airGap, void setMudWeightWindowParameters( double airGap,
RimMudWeightWindowParameters::UpperLimitType upperLimit, RimMudWeightWindowParameters::UpperLimitType upperLimit,
RimMudWeightWindowParameters::LowerLimitType lowerLimit, RimMudWeightWindowParameters::LowerLimitType lowerLimit,
int referenceLayer, int referenceLayer,
RimMudWeightWindowParameters::FractureGradientCalculationType fgCalculationType, RimMudWeightWindowParameters::FractureGradientCalculationType fgCalculationType,
double shMultiplier ); double shMultiplier,
RimMudWeightWindowParameters::NonReservoirPorePressureType nonReservoirPorePressureType,
double hydroStaticMultiplierPPNonRes );
double airGapMudWeightWindow() const; double airGapMudWeightWindow() const;
double shMultiplierMudWeightWindow() const; double shMultiplierMudWeightWindow() const;
double hydrostaticMultiplierPPNonRes() const;
RimMudWeightWindowParameters::NonReservoirPorePressureType nonReservoirPorePressureTypeMudWeightWindow() const;
RimMudWeightWindowParameters::UpperLimitType upperLimitParameterMudWeightWindow() const; RimMudWeightWindowParameters::UpperLimitType upperLimitParameterMudWeightWindow() const;
RimMudWeightWindowParameters::LowerLimitType lowerLimitParameterMudWeightWindow() const; RimMudWeightWindowParameters::LowerLimitType lowerLimitParameterMudWeightWindow() const;
size_t referenceLayerMudWeightWindow() const; size_t referenceLayerMudWeightWindow() const;
@@ -209,6 +215,9 @@ private:
RimMudWeightWindowParameters::LowerLimitType m_lowerLimitParameterMudWeightWindow; RimMudWeightWindowParameters::LowerLimitType m_lowerLimitParameterMudWeightWindow;
RimMudWeightWindowParameters::FractureGradientCalculationType m_fractureGradientCalculationTypeMudWeightWindow; RimMudWeightWindowParameters::FractureGradientCalculationType m_fractureGradientCalculationTypeMudWeightWindow;
RimMudWeightWindowParameters::NonReservoirPorePressureType m_nonReservoirPorePressureTypeMudWeightWindow;
double m_hydrostaticMultiplierPPNonResMudWeightWindow;
std::map<RimMudWeightWindowParameters::ParameterType, QString> parameterAddresses; std::map<RimMudWeightWindowParameters::ParameterType, QString> parameterAddresses;
std::map<RimMudWeightWindowParameters::ParameterType, double> parameterValues; std::map<RimMudWeightWindowParameters::ParameterType, double> parameterValues;

View File

@@ -89,6 +89,16 @@ void caf::AppEnum<RimMudWeightWindowParameters::FractureGradientCalculationType>
setDefault( RimMudWeightWindowParameters::FractureGradientCalculationType::DERIVED_FROM_K0FG ); setDefault( RimMudWeightWindowParameters::FractureGradientCalculationType::DERIVED_FROM_K0FG );
} }
template <>
void caf::AppEnum<RimMudWeightWindowParameters::NonReservoirPorePressureType>::setUp()
{
addItem( RimMudWeightWindowParameters::NonReservoirPorePressureType::HYDROSTATIC, "PORE_PRESSURE", "Pore Pressure" );
addItem( RimMudWeightWindowParameters::NonReservoirPorePressureType::PER_ELEMENT,
"PER_ELEMENT",
"From element properties" );
setDefault( RimMudWeightWindowParameters::NonReservoirPorePressureType::HYDROSTATIC );
}
} // End namespace caf } // End namespace caf
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -169,6 +179,17 @@ RimMudWeightWindowParameters::RimMudWeightWindowParameters( void )
"", "",
"" ); "" );
caf::AppEnum<NonReservoirPorePressureType> defaultNonReservoirPorePressureType =
RimMudWeightWindowParameters::NonReservoirPorePressureType::HYDROSTATIC;
CAF_PDM_InitField( &m_porePressureNonReservoirSource,
"PorePressureNonReservoirSource",
defaultNonReservoirPorePressureType,
"Non-Reservoir Pore Pressure",
"",
"Data source for Non-Reservoir Pore Pressure",
"" );
CAF_PDM_InitField( &m_userDefinedPPNonReservoir, "UserPPNonReservoir", 1.0, " Multiplier of hydrostatic PP", "", "", "" );
CAF_PDM_InitField( &m_referenceLayer, "ReferenceLayer", -1, "Reference Layer", "", "", "" ); CAF_PDM_InitField( &m_referenceLayer, "ReferenceLayer", -1, "Reference Layer", "", "", "" );
} }
@@ -363,7 +384,8 @@ void RimMudWeightWindowParameters::fieldChangedByUi( const caf::PdmFieldHandle*
} }
else if ( changedField == &m_airGap || changedField == &m_upperLimitType || changedField == &m_lowerLimitType || else if ( changedField == &m_airGap || changedField == &m_upperLimitType || changedField == &m_lowerLimitType ||
changedField == &m_referenceLayer || changedField == &m_fractureGradientCalculationType || changedField == &m_referenceLayer || changedField == &m_fractureGradientCalculationType ||
changedField == &m_shMultiplier ) changedField == &m_shMultiplier || changedField == &m_porePressureNonReservoirSource ||
changedField == &m_userDefinedPPNonReservoir )
{ {
RigGeoMechCaseData* rigCaseData = geoMechCase->geoMechData(); RigGeoMechCaseData* rigCaseData = geoMechCase->geoMechData();
if ( rigCaseData && rigCaseData->femPartResults() ) if ( rigCaseData && rigCaseData->femPartResults() )
@@ -373,7 +395,9 @@ void RimMudWeightWindowParameters::fieldChangedByUi( const caf::PdmFieldHandle*
m_lowerLimitType.value(), m_lowerLimitType.value(),
m_referenceLayer, m_referenceLayer,
m_fractureGradientCalculationType.value(), m_fractureGradientCalculationType.value(),
m_shMultiplier ); m_shMultiplier,
m_porePressureNonReservoirSource.value(),
m_userDefinedPPNonReservoir );
geoMechCase->updateConnectedViews(); geoMechCase->updateConnectedViews();
} }
} }

View File

@@ -67,6 +67,12 @@ public:
PROPORTIONAL_TO_SH PROPORTIONAL_TO_SH
}; };
enum class NonReservoirPorePressureType
{
HYDROSTATIC,
PER_ELEMENT
};
RimMudWeightWindowParameters( void ); RimMudWeightWindowParameters( void );
SourceType wellDeviationType() const; SourceType wellDeviationType() const;
@@ -141,10 +147,12 @@ private:
caf::PdmField<double> m_airGap; caf::PdmField<double> m_airGap;
caf::PdmField<double> m_shMultiplier; caf::PdmField<double> m_shMultiplier;
caf::PdmField<double> m_userDefinedPPNonReservoir;
caf::PdmField<caf::AppEnum<UpperLimitType>> m_upperLimitType; caf::PdmField<caf::AppEnum<UpperLimitType>> m_upperLimitType;
caf::PdmField<caf::AppEnum<LowerLimitType>> m_lowerLimitType; caf::PdmField<caf::AppEnum<LowerLimitType>> m_lowerLimitType;
caf::PdmField<caf::AppEnum<FractureGradientCalculationType>> m_fractureGradientCalculationType; caf::PdmField<caf::AppEnum<FractureGradientCalculationType>> m_fractureGradientCalculationType;
caf::PdmField<caf::AppEnum<NonReservoirPorePressureType>> m_porePressureNonReservoirSource;
caf::PdmField<int> m_referenceLayer; caf::PdmField<int> m_referenceLayer;
}; };