2012-09-11 02:22:36 -05:00
/////////////////////////////////////////////////////////////////////////////////
//
2014-09-23 08:04:57 -05:00
// Copyright (C) 2011- Statoil ASA
// Copyright (C) 2013- Ceetron Solutions AS
// Copyright (C) 2011-2012 Ceetron AS
2012-09-11 02:22:36 -05:00
//
// ResInsight is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
// FITNESS FOR A PARTICULAR PURPOSE.
//
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
# include "Rim3dOverlayInfoConfig.h"
2013-05-06 03:55:00 -05:00
2017-11-16 03:39:54 -06:00
# include "RicGridStatisticsDialog.h"
2014-07-24 03:11:43 -05:00
# include "RigCaseCellResultsData.h"
2017-01-10 02:51:39 -06:00
# include "RigEclipseCaseData.h"
2016-10-18 00:31:02 -05:00
# include "RigEclipseNativeVisibleCellsStatCalc.h"
# include "RigFemNativeVisibleCellsStatCalc.h"
# include "RigFemPartCollection.h"
# include "RigFemPartResultsCollection.h"
# include "RigFemResultAddress.h"
2017-10-19 00:44:21 -05:00
# include "RigFlowDiagResults.h"
# include "RigFlowDiagVisibleCellsStatCalc.h"
2016-10-18 00:31:02 -05:00
# include "RigGeoMechCaseData.h"
2017-01-09 12:04:45 -06:00
# include "RigMainGrid.h"
2016-10-18 00:31:02 -05:00
# include "RigStatisticsDataCache.h"
2015-06-25 06:45:32 -05:00
# include "RimCellEdgeColors.h"
2016-10-18 00:31:02 -05:00
# include "RimEclipseCase.h"
# include "RimEclipseCellColors.h"
2015-06-25 06:32:00 -05:00
# include "RimEclipseFaultColors.h"
2016-10-18 00:31:02 -05:00
# include "RimEclipsePropertyFilterCollection.h"
2015-05-21 03:34:38 -05:00
# include "RimEclipseView.h"
2017-10-15 14:20:03 -05:00
# include "RimFaultInViewCollection.h"
2016-10-18 00:31:02 -05:00
# include "RimGeoMechCase.h"
# include "RimGeoMechResultDefinition.h"
2015-04-29 15:19:49 -05:00
# include "RimGeoMechView.h"
2016-10-18 00:31:02 -05:00
# include "RimReservoirCellResultsStorage.h"
2017-10-19 00:44:21 -05:00
# include "RimSimWellInViewCollection.h"
2015-04-29 15:19:49 -05:00
# include "RimView.h"
2012-09-11 02:22:36 -05:00
2016-10-18 00:31:02 -05:00
# include "RiuViewer.h"
2017-10-19 00:44:21 -05:00
# include <QMessageBox>
2012-09-13 08:17:59 -05:00
CAF_PDM_SOURCE_INIT ( Rim3dOverlayInfoConfig , " View3dOverlayInfoConfig " ) ;
2015-11-04 05:51:55 -06:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
namespace caf
{
2017-10-18 03:43:27 -05:00
template < >
void caf : : AppEnum < Rim3dOverlayInfoConfig : : StatisticsTimeRangeType > : : setUp ( )
{
addItem ( Rim3dOverlayInfoConfig : : ALL_TIMESTEPS , " ALL_TIMESTEPS " , " All Time Steps " ) ;
addItem ( Rim3dOverlayInfoConfig : : CURRENT_TIMESTEP , " CURRENT_TIMESTEP " , " Current Time Step " ) ;
setDefault ( Rim3dOverlayInfoConfig : : ALL_TIMESTEPS ) ;
}
2015-11-04 05:51:55 -06:00
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
namespace caf
{
2017-10-18 03:43:27 -05:00
template < >
void caf : : AppEnum < Rim3dOverlayInfoConfig : : StatisticsCellRangeType > : : setUp ( )
{
addItem ( Rim3dOverlayInfoConfig : : ALL_CELLS , " ALL_CELLS " , " All Active Cells " ) ;
addItem ( Rim3dOverlayInfoConfig : : VISIBLE_CELLS , " VISIBLE_CELLS " , " Visible Cells " ) ;
setDefault ( Rim3dOverlayInfoConfig : : ALL_CELLS ) ;
}
2015-11-04 05:51:55 -06:00
}
2012-09-11 02:22:36 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2017-10-18 03:43:27 -05:00
Rim3dOverlayInfoConfig : : Rim3dOverlayInfoConfig ( )
2012-09-11 02:22:36 -05:00
{
2015-08-09 04:16:52 -05:00
CAF_PDM_InitObject ( " Info Box " , " :/InfoBox16x16.png " , " " , " " ) ;
2012-09-11 02:22:36 -05:00
2017-10-18 03:43:27 -05:00
CAF_PDM_InitField ( & active , " Active " , true , " Active " , " " , " " , " " ) ;
2015-08-05 06:27:36 -05:00
active . uiCapability ( ) - > setUiHidden ( true ) ;
2013-04-26 07:47:34 -05:00
2017-11-16 03:50:48 -06:00
CAF_PDM_InitField ( & showAnimProgress , " ShowAnimProgress " , true , " Animation progress " , " " , " " , " " ) ;
CAF_PDM_InitField ( & showCaseInfo , " ShowInfoText " , true , " Case Info " , " " , " " , " " ) ;
CAF_PDM_InitField ( & showResultInfo , " ShowResultInfo " , true , " Result Info " , " " , " " , " " ) ;
CAF_PDM_InitField ( & showHistogram , " ShowHistogram " , true , " Histogram " , " " , " " , " " ) ;
CAF_PDM_InitField ( & showVolumeWeightedMean , " ShowVolumeWeightedMean " , true , " Mobile Volume Weighted Mean " , " " , " " , " " ) ;
2015-11-04 05:51:55 -06:00
CAF_PDM_InitFieldNoDefault ( & m_statisticsTimeRange , " StatisticsTimeRange " , " Statistics Time Range " , " " , " " , " " ) ;
CAF_PDM_InitFieldNoDefault ( & m_statisticsCellRange , " StatisticsCellRange " , " Statistics Cell Range " , " " , " " , " " ) ;
2015-11-06 03:18:55 -06:00
//m_statisticsCellRange.uiCapability()->setUiHidden(true);
2015-11-27 09:37:26 -06:00
m_isVisCellStatUpToDate = false ;
2017-11-16 03:39:54 -06:00
m_gridStatisticsDialog = std : : unique_ptr < RicGridStatisticsDialog > ( new RicGridStatisticsDialog ( nullptr ) ) ;
2012-09-11 02:22:36 -05:00
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
Rim3dOverlayInfoConfig : : ~ Rim3dOverlayInfoConfig ( )
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rim3dOverlayInfoConfig : : fieldChangedByUi ( const caf : : PdmFieldHandle * changedField , const QVariant & oldValue , const QVariant & newValue )
{
2017-10-27 10:12:25 -05:00
if ( hasInvalidStatisticsCombination ( ) )
2015-11-12 04:53:22 -06:00
{
displayPropertyFilteredStatisticsMessage ( false ) ;
2017-10-27 10:12:25 -05:00
if ( changedField = = & m_statisticsTimeRange ) m_statisticsTimeRange = CURRENT_TIMESTEP ;
if ( changedField = = & m_statisticsCellRange ) m_statisticsCellRange = ALL_CELLS ;
2015-11-12 04:53:22 -06:00
}
2017-11-16 03:50:48 -06:00
if ( changedField = = & showResultInfo )
{
if ( ! showResultInfo ( ) )
{
showVolumeWeightedMean = false ;
showVolumeWeightedMean . uiCapability ( ) - > setUiReadOnly ( true ) ;
}
else
{
showVolumeWeightedMean = true ;
showVolumeWeightedMean . uiCapability ( ) - > setUiReadOnly ( false ) ;
}
}
2012-09-11 02:22:36 -05:00
this - > update3DInfo ( ) ;
2013-04-29 01:32:59 -05:00
2015-04-29 15:19:49 -05:00
if ( m_viewDef & & m_viewDef - > viewer ( ) )
2013-04-29 01:32:59 -05:00
{
2015-09-01 11:04:35 -05:00
m_viewDef - > viewer ( ) - > update ( ) ;
2013-04-29 01:32:59 -05:00
}
2017-11-16 03:50:48 -06:00
2012-09-11 02:22:36 -05:00
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rim3dOverlayInfoConfig : : setPosition ( cvf : : Vec2ui position )
{
m_position = position ;
}
2017-11-15 13:45:56 -06:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2017-11-16 07:13:50 -06:00
Rim3dOverlayInfoConfig : : HistogramData Rim3dOverlayInfoConfig : : histogramData ( )
{
auto eclipseView = dynamic_cast < RimEclipseView * > ( m_viewDef . p ( ) ) ;
auto geoMechView = dynamic_cast < RimGeoMechView * > ( m_viewDef . p ( ) ) ;
if ( eclipseView ) return histogramData ( eclipseView ) ;
if ( geoMechView ) return histogramData ( geoMechView ) ;
return HistogramData ( ) ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString Rim3dOverlayInfoConfig : : caseInfoText ( )
{
auto eclipseView = dynamic_cast < RimEclipseView * > ( m_viewDef . p ( ) ) ;
auto geoMechView = dynamic_cast < RimGeoMechView * > ( m_viewDef . p ( ) ) ;
if ( eclipseView ) return caseInfoText ( eclipseView ) ;
if ( geoMechView ) return caseInfoText ( geoMechView ) ;
return " " ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString Rim3dOverlayInfoConfig : : resultInfoText ( const HistogramData & histData )
{
auto eclipseView = dynamic_cast < RimEclipseView * > ( m_viewDef . p ( ) ) ;
auto geoMechView = dynamic_cast < RimGeoMechView * > ( m_viewDef . p ( ) ) ;
if ( eclipseView ) return resultInfoText ( histData , eclipseView ) ;
if ( geoMechView ) return resultInfoText ( histData , geoMechView ) ;
return " " ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
Rim3dOverlayInfoConfig : : HistogramData Rim3dOverlayInfoConfig : : histogramData ( RimEclipseView * eclipseView )
2017-11-15 13:45:56 -06:00
{
HistogramData histData ;
2017-11-16 04:43:24 -06:00
2017-11-16 05:51:08 -06:00
if ( eclipseView )
2017-11-15 13:45:56 -06:00
{
2017-11-16 05:51:08 -06:00
bool isResultsInfoRelevant = eclipseView - > hasUserRequestedAnimation ( ) & & eclipseView - > cellResult ( ) - > hasResult ( ) ;
2017-11-15 13:45:56 -06:00
2017-11-16 05:51:08 -06:00
if ( isResultsInfoRelevant )
2017-11-15 13:45:56 -06:00
{
2017-11-16 05:51:08 -06:00
size_t scalarIndex = eclipseView - > cellResult ( ) - > scalarResultIndex ( ) ;
2017-11-15 13:45:56 -06:00
2017-11-16 05:51:08 -06:00
if ( scalarIndex ! = cvf : : UNDEFINED_SIZE_T )
2017-11-15 13:45:56 -06:00
{
2017-11-16 05:51:08 -06:00
if ( m_statisticsCellRange = = ALL_CELLS )
2017-11-15 13:45:56 -06:00
{
2017-11-16 05:51:08 -06:00
if ( m_statisticsTimeRange = = ALL_TIMESTEPS )
2017-11-15 13:45:56 -06:00
{
2017-11-16 05:51:08 -06:00
eclipseView - > currentGridCellResults ( ) - > minMaxCellScalarValues ( scalarIndex , histData . min , histData . max ) ;
eclipseView - > currentGridCellResults ( ) - > p10p90CellScalarValues ( scalarIndex , histData . p10 , histData . p90 ) ;
eclipseView - > currentGridCellResults ( ) - > meanCellScalarValues ( scalarIndex , histData . mean ) ;
eclipseView - > currentGridCellResults ( ) - > sumCellScalarValues ( scalarIndex , histData . sum ) ;
2017-11-20 02:24:19 -06:00
eclipseView - > currentGridCellResults ( ) - > mobileVolumeWeightedMean ( scalarIndex , histData . weightedMean ) ;
2017-11-16 05:51:08 -06:00
histData . histogram = & ( eclipseView - > currentGridCellResults ( ) - > cellScalarValuesHistogram ( scalarIndex ) ) ;
}
else if ( m_statisticsTimeRange = = CURRENT_TIMESTEP )
{
int currentTimeStep = eclipseView - > currentTimeStep ( ) ;
if ( eclipseView - > cellResult ( ) - > hasStaticResult ( ) )
{
currentTimeStep = 0 ;
}
eclipseView - > currentGridCellResults ( ) - > minMaxCellScalarValues ( scalarIndex , currentTimeStep , histData . min , histData . max ) ;
eclipseView - > currentGridCellResults ( ) - > p10p90CellScalarValues ( scalarIndex , currentTimeStep , histData . p10 , histData . p90 ) ;
eclipseView - > currentGridCellResults ( ) - > meanCellScalarValues ( scalarIndex , currentTimeStep , histData . mean ) ;
eclipseView - > currentGridCellResults ( ) - > sumCellScalarValues ( scalarIndex , currentTimeStep , histData . sum ) ;
2017-11-16 08:28:12 -06:00
eclipseView - > currentGridCellResults ( ) - > mobileVolumeWeightedMean ( scalarIndex , currentTimeStep , histData . weightedMean ) ;
2017-11-16 05:51:08 -06:00
histData . histogram = & ( eclipseView - > currentGridCellResults ( ) - > cellScalarValuesHistogram ( scalarIndex , currentTimeStep ) ) ;
}
else
{
CVF_ASSERT ( false ) ;
2017-11-15 13:45:56 -06:00
}
}
2017-11-16 05:51:08 -06:00
else if ( m_statisticsCellRange = = VISIBLE_CELLS )
2017-11-15 13:45:56 -06:00
{
2017-11-16 05:51:08 -06:00
updateVisCellStatsIfNeeded ( ) ;
if ( m_statisticsTimeRange = = ALL_TIMESTEPS )
{
// TODO: Only valid if we have no dynamic property filter
m_visibleCellStatistics - > meanCellScalarValues ( histData . mean ) ;
m_visibleCellStatistics - > minMaxCellScalarValues ( histData . min , histData . max ) ;
m_visibleCellStatistics - > p10p90CellScalarValues ( histData . p10 , histData . p90 ) ;
m_visibleCellStatistics - > sumCellScalarValues ( histData . sum ) ;
2017-11-20 02:28:31 -06:00
m_visibleCellStatistics - > mobileVolumeWeightedMean ( histData . weightedMean ) ;
2017-11-15 13:45:56 -06:00
2017-11-16 05:51:08 -06:00
histData . histogram = & ( m_visibleCellStatistics - > cellScalarValuesHistogram ( ) ) ;
}
else if ( m_statisticsTimeRange = = CURRENT_TIMESTEP )
2017-11-15 13:45:56 -06:00
{
2017-11-16 05:51:08 -06:00
int currentTimeStep = eclipseView - > currentTimeStep ( ) ;
if ( eclipseView - > cellResult ( ) - > hasStaticResult ( ) )
{
currentTimeStep = 0 ;
}
m_visibleCellStatistics - > meanCellScalarValues ( currentTimeStep , histData . mean ) ;
m_visibleCellStatistics - > minMaxCellScalarValues ( currentTimeStep , histData . min , histData . max ) ;
m_visibleCellStatistics - > p10p90CellScalarValues ( currentTimeStep , histData . p10 , histData . p90 ) ;
m_visibleCellStatistics - > sumCellScalarValues ( currentTimeStep , histData . sum ) ;
m_visibleCellStatistics - > mobileVolumeWeightedMean ( currentTimeStep , histData . weightedMean ) ;
histData . histogram = & ( m_visibleCellStatistics - > cellScalarValuesHistogram ( currentTimeStep ) ) ;
2017-11-15 13:45:56 -06:00
}
}
}
2017-11-16 05:51:08 -06:00
else if ( eclipseView - > cellResult ( ) - > isFlowDiagOrInjectionFlooding ( ) )
2017-11-15 13:45:56 -06:00
{
2017-11-16 05:51:08 -06:00
if ( m_statisticsTimeRange = = CURRENT_TIMESTEP | | m_statisticsTimeRange = = ALL_TIMESTEPS ) // All timesteps is ignored
2017-11-15 13:45:56 -06:00
{
2017-11-16 05:51:08 -06:00
int currentTimeStep = eclipseView - > currentTimeStep ( ) ;
2017-11-15 13:45:56 -06:00
2017-11-16 05:51:08 -06:00
if ( m_statisticsCellRange = = ALL_CELLS )
{
RigFlowDiagResults * fldResults = eclipseView - > cellResult ( ) - > flowDiagSolution ( ) - > flowDiagResults ( ) ;
RigFlowDiagResultAddress resAddr = eclipseView - > cellResult ( ) - > flowDiagResAddress ( ) ;
2017-11-16 04:43:24 -06:00
2017-11-16 05:51:08 -06:00
fldResults - > minMaxScalarValues ( resAddr , currentTimeStep , & histData . min , & histData . max ) ;
fldResults - > p10p90ScalarValues ( resAddr , currentTimeStep , & histData . p10 , & histData . p90 ) ;
fldResults - > meanScalarValue ( resAddr , currentTimeStep , & histData . mean ) ;
fldResults - > sumScalarValue ( resAddr , currentTimeStep , & histData . sum ) ;
2017-11-16 07:59:55 -06:00
fldResults - > mobileVolumeWeightedMean ( resAddr , currentTimeStep , & histData . weightedMean ) ;
2017-11-15 13:45:56 -06:00
2017-11-16 05:51:08 -06:00
histData . histogram = & ( fldResults - > scalarValuesHistogram ( resAddr , currentTimeStep ) ) ;
}
else if ( m_statisticsCellRange = = VISIBLE_CELLS )
{
updateVisCellStatsIfNeeded ( ) ;
2017-11-15 13:45:56 -06:00
2017-11-16 05:51:08 -06:00
m_visibleCellStatistics - > meanCellScalarValues ( currentTimeStep , histData . mean ) ;
m_visibleCellStatistics - > minMaxCellScalarValues ( currentTimeStep , histData . min , histData . max ) ;
m_visibleCellStatistics - > p10p90CellScalarValues ( currentTimeStep , histData . p10 , histData . p90 ) ;
m_visibleCellStatistics - > sumCellScalarValues ( currentTimeStep , histData . sum ) ;
m_visibleCellStatistics - > mobileVolumeWeightedMean ( currentTimeStep , histData . weightedMean ) ;
histData . histogram = & ( m_visibleCellStatistics - > cellScalarValuesHistogram ( currentTimeStep ) ) ;
}
2017-11-15 13:45:56 -06:00
}
}
}
}
return histData ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2017-11-16 07:13:50 -06:00
Rim3dOverlayInfoConfig : : HistogramData Rim3dOverlayInfoConfig : : histogramData ( RimGeoMechView * geoMechView )
{
HistogramData histData ;
if ( geoMechView )
{
RimGeoMechCase * geoMechCase = geoMechView - > geoMechCase ( ) ;
RigGeoMechCaseData * caseData = geoMechCase ? geoMechCase - > geoMechData ( ) : nullptr ;
bool isResultsInfoRelevant = caseData & & geoMechView - > hasUserRequestedAnimation ( ) & & geoMechView - > cellResultResultDefinition ( ) - > hasResult ( ) ;
if ( isResultsInfoRelevant )
{
RigFemResultAddress resAddress = geoMechView - > cellResultResultDefinition ( ) - > resultAddress ( ) ;
if ( m_statisticsCellRange = = ALL_CELLS )
{
if ( m_statisticsTimeRange = = ALL_TIMESTEPS )
{
caseData - > femPartResults ( ) - > meanScalarValue ( resAddress , & histData . mean ) ;
caseData - > femPartResults ( ) - > minMaxScalarValues ( resAddress , & histData . min , & histData . max ) ;
caseData - > femPartResults ( ) - > p10p90ScalarValues ( resAddress , & histData . p10 , & histData . p90 ) ;
caseData - > femPartResults ( ) - > sumScalarValue ( resAddress , & histData . sum ) ;
histData . histogram = & ( caseData - > femPartResults ( ) - > scalarValuesHistogram ( resAddress ) ) ;
}
else if ( m_statisticsTimeRange = = CURRENT_TIMESTEP )
{
int timeStepIdx = geoMechView - > currentTimeStep ( ) ;
caseData - > femPartResults ( ) - > meanScalarValue ( resAddress , timeStepIdx , & histData . mean ) ;
caseData - > femPartResults ( ) - > minMaxScalarValues ( resAddress , timeStepIdx , & histData . min , & histData . max ) ;
caseData - > femPartResults ( ) - > p10p90ScalarValues ( resAddress , timeStepIdx , & histData . p10 , & histData . p90 ) ;
caseData - > femPartResults ( ) - > sumScalarValue ( resAddress , timeStepIdx , & histData . sum ) ;
histData . histogram = & ( caseData - > femPartResults ( ) - > scalarValuesHistogram ( resAddress , timeStepIdx ) ) ;
}
}
else if ( m_statisticsCellRange = = VISIBLE_CELLS )
{
this - > updateVisCellStatsIfNeeded ( ) ;
if ( m_statisticsTimeRange = = ALL_TIMESTEPS )
{
// TODO: Only valid if we have no dynamic property filter
m_visibleCellStatistics - > meanCellScalarValues ( histData . mean ) ;
m_visibleCellStatistics - > minMaxCellScalarValues ( histData . min , histData . max ) ;
m_visibleCellStatistics - > p10p90CellScalarValues ( histData . p10 , histData . p90 ) ;
m_visibleCellStatistics - > sumCellScalarValues ( histData . sum ) ;
histData . histogram = & ( m_visibleCellStatistics - > cellScalarValuesHistogram ( ) ) ;
}
else if ( m_statisticsTimeRange = = CURRENT_TIMESTEP )
{
int timeStepIdx = geoMechView - > currentTimeStep ( ) ;
m_visibleCellStatistics - > meanCellScalarValues ( timeStepIdx , histData . mean ) ;
m_visibleCellStatistics - > minMaxCellScalarValues ( timeStepIdx , histData . min , histData . max ) ;
m_visibleCellStatistics - > p10p90CellScalarValues ( timeStepIdx , histData . p10 , histData . p90 ) ;
m_visibleCellStatistics - > sumCellScalarValues ( timeStepIdx , histData . sum ) ;
histData . histogram = & ( m_visibleCellStatistics - > cellScalarValuesHistogram ( timeStepIdx ) ) ;
}
}
}
}
return histData ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString Rim3dOverlayInfoConfig : : caseInfoText ( RimEclipseView * eclipseView )
2017-11-15 13:45:56 -06:00
{
QString infoText ;
2017-11-16 07:13:50 -06:00
if ( eclipseView )
2017-11-15 13:45:56 -06:00
{
QString caseName ;
QString totCellCount ;
QString activeCellCountText ;
QString fractureActiveCellCount ;
QString iSize , jSize , kSize ;
QString zScale ;
if ( eclipseView - > mainGrid ( ) )
{
caseName = eclipseView - > eclipseCase ( ) - > caseUserDescription ( ) ;
totCellCount = QString : : number ( eclipseView - > mainGrid ( ) - > globalCellArray ( ) . size ( ) ) ;
size_t mxActCellCount = eclipseView - > eclipseCase ( ) - > eclipseCaseData ( ) - > activeCellInfo ( RiaDefines : : MATRIX_MODEL ) - > reservoirActiveCellCount ( ) ;
size_t frActCellCount = eclipseView - > eclipseCase ( ) - > eclipseCaseData ( ) - > activeCellInfo ( RiaDefines : : FRACTURE_MODEL ) - > reservoirActiveCellCount ( ) ;
if ( frActCellCount > 0 ) activeCellCountText + = " Matrix : " ;
activeCellCountText + = QString : : number ( mxActCellCount ) ;
if ( frActCellCount > 0 ) activeCellCountText + = " Fracture : " + QString : : number ( frActCellCount ) ;
iSize = QString : : number ( eclipseView - > mainGrid ( ) - > cellCountI ( ) ) ;
jSize = QString : : number ( eclipseView - > mainGrid ( ) - > cellCountJ ( ) ) ;
kSize = QString : : number ( eclipseView - > mainGrid ( ) - > cellCountK ( ) ) ;
zScale = QString : : number ( eclipseView - > scaleZ ( ) ) ;
}
infoText + = QString (
" <p><b><center>-- %1 --</center></b><p> "
" <b>Cell count. Total:</b> %2 <b>Active:</b> %3 <br> "
" <b>Main Grid I,J,K:</b> %4, %5, %6 <b>Z-Scale:</b> %7<br> " ) . arg ( caseName , totCellCount , activeCellCountText , iSize , jSize , kSize , zScale ) ;
}
return infoText ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2017-11-16 07:13:50 -06:00
QString Rim3dOverlayInfoConfig : : caseInfoText ( RimGeoMechView * geoMechView )
{
QString infoText ;
if ( geoMechView )
{
RimGeoMechCase * geoMechCase = geoMechView - > geoMechCase ( ) ;
RigGeoMechCaseData * caseData = geoMechCase ? geoMechCase - > geoMechData ( ) : nullptr ;
RigFemPartCollection * femParts = caseData ? caseData - > femParts ( ) : NULL ;
if ( femParts )
{
QString caseName = geoMechCase - > caseUserDescription ( ) ;
QString cellCount = QString ( " %1 " ) . arg ( femParts - > totalElementCount ( ) ) ;
QString zScale = QString : : number ( geoMechView - > scaleZ ( ) ) ;
infoText = QString (
" <p><b><center>-- %1 --</center></b><p> "
" <b>Cell count:</b> %2 <b>Z-Scale:</b> %3<br> " ) . arg ( caseName , cellCount , zScale ) ;
}
}
return infoText ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString Rim3dOverlayInfoConfig : : resultInfoText ( const HistogramData & histData , RimEclipseView * eclipseView )
2017-11-15 13:45:56 -06:00
{
QString infoText ;
2017-11-16 05:51:08 -06:00
if ( eclipseView )
2017-11-15 13:45:56 -06:00
{
2017-11-16 05:51:08 -06:00
bool isResultsInfoRelevant = eclipseView - > hasUserRequestedAnimation ( ) & & eclipseView - > cellResult ( ) - > hasResult ( ) ;
2017-11-15 13:45:56 -06:00
2017-11-16 05:51:08 -06:00
if ( eclipseView - > cellResult ( ) - > isTernarySaturationSelected ( ) )
2017-11-15 13:45:56 -06:00
{
2017-11-16 05:51:08 -06:00
QString propName = eclipseView - > cellResult ( ) - > resultVariableUiShortName ( ) ;
infoText + = QString ( " <b>Cell Property:</b> %1 " ) . arg ( propName ) ;
2017-11-15 13:45:56 -06:00
}
2017-11-16 05:51:08 -06:00
if ( isResultsInfoRelevant )
2017-11-15 13:45:56 -06:00
{
2017-11-16 05:51:08 -06:00
QString propName = eclipseView - > cellResult ( ) - > resultVariableUiShortName ( ) ;
QString timeRangeText = m_statisticsTimeRange ( ) . uiText ( ) ;
if ( eclipseView - > cellResult ( ) - > isFlowDiagOrInjectionFlooding ( ) )
2017-11-15 13:45:56 -06:00
{
2017-11-16 05:51:08 -06:00
timeRangeText = caf : : AppEnum < StatisticsTimeRangeType > : : uiText ( CURRENT_TIMESTEP ) ;
}
infoText + = QString ( " <b>Cell Property:</b> %1 " ) . arg ( propName ) ;
infoText + = QString ( " <br><b>Statistics:</b> " ) + timeRangeText + " and " + m_statisticsCellRange ( ) . uiText ( ) ;
infoText + = QString ( " <table border=0 cellspacing=5 > "
" <tr> <td>Min</td> <td>P10</td> <td>Mean</td> <td>P90</td> <td>Max</td> <td>Sum</td> </tr> "
" <tr> <td>%1</td> <td> %2</td> <td> %3</td> <td> %4</td> <td> %5</td> <td> %6</td> </tr> "
" </table> " ) . arg ( histData . min ) . arg ( histData . p10 ) . arg ( histData . mean ) . arg ( histData . p90 ) . arg ( histData . max ) . arg ( histData . sum ) ;
if ( eclipseView - > faultResultSettings ( ) - > hasValidCustomResult ( ) )
{
QString faultMapping ;
bool isShowingGrid = eclipseView - > faultCollection ( ) - > isGridVisualizationMode ( ) ;
if ( ! isShowingGrid )
2017-11-15 13:45:56 -06:00
{
2017-11-16 05:51:08 -06:00
if ( eclipseView - > faultCollection ( ) - > faultResult ( ) = = RimFaultInViewCollection : : FAULT_BACK_FACE_CULLING )
{
faultMapping = " Cells behind fault " ;
}
else if ( eclipseView - > faultCollection ( ) - > faultResult ( ) = = RimFaultInViewCollection : : FAULT_FRONT_FACE_CULLING )
{
faultMapping = " Cells in front of fault " ;
}
else
{
faultMapping = " Cells in front and behind fault " ;
}
2017-11-15 13:45:56 -06:00
}
else
{
faultMapping = " Cells in front and behind fault " ;
}
2017-11-16 05:51:08 -06:00
infoText + = QString ( " <b>Fault results: </b> %1<br> " ) . arg ( faultMapping ) ;
infoText + = QString ( " <b>Fault Property:</b> %1 <br> " ) . arg ( eclipseView - > faultResultSettings ( ) - > customFaultResult ( ) - > resultVariableUiShortName ( ) ) ;
}
2017-11-15 13:45:56 -06:00
}
2017-11-16 05:51:08 -06:00
if ( eclipseView - > hasUserRequestedAnimation ( ) & & eclipseView - > cellEdgeResult ( ) - > hasResult ( ) )
{
double min , max ;
QString cellEdgeName = eclipseView - > cellEdgeResult ( ) - > resultVariableUiShortName ( ) ;
eclipseView - > cellEdgeResult ( ) - > minMaxCellEdgeValues ( min , max ) ;
infoText + = QString ( " <b>Cell Edge Property:</b> %1 " ) . arg ( cellEdgeName ) ;
infoText + = QString ( " <table border=0 cellspacing=5 > "
" <tr> <td>Min</td> <td></td> <td></td> <td></td> <td>Max</td> </tr> "
" <tr> <td>%1</td> <td></td> <td></td> <td></td> <td> %2</td></tr> "
" </table> " ) . arg ( min ) . arg ( max ) ;
}
2017-11-15 13:45:56 -06:00
2017-11-16 05:51:08 -06:00
if ( showVolumeWeightedMean ( ) & & histData . weightedMean ! = HUGE_VAL )
{
infoText + = QString ( " <b>Mobile Volume Weighted Mean:</b> %1 " ) . arg ( histData . weightedMean ) ;
}
2017-11-16 04:43:24 -06:00
}
2017-11-15 13:45:56 -06:00
return infoText ;
}
2017-11-16 03:39:54 -06:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2017-11-16 07:13:50 -06:00
QString Rim3dOverlayInfoConfig : : resultInfoText ( const HistogramData & histData , RimGeoMechView * geoMechView )
2017-11-16 03:39:54 -06:00
{
2017-11-16 07:13:50 -06:00
QString infoText ;
2017-11-16 03:39:54 -06:00
2017-11-16 07:13:50 -06:00
if ( geoMechView )
{
RimGeoMechCase * geoMechCase = geoMechView - > geoMechCase ( ) ;
RigGeoMechCaseData * caseData = geoMechCase ? geoMechCase - > geoMechData ( ) : nullptr ;
bool isResultsInfoRelevant = caseData & & geoMechView - > hasUserRequestedAnimation ( ) & & geoMechView - > cellResultResultDefinition ( ) - > hasResult ( ) ;
if ( isResultsInfoRelevant )
{
QString resultPos ;
QString fieldName = geoMechView - > cellResultResultDefinition ( ) - > resultFieldUiName ( ) ;
QString compName = geoMechView - > cellResultResultDefinition ( ) - > resultComponentUiName ( ) ;
switch ( geoMechView - > cellResultResultDefinition ( ) - > resultPositionType ( ) )
{
case RIG_NODAL :
resultPos = " Nodal " ;
break ;
case RIG_ELEMENT_NODAL :
resultPos = " Element nodal " ;
break ;
case RIG_INTEGRATION_POINT :
resultPos = " Integration point " ;
break ;
default :
break ;
}
infoText + = QString ( " <b>Cell result:</b> %1, %2, %3 " ) . arg ( resultPos ) . arg ( fieldName ) . arg ( compName ) ;
infoText + = QString ( " <br><b>Statistics:</b> " ) + m_statisticsTimeRange ( ) . uiText ( ) + " and " + m_statisticsCellRange ( ) . uiText ( ) ;
infoText + = QString ( " <table border=0 cellspacing=5 > "
" <tr> <td>Min</td> <td>P10</td> <td>Mean</td> <td>P90</td> <td>Max</td> <td>Sum</td> </tr> "
" <tr> <td>%1</td> <td> %2</td> <td> %3</td> <td> %4</td> <td> %5</td> <td> %6</td> </tr> "
" </table> " ) . arg ( histData . min ) . arg ( histData . p10 ) . arg ( histData . mean ) . arg ( histData . p90 ) . arg ( histData . max ) . arg ( histData . sum ) ;
}
}
return infoText ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rim3dOverlayInfoConfig : : showStatisticsInfoDialog ( )
{
if ( m_viewDef )
2017-11-16 03:39:54 -06:00
{
2017-11-17 01:30:23 -06:00
// Show dialog before setting data due to text edit auto height setting
m_gridStatisticsDialog - > resize ( 600 , 800 ) ;
m_gridStatisticsDialog - > show ( ) ;
2017-11-16 03:39:54 -06:00
m_gridStatisticsDialog - > setLabel ( " Grid statistics " ) ;
2017-11-16 07:13:50 -06:00
m_gridStatisticsDialog - > setInfoText ( m_viewDef ) ;
m_gridStatisticsDialog - > setHistogramData ( m_viewDef ) ;
2017-11-17 01:30:23 -06:00
2017-11-16 03:39:54 -06:00
m_gridStatisticsDialog - > raise ( ) ;
}
}
2012-09-11 02:22:36 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rim3dOverlayInfoConfig : : update3DInfo ( )
{
2014-08-01 06:35:52 -05:00
this - > updateUiIconFromToggleField ( ) ;
2013-04-26 07:47:34 -05:00
2015-04-29 15:19:49 -05:00
if ( ! m_viewDef ) return ;
if ( ! m_viewDef - > viewer ( ) ) return ;
2017-10-18 03:43:27 -05:00
2013-04-26 07:47:34 -05:00
if ( ! this - > active ( ) )
{
2015-04-29 15:19:49 -05:00
m_viewDef - > viewer ( ) - > showInfoText ( false ) ;
m_viewDef - > viewer ( ) - > showHistogram ( false ) ;
m_viewDef - > viewer ( ) - > showAnimationProgress ( false ) ;
2017-10-18 03:43:27 -05:00
2013-04-26 07:47:34 -05:00
return ;
}
2012-09-11 02:22:36 -05:00
2015-11-11 10:44:00 -06:00
m_viewDef - > viewer ( ) - > showInfoText ( showCaseInfo ( ) | | showResultInfo ( ) ) ;
2015-04-29 15:19:49 -05:00
m_viewDef - > viewer ( ) - > showHistogram ( false ) ;
m_viewDef - > viewer ( ) - > showAnimationProgress ( showAnimProgress ( ) ) ;
2017-10-18 03:43:27 -05:00
2015-11-06 03:18:55 -06:00
m_isVisCellStatUpToDate = false ;
2012-09-11 02:22:36 -05:00
2017-10-27 10:12:25 -05:00
if ( hasInvalidStatisticsCombination ( ) )
2015-11-12 04:53:22 -06:00
{
displayPropertyFilteredStatisticsMessage ( true ) ;
m_statisticsTimeRange = CURRENT_TIMESTEP ;
}
2015-05-21 03:05:33 -05:00
RimEclipseView * reservoirView = dynamic_cast < RimEclipseView * > ( m_viewDef . p ( ) ) ;
2017-11-16 03:39:54 -06:00
if ( reservoirView )
{
updateEclipse3DInfo ( reservoirView ) ;
// Update statistics dialog
m_gridStatisticsDialog - > setInfoText ( reservoirView ) ;
m_gridStatisticsDialog - > setHistogramData ( reservoirView ) ;
}
2017-11-16 07:13:50 -06:00
2015-04-29 15:19:49 -05:00
RimGeoMechView * geoMechView = dynamic_cast < RimGeoMechView * > ( m_viewDef . p ( ) ) ;
2017-11-16 07:13:50 -06:00
if ( geoMechView )
{
2017-11-20 02:24:19 -06:00
showVolumeWeightedMean = false ;
2017-11-16 07:13:50 -06:00
updateGeoMech3DInfo ( geoMechView ) ;
// Update statistics dialog
m_gridStatisticsDialog - > setInfoText ( geoMechView ) ;
m_gridStatisticsDialog - > setHistogramData ( geoMechView ) ;
}
2015-04-29 15:19:49 -05:00
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
caf : : PdmFieldHandle * Rim3dOverlayInfoConfig : : objectToggleField ( )
{
return & active ;
}
2017-01-03 06:14:07 -06:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rim3dOverlayInfoConfig : : defineUiOrdering ( QString uiConfigName , caf : : PdmUiOrdering & uiOrdering )
{
caf : : PdmUiGroup * visGroup = uiOrdering . addNewGroup ( " Visibility " ) ;
visGroup - > add ( & showAnimProgress ) ;
visGroup - > add ( & showCaseInfo ) ;
visGroup - > add ( & showResultInfo ) ;
2017-11-20 02:24:19 -06:00
RimGeoMechView * geoMechView = dynamic_cast < RimGeoMechView * > ( m_viewDef . p ( ) ) ;
if ( ! geoMechView )
{
visGroup - > add ( & showVolumeWeightedMean ) ;
}
2017-01-03 06:14:07 -06:00
visGroup - > add ( & showHistogram ) ;
caf : : PdmUiGroup * statGroup = uiOrdering . addNewGroup ( " Statistics Options " ) ;
RimEclipseView * eclipseView = dynamic_cast < RimEclipseView * > ( m_viewDef . p ( ) ) ;
2017-10-19 00:44:21 -05:00
if ( ! eclipseView | | ! eclipseView - > cellResult ( ) - > isFlowDiagOrInjectionFlooding ( ) )
2017-01-03 06:14:07 -06:00
{
statGroup - > add ( & m_statisticsTimeRange ) ;
}
statGroup - > add ( & m_statisticsCellRange ) ;
2017-03-21 07:47:53 -05:00
uiOrdering . skipRemainingFields ( true ) ;
2017-01-03 06:14:07 -06:00
}
2015-04-29 15:19:49 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rim3dOverlayInfoConfig : : setReservoirView ( RimView * ownerReservoirView )
{
m_viewDef = ownerReservoirView ;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-11-11 10:44:00 -06:00
void Rim3dOverlayInfoConfig : : updateEclipse3DInfo ( RimEclipseView * eclipseView )
2015-04-29 15:19:49 -05:00
{
2017-11-15 13:45:56 -06:00
HistogramData histData ;
2015-11-06 06:22:54 -06:00
2015-11-11 10:44:00 -06:00
if ( showHistogram ( ) | | showResultInfo ( ) )
2015-11-06 06:22:54 -06:00
{
2017-11-16 05:51:08 -06:00
histData = histogramData ( ) ;
2015-11-06 06:22:54 -06:00
}
2015-11-11 10:44:00 -06:00
QString infoText ;
if ( showCaseInfo ( ) )
2012-09-11 02:22:36 -05:00
{
2017-11-16 05:51:08 -06:00
infoText = caseInfoText ( ) ;
2015-11-11 10:44:00 -06:00
}
2012-09-11 02:22:36 -05:00
2015-11-11 10:44:00 -06:00
if ( showResultInfo ( ) )
{
2017-11-16 05:51:08 -06:00
infoText + = resultInfoText ( histData ) ;
2015-11-11 10:44:00 -06:00
}
2012-09-11 02:22:36 -05:00
2015-11-11 10:44:00 -06:00
if ( ! infoText . isEmpty ( ) )
{
eclipseView - > viewer ( ) - > setInfoText ( infoText ) ;
2012-09-11 02:22:36 -05:00
}
if ( showHistogram ( ) )
{
2017-11-15 13:45:56 -06:00
bool isResultsInfoRelevant = eclipseView - > hasUserRequestedAnimation ( ) & & eclipseView - > cellResult ( ) - > hasResult ( ) ;
if ( isResultsInfoRelevant & & histData . histogram )
2012-09-11 02:22:36 -05:00
{
2015-11-11 10:44:00 -06:00
eclipseView - > viewer ( ) - > showHistogram ( true ) ;
2017-11-15 13:45:56 -06:00
eclipseView - > viewer ( ) - > setHistogram ( histData . min , histData . max , * histData . histogram ) ;
eclipseView - > viewer ( ) - > setHistogramPercentiles ( histData . p10 , histData . p90 , histData . mean ) ;
2012-09-11 02:22:36 -05:00
}
}
}
2013-04-26 07:47:34 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-04-29 15:19:49 -05:00
void Rim3dOverlayInfoConfig : : updateGeoMech3DInfo ( RimGeoMechView * geoMechView )
2013-04-26 07:47:34 -05:00
{
2017-11-16 07:13:50 -06:00
HistogramData histData ;
2015-11-06 03:18:55 -06:00
2015-11-11 10:44:00 -06:00
if ( showResultInfo ( ) | | showHistogram ( ) )
2015-11-06 03:18:55 -06:00
{
2017-11-16 07:13:50 -06:00
histData = histogramData ( geoMechView ) ;
2015-11-06 03:18:55 -06:00
}
// Compose text
2015-11-11 10:44:00 -06:00
QString infoText ;
if ( showCaseInfo ( ) )
2015-04-29 15:19:49 -05:00
{
2017-11-16 07:13:50 -06:00
infoText = caseInfoText ( geoMechView ) ;
2015-11-11 10:44:00 -06:00
}
if ( showResultInfo ( ) )
{
2017-11-16 07:13:50 -06:00
infoText + = resultInfoText ( histData , geoMechView ) ;
2015-11-11 10:44:00 -06:00
}
2015-06-02 03:37:05 -05:00
2015-11-11 10:44:00 -06:00
if ( ! infoText . isEmpty ( ) )
{
2015-04-29 15:19:49 -05:00
geoMechView - > viewer ( ) - > setInfoText ( infoText ) ;
}
2015-04-20 02:02:33 -05:00
2015-11-06 03:18:55 -06:00
// Populate histogram
2015-04-29 15:19:49 -05:00
if ( showHistogram ( ) )
{
2017-11-16 07:13:50 -06:00
RimGeoMechCase * geoMechCase = geoMechView - > geoMechCase ( ) ;
RigGeoMechCaseData * caseData = geoMechCase ? geoMechCase - > geoMechData ( ) : nullptr ;
bool isResultsInfoRelevant = caseData & & geoMechView - > hasUserRequestedAnimation ( ) & & geoMechView - > cellResultResultDefinition ( ) - > hasResult ( ) ;
2015-11-06 03:18:55 -06:00
if ( isResultsInfoRelevant )
2015-06-19 07:38:31 -05:00
{
geoMechView - > viewer ( ) - > showHistogram ( true ) ;
2017-11-16 07:13:50 -06:00
geoMechView - > viewer ( ) - > setHistogram ( histData . min , histData . max , * histData . histogram ) ;
geoMechView - > viewer ( ) - > setHistogramPercentiles ( histData . p10 , histData . p90 , histData . mean ) ;
2015-11-06 03:18:55 -06:00
}
}
}
2015-06-02 03:37:05 -05:00
2015-11-06 03:18:55 -06:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void Rim3dOverlayInfoConfig : : updateVisCellStatsIfNeeded ( )
{
RimEclipseView * eclipseView = dynamic_cast < RimEclipseView * > ( m_viewDef . p ( ) ) ;
RimGeoMechView * geoMechView = dynamic_cast < RimGeoMechView * > ( m_viewDef . p ( ) ) ;
2015-11-04 08:44:09 -06:00
2015-11-06 03:18:55 -06:00
if ( ! m_isVisCellStatUpToDate )
{
cvf : : ref < RigStatisticsCalculator > calc ;
if ( geoMechView )
{
2016-10-18 00:31:02 -05:00
RigFemResultAddress resAddress = geoMechView - > cellResultResultDefinition ( ) - > resultAddress ( ) ;
2015-11-06 03:18:55 -06:00
calc = new RigFemNativeVisibleCellsStatCalc ( geoMechView - > geoMechCase ( ) - > geoMechData ( ) ,
2017-10-18 03:43:27 -05:00
resAddress ,
geoMechView - > currentTotalCellVisibility ( ) . p ( ) ) ;
2015-06-02 03:37:05 -05:00
}
2015-11-06 03:18:55 -06:00
else if ( eclipseView )
{
2017-10-18 04:58:51 -05:00
if ( eclipseView - > cellResult ( ) - > isFlowDiagOrInjectionFlooding ( ) )
2017-01-03 06:14:07 -06:00
{
RigFlowDiagResultAddress resAddr = eclipseView - > cellResult ( ) - > flowDiagResAddress ( ) ;
RigFlowDiagResults * fldResults = eclipseView - > cellResult ( ) - > flowDiagSolution ( ) - > flowDiagResults ( ) ;
2017-10-18 03:43:27 -05:00
calc = new RigFlowDiagVisibleCellsStatCalc ( fldResults ,
resAddr ,
eclipseView - > currentTotalCellVisibility ( ) . p ( ) ) ;
2017-01-03 06:14:07 -06:00
}
else
{
size_t scalarIndex = eclipseView - > cellResult ( ) - > scalarResultIndex ( ) ;
2017-09-13 03:39:20 -05:00
calc = new RigEclipseNativeVisibleCellsStatCalc ( eclipseView - > currentGridCellResults ( ) ,
2017-10-18 03:43:27 -05:00
scalarIndex ,
eclipseView - > currentTotalCellVisibility ( ) . p ( ) ) ;
2017-01-03 06:14:07 -06:00
}
2015-11-06 03:18:55 -06:00
}
m_visibleCellStatistics = new RigStatisticsDataCache ( calc . p ( ) ) ;
m_isVisCellStatUpToDate = true ;
2015-04-29 15:19:49 -05:00
}
2015-04-20 02:02:33 -05:00
}
2015-11-12 04:53:22 -06:00
2017-10-19 00:44:21 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
2015-11-12 04:53:22 -06:00
void Rim3dOverlayInfoConfig : : displayPropertyFilteredStatisticsMessage ( bool showSwitchToCurrentTimestep )
{
static bool isShowing = false ;
QString switchString ;
if ( showSwitchToCurrentTimestep )
{
switchString = QString ( " <br> "
2017-10-18 03:43:27 -05:00
" Switching to statistics for <b>Current Time Step</b> " ) ;
2015-11-12 04:53:22 -06:00
}
if ( ! isShowing )
{
isShowing = true ;
QMessageBox : : information ( m_viewDef - > viewer ( ) - > layoutWidget ( ) ,
2017-10-18 03:43:27 -05:00
QString ( " ResInsight " ) ,
QString ( " Statistics not available<br> "
" <br> "
" Statistics calculations of <b>Visible Cells</b> for <b>All Time Steps</b> is not supported<br> "
" when you have an active Property filter on a time varying result.<br> " )
+ switchString ) ;
2015-11-12 04:53:22 -06:00
isShowing = false ;
}
2017-10-19 00:44:21 -05:00
}
2017-10-27 10:12:25 -05:00
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool Rim3dOverlayInfoConfig : : hasInvalidStatisticsCombination ( )
{
if ( m_viewDef - > propertyFilterCollection ( )
& & m_viewDef - > propertyFilterCollection ( ) - > hasActiveDynamicFilters ( )
& & m_statisticsCellRange ( ) = = VISIBLE_CELLS
& & m_statisticsTimeRange ( ) = = ALL_TIMESTEPS )
{
RimEclipseView * eclipseView = dynamic_cast < RimEclipseView * > ( m_viewDef . p ( ) ) ;
if ( ! ( eclipseView & & eclipseView - > cellResult ( ) - > isFlowDiagOrInjectionFlooding ( ) ) ) // If isFlowDiagOrInjFlooding then skip this check as ALL_TIMESTEPS is overridden to CURRENT behind the scenes
{
return true ;
}
}
return false ;
}