Fault Reactivation Assessment: updates and tweaks (#7732)

* Add flag to keep temp. parameter files or not.
* Ask user if it is ok to clean the output folder if selected.
* Add property for elastic table input file.
* Do not show legend by default when refreshing tsurfs
* Make sure all loadsteps are enabled in post processing json file
* Support running adv. proc without req. basic proc to be run first
This commit is contained in:
jonjenssen 2021-05-28 00:55:54 +02:00 committed by GitHub
parent 33ac79d856
commit ae7285b478
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 106 additions and 21 deletions

View File

@ -21,6 +21,7 @@
#include "RiaApplication.h"
#include "RiaPreferences.h"
#include "cafPdmUiCheckBoxEditor.h"
#include "cafPdmUiFilePathEditor.h"
#include <QFile>
@ -62,6 +63,15 @@ RiaPreferencesGeoMech::RiaPreferencesGeoMech()
"" );
m_geomechFRADefaultAdvXML.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() );
m_geomechFRADefaultAdvXML.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::TOP );
CAF_PDM_InitField( &m_keepTemporaryFiles,
"keepTemporaryFile",
false,
"Keep temporary parameter files (for debugging)",
"",
"",
"" );
caf::PdmUiNativeCheckBoxEditor::configureFieldForEditor( &m_keepTemporaryFiles );
}
//--------------------------------------------------------------------------------------------------
@ -87,6 +97,9 @@ void RiaPreferencesGeoMech::appendItems( caf::PdmUiOrdering& uiOrdering ) const
caf::PdmUiGroup* paramGroup = faultRAGroup->addNewGroup( "Parameters" );
paramGroup->add( &m_geomechFRADefaultBasicXML );
paramGroup->add( &m_geomechFRADefaultAdvXML );
caf::PdmUiGroup* settingsGroup = faultRAGroup->addNewGroup( "Settings" );
settingsGroup->add( &m_keepTemporaryFiles );
}
//--------------------------------------------------------------------------------------------------
@ -136,6 +149,14 @@ QString RiaPreferencesGeoMech::geomechFRADefaultAdvXML() const
return m_geomechFRADefaultAdvXML;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RiaPreferencesGeoMech::keepTemporaryFiles() const
{
return m_keepTemporaryFiles;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -43,6 +43,7 @@ public:
QString geomechFRAMacrisCommand() const;
QString geomechFRADefaultBasicXML() const;
QString geomechFRADefaultAdvXML() const;
bool keepTemporaryFiles() const;
protected:
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
@ -53,4 +54,5 @@ private:
caf::PdmField<QString> m_geomechFRAMacrisCommand;
caf::PdmField<QString> m_geomechFRADefaultBasicXML;
caf::PdmField<QString> m_geomechFRADefaultAdvXML;
caf::PdmField<bool> m_keepTemporaryFiles;
};

View File

@ -77,6 +77,21 @@ void RicNewFaultReactAssessmentFeature::onActionTriggered( bool isChecked )
// ask user for preprocessing settings
if ( !showSettingsGUI( frapSettings ) ) return;
if ( frapSettings.cleanBaseDirectory() )
{
auto reply = QMessageBox::question( nullptr,
QString( "Clean output directory" ),
QString( "Are you sure you want to delete all files and subfolders in the "
"selected output directory?\n%1 " )
.arg( frapSettings.outputBaseDirectory() ),
QMessageBox::Yes | QMessageBox::No,
QMessageBox::No );
if ( reply == QMessageBox::No )
{
frapSettings.setCleanBaseDirectory( false );
}
}
// make sure our work dir is there
prepareDirectory( frapSettings.outputBaseDirectory(), frapSettings.cleanBaseDirectory() );
@ -181,7 +196,10 @@ bool RicNewFaultReactAssessmentFeature::showSettingsGUI( RimFaultRAPreprocSettin
"Fault Reactivation Assessment Preprocessing",
"",
QDialogButtonBox::Ok | QDialogButtonBox::Cancel );
propertyDialog.resize( QSize( 400, 420 ) );
if ( settings.geoMechSelected() )
propertyDialog.resize( QSize( 520, 520 ) );
else
propertyDialog.resize( QSize( 520, 420 ) );
// make sure we always have an eclipse case selected
while ( true )
@ -277,11 +295,12 @@ void RicNewFaultReactAssessmentFeature::addParameterFileForCleanUp( QString file
//--------------------------------------------------------------------------------------------------
void RicNewFaultReactAssessmentFeature::cleanUpParameterFiles()
{
#ifndef DEBUG
// for ( auto& filename : m_parameterFilesToCleanUp )
//{
// if ( QFile::exists( filename ) ) QFile::remove( filename );
//}
#endif
if ( !RiaPreferencesGeoMech::current()->keepTemporaryFiles() )
{
for ( auto& filename : m_parameterFilesToCleanUp )
{
if ( QFile::exists( filename ) ) QFile::remove( filename );
}
}
m_parameterFilesToCleanUp.clear();
}

View File

@ -154,12 +154,13 @@ void RicRunFaultReactAssessmentFeature::addParameterFileForCleanUp( QString file
//--------------------------------------------------------------------------------------------------
void RicRunFaultReactAssessmentFeature::cleanUpParameterFiles()
{
#ifndef DEBUG
// for ( auto& filename : m_parameterFilesToCleanUp )
//{
// if ( QFile::exists( filename ) ) QFile::remove( filename );
//}
#endif
if ( !RiaPreferencesGeoMech::current()->keepTemporaryFiles() )
{
for ( auto& filename : m_parameterFilesToCleanUp )
{
if ( QFile::exists( filename ) ) QFile::remove( filename );
}
}
m_parameterFilesToCleanUp.clear();
}
@ -202,8 +203,10 @@ void RicRunFaultReactAssessmentFeature::reloadSurfaces( RimFaultRASettings* sett
// get rid of any files removed by the processing
surfColl->removeMissingFileSurfaces();
bool showLegendInView = false;
// ask the collection to reload the existing files
surfColl->reloadSurfaces( surfColl->surfaces() );
surfColl->reloadSurfaces( surfColl->surfaces(), showLegendInView );
// get all the files in the folder, skip the ones we alreday have
QStringList newFiles;
@ -217,6 +220,5 @@ void RicRunFaultReactAssessmentFeature::reloadSurfaces( RimFaultRASettings* sett
}
// import the new surfaces
bool showLegendInView = false;
surfColl->importSurfacesFromFiles( newFiles, showLegendInView );
}

View File

@ -79,11 +79,13 @@ bool RifFaultRAJSonWriter::writeToPostprocFile( int faultID, RimFaultRASettings*
stream << "\"MacrisCalcCalibration_path\": \"" + settings->advancedMacrisDatabase() + "\"," << endl;
}
stream << "\"MacrisCalc_path\": \"" + settings->basicMacrisDatabase() + "\"," << endl;
if ( QFile::exists( settings->basicMacrisDatabase() ) )
stream << "\"MacrisCalc_path\": \"" + settings->basicMacrisDatabase() + "\"," << endl;
stream << "\"base_directory_path\": \"" + settings->outputBaseDirectory() + "\"," << endl;
QStringList timesteps;
timesteps.push_back( QString::number( settings->startTimeStepEclipseIndex() ) );
timesteps.push_back( QString::number( settings->endTimeStepEclipseIndex() ) );
stream << "\"tsurf_loadsteps\": [ " + timesteps.join( ',' ) + " ]" << endl;

View File

@ -28,6 +28,7 @@
#include "cafPdmFieldScriptingCapability.h"
#include "cafPdmObjectScriptingCapability.h"
#include "cafPdmUiComboBoxEditor.h"
#include "cafPdmUiFilePathEditor.h"
#include <QDir>
#include <QFileInfo>
@ -62,6 +63,10 @@ RimFaultRAPreprocSettings::RimFaultRAPreprocSettings()
CAF_PDM_InitField( &m_cleanBaseDir, "CleanBaseDir", false, "Clean Output Directory", "", "", "" );
CAF_PDM_InitField( &m_smoothEclipseData, "SmoothEclipseData", true, "Smooth Eclipse Data", "", "", "" );
CAF_PDM_InitField( &m_elasticTableFilename, "ElasticTableFilename", QString( "" ), "Elastic Table", "", "", "" );
m_elasticTableFilename.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() );
m_elasticTableFilename.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
}
//--------------------------------------------------------------------------------------------------
@ -104,6 +109,9 @@ void RimFaultRAPreprocSettings::defineUiOrdering( QString uiConfigName, caf::Pdm
geomechGroup->add( &m_geomechCase );
geomechGroup->add( &m_startTimestepGeoMech );
geomechGroup->add( &m_endTimestepGeoMech );
auto tableGroup = uiOrdering.addNewGroup( "Elastic Table" );
tableGroup->add( &m_elasticTableFilename );
}
auto eclipseGroup = uiOrdering.addNewGroup( "Eclipse Model" );
@ -271,6 +279,14 @@ QString RimFaultRAPreprocSettings::geomechCaseFilename() const
return "";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimFaultRAPreprocSettings::elasticTableFilename() const
{
return m_elasticTableFilename();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -295,6 +311,14 @@ bool RimFaultRAPreprocSettings::cleanBaseDirectory() const
return m_cleanBaseDir();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimFaultRAPreprocSettings::setCleanBaseDirectory( bool clean )
{
m_cleanBaseDir = clean;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -55,8 +55,11 @@ public:
QString eclipseCaseFilename() const;
QString geomechCaseFilename() const;
bool cleanBaseDirectory() const;
bool smoothEclipseData() const;
QString elasticTableFilename() const;
bool cleanBaseDirectory() const;
void setCleanBaseDirectory( bool clean );
bool geoMechSelected() const;
@ -90,4 +93,5 @@ protected:
caf::PdmPtrField<RimGeoMechCase*> m_geomechCase;
caf::PdmField<QString> m_baseDir;
caf::PdmField<bool> m_cleanBaseDir;
caf::PdmField<QString> m_elasticTableFilename;
};

View File

@ -38,6 +38,7 @@
#include "cafPdmFieldScriptingCapability.h"
#include "cafPdmObjectScriptingCapability.h"
#include "cafPdmUiComboBoxEditor.h"
#include "cafPdmUiFilePathEditor.h"
#include "cafPdmUiTableViewEditor.h"
#include <QFileInfo>
@ -63,6 +64,10 @@ RimFaultRASettings::RimFaultRASettings()
CAF_PDM_InitFieldNoDefault( &m_baseDir, "BaseDir", "Working Directory", "", "", "" );
m_baseDir.uiCapability()->setUiReadOnly( true );
CAF_PDM_InitField( &m_elasticTableFilename, "ElasticTableFilename", QString( "" ), "Elastic Table", "", "", "" );
m_elasticTableFilename.uiCapability()->setUiEditorTypeName( caf::PdmUiFilePathEditor::uiEditorTypeName() );
m_elasticTableFilename.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::TOP );
CAF_PDM_InitField( &m_startTimestepEclipse, "StartTimeStepEclipse", 0, "Start Time Step", "", "", "" );
m_startTimestepEclipse.uiCapability()->setUiEditorTypeName( caf::PdmUiComboBoxEditor::uiEditorTypeName() );
CAF_PDM_InitField( &m_endTimestepEclipse, "EndTimeStepEclipse", 0, "End Time Step", "", "", "" );
@ -85,6 +90,7 @@ RimFaultRASettings::RimFaultRASettings()
CAF_PDM_InitFieldNoDefault( &m_basicParametersRI, "BasicParametersRI", "Basic ResInsight Parameters", "", "", "" );
CAF_PDM_InitFieldNoDefault( &m_advancedParametersRI, "AdvancedParametersRI", "Advanced ResInsight Parameters", "", "", "" );
setupResInsightParameters();
}
@ -154,6 +160,9 @@ void RimFaultRASettings::defineUiOrdering( QString uiConfigName, caf::PdmUiOrder
auto geomechGroup = uiOrdering.addNewGroup( "GeoMech Time Steps" );
geomechGroup->add( &m_startTimestepGeoMech );
geomechGroup->add( &m_endTimestepGeoMech );
auto tableGroup = uiOrdering.addNewGroup( "Additional Settings" );
tableGroup->add( &m_elasticTableFilename );
}
uiOrdering.skipRemainingFields( true );
}
@ -247,6 +256,7 @@ void RimFaultRASettings::initFromPreprocSettings( RimFaultRAPreprocSettings* pre
m_endTimestepEclipse = preprocSettings->endTimeStepEclipseIndex();
m_startTimestepGeoMech = preprocSettings->startTimeStepGeoMechIndex();
m_endTimestepGeoMech = preprocSettings->endTimeStepGeoMechIndex();
m_elasticTableFilename = preprocSettings->elasticTableFilename();
QString errorText;
@ -455,7 +465,7 @@ void RimFaultRASettings::setupResInsightParameters()
//--------------------------------------------------------------------------------------------------
QString RimFaultRASettings::elasticPropertiesFilename() const
{
return m_baseDir + "/Abaqus/ELASTIC_TABLE_res.inp";
return m_elasticTableFilename;
}
//--------------------------------------------------------------------------------------------------

View File

@ -101,6 +101,7 @@ private:
caf::PdmPtrField<RimEclipseCase*> m_eclipseCase;
caf::PdmPtrField<RimGeoMechCase*> m_geomechCase;
caf::PdmField<QString> m_baseDir;
caf::PdmField<QString> m_elasticTableFilename;
caf::PdmField<int> m_startTimestepEclipse;
caf::PdmField<int> m_endTimestepEclipse;

View File

@ -163,7 +163,7 @@ RimSurface* RimSurfaceCollection::importSurfacesFromFiles( const QStringList& fi
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSurfaceCollection::reloadSurfaces( std::vector<RimSurface*> surfaces )
void RimSurfaceCollection::reloadSurfaces( std::vector<RimSurface*> surfaces, bool showLegend /*=true*/ )
{
// ask the surfaces given to reload its data
for ( RimSurface* surface : surfaces )
@ -173,7 +173,7 @@ void RimSurfaceCollection::reloadSurfaces( std::vector<RimSurface*> surfaces )
this->updateConnectedEditors();
updateViews( surfaces );
updateViews( surfaces, showLegend );
}
//--------------------------------------------------------------------------------------------------

View File

@ -47,7 +47,7 @@ public:
bool containsFileSurface( QString filename );
bool containsSurface();
void reloadSurfaces( std::vector<RimSurface*> surfaces );
void reloadSurfaces( std::vector<RimSurface*> surfaces, bool showLegend = true );
void removeSurface( RimSurface* surface );
void removeMissingFileSurfaces();