mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Add optional input value filter for calculation
This commit is contained in:
parent
3f6883b875
commit
537cead7f1
@ -318,11 +318,13 @@ void RimEclipseStatisticsCase::computeStatistics()
|
|||||||
|
|
||||||
for ( auto calc : dependentCalculations )
|
for ( auto calc : dependentCalculations )
|
||||||
{
|
{
|
||||||
// A view filter is depending on active cells for a specific case, and the current implementation does not work for grids with
|
cvf::UByteArray* inputValueVisibilityFilter = nullptr;
|
||||||
// different active cells. Disable use of view filter for now.
|
if ( m_gridCalculationFilterView() )
|
||||||
const bool useViewFilter = false;
|
{
|
||||||
|
inputValueVisibilityFilter = m_gridCalculationFilterView()->currentTotalCellVisibility().p();
|
||||||
|
}
|
||||||
|
|
||||||
calc->calculateForCases( sourceCases, useViewFilter, timeStepIndices );
|
calc->calculateForCases( sourceCases, inputValueVisibilityFilter, timeStepIndices );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -629,7 +631,7 @@ QList<caf::PdmOptionItemInfo> RimEclipseStatisticsCase::calculateValueOptions( c
|
|||||||
{
|
{
|
||||||
QList<caf::PdmOptionItemInfo> options;
|
QList<caf::PdmOptionItemInfo> options;
|
||||||
|
|
||||||
options.push_back( caf::PdmOptionItemInfo( nullptr, "None" ) );
|
options.push_back( caf::PdmOptionItemInfo( "None", nullptr ) );
|
||||||
|
|
||||||
for ( const auto& view : views() )
|
for ( const auto& view : views() )
|
||||||
{
|
{
|
||||||
|
@ -127,9 +127,9 @@ bool RimGridCalculation::calculate()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto timeSteps = std::nullopt;
|
auto timeSteps = std::nullopt;
|
||||||
bool useViewFilter = true;
|
auto inputValueVisibilityFilter = nullptr;
|
||||||
return calculateForCases( outputEclipseCases(), useViewFilter, timeSteps );
|
return calculateForCases( outputEclipseCases(), inputValueVisibilityFilter, timeSteps );
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -537,7 +537,7 @@ void RimGridCalculation::removeDependentObjects()
|
|||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
bool RimGridCalculation::calculateForCases( const std::vector<RimEclipseCase*>& calculationCases,
|
bool RimGridCalculation::calculateForCases( const std::vector<RimEclipseCase*>& calculationCases,
|
||||||
bool useViewFilter,
|
cvf::UByteArray* inputValueVisibilityFilter,
|
||||||
std::optional<std::vector<size_t>> timeSteps )
|
std::optional<std::vector<size_t>> timeSteps )
|
||||||
{
|
{
|
||||||
if ( calculationCases.empty() ) return true;
|
if ( calculationCases.empty() ) return true;
|
||||||
@ -604,7 +604,16 @@ bool RimGridCalculation::calculateForCases( const std::vector<RimEclipseCase*>&
|
|||||||
{
|
{
|
||||||
RimGridCalculationVariable* v = dynamic_cast<RimGridCalculationVariable*>( m_variables[i] );
|
RimGridCalculationVariable* v = dynamic_cast<RimGridCalculationVariable*>( m_variables[i] );
|
||||||
CAF_ASSERT( v != nullptr );
|
CAF_ASSERT( v != nullptr );
|
||||||
values.push_back( getInputVectorForVariable( v, tsId, porosityModel, calculationCase ) );
|
|
||||||
|
auto inputValues = getInputVectorForVariable( v, tsId, porosityModel, calculationCase );
|
||||||
|
|
||||||
|
if ( inputValueVisibilityFilter )
|
||||||
|
{
|
||||||
|
const double defaultValue = 0.0;
|
||||||
|
replaceFilteredValuesWithDefaultValue( defaultValue, inputValueVisibilityFilter, inputValues, porosityModel, calculationCase );
|
||||||
|
}
|
||||||
|
|
||||||
|
values.push_back( inputValues );
|
||||||
}
|
}
|
||||||
|
|
||||||
ExpressionParser parser;
|
ExpressionParser parser;
|
||||||
|
@ -58,7 +58,7 @@ public:
|
|||||||
std::vector<RimEclipseCase*> outputEclipseCases() const;
|
std::vector<RimEclipseCase*> outputEclipseCases() const;
|
||||||
RigEclipseResultAddress outputAddress() const;
|
RigEclipseResultAddress outputAddress() const;
|
||||||
bool calculateForCases( const std::vector<RimEclipseCase*>& calculationCases,
|
bool calculateForCases( const std::vector<RimEclipseCase*>& calculationCases,
|
||||||
bool useViewFilter,
|
cvf::UByteArray* inputValueVisibilityFilter,
|
||||||
std::optional<std::vector<size_t>> timeSteps );
|
std::optional<std::vector<size_t>> timeSteps );
|
||||||
void assignEclipseCaseForNullPointers( RimEclipseCase* eclipseCase );
|
void assignEclipseCaseForNullPointers( RimEclipseCase* eclipseCase );
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user