#6833: Set eclipse case and time step in fracture model.

This commit is contained in:
Kristian Bendiksen
2020-10-23 15:29:02 +02:00
parent 5bc5f5ddb7
commit a9930e5fe0
13 changed files with 128 additions and 66 deletions

View File

@@ -44,6 +44,7 @@
#include "RimFaciesProperties.h"
#include "RimFaultInView.h"
#include "RimFaultInViewCollection.h"
#include "RimFracture.h"
#include "RimFractureModelCalculator.h"
#include "RimFractureModelPlot.h"
#include "RimFractureModelTemplate.h"
@@ -136,6 +137,7 @@ RimFractureModel::RimFractureModel()
m_editFractureModelTemplate.uiCapability()->setUiEditorTypeName( caf::PdmUiToolButtonEditor::uiEditorTypeName() );
m_editFractureModelTemplate.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
CAF_PDM_InitScriptableFieldNoDefault( &m_eclipseCase, "EclipseCase", "Case", "", "", "" );
CAF_PDM_InitScriptableField( &m_timeStep, "TimeStep", 0, "Time Step", "", "", "" );
CAF_PDM_InitScriptableField( &m_MD, "MeasuredDepth", 0.0, "Measured Depth", "", "", "" );
@@ -290,12 +292,22 @@ void RimFractureModel::fieldChangedByUi( const caf::PdmFieldHandle* changedField
if ( changedField == &m_MD || changedField == &m_extractionType || changedField == &m_boundingBoxVertical ||
changedField == &m_boundingBoxHorizontal || changedField == &m_fractureOrientation ||
changedField == &m_autoComputeBarrier || changedField == &m_azimuthAngle ||
changedField == &m_showOnlyBarrierFault )
changedField == &m_showOnlyBarrierFault || changedField == &m_eclipseCase )
{
updateThicknessDirection();
updateBarrierProperties();
}
if ( changedField == &m_eclipseCase )
{
// Set a valid default time step
const int timeStepCount = m_eclipseCase->timeStepStrings().size();
if ( timeStepCount > 0 )
{
m_timeStep = timeStepCount - 1;
}
}
if ( changedField == &m_showAllFaults )
{
m_showAllFaults = false;
@@ -323,6 +335,11 @@ void RimFractureModel::fieldChangedByUi( const caf::PdmFieldHandle* changedField
m_thermalExpansionCoeffientDefault.uiCapability()->setUiReadOnly( !m_useDetailedFluidLoss );
}
if ( changedField == &m_fractureModelTemplate )
{
setFractureModelTemplate( m_fractureModelTemplate() );
}
if ( changedField == &m_editFractureModelTemplate )
{
m_editFractureModelTemplate = false;
@@ -331,13 +348,10 @@ void RimFractureModel::fieldChangedByUi( const caf::PdmFieldHandle* changedField
Riu3DMainWindowTools::selectAsCurrentItem( m_fractureModelTemplate() );
}
}
if ( changedField == &m_fractureModelTemplate )
else
{
setFractureModelTemplate( m_fractureModelTemplate() );
updateViewsAndPlots();
}
updateViewsAndPlots();
}
//--------------------------------------------------------------------------------------------------
@@ -363,6 +377,14 @@ QList<caf::PdmOptionItemInfo> RimFractureModel::calculateValueOptions( const caf
}
}
}
else if ( fieldNeedingOptions == &m_eclipseCase )
{
RimTools::eclipseCaseOptionItems( &options );
}
else if ( fieldNeedingOptions == &m_timeStep )
{
RimTools::timeStepsForCase( m_eclipseCase(), &options );
}
return options;
}
@@ -810,6 +832,7 @@ void RimFractureModel::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderin
uiOrdering.add( &m_fractureModelTemplate, {true, 2, 1} );
uiOrdering.add( &m_editFractureModelTemplate, {false, 1, 0} );
uiOrdering.add( &m_eclipseCase );
uiOrdering.add( &m_timeStep );
uiOrdering.add( &m_MD );
uiOrdering.add( &m_extractionType );
@@ -1342,6 +1365,14 @@ int RimFractureModel::timeStep() const
return m_timeStep;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimFractureModel::setTimeStep( int timeStep )
{
m_timeStep = timeStep;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -1369,25 +1400,29 @@ double RimFractureModel::referenceTemperatureDepth() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimEclipseCase* RimFractureModel::getEclipseCase()
RimEclipseCase* RimFractureModel::eclipseCase() const
{
// Find an eclipse case
RimProject* proj = RimProject::current();
if ( proj->eclipseCases().empty() ) return nullptr;
return proj->eclipseCases()[0];
return m_eclipseCase;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigEclipseCaseData* RimFractureModel::getEclipseCaseData()
void RimFractureModel::setEclipseCase( RimEclipseCase* eclipseCase )
{
m_eclipseCase = eclipseCase;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RigEclipseCaseData* RimFractureModel::getEclipseCaseData() const
{
// Find an eclipse case
RimEclipseCase* eclipseCase = getEclipseCase();
if ( !eclipseCase ) return nullptr;
RimEclipseCase* eclCase = eclipseCase();
if ( !eclCase ) return nullptr;
return eclipseCase->eclipseCaseData();
return eclCase->eclipseCaseData();
}
//--------------------------------------------------------------------------------------------------
@@ -1543,17 +1578,6 @@ std::shared_ptr<RimFractureModelCalculator> RimFractureModel::calculator() const
return m_calculator;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimEclipseCase* RimFractureModel::eclipseCase() const
{
RimProject* proj = RimProject::current();
if ( proj->eclipseCases().empty() ) return nullptr;
return proj->eclipseCases()[0];
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -83,7 +83,11 @@ public:
void setMD( double md );
int timeStep() const;
int timeStep() const;
void setTimeStep( int timeStep );
RimEclipseCase* eclipseCase() const;
void setEclipseCase( RimEclipseCase* eclipseCase );
cvf::Vec3d anchorPosition() const;
cvf::Vec3d thicknessDirection() const;
@@ -163,7 +167,6 @@ public:
RimFractureModel::MissingValueStrategy missingValueStrategy( RiaDefines::CurveProperty curveProperty ) const;
RimFractureModel::BurdenStrategy burdenStrategy( RiaDefines::CurveProperty curveProperty ) const;
RimEclipseCase* eclipseCase() const;
RiaDefines::ResultCatType eclipseResultCategory( RiaDefines::CurveProperty curveProperty ) const;
QString eclipseResultVariable( RiaDefines::CurveProperty curveProperty ) const;
@@ -191,8 +194,7 @@ private:
static QString vecToString( const cvf::Vec3d& vec );
void updateThicknessDirectionWellPathName();
static RigEclipseCaseData* getEclipseCaseData();
static RimEclipseCase* getEclipseCase();
RigEclipseCaseData* getEclipseCaseData() const;
void updateBarrierProperties();
void addBarrierAnnotation( const cvf::Vec3d& startPosition, const cvf::Vec3d& endPosition, const QString& barrierText );
@@ -218,6 +220,7 @@ private:
protected:
caf::PdmField<double> m_MD;
caf::PdmPtrField<RimEclipseCase*> m_eclipseCase;
caf::PdmField<int> m_timeStep;
caf::PdmField<caf::AppEnum<ExtractionType>> m_extractionType;
caf::PdmField<cvf::Vec3d> m_anchorPosition;

View File

@@ -118,6 +118,8 @@ void RimFractureModelCalculator::calculateLayers( std::vector<std::pair<double,
depths,
rkbDiff );
if ( layerValues.size() != depths.size() ) return;
size_t startIndex = 0;
for ( size_t i = 0; i < depths.size(); i++ )
{