mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-30 09:00:20 -05:00
Support radial grids as cylindrical cells
* Add minimum angular count to system preferences * Refactors grid view updates and radial grid handling * Improves radial grid handling and LGR creation
This commit is contained in:
1 parent
d494725da8
commit
6ef5db2530
14 files changed
+479
-137
No files matched your search
@@ -24,6 +24,7 @@
|
||||
#include "RiaFieldHandleTools.h"
|
||||
#include "RiaLogging.h"
|
||||
#include "RiaPreferencesGrid.h"
|
||||
#include "RiaPreferencesSystem.h"
|
||||
#include "RiaRegressionTestRunner.h"
|
||||
#include "RiaResultNames.h"
|
||||
|
||||
@@ -32,6 +33,7 @@
|
||||
#include "RifEclipseOutputFileTools.h"
|
||||
#include "RifEclipseRestartDataAccess.h"
|
||||
#include "RifInputPropertyLoader.h"
|
||||
#include "RifOpmRadialGridTools.h"
|
||||
#include "RifReaderEclipseOutput.h"
|
||||
#include "RifReaderEclipseRft.h"
|
||||
#include "RifReaderMockModel.h"
|
||||
@@ -43,6 +45,7 @@
|
||||
#include "RigEclipseCaseData.h"
|
||||
#include "RigFlowDiagSolverInterface.h"
|
||||
#include "RigMainGrid.h"
|
||||
#include "RigReservoirGridTools.h"
|
||||
|
||||
#include "Formations/RimFormationNames.h"
|
||||
#include "Formations/RimFormationTools.h"
|
||||
@@ -150,6 +153,49 @@ bool RimEclipseResultCase::showTimeStepFilterGUI()
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEclipseResultCase::checkAndImportRadialGrid()
|
||||
{
|
||||
bool refreshEclipseCaseData = false;
|
||||
if ( RiaPreferencesSystem::current()->useCylindricalCoordinates() )
|
||||
{
|
||||
// Check if radial grid data is available. Create LGR if radial section count is below specified limit. Rebuild cached data if
|
||||
// required.
|
||||
bool isLgrCreated = RifOpmRadialGridTools::importCylindricalCoordinates( gridFileName().toStdString(), eclipseCaseData() );
|
||||
if ( !isLgrCreated )
|
||||
{
|
||||
// Check if min J coordinate is close to 0.0 and max is close to 360. This is a workaround for import of simulation cases that
|
||||
// has an invalid header and is not possible to import using opm-common
|
||||
auto bb = mainGrid()->boundingBox();
|
||||
const double epsilon = 1.0;
|
||||
if ( ( std::abs( bb.min().y() ) < epsilon ) && ( std::abs( bb.max().y() - 360.0 ) < epsilon ) )
|
||||
{
|
||||
size_t minimumAngularCellCount = static_cast<size_t>( RiaPreferencesSystem::current()->minimumAngularCellCount() );
|
||||
if ( mainGrid()->cellCountJ() < minimumAngularCellCount )
|
||||
{
|
||||
auto angularRefinement = ( minimumAngularCellCount / mainGrid()->cellCountJ() ) + 1;
|
||||
|
||||
isLgrCreated = RifOpmRadialGridTools::createAngularGridRefinement( eclipseCaseData(), angularRefinement );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
refreshEclipseCaseData = isLgrCreated;
|
||||
}
|
||||
else
|
||||
{
|
||||
refreshEclipseCaseData =
|
||||
RifOpmRadialGridTools::importCoordinatesForRadialGrid( gridFileName().toStdString(), eclipseCaseData()->mainGrid() );
|
||||
}
|
||||
|
||||
if ( refreshEclipseCaseData )
|
||||
{
|
||||
RigReservoirGridTools::refreshEclipseCaseDataAndViews( this );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -297,6 +343,9 @@ bool RimEclipseResultCase::importGridAndResultMetaData( bool showTimeStepFilter
|
||||
|
||||
results( RiaDefines::PorosityModelType::MATRIX_MODEL )->computeCellVolumes();
|
||||
}
|
||||
|
||||
checkAndImportRadialGrid();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -545,8 +594,8 @@ cvf::ref<RifReaderInterface> RimEclipseResultCase::createMockModel( QString mode
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimEclipseResultCase::~RimEclipseResultCase()
|
||||
{
|
||||
// Disconnect all comparison views. In debug build on Windows, a crash occurs. The comparison view is also set to zero in the destructor
|
||||
// of Rim3dView()
|
||||
// Disconnect all comparison views. In debug build on Windows, a crash occurs. The comparison view is also set to zero in the
|
||||
// destructor of Rim3dView()
|
||||
for ( auto v : reservoirViews() )
|
||||
{
|
||||
if ( v ) v->setComparisonView( nullptr );
|
||||
|
||||
Reference in new issue
Block a user