Try to use a parameter file if we have many command line options for opm flow.

This commit is contained in:
jonjenssen
2025-11-18 02:23:58 +01:00
committed by JJ
parent 0b74a4accc
commit d559baca97
3 changed files with 28 additions and 8 deletions
@@ -712,7 +712,7 @@ QStringList RimOpmFlowJob::command()
cmd.append( QString( "--output-dir=%1" ).arg( workDir ) );
cmd.append( QString( "--ecl-deck-file-name=%1" ).arg( dataFile ) );
cmd.append( m_jobSettings->commandLineOptions() );
cmd.append( m_jobSettings->commandLineOptions( workingDirectory(), workDir ) );
return cmd;
}
@@ -23,6 +23,8 @@
#include "cafPdmUiCheckBoxEditor.h"
#include "cafPdmUiListEditor.h"
#include <QFile>
CAF_PDM_SOURCE_INIT( RimOpmFlowJobSettings, "OpmFlowJobSettings" );
//--------------------------------------------------------------------------------------------------
@@ -285,7 +287,7 @@ int RimOpmFlowJobSettings::mpiProcesses() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QStringList RimOpmFlowJobSettings::commandLineOptions() const
QStringList RimOpmFlowJobSettings::commandLineOptions( QString resInsightWorkDir, QString flowWorkDir ) const
{
QStringList options;
@@ -322,11 +324,11 @@ QStringList RimOpmFlowJobSettings::commandLineOptions() const
}
if ( m_solverMaxTimeStepInDays().first )
{
options << QString( "--solver-max-time-step=%1d" ).arg( m_solverMaxTimeStepInDays().second );
options << QString( "--solver-max-time-step-in-days=%1" ).arg( m_solverMaxTimeStepInDays().second );
}
if ( m_solverMinTimeStepInDays().first )
{
options << QString( "--solver-min-time-step=%1d" ).arg( m_solverMinTimeStepInDays().second );
options << QString( "--solver-min-time-step=%1" ).arg( m_solverMinTimeStepInDays().second );
}
if ( m_minStrictCnvIter().first )
{
@@ -338,12 +340,12 @@ QStringList RimOpmFlowJobSettings::commandLineOptions() const
}
if ( m_minTimeStepBasedOnNewtonIterations().first )
{
options << QString( "--min-time-step-based-on-newton-iterations=%1d" ).arg( m_minTimeStepBasedOnNewtonIterations().second );
options << QString( "--min-time-step-based-on-newton-iterations=%1" ).arg( m_minTimeStepBasedOnNewtonIterations().second );
}
if ( m_minTimeStepBeforeShuttingProblematicWellsInDays().first )
{
options
<< QString( "--min-time-step-before-shutting-problematic-wells=%1d" ).arg( m_minTimeStepBeforeShuttingProblematicWellsInDays().second );
options << QString( "--min-time-step-before-shutting-problematic-wells-in-days=%1" )
.arg( m_minTimeStepBeforeShuttingProblematicWellsInDays().second );
}
if ( m_toleranceCnv().first )
{
@@ -394,6 +396,24 @@ QStringList RimOpmFlowJobSettings::commandLineOptions() const
options << QString( "--well-group-constraints-max-iterations=%1" ).arg( m_wellGroupConstraintsMaxIterations().second );
}
if ( options.length() > 2 )
{
QString paramName( "/opmflow.params" );
QFile workDirFile( resInsightWorkDir + paramName );
if ( workDirFile.open( QFile::WriteOnly | QFile::Text ) )
{
for ( const QString& option : options )
{
QByteArray line = option.mid( 2 ).toUtf8() + "\n";
workDirFile.write( line );
}
workDirFile.close();
options.clear();
options << QString( "--parameter-file=%1" ).arg( flowWorkDir + paramName );
}
}
return options;
}
@@ -45,7 +45,7 @@ public:
int mpiProcesses() const;
QStringList commandLineOptions() const;
QStringList commandLineOptions( QString resInsightWorkDir, QString flowWorkDir ) const;
protected:
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions ) override;