#7339 StimPlanFracture: Add methods to use two grids for data extraction.

This commit is contained in:
Kristian Bendiksen 2021-02-05 15:25:52 +01:00
parent 6c672d9c9c
commit c6f35cbe1f
9 changed files with 50 additions and 21 deletions

View File

@ -67,7 +67,7 @@ CAF_CMD_SOURCE_INIT( RicNewStimPlanModelPlotFeature, "RicNewStimPlanModelPlotFea
RimStimPlanModelPlot* RicNewStimPlanModelPlotFeature::createPlot( RimStimPlanModel* stimPlanModel )
{
RimEclipseCase* eclipseCase = stimPlanModel->eclipseCase();
RimEclipseCase* eclipseCase = stimPlanModel->eclipseCaseForProperty( RiaDefines::CurveProperty::UNDEFINED );
int timeStep = stimPlanModel->timeStep();
caf::ProgressInfo progInfo( 100, "Creating StimPlan Model Plot" );
@ -260,9 +260,8 @@ void RicNewStimPlanModelPlotFeature::createFaciesTrack( RimStimPlanModelPlot* pl
caf::ColorTable colors = RiaColorTables::wellLogPlotPaletteColors();
RimStimPlanModelCurve* curve = new RimStimPlanModelCurve;
curve->setStimPlanModel( stimPlanModel );
curve->setCurveProperty( RiaDefines::CurveProperty::FACIES );
curve->setCase( eclipseCase );
curve->setStimPlanModel( stimPlanModel );
curve->setEclipseResultCategory( faciesDefinition->resultType() );
curve->setEclipseResultVariable( faciesDefinition->resultVariable() );
curve->setColor( colors.cycledColor3f( 0 ) );
@ -315,7 +314,6 @@ void RicNewStimPlanModelPlotFeature::createLayersTrack( RimStimPlanModelPlot* pl
RimStimPlanModelCurve* curve = new RimStimPlanModelCurve;
curve->setCurveProperty( RiaDefines::CurveProperty::LAYERS );
curve->setStimPlanModel( stimPlanModel );
curve->setCase( eclipseCase );
curve->setColor( colors.cycledColor3f( 0 ) );
curve->setLineStyle( RiuQwtPlotCurveDefines::LineStyleEnum::STYLE_SOLID );
curve->setLineThickness( 2 );
@ -368,7 +366,6 @@ void RicNewStimPlanModelPlotFeature::createParametersTrack( RimStimPlanModelPlot
RimStimPlanModelCurve* curve = new RimStimPlanModelCurve;
curve->setCurveProperty( propertyType );
curve->setStimPlanModel( stimPlanModel );
curve->setCase( eclipseCase );
curve->setEclipseResultVariable( resultVariable );
curve->setEclipseResultCategory( resultCategoryType );
curve->setColor( colors.cycledColor3f( colorIndex ) );

View File

@ -136,9 +136,11 @@ RimStimPlanModel::RimStimPlanModel()
m_editStimPlanModelTemplate.uiCapability()->setUiEditorTypeName( caf::PdmUiToolButtonEditor::uiEditorTypeName() );
m_editStimPlanModelTemplate.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
CAF_PDM_InitScriptableFieldNoDefault( &m_eclipseCase, "EclipseCase", "Case", "", "", "" );
CAF_PDM_InitScriptableFieldNoDefault( &m_eclipseCase, "EclipseCase", "Dynamic Case", "", "", "" );
CAF_PDM_InitScriptableField( &m_timeStep, "TimeStep", 0, "Time Step", "", "", "" );
CAF_PDM_InitScriptableFieldNoDefault( &m_staticEclipseCase, "StaticEclipseCase", "Static Case", "", "", "" );
CAF_PDM_InitScriptableField( &m_MD, "MeasuredDepth", 0.0, "Measured Depth", "", "", "" );
m_MD.uiCapability()->setUiEditorTypeName( caf::PdmUiDoubleSliderEditor::uiEditorTypeName() );
@ -388,7 +390,7 @@ QList<caf::PdmOptionItemInfo> RimStimPlanModel::calculateValueOptions( const caf
}
}
}
else if ( fieldNeedingOptions == &m_eclipseCase )
else if ( fieldNeedingOptions == &m_eclipseCase || fieldNeedingOptions == &m_staticEclipseCase )
{
RimTools::eclipseCaseOptionItems( &options );
}
@ -897,6 +899,7 @@ void RimStimPlanModel::defineUiOrdering( QString uiConfigName, caf::PdmUiOrderin
uiOrdering.add( &m_eclipseCase );
uiOrdering.add( &m_timeStep );
uiOrdering.add( &m_staticEclipseCase );
uiOrdering.add( &m_MD );
uiOrdering.add( &m_extractionType );
uiOrdering.add( &m_anchorPosition );
@ -1522,9 +1525,33 @@ double RimStimPlanModel::referenceTemperatureDepth() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimEclipseCase* RimStimPlanModel::eclipseCase() const
bool RimStimPlanModel::useStaticEclipseCase( RiaDefines::CurveProperty curveProperty )
{
std::vector<RiaDefines::CurveProperty> matching = {
RiaDefines::CurveProperty::POROSITY,
RiaDefines::CurveProperty::POROSITY_UNSCALED,
RiaDefines::CurveProperty::PERMEABILITY_X,
RiaDefines::CurveProperty::PERMEABILITY_Z,
RiaDefines::CurveProperty::FACIES,
RiaDefines::CurveProperty::NET_TO_GROSS,
};
return std::find( matching.begin(), matching.end(), curveProperty ) != matching.end();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimEclipseCase* RimStimPlanModel::eclipseCaseForProperty( RiaDefines::CurveProperty curveProperty ) const
{
if ( m_staticEclipseCase && useStaticEclipseCase( curveProperty ) )
{
return m_staticEclipseCase;
}
else
{
return m_eclipseCase;
}
}
//--------------------------------------------------------------------------------------------------
@ -1533,6 +1560,7 @@ RimEclipseCase* RimStimPlanModel::eclipseCase() const
void RimStimPlanModel::setEclipseCase( RimEclipseCase* eclipseCase )
{
m_eclipseCase = eclipseCase;
m_staticEclipseCase = eclipseCase;
updateExtractionDepthBoundaries();
}
@ -1542,7 +1570,7 @@ void RimStimPlanModel::setEclipseCase( RimEclipseCase* eclipseCase )
RigEclipseCaseData* RimStimPlanModel::getEclipseCaseData() const
{
// Find an eclipse case
RimEclipseCase* eclCase = eclipseCase();
RimEclipseCase* eclCase = eclipseCaseForProperty( RiaDefines::CurveProperty::FACIES );
if ( !eclCase ) return nullptr;
return eclCase->eclipseCaseData();

View File

@ -86,8 +86,8 @@ public:
int timeStep() const;
void setTimeStep( int timeStep );
RimEclipseCase* eclipseCase() const;
void setEclipseCase( RimEclipseCase* eclipseCase );
RimEclipseCase* eclipseCaseForProperty( RiaDefines::CurveProperty curveProperty ) const;
void setEclipseCaseAndTimeStep( RimEclipseCase* eclipseCase, int timeStep );
@ -221,10 +221,13 @@ private:
RimColorLegend* getFaciesColorLegend() const;
void updateExtractionDepthBoundaries();
static bool useStaticEclipseCase( RiaDefines::CurveProperty curveProperty );
protected:
caf::PdmField<double> m_MD;
caf::PdmPtrField<RimEclipseCase*> m_eclipseCase;
caf::PdmField<int> m_timeStep;
caf::PdmPtrField<RimEclipseCase*> m_staticEclipseCase;
caf::PdmField<caf::AppEnum<ExtractionType>> m_extractionType;
caf::PdmField<double> m_extractionDepthTop;
caf::PdmField<double> m_extractionDepthBottom;

View File

@ -71,7 +71,7 @@ RimStimPlanModelCurve::~RimStimPlanModelCurve()
void RimStimPlanModelCurve::setStimPlanModel( RimStimPlanModel* stimPlanModel )
{
m_stimPlanModel = stimPlanModel;
m_case = stimPlanModel->eclipseCase();
m_case = stimPlanModel->eclipseCaseForProperty( m_curveProperty() );
m_timeStep = stimPlanModel->timeStep();
m_wellPath = stimPlanModel->thicknessDirectionWellPath();
}
@ -132,9 +132,9 @@ void RimStimPlanModelCurve::performDataExtraction( bool* isUsingPseudoLength )
*isUsingPseudoLength = false;
if ( m_stimPlanModel && m_stimPlanModel->eclipseCase() )
if ( m_stimPlanModel && m_stimPlanModel->eclipseCaseForProperty( m_curveProperty() ) )
{
RimEclipseCase* eclipseCase = m_stimPlanModel->eclipseCase();
RimEclipseCase* eclipseCase = m_stimPlanModel->eclipseCaseForProperty( m_curveProperty() );
bool isOk = m_stimPlanModel->calculator()->extractCurveData( curveProperty(),
m_stimPlanModel->timeStep(),

View File

@ -94,7 +94,8 @@ bool RimStimPlanModelElasticPropertyCalculator::calculate( RiaDefines::CurveProp
std::vector<double>& tvDepthValues,
double& rkbDiff ) const
{
RimEclipseCase* eclipseCase = stimPlanModel->eclipseCase();
// Use the static model for extracting elastic properties
RimEclipseCase* eclipseCase = stimPlanModel->eclipseCaseForProperty( RiaDefines::CurveProperty::FACIES );
if ( !eclipseCase )
{
return false;

View File

@ -68,7 +68,7 @@ bool RimStimPlanModelLayerCalculator::calculate( RiaDefines::CurveProperty curve
std::vector<double>& tvDepthValues,
double& rkbDiff ) const
{
RimEclipseCase* eclipseCase = stimPlanModel->eclipseCase();
RimEclipseCase* eclipseCase = stimPlanModel->eclipseCaseForProperty( RiaDefines::CurveProperty::FACIES );
if ( !eclipseCase )
{
return false;

View File

@ -65,7 +65,7 @@ RimStimPlanModelPlot::RimStimPlanModelPlot()
void RimStimPlanModelPlot::setStimPlanModel( RimStimPlanModel* stimPlanModel )
{
m_stimPlanModel = stimPlanModel;
m_eclipseCase = stimPlanModel->eclipseCase();
m_eclipseCase = stimPlanModel->eclipseCaseForProperty( RiaDefines::CurveProperty::UNDEFINED );
m_timeStep = stimPlanModel->timeStep();
m_nameConfig->setCustomName( stimPlanModel->name() );
@ -158,7 +158,7 @@ void RimStimPlanModelPlot::onLoadDataAndUpdate()
if ( stimPlanModel() != nullptr )
{
// Update eclipse case and time step
m_eclipseCase = stimPlanModel()->eclipseCase();
m_eclipseCase = stimPlanModel()->eclipseCaseForProperty( RiaDefines::CurveProperty::UNDEFINED );
m_timeStep = stimPlanModel()->timeStep();
updateConnectedEditors();

View File

@ -66,7 +66,7 @@ bool RimStimPlanModelStressCalculator::calculate( RiaDefines::CurveProperty curv
std::vector<double>& tvDepthValues,
double& rkbDiff ) const
{
RimEclipseCase* eclipseCase = stimPlanModel->eclipseCase();
RimEclipseCase* eclipseCase = stimPlanModel->eclipseCaseForProperty( curveProperty );
if ( !eclipseCase )
{
return false;

View File

@ -79,7 +79,7 @@ bool RimStimPlanModelWellLogCalculator::calculate( RiaDefines::CurveProperty cur
std::vector<double>& tvDepthValues,
double& rkbDiff ) const
{
RimEclipseCase* eclipseCase = stimPlanModel->eclipseCase();
RimEclipseCase* eclipseCase = stimPlanModel->eclipseCaseForProperty( curveProperty );
if ( !eclipseCase )
{
return false;