#5717 Properly reload input properties when reading eclipse result case.

This commit is contained in:
Kristian Bendiksen 2020-03-26 13:04:57 +01:00 committed by Magne Sjaastad
parent b566ddbd4b
commit b5c97ec750
5 changed files with 49 additions and 46 deletions

View File

@ -29,6 +29,7 @@
#include "CompletionExportCommands/RicWellPathExportCompletionDataFeatureImpl.h" #include "CompletionExportCommands/RicWellPathExportCompletionDataFeatureImpl.h"
#include "RicfCommandObject.h" #include "RicfCommandObject.h"
#include "RifEclipseInputPropertyLoader.h"
#include "RifReaderSettings.h" #include "RifReaderSettings.h"
#include "RigActiveCellInfo.h" #include "RigActiveCellInfo.h"
@ -44,6 +45,7 @@
#include "RimEclipseCellColors.h" #include "RimEclipseCellColors.h"
#include "RimEclipseContourMapView.h" #include "RimEclipseContourMapView.h"
#include "RimEclipseContourMapViewCollection.h" #include "RimEclipseContourMapViewCollection.h"
#include "RimEclipseInputProperty.h"
#include "RimEclipseInputPropertyCollection.h" #include "RimEclipseInputPropertyCollection.h"
#include "RimEclipsePropertyFilter.h" #include "RimEclipsePropertyFilter.h"
#include "RimEclipsePropertyFilterCollection.h" #include "RimEclipsePropertyFilterCollection.h"
@ -647,6 +649,46 @@ RimEclipseInputPropertyCollection* RimEclipseCase::inputPropertyCollection()
return m_inputPropertyCollection(); return m_inputPropertyCollection();
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<QString> RimEclipseCase::additionalFiles() const
{
std::vector<QString> additionalFiles;
for ( const RimEclipseInputProperty* inputProperty : m_inputPropertyCollection()->inputProperties() )
{
if ( inputProperty->fileName == gridFileName() ) continue;
additionalFiles.push_back( inputProperty->fileName().path() );
}
return additionalFiles;
}
//--------------------------------------------------------------------------------------------------
/// Loads input property data from the gridFile and additional files
/// Creates new InputProperties if necessary, and flags the unused ones as obsolete
//--------------------------------------------------------------------------------------------------
void RimEclipseCase::loadAndSyncronizeInputProperties( bool includeGridFileName )
{
// Make sure we actually have reservoir data
CVF_ASSERT( this->eclipseCaseData() );
CVF_ASSERT( this->eclipseCaseData()->mainGrid()->gridPointDimensions() != cvf::Vec3st( 0, 0, 0 ) );
// Then read the properties from all the files referenced by the InputReservoir
std::vector<QString> filenames;
for ( const QString& fileName : additionalFiles() )
{
filenames.push_back( fileName );
}
if ( includeGridFileName ) filenames.push_back( gridFileName() );
RifEclipseInputPropertyLoader::loadAndSyncronizeInputProperties( inputPropertyCollection(), eclipseCaseData(), filenames );
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -113,6 +113,8 @@ public:
std::set<QString> sortedSimWellNames() const; std::set<QString> sortedSimWellNames() const;
void loadAndSyncronizeInputProperties( bool includeGridFileName );
protected: protected:
void initAfterRead() override; void initAfterRead() override;
void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override; void fieldChangedByUi( const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue ) override;
@ -122,8 +124,9 @@ protected:
// Internal methods // Internal methods
protected: protected:
void computeCachedData(); void computeCachedData();
void setReservoirData( RigEclipseCaseData* eclipseCase ); void setReservoirData( RigEclipseCaseData* eclipseCase );
std::vector<QString> additionalFiles() const;
private: private:
void createTimeStepFormatString(); void createTimeStepFormatString();

View File

@ -216,7 +216,7 @@ bool RimEclipseInputCase::openEclipseGridFile()
this->eclipseCaseData()->mainGrid()->setFlipAxis( m_flipXAxis, m_flipYAxis ); this->eclipseCaseData()->mainGrid()->setFlipAxis( m_flipXAxis, m_flipYAxis );
computeCachedData(); computeCachedData();
loadAndSyncronizeInputProperties(); loadAndSyncronizeInputProperties( true );
} }
RiaApplication* app = RiaApplication::instance(); RiaApplication* app = RiaApplication::instance();
@ -240,29 +240,6 @@ void RimEclipseInputCase::reloadEclipseGridFile()
openReserviorCase(); openReserviorCase();
} }
//--------------------------------------------------------------------------------------------------
/// Loads input property data from the gridFile and additional files
/// Creates new InputProperties if necessary, and flags the unused ones as obsolete
//--------------------------------------------------------------------------------------------------
void RimEclipseInputCase::loadAndSyncronizeInputProperties()
{
// Make sure we actually have reservoir data
CVF_ASSERT( this->eclipseCaseData() );
CVF_ASSERT( this->eclipseCaseData()->mainGrid()->gridPointDimensions() != cvf::Vec3st( 0, 0, 0 ) );
// Then read the properties from all the files referenced by the InputReservoir
std::vector<QString> filenames;
for ( const QString& fileName : additionalFiles() )
{
filenames.push_back( fileName );
}
filenames.push_back( gridFileName() );
RifEclipseInputPropertyLoader::loadAndSyncronizeInputProperties( inputPropertyCollection(), eclipseCaseData(), filenames );
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -372,19 +349,3 @@ void RimEclipseInputCase::updateAdditionalFileFolder( const QString& newFolder )
inputProperty->fileName = newFilePath.absoluteFilePath(); inputProperty->fileName = newFilePath.absoluteFilePath();
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<QString> RimEclipseInputCase::additionalFiles() const
{
std::vector<QString> additionalFiles;
for ( const RimEclipseInputProperty* inputProperty : m_inputPropertyCollection()->inputProperties() )
{
if ( inputProperty->fileName == gridFileName() ) continue;
additionalFiles.push_back( inputProperty->fileName().path() );
}
return additionalFiles;
}

View File

@ -47,7 +47,6 @@ public:
// File open methods // File open methods
bool openDataFileSet( const QStringList& fileNames ); bool openDataFileSet( const QStringList& fileNames );
bool importAsciiInputProperties( const QStringList& fileNames ) override; bool importAsciiInputProperties( const QStringList& fileNames ) override;
void loadAndSyncronizeInputProperties();
// RimCase overrides // RimCase overrides
bool openEclipseGridFile() override; bool openEclipseGridFile() override;
@ -60,9 +59,6 @@ public:
void updateAdditionalFileFolder( const QString& newFolder ); void updateAdditionalFileFolder( const QString& newFolder );
private:
std::vector<QString> additionalFiles() const;
protected: protected:
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;

View File

@ -202,6 +202,7 @@ bool RimEclipseResultCase::importGridAndResultMetaData( bool showTimeStepFilter
progInfo.setProgressDescription( "Computing Case Cache" ); progInfo.setProgressDescription( "Computing Case Cache" );
computeCachedData(); computeCachedData();
loadAndSyncronizeInputProperties( false );
m_gridAndWellDataIsReadFromFile = true; m_gridAndWellDataIsReadFromFile = true;
m_activeCellInfoIsReadFromFile = true; m_activeCellInfoIsReadFromFile = true;