#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 )
return RimStimPlanModel::MissingValueStrategy::OTHER_CURVE_PROPERTY;
return { RimStimPlanModel::MissingValueStrategy::OTHER_CURVE_PROPERTY };
else
return RimStimPlanModel::MissingValueStrategy::DEFAULT_VALUE;
return { RimStimPlanModel::MissingValueStrategy::DEFAULT_VALUE };
}
//--------------------------------------------------------------------------------------------------

View File

@ -43,6 +43,8 @@ class RimTextAnnotation;
class RimStimPlanModelCalculator;
class RimColorLegend;
#include <deque>
//==================================================================================================
///
///
@ -167,10 +169,10 @@ public:
std::shared_ptr<RimStimPlanModelCalculator> calculator() const;
RimStimPlanModel::MissingValueStrategy missingValueStrategy( RiaDefines::CurveProperty curveProperty ) const;
RimStimPlanModel::BurdenStrategy burdenStrategy( RiaDefines::CurveProperty curveProperty ) const;
RiaDefines::ResultCatType eclipseResultCategory( RiaDefines::CurveProperty curveProperty ) const;
QString eclipseResultVariable( RiaDefines::CurveProperty curveProperty ) const;
std::deque<RimStimPlanModel::MissingValueStrategy> missingValueStrategies( RiaDefines::CurveProperty curveProperty ) const;
RimStimPlanModel::BurdenStrategy burdenStrategy( RiaDefines::CurveProperty curveProperty ) const;
RiaDefines::ResultCatType eclipseResultCategory( RiaDefines::CurveProperty curveProperty ) const;
QString eclipseResultVariable( RiaDefines::CurveProperty curveProperty ) const;
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 );
}
if ( hasMissingValues( values ) )
{
QString resultVariable = stimPlanModel->eclipseResultVariable( curveProperty );
std::deque<RimStimPlanModel::MissingValueStrategy> missingValueStratgies =
stimPlanModel->missingValueStrategies( 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
int replacementTimeStep = 0;
if ( !replaceMissingValuesWithDefault( curveProperty, stimPlanModel, replacementTimeStep, resultVariable, values ) )
@ -108,12 +114,11 @@ bool RimStimPlanModelWellLogCalculator::calculate( RiaDefines::CurveProperty cur
return false;
}
}
else if ( stimPlanModel->missingValueStrategy( curveProperty ) ==
RimStimPlanModel::MissingValueStrategy::LINEAR_INTERPOLATION )
else if ( strategy == RimStimPlanModel::MissingValueStrategy::LINEAR_INTERPOLATION )
{
RiaInterpolationTools::interpolateMissingValues( measuredDepthValues, values );
}
else
else if ( strategy == RimStimPlanModel::MissingValueStrategy::OTHER_CURVE_PROPERTY )
{
// Get the missing data from other curve
RiaDefines::CurveProperty replacementProperty =