Fault React. Assessment updates, part 2 (#7735)

* Add additional parameters to postprocessing script.
This commit is contained in:
jonjenssen
2021-05-28 14:31:36 +02:00
committed by GitHub
parent e5efcfa4e6
commit 8752eebdca
11 changed files with 192 additions and 65 deletions

View File

@@ -31,6 +31,7 @@
#include "RimEclipseView.h" #include "RimEclipseView.h"
#include "RimFaultInView.h" #include "RimFaultInView.h"
#include "RimFaultInViewCollection.h" #include "RimFaultInViewCollection.h"
#include "RimFaultRAPostprocSettings.h"
#include "RimFaultRAPreprocSettings.h" #include "RimFaultRAPreprocSettings.h"
#include "RimFaultRASettings.h" #include "RimFaultRASettings.h"
#include "RimFileSurface.h" #include "RimFileSurface.h"
@@ -111,8 +112,11 @@ int RicRunFaultReactAssessmentFeature::selectedFaultID()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool RicRunFaultReactAssessmentFeature::runPostProcessing( int faultID, RimFaultRASettings* settings ) bool RicRunFaultReactAssessmentFeature::runPostProcessing( int faultID, RimFaultRASettings* settings )
{ {
RimFaultRAPostprocSettings postproc_settings;
postproc_settings.initFromSettings( settings );
QString outErrorText; QString outErrorText;
if ( !RifFaultRAJSonWriter::writeToPostprocFile( faultID, settings, outErrorText ) ) if ( !RifFaultRAJSonWriter::writeToPostprocFile( faultID, &postproc_settings, outErrorText ) )
{ {
QMessageBox::warning( nullptr, QMessageBox::warning( nullptr,
"Fault Reactivation Assessment Processing", "Fault Reactivation Assessment Processing",
@@ -121,13 +125,13 @@ bool RicRunFaultReactAssessmentFeature::runPostProcessing( int faultID, RimFault
} }
QString command = RiaPreferencesGeoMech::current()->geomechFRAPostprocCommand(); QString command = RiaPreferencesGeoMech::current()->geomechFRAPostprocCommand();
QStringList parameters = settings->postprocParameters( faultID ); QStringList parameters = postproc_settings.postprocCommandParameters( faultID );
RimProcess process; RimProcess process;
process.setCommand( command ); process.setCommand( command );
process.setParameters( parameters ); process.setParameters( parameters );
addParameterFileForCleanUp( settings->postprocParameterFilename( faultID ) ); addParameterFileForCleanUp( postproc_settings.postprocParameterFilename( faultID ) );
if ( !process.execute() ) if ( !process.execute() )
{ {

View File

@@ -18,8 +18,10 @@
#include "RifFaultRAJsonWriter.h" #include "RifFaultRAJsonWriter.h"
#include "RimFaultRAPostprocSettings.h"
#include "RimFaultRAPreprocSettings.h" #include "RimFaultRAPreprocSettings.h"
#include "RimFaultRASettings.h" #include "RimGenericParameter.h"
#include "RimParameterGroup.h"
#include <QFile> #include <QFile>
#include <QTextStream> #include <QTextStream>
@@ -60,7 +62,7 @@ bool RifFaultRAJSonWriter::writeToPreprocFile( RimFaultRAPreprocSettings& settin
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool RifFaultRAJSonWriter::writeToPostprocFile( int faultID, RimFaultRASettings* settings, QString& outErrorText ) bool RifFaultRAJSonWriter::writeToPostprocFile( int faultID, RimFaultRAPostprocSettings* settings, QString& outErrorText )
{ {
QString filename = settings->postprocParameterFilename( faultID ); QString filename = settings->postprocParameterFilename( faultID );
@@ -73,7 +75,7 @@ bool RifFaultRAJSonWriter::writeToPostprocFile( int faultID, RimFaultRASettings*
stream << "{" << endl; stream << "{" << endl;
if ( settings->geomechCase() != nullptr ) if ( settings->geomechEnabled() )
{ {
if ( QFile::exists( settings->advancedMacrisDatabase() ) ) if ( QFile::exists( settings->advancedMacrisDatabase() ) )
stream << "\"MacrisCalcCalibration_path\": \"" + settings->advancedMacrisDatabase() + "\"," << endl; stream << "\"MacrisCalcCalibration_path\": \"" + settings->advancedMacrisDatabase() + "\"," << endl;
@@ -84,11 +86,12 @@ bool RifFaultRAJSonWriter::writeToPostprocFile( int faultID, RimFaultRASettings*
stream << "\"base_directory_path\": \"" + settings->outputBaseDirectory() + "\"," << endl; stream << "\"base_directory_path\": \"" + settings->outputBaseDirectory() + "\"," << endl;
QStringList timesteps; for ( auto p : settings->parameters()->parameters() )
timesteps.push_back( QString::number( settings->startTimeStepEclipseIndex() ) ); {
timesteps.push_back( QString::number( settings->endTimeStepEclipseIndex() ) ); stream << "\"" + p->name() + "\" : \"" + p->stringValue() + "\"," << endl;
}
stream << "\"tsurf_loadsteps\": [ " + timesteps.join( ',' ) + " ]" << endl; stream << "\"tsurf_loadsteps\": [ " + settings->stepsToLoad().join( ',' ) + " ]" << endl;
stream << "}" << endl; stream << "}" << endl;
file.close(); file.close();

View File

@@ -21,13 +21,13 @@
#include <QString> #include <QString>
class RimFaultRAPreprocSettings; class RimFaultRAPreprocSettings;
class RimFaultRASettings; class RimFaultRAPostprocSettings;
class RifFaultRAJSonWriter class RifFaultRAJSonWriter
{ {
public: public:
static bool writeToPreprocFile( RimFaultRAPreprocSettings& settings, QString& outErrorText ); static bool writeToPreprocFile( RimFaultRAPreprocSettings& settings, QString& outErrorText );
static bool writeToPostprocFile( int faultID, RimFaultRASettings* settings, QString& outErrorText ); static bool writeToPostprocFile( int faultID, RimFaultRAPostprocSettings* settings, QString& outErrorText );
private: private:
RifFaultRAJSonWriter(){}; RifFaultRAJSonWriter(){};

View File

@@ -18,11 +18,27 @@
#include "RimFaultRAPostprocSettings.h" #include "RimFaultRAPostprocSettings.h"
#include "RimDoubleParameter.h"
#include "RimFaultRASettings.h"
#include "RimParameterGroup.h"
#include <cmath>
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimFaultRAPostprocSettings::RimFaultRAPostprocSettings() RimFaultRAPostprocSettings::RimFaultRAPostprocSettings()
{ {
CAF_PDM_InitObject( "Reactivation Assessment Postproc Settings", ":/fault_react_24x24.png", "", "" );
CAF_PDM_InitField( &m_baseDir, "BaseDir", QString( "" ), "Working Directory", "", "", "" );
CAF_PDM_InitField( &m_startTimestepEclipse, "StartTimeStepEclipse", 0, "Start Time Step", "", "", "" );
CAF_PDM_InitField( &m_endTimestepEclipse, "EndTimeStepEclipse", 0, "End Time Step", "", "", "" );
CAF_PDM_InitField( &m_geomechEnabled, "GeomechEnabled", false, "GeoMechanical Input Available", "", "", "" );
CAF_PDM_InitField( &m_basicMacrisDatabase, "BasicMacrisDatabase", QString( "" ), "Basic Macris Database", "", "", "" );
CAF_PDM_InitField( &m_advancedMacrisDatabase, "AdvancedMacrisDatabase", QString( "" ), "Advanced Macris Database", "", "", "" );
CAF_PDM_InitFieldNoDefault( &m_postprocParameters, "PostprocParameters", "Post-Processing Parameters", "", "", "" );
m_postprocParameters = new RimParameterGroup();
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -35,40 +51,76 @@ RimFaultRAPostprocSettings::~RimFaultRAPostprocSettings()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimFaultRAPostprocSettings::setBaseDirectory( QString baseDir ) void RimFaultRAPostprocSettings::initFromSettings( RimFaultRASettings* settings )
{ {
m_baseDir = baseDir + "/base_dir"; m_geomechEnabled = settings->geomechCase() != nullptr;
m_baseDir = settings->outputBaseDirectory();
m_startTimestepEclipse = settings->startTimeStepEclipseIndex();
m_endTimestepEclipse = settings->endTimeStepEclipseIndex();
m_basicMacrisDatabase = settings->basicMacrisDatabase();
m_advancedMacrisDatabase = settings->advancedMacrisDatabase();
RimDoubleParameter* friction_angle =
dynamic_cast<RimDoubleParameter*>( settings->getInputParameter( "friction_angle" ) );
if ( friction_angle != nullptr )
{
m_postprocParameters->addParameter( "friction_coef", std::atan( friction_angle->value() ) );
}
RimDoubleParameter* rho_rock = dynamic_cast<RimDoubleParameter*>( settings->getInputParameter( "rho_rock" ) );
if ( rho_rock != nullptr )
{
m_postprocParameters->addParameter( "rockdensity", rho_rock->value() );
}
RimDoubleParameter* k0_effective =
dynamic_cast<RimDoubleParameter*>( settings->getInputParameter( "k0_effective" ) );
if ( k0_effective != nullptr )
{
m_postprocParameters->addParameter( "k0", k0_effective->value() );
}
RimDoubleParameter* sh_ratio = dynamic_cast<RimDoubleParameter*>( settings->getInputParameter( "sh_ratio" ) );
if ( sh_ratio != nullptr )
{
m_postprocParameters->addParameter( "sh_ratio", sh_ratio->value() );
}
RimDoubleParameter* s_azimuth = dynamic_cast<RimDoubleParameter*>( settings->getInputParameter( "s_azimuth" ) );
if ( s_azimuth != nullptr )
{
m_postprocParameters->addParameter( "sh_azim", s_azimuth->value() );
}
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimFaultRAPostprocSettings::setStepsToLoad( std::list<int> steps ) QStringList RimFaultRAPostprocSettings::stepsToLoad()
{ {
m_steps.clear(); QStringList timesteps;
m_steps.insert( m_steps.begin(), steps.begin(), steps.end() ); timesteps.push_back( QString::number( m_startTimestepEclipse() ) );
timesteps.push_back( QString::number( m_endTimestepEclipse() ) );
return timesteps;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::list<int>& RimFaultRAPostprocSettings::stepsToLoad() QString RimFaultRAPostprocSettings::postprocParameterFilename( int faultID ) const
{ {
return m_steps; QString retval = m_baseDir;
retval += QString( "/tmp/postproc_%1.json" ).arg( faultID, 3, 10, QChar( '0' ) );
return retval;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
QString RimFaultRAPostprocSettings::postprocParameterFilename() const QString RimFaultRAPostprocSettings::outputBaseDirectory() const
{
return m_baseDir + "/post_processing.json";
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimFaultRAPostprocSettings::databaseDirectory() const
{ {
return m_baseDir; return m_baseDir;
} }
@@ -76,15 +128,43 @@ QString RimFaultRAPostprocSettings::databaseDirectory() const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
QString RimFaultRAPostprocSettings::macrisCalcCalibPath() const QString RimFaultRAPostprocSettings::advancedMacrisDatabase() const
{ {
return m_baseDir + "/MacrisCalcCalibration.sqlite3"; return m_advancedMacrisDatabase;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
QString RimFaultRAPostprocSettings::macrisCalcPath() const QString RimFaultRAPostprocSettings::basicMacrisDatabase() const
{ {
return m_baseDir + "/MacrisCalcResult.sqlite3"; return m_basicMacrisDatabase;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimParameterGroup* RimFaultRAPostprocSettings::parameters() const
{
return m_postprocParameters;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimFaultRAPostprocSettings::geomechEnabled() const
{
return m_geomechEnabled;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QStringList RimFaultRAPostprocSettings::postprocCommandParameters( int faultID ) const
{
QStringList retlist;
retlist << postprocParameterFilename( faultID );
return retlist;
} }

View File

@@ -17,27 +17,45 @@
///////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////
#pragma once #pragma once
#include "cafPdmField.h"
#include "cafPdmObject.h"
#include "cafPdmPtrField.h"
#include <list> #include <list>
#include <QString> #include <QString>
#include <QStringList>
class RimFaultRAPostprocSettings class RimFaultRASettings;
class RimParameterGroup;
class RimFaultRAPostprocSettings : public caf::PdmObject
{ {
public: public:
RimFaultRAPostprocSettings(); RimFaultRAPostprocSettings();
~RimFaultRAPostprocSettings(); ~RimFaultRAPostprocSettings() override;
void setBaseDirectory( QString baseDir ); void initFromSettings( RimFaultRASettings* settings );
void setStepsToLoad( std::list<int> steps );
std::list<int>& stepsToLoad(); QStringList stepsToLoad();
QString postprocParameterFilename() const; QString postprocParameterFilename( int faultID ) const;
QString databaseDirectory() const; QString outputBaseDirectory() const;
QString macrisCalcCalibPath() const; QString basicMacrisDatabase() const;
QString macrisCalcPath() const; QString advancedMacrisDatabase() const;
bool geomechEnabled() const;
RimParameterGroup* parameters() const;
QStringList postprocCommandParameters( int faultID ) const;
protected: protected:
QString m_baseDir; caf::PdmField<QString> m_baseDir;
std::list<int> m_steps; caf::PdmField<int> m_startTimestepEclipse;
caf::PdmField<int> m_endTimestepEclipse;
caf::PdmField<bool> m_geomechEnabled;
caf::PdmField<QString> m_basicMacrisDatabase;
caf::PdmField<QString> m_advancedMacrisDatabase;
caf::PdmPtrField<RimParameterGroup*> m_postprocParameters;
}; };

View File

@@ -540,16 +540,6 @@ QString RimFaultRASettings::advancedParameterXMLFilename( int faultID ) const
return retval; return retval;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimFaultRASettings::postprocParameterFilename( int faultID ) const
{
QString retval = m_baseDir;
retval += QString( "/tmp/postproc_%1.json" ).arg( faultID, 3, 10, QChar( '0' ) );
return retval;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -585,19 +575,29 @@ QStringList RimFaultRASettings::advancedMacrisParameters( int faultID ) const
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
QStringList RimFaultRASettings::postprocParameters( int faultID ) const QString RimFaultRASettings::tsurfOutputDirectory() const
{ {
QStringList retlist; return m_baseDir + "/tsurf";
retlist << postprocParameterFilename( faultID );
return retlist;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
QString RimFaultRASettings::tsurfOutputDirectory() const RimGenericParameter* RimFaultRASettings::getInputParameter( QString name ) const
{ {
return m_baseDir + "/tsurf"; RimGenericParameter* retval = nullptr;
for ( auto group : m_basicParameters.childObjects() )
{
retval = group->parameter( name );
if ( retval != nullptr ) return retval;
}
for ( auto group : m_advancedParameters.childObjects() )
{
retval = group->parameter( name );
if ( retval != nullptr ) return retval;
}
return retval;
} }

View File

@@ -80,14 +80,14 @@ public:
QString basicParameterXMLFilename( int faultID ) const; QString basicParameterXMLFilename( int faultID ) const;
QString advancedParameterXMLFilename( int faultID ) const; QString advancedParameterXMLFilename( int faultID ) const;
QString postprocParameterFilename( int faultID ) const;
QStringList basicMacrisParameters( int faultID ) const; QStringList basicMacrisParameters( int faultID ) const;
QStringList advancedMacrisParameters( int faultID ) const; QStringList advancedMacrisParameters( int faultID ) const;
QStringList postprocParameters( int faultID ) const;
QString tsurfOutputDirectory() const; QString tsurfOutputDirectory() const;
RimGenericParameter* getInputParameter( QString name ) const;
protected: protected:
void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override; void defineUiOrdering( QString uiConfigName, caf::PdmUiOrdering& uiOrdering ) override;
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions, QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions,

View File

@@ -76,3 +76,11 @@ QString RimDoubleParameter::stringValue() const
{ {
return QString::number( m_value() ); return QString::number( m_value() );
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RimDoubleParameter::value() const
{
return m_value();
}

View File

@@ -42,6 +42,8 @@ public:
QVariant variantValue() const override; QVariant variantValue() const override;
QString stringValue() const override; QString stringValue() const override;
double value() const;
private: private:
caf::PdmField<double> m_value; caf::PdmField<double> m_value;
}; };

View File

@@ -217,13 +217,23 @@ void RimParameterGroup::setParameterValue( QString name, double value )
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RimParameterGroup::setParameterValue( QString name, QString value ) void RimParameterGroup::setParameterValue( QString name, QString value )
{
RimGenericParameter* p = parameter( name );
if ( p != nullptr ) p->setValue( value );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RimGenericParameter* RimParameterGroup::parameter( QString name ) const
{ {
for ( auto& p : m_parameters.childObjects() ) for ( auto& p : m_parameters.childObjects() )
{ {
if ( p->name() == name ) if ( p->name() == name )
{ {
p->setValue( value ); return p;
break;
} }
} }
return nullptr;
} }

View File

@@ -58,6 +58,8 @@ public:
std::vector<RimGenericParameter*> parameters() const; std::vector<RimGenericParameter*> parameters() const;
RimGenericParameter* parameter( QString name ) const;
private: private:
void defineEditorAttribute( const caf::PdmFieldHandle* field, void defineEditorAttribute( const caf::PdmFieldHandle* field,
QString uiConfigName, QString uiConfigName,