From 30dea503923879ed89999b9474c44ac91b588ef5 Mon Sep 17 00:00:00 2001 From: Kristian Bendiksen Date: Wed, 8 Jul 2020 09:38:31 +0200 Subject: [PATCH] #6090 Fracture Model: export pressure at top of zone to frk file. --- .../ProjectDataModel/RimFractureModelPlot.cpp | 39 ++++++++++++++++++- .../ProjectDataModel/RimFractureModelPlot.h | 4 ++ 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/ApplicationCode/ProjectDataModel/RimFractureModelPlot.cpp b/ApplicationCode/ProjectDataModel/RimFractureModelPlot.cpp index f6d70eb541..959372cd2f 100644 --- a/ApplicationCode/ProjectDataModel/RimFractureModelPlot.cpp +++ b/ApplicationCode/ProjectDataModel/RimFractureModelPlot.cpp @@ -191,6 +191,19 @@ void RimFractureModelPlot::computeAverageByLayer( const std::vector>& layerBoundaryIndexes, + const std::vector& inputVector, + std::vector& result ) +{ + for ( size_t i = 0; i < layerBoundaryIndexes.size(); i++ ) + { + result.push_back( findValueAtTopOfLayer( inputVector, layerBoundaryIndexes, i ) ); + } +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -254,6 +267,30 @@ std::vector RimFractureModelPlot::findCurveAndComputeLayeredAverage( Ria return result; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +std::vector RimFractureModelPlot::findCurveAndComputeTopOfLayer( RiaDefines::CurveProperty curveProperty ) const +{ + RimWellLogExtractionCurve* curve = findCurveByProperty( curveProperty ); + if ( !curve ) + { + QString curveName = caf::AppEnum::uiText( curveProperty ); + RiaLogging::error( QString( "No curve for '%1' found" ).arg( curveName ) ); + return std::vector(); + } + + std::vector> layerBoundaryDepths; + std::vector> layerBoundaryIndexes; + calculateLayers( layerBoundaryDepths, layerBoundaryIndexes ); + + const RigWellLogCurveData* curveData = curve->curveData(); + std::vector values = curveData->xValues(); + std::vector result; + extractTopOfLayerValues( layerBoundaryIndexes, values, result ); + return result; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -267,7 +304,7 @@ std::vector RimFractureModelPlot::calculatePorosity() const //-------------------------------------------------------------------------------------------------- std::vector RimFractureModelPlot::calculateReservoirPressure() const { - return findCurveAndComputeLayeredAverage( RiaDefines::CurveProperty::PRESSURE ); + return findCurveAndComputeTopOfLayer( RiaDefines::CurveProperty::PRESSURE ); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/ProjectDataModel/RimFractureModelPlot.h b/ApplicationCode/ProjectDataModel/RimFractureModelPlot.h index 42a7127511..7c60dd9058 100644 --- a/ApplicationCode/ProjectDataModel/RimFractureModelPlot.h +++ b/ApplicationCode/ProjectDataModel/RimFractureModelPlot.h @@ -78,6 +78,7 @@ public: protected: std::vector findCurveAndComputeLayeredAverage( RiaDefines::CurveProperty curveProperty ) const; std::vector findCurveXValuesByProperty( RiaDefines::CurveProperty curveProperty ) const; + std::vector findCurveAndComputeTopOfLayer( RiaDefines::CurveProperty curveProperty ) const; void calculateLayers( std::vector>& layerBoundaryDepths, std::vector>& layerBoundaryIndexes ) const; @@ -93,6 +94,9 @@ protected: static void computeAverageByLayer( const std::vector>& layerBoundaryIndexes, const std::vector& inputVector, std::vector& result ); + static void extractTopOfLayerValues( const std::vector>& layerBoundaryIndexes, + const std::vector& inputVector, + std::vector& result ); void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;