Disable view filtering when using grid calculations as part of grid statistics

Active cells can be different between cases, and view filter from one specific case is not able to use for other cases.
This commit is contained in:
Magne Sjaastad 2023-11-10 10:38:37 +01:00
parent fb890300c5
commit 1046bcbb94
3 changed files with 25 additions and 8 deletions

View File

@ -316,7 +316,11 @@ void RimEclipseStatisticsCase::computeStatistics()
for ( auto calc : dependentCalculations )
{
calc->calculateForCases( sourceCases, timeStepIndices );
// A view filter is depending on active cells for a specific case, and the current implementation does not work for grids with
// different active cells. Disable use of view filter for now.
const bool useViewFilter = false;
calc->calculateForCases( sourceCases, useViewFilter, timeStepIndices );
}
}
@ -707,6 +711,15 @@ void RimEclipseStatisticsCase::fieldChangedByUi( const caf::PdmFieldHandle* chan
m_calculateEditCommand = false;
}
if ( &m_dataSourceForStatistics == changedField && m_gridCalculation() == nullptr )
{
auto calculations = RimProject::current()->gridCalculationCollection()->calculations();
if ( !calculations.empty() )
{
m_gridCalculation = dynamic_cast<RimGridCalculation*>( calculations.front() );
}
}
if ( &m_wellDataSourceCase == changedField )
{
loadSimulationWellDataFromSourceCase();

View File

@ -127,9 +127,9 @@ bool RimGridCalculation::calculate()
}
}
auto timeSteps = std::nullopt;
return calculateForCases( outputEclipseCases(), timeSteps );
auto timeSteps = std::nullopt;
bool useViewFilter = true;
return calculateForCases( outputEclipseCases(), useViewFilter, timeSteps );
}
//--------------------------------------------------------------------------------------------------
@ -536,7 +536,9 @@ void RimGridCalculation::removeDependentObjects()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimGridCalculation::calculateForCases( const std::vector<RimEclipseCase*>& calculationCases, std::optional<std::vector<size_t>> timeSteps )
bool RimGridCalculation::calculateForCases( const std::vector<RimEclipseCase*>& calculationCases,
bool useViewFilter,
std::optional<std::vector<size_t>> timeSteps )
{
if ( calculationCases.empty() ) return true;
@ -622,7 +624,7 @@ bool RimGridCalculation::calculateForCases( const std::vector<RimEclipseCase*>&
if ( evaluatedOk )
{
if ( m_cellFilterView() )
if ( useViewFilter && m_cellFilterView() )
{
filterResults( m_cellFilterView(), values, m_defaultValueType(), m_defaultValue(), resultValues, porosityModel, calculationCase );
}

View File

@ -57,8 +57,10 @@ public:
std::vector<RimEclipseCase*> outputEclipseCases() const;
RigEclipseResultAddress outputAddress() const;
bool calculateForCases( const std::vector<RimEclipseCase*>& calculationCases, std::optional<std::vector<size_t>> timeSteps );
void assignEclipseCaseForNullPointers( RimEclipseCase* eclipseCase );
bool calculateForCases( const std::vector<RimEclipseCase*>& calculationCases,
bool useViewFilter,
std::optional<std::vector<size_t>> timeSteps );
void assignEclipseCaseForNullPointers( RimEclipseCase* eclipseCase );
std::vector<RimEclipseCase*> inputCases() const;