mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-25 22:50:25 -05:00
Change contourmap default name and menu entry
Look for formation names in multiple locations Skip realizations with missing formation names, if used
This commit is contained in:
1 parent
c5ef75e368
commit
41af091511
8 files changed
+72
-34
No files matched your search
+2
-2
@@ -128,8 +128,8 @@ RimEclipseCaseEnsemble* RicCreateGridCaseEnsemblesFromFilesFeature::importSingle
|
||||
rimResultCase->setCaseInfo( caseName, caseFileName );
|
||||
eclipseCaseEnsemble->addCase( rimResultCase );
|
||||
|
||||
auto folderName = RimFormationTools::formationFolderFromCaseFileName( caseFileName );
|
||||
RimFormationNames* formations = RimFormationTools::loadFormationNamesFromFolder( folderName );
|
||||
auto folderNames = RimFormationTools::formationFoldersFromCaseFileName( caseFileName );
|
||||
RimFormationNames* formations = RimFormationTools::loadFormationNamesFromFolder( folderNames );
|
||||
if ( formations != nullptr ) rimResultCase->setFormationNames( formations );
|
||||
}
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ void RicNewStatisticsContourMapFeature::addStatisticsContourMap( RimEclipseCaseE
|
||||
std::vector<RimEclipseCase*> cases = eclipseCaseEnsemble->cases();
|
||||
if ( cases.empty() ) return;
|
||||
|
||||
RimStatisticsContourMap* statisticsContourMap = new RimStatisticsContourMap;
|
||||
auto statisticsContourMap = new RimStatisticsContourMap();
|
||||
statisticsContourMap->setEclipseCase( cases[0] );
|
||||
eclipseCaseEnsemble->addStatisticsContourMap( statisticsContourMap );
|
||||
eclipseCaseEnsemble->updateConnectedEditors();
|
||||
@@ -69,8 +69,8 @@ void RicNewStatisticsContourMapFeature::onActionTriggered( bool isChecked )
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RicNewStatisticsContourMapFeature::setupActionLook( QAction* actionToSetup )
|
||||
{
|
||||
actionToSetup->setText( "New Statistics Contour Map" );
|
||||
actionToSetup->setIcon( QIcon( ":/3DView16x16.png" ) );
|
||||
actionToSetup->setText( "New Ensemble Contour Map" );
|
||||
actionToSetup->setIcon( QIcon( ":/Histogram16x16.png" ) );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -82,7 +82,7 @@ void caf::AppEnum<RimStatisticsContourMap::StatisticsType>::setUp()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimStatisticsContourMap::RimStatisticsContourMap()
|
||||
{
|
||||
CAF_PDM_InitObject( "Statistics Contour Map", ":/Histogram16x16.png" );
|
||||
CAF_PDM_InitObject( "Ensemble Contour Map", ":/Histogram16x16.png" );
|
||||
|
||||
CAF_PDM_InitField( &m_boundingBoxExpPercent,
|
||||
"BoundingBoxExpPercent",
|
||||
@@ -376,7 +376,7 @@ QList<caf::PdmOptionItemInfo> RimStatisticsContourMap::calculateValueOptions( co
|
||||
{
|
||||
if ( formations->formationNamesData() )
|
||||
{
|
||||
for ( auto f : formations->formationNamesData()->formationNames() )
|
||||
for ( auto& f : formations->formationNamesData()->formationNames() )
|
||||
{
|
||||
options.push_back( caf::PdmOptionItemInfo( f, f, false ) );
|
||||
}
|
||||
@@ -559,31 +559,53 @@ void RimStatisticsContourMap::computeStatistics()
|
||||
std::set<int> usedKLayers;
|
||||
auto formationNames = selectedFormations();
|
||||
|
||||
bool formationNamesOk = true;
|
||||
if ( formationNames.size() > 0 )
|
||||
{
|
||||
usedKLayers = eCase->activeFormationNames()->formationNamesData()->findKLayers( formationNames );
|
||||
if ( auto names = eCase->activeFormationNames() )
|
||||
{
|
||||
if ( auto fData = names->formationNamesData() )
|
||||
{
|
||||
usedKLayers = fData->findKLayers( formationNames );
|
||||
}
|
||||
else
|
||||
{
|
||||
formationNamesOk = false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
formationNamesOk = false;
|
||||
}
|
||||
}
|
||||
|
||||
contourMapProjection.generateGridMapping( resultAggregation, {}, usedKLayers, selectedPolygons() );
|
||||
|
||||
if ( m_resultDefinition()->hasDynamicResult() )
|
||||
if ( formationNamesOk )
|
||||
{
|
||||
std::vector<std::pair<int, int>> timeSteps = mapLocalToGlobalTimeSteps( eCase->timeStepDates() );
|
||||
contourMapProjection.generateGridMapping( resultAggregation, {}, usedKLayers, selectedPolygons() );
|
||||
|
||||
for ( auto [localTs, globalTs] : timeSteps )
|
||||
if ( m_resultDefinition()->hasDynamicResult() )
|
||||
{
|
||||
std::vector<double> result = contourMapProjection.generateResults( m_resultDefinition()->eclipseResultAddress(),
|
||||
resultAggregation,
|
||||
localTs,
|
||||
floodSettings );
|
||||
timestep_results[globalTs].push_back( result );
|
||||
std::vector<std::pair<int, int>> timeSteps = mapLocalToGlobalTimeSteps( eCase->timeStepDates() );
|
||||
|
||||
for ( auto [localTs, globalTs] : timeSteps )
|
||||
{
|
||||
std::vector<double> result = contourMapProjection.generateResults( m_resultDefinition()->eclipseResultAddress(),
|
||||
resultAggregation,
|
||||
localTs,
|
||||
floodSettings );
|
||||
timestep_results[globalTs].push_back( result );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
std::vector<double> result =
|
||||
contourMapProjection.generateResults( m_resultDefinition()->eclipseResultAddress(), resultAggregation, 0, floodSettings );
|
||||
timestep_results[0].push_back( result );
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
std::vector<double> result =
|
||||
contourMapProjection.generateResults( m_resultDefinition()->eclipseResultAddress(), resultAggregation, 0, floodSettings );
|
||||
timestep_results[0].push_back( result );
|
||||
RiaLogging::warning( QString( "Formation names are missing for case %1, skipping case." ).arg( eCase->caseUserDescription() ) );
|
||||
}
|
||||
}
|
||||
eCase->setReaderSettings( oldSettings );
|
||||
|
||||
@@ -32,32 +32,45 @@
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// look for formation file two levels up from the egrid file
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimFormationTools::formationFolderFromCaseFileName( const QString caseFileName )
|
||||
QStringList RimFormationTools::formationFoldersFromCaseFileName( const QString caseFileName )
|
||||
{
|
||||
QStringList folders;
|
||||
|
||||
QFileInfo fi( caseFileName );
|
||||
|
||||
auto formationFolder = QDir( fi.dir().path() + "/../../" );
|
||||
return formationFolder.absolutePath();
|
||||
auto rmsFolder = QDir( fi.dir().path() + "/../../rms/output/zone/" );
|
||||
|
||||
folders.push_back( rmsFolder.absolutePath() ); // rms folder is 1st pri.
|
||||
folders.push_back( formationFolder.absolutePath() );
|
||||
|
||||
return folders;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimFormationNames* RimFormationTools::loadFormationNamesFromFolder( const QString folderName )
|
||||
RimFormationNames* RimFormationTools::loadFormationNamesFromFolder( const QStringList& folderNames )
|
||||
{
|
||||
QStringList filters;
|
||||
filters << "*.lyr";
|
||||
|
||||
QStringList fileList = caf::Utils::getFilesInDirectory( folderName, filters, true /*absolute filename*/ );
|
||||
QStringList fileList;
|
||||
|
||||
for ( auto& folder : folderNames )
|
||||
{
|
||||
fileList.append( caf::Utils::getFilesInDirectory( folder, filters, true /*absolute filename*/ ) );
|
||||
if ( !fileList.isEmpty() ) break;
|
||||
}
|
||||
|
||||
if ( fileList.isEmpty() ) return nullptr;
|
||||
|
||||
RimFormationNamesCollection* fomNameColl = new RimFormationNamesCollection();
|
||||
|
||||
RimFormationNamesCollection* fomNameColl = new RimFormationNamesCollection();
|
||||
std::vector<RimFormationNames*> formationNames = fomNameColl->importFiles( fileList );
|
||||
if ( formationNames.size() > 1 )
|
||||
{
|
||||
RiaLogging::warning( QString( "Multiple formation name files found in ensemble folder %1" ).arg( folderName ) );
|
||||
RiaLogging::warning( QString( "Multiple formation name files found in ensemble folders." ) );
|
||||
}
|
||||
|
||||
return formationNames.back();
|
||||
return formationNames.front();
|
||||
}
|
||||
@@ -18,14 +18,15 @@
|
||||
#pragma once
|
||||
|
||||
#include <QString>
|
||||
#include <QStringList>
|
||||
|
||||
class RimFormationNames;
|
||||
|
||||
class RimFormationTools
|
||||
{
|
||||
public:
|
||||
static QString formationFolderFromCaseFileName( const QString caseFileName );
|
||||
static RimFormationNames* loadFormationNamesFromFolder( const QString folderName );
|
||||
static QStringList formationFoldersFromCaseFileName( const QString caseFileName );
|
||||
static RimFormationNames* loadFormationNamesFromFolder( const QStringList& folderNames );
|
||||
|
||||
private:
|
||||
RimFormationTools(){};
|
||||
|
||||
@@ -224,7 +224,7 @@ void RimEclipseCaseEnsemble::addWellTargetsGenerator( RimWellTargetCandidatesGen
|
||||
void RimEclipseCaseEnsemble::addStatisticsContourMap( RimStatisticsContourMap* statisticsContourMap )
|
||||
{
|
||||
m_statisticsContourMaps.push_back( statisticsContourMap );
|
||||
statisticsContourMap->setName( QString( "Statistics Contour Map #%1" ).arg( m_statisticsContourMaps.size() ) );
|
||||
statisticsContourMap->setName( QString( "Ensemble Contour Map #%1" ).arg( m_statisticsContourMaps.size() ) );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
@@ -123,8 +123,8 @@ void RimEclipseResultCase::initAfterRead()
|
||||
// handle special formations for ensembles
|
||||
if ( firstAncestorOrThisOfType<RimEclipseCaseEnsemble>() != nullptr )
|
||||
{
|
||||
auto folderName = RimFormationTools::formationFolderFromCaseFileName( m_caseFileName().path() );
|
||||
m_activeFormationNames = RimFormationTools::loadFormationNamesFromFolder( folderName );
|
||||
auto folderNames = RimFormationTools::formationFoldersFromCaseFileName( m_caseFileName().path() );
|
||||
m_activeFormationNames = RimFormationTools::loadFormationNamesFromFolder( folderNames );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2345,6 +2345,8 @@ void RimEclipseView::setOverridePropertyFilterCollection( RimEclipsePropertyFilt
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimEclipseView::calculateCurrentTotalCellVisibility( cvf::UByteArray* totalVisibility, int timeStep )
|
||||
{
|
||||
if ( !mainGrid() ) return;
|
||||
|
||||
size_t cellCount = mainGrid()->totalCellCount();
|
||||
|
||||
totalVisibility->resize( cellCount );
|
||||
|
||||
Reference in new issue
Block a user