mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-31 09:14:11 -05:00
#14345 Property Filter: Use view case for ensemble filters
This commit is contained in:
1 parent
42d46cf1a8
commit
26314940a3
2 files changed
+68
-1
No files matched your search
@@ -31,9 +31,12 @@
|
||||
#include "RimCellFilterTools.h"
|
||||
#include "RimCellRangeFilter.h"
|
||||
#include "RimDataFilterCollection.h"
|
||||
#include "RimDataFilterInView.h"
|
||||
#include "RimDataFilterInViewCollection.h"
|
||||
#include "RimEclipsePropertyFilter.h"
|
||||
#include "RimEclipseResultCase.h"
|
||||
#include "RimEclipseResultDefinition.h"
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimReservoirGridEnsemble.h"
|
||||
|
||||
#include "cafPdmField.h"
|
||||
@@ -177,6 +180,67 @@ TEST( RimCellFilterToolsTest, GridEnsembleDataFilterCollection )
|
||||
EXPECT_EQ( size_t( 10 * 10 * 1 ), visibleCount );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST( RimCellFilterToolsTest, EnsembleDataFilterInViewUsesViewCase )
|
||||
{
|
||||
auto caseA = openBruggeCase( "Real0", "BRUGGE_0000.EGRID" );
|
||||
auto caseB = openBruggeCase( "Real40", "BRUGGE_0040.EGRID" );
|
||||
ASSERT_TRUE( caseA != nullptr );
|
||||
ASSERT_TRUE( caseB != nullptr );
|
||||
|
||||
auto ensemble = std::make_unique<RimReservoirGridEnsemble>();
|
||||
|
||||
RimEclipseResultCase* mainCase = caseA.release();
|
||||
RimEclipseResultCase* viewCase = caseB.release();
|
||||
ensemble->addCase( mainCase );
|
||||
ensemble->addCase( viewCase );
|
||||
|
||||
auto* view = new RimEclipseView();
|
||||
view->setEclipseCase( viewCase );
|
||||
ensemble->addView( view );
|
||||
|
||||
auto* propertyFilter = ensemble->dataFilterCollection()->addNewPropertyFilter();
|
||||
ASSERT_TRUE( propertyFilter != nullptr );
|
||||
EXPECT_EQ( mainCase, propertyFilter->resultDefinition()->eclipseCase() );
|
||||
|
||||
propertyFilter->resultDefinition()->setResultType( RiaDefines::ResultCatType::DYNAMIC_NATIVE );
|
||||
propertyFilter->resultDefinition()->setResultVariable( RiaResultNames::swat() );
|
||||
|
||||
auto* lowerField = dynamic_cast<caf::PdmField<double>*>( propertyFilter->findField( "LowerBound" ) );
|
||||
auto* upperField = dynamic_cast<caf::PdmField<double>*>( propertyFilter->findField( "UpperBound" ) );
|
||||
ASSERT_TRUE( lowerField && upperField );
|
||||
lowerField->setValue( 0.3 );
|
||||
upperField->setValue( 0.6 );
|
||||
|
||||
auto wrappers = view->dataFiltersInView()->wrappers();
|
||||
ASSERT_EQ( 1u, wrappers.size() );
|
||||
wrappers.front()->setCheckState( true );
|
||||
|
||||
const size_t timeStepIndex = 5;
|
||||
auto expectedViewCaseVisibility = RimCellFilterTools::computeReservoirCellVisibility( propertyFilter, viewCase, timeStepIndex );
|
||||
auto mainCaseVisibility = RimCellFilterTools::computeReservoirCellVisibility( propertyFilter, mainCase, timeStepIndex );
|
||||
ASSERT_TRUE( expectedViewCaseVisibility.notNull() );
|
||||
ASSERT_TRUE( mainCaseVisibility.notNull() );
|
||||
|
||||
const RigMainGrid* viewGrid = viewCase->eclipseCaseData()->mainGrid();
|
||||
cvf::UByteArray viewVisibility( viewGrid->cellCount() );
|
||||
viewVisibility.setAll( true );
|
||||
wrappers.front()->applyToCellVisibility( &viewVisibility, viewGrid, timeStepIndex );
|
||||
|
||||
ASSERT_EQ( expectedViewCaseVisibility->size(), viewVisibility.size() );
|
||||
ASSERT_EQ( mainCaseVisibility->size(), viewVisibility.size() );
|
||||
|
||||
size_t differingFromMainCase = 0;
|
||||
for ( size_t i = 0; i < viewVisibility.size(); i++ )
|
||||
{
|
||||
EXPECT_EQ( expectedViewCaseVisibility->val( i ), viewVisibility.val( i ) );
|
||||
if ( mainCaseVisibility->val( i ) != viewVisibility.val( i ) ) differingFromMainCase++;
|
||||
}
|
||||
EXPECT_GT( differingFromMainCase, 0u );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in new issue
Block a user