#7400 StimPlanModel: Add support for multiple missing value strategies.

This commit is contained in:
Kristian Bendiksen 2021-02-24 12:52:03 +01:00 committed by Magne Sjaastad
parent 35525eeedf
commit f6fe69ba45
3 changed files with 22 additions and 14 deletions

View File

@ -1330,12 +1330,13 @@ double RimStimPlanModel::getDefaultValueForProperty( RiaDefines::CurveProperty c
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimStimPlanModel::MissingValueStrategy RimStimPlanModel::missingValueStrategy( RiaDefines::CurveProperty curveProperty ) const std::deque<RimStimPlanModel::MissingValueStrategy>
RimStimPlanModel::missingValueStrategies( RiaDefines::CurveProperty curveProperty ) const
{ {
if ( curveProperty == RiaDefines::CurveProperty::PRESSURE ) if ( curveProperty == RiaDefines::CurveProperty::PRESSURE )
return RimStimPlanModel::MissingValueStrategy::OTHER_CURVE_PROPERTY; return { RimStimPlanModel::MissingValueStrategy::OTHER_CURVE_PROPERTY };
else else
return RimStimPlanModel::MissingValueStrategy::DEFAULT_VALUE; return { RimStimPlanModel::MissingValueStrategy::DEFAULT_VALUE };
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -43,6 +43,8 @@ class RimTextAnnotation;
class RimStimPlanModelCalculator; class RimStimPlanModelCalculator;
class RimColorLegend; class RimColorLegend;
#include <deque>
//================================================================================================== //==================================================================================================
/// ///
/// ///
@ -167,10 +169,10 @@ public:
std::shared_ptr<RimStimPlanModelCalculator> calculator() const; std::shared_ptr<RimStimPlanModelCalculator> calculator() const;
RimStimPlanModel::MissingValueStrategy missingValueStrategy( RiaDefines::CurveProperty curveProperty ) const; std::deque<RimStimPlanModel::MissingValueStrategy> missingValueStrategies( RiaDefines::CurveProperty curveProperty ) const;
RimStimPlanModel::BurdenStrategy burdenStrategy( RiaDefines::CurveProperty curveProperty ) const; RimStimPlanModel::BurdenStrategy burdenStrategy( RiaDefines::CurveProperty curveProperty ) const;
RiaDefines::ResultCatType eclipseResultCategory( RiaDefines::CurveProperty curveProperty ) const; RiaDefines::ResultCatType eclipseResultCategory( RiaDefines::CurveProperty curveProperty ) const;
QString eclipseResultVariable( RiaDefines::CurveProperty curveProperty ) const; QString eclipseResultVariable( RiaDefines::CurveProperty curveProperty ) const;
static double findFaciesValue( const RimColorLegend& colorLegend, const QString& name ); static double findFaciesValue( const RimColorLegend& colorLegend, const QString& name );

View File

@ -95,12 +95,18 @@ bool RimStimPlanModelWellLogCalculator::calculate( RiaDefines::CurveProperty cur
addUnderburden( curveProperty, stimPlanModel, tvDepthValues, measuredDepthValues, values ); addUnderburden( curveProperty, stimPlanModel, tvDepthValues, measuredDepthValues, values );
} }
if ( hasMissingValues( values ) ) std::deque<RimStimPlanModel::MissingValueStrategy> missingValueStratgies =
{ stimPlanModel->missingValueStrategies( curveProperty );
QString resultVariable = stimPlanModel->eclipseResultVariable( curveProperty );
if ( stimPlanModel->missingValueStrategy( curveProperty ) == RimStimPlanModel::MissingValueStrategy::DEFAULT_VALUE ) while ( hasMissingValues( values ) && !missingValueStratgies.empty() )
{
RimStimPlanModel::MissingValueStrategy strategy = missingValueStratgies.front();
missingValueStratgies.pop_front();
if ( strategy == RimStimPlanModel::MissingValueStrategy::DEFAULT_VALUE )
{ {
QString resultVariable = stimPlanModel->eclipseResultVariable( curveProperty );
// Input properties must use first time step // Input properties must use first time step
int replacementTimeStep = 0; int replacementTimeStep = 0;
if ( !replaceMissingValuesWithDefault( curveProperty, stimPlanModel, replacementTimeStep, resultVariable, values ) ) if ( !replaceMissingValuesWithDefault( curveProperty, stimPlanModel, replacementTimeStep, resultVariable, values ) )
@ -108,12 +114,11 @@ bool RimStimPlanModelWellLogCalculator::calculate( RiaDefines::CurveProperty cur
return false; return false;
} }
} }
else if ( stimPlanModel->missingValueStrategy( curveProperty ) == else if ( strategy == RimStimPlanModel::MissingValueStrategy::LINEAR_INTERPOLATION )
RimStimPlanModel::MissingValueStrategy::LINEAR_INTERPOLATION )
{ {
RiaInterpolationTools::interpolateMissingValues( measuredDepthValues, values ); RiaInterpolationTools::interpolateMissingValues( measuredDepthValues, values );
} }
else else if ( strategy == RimStimPlanModel::MissingValueStrategy::OTHER_CURVE_PROPERTY )
{ {
// Get the missing data from other curve // Get the missing data from other curve
RiaDefines::CurveProperty replacementProperty = RiaDefines::CurveProperty replacementProperty =