diff --git a/ApplicationLibCode/Commands/GeoMechCommands/RicRunWellIntegrityAnalysisFeature.cpp b/ApplicationLibCode/Commands/GeoMechCommands/RicRunWellIntegrityAnalysisFeature.cpp index ca4f2d8150..d0a3c06936 100644 --- a/ApplicationLibCode/Commands/GeoMechCommands/RicRunWellIntegrityAnalysisFeature.cpp +++ b/ApplicationLibCode/Commands/GeoMechCommands/RicRunWellIntegrityAnalysisFeature.cpp @@ -60,7 +60,14 @@ void RicRunWellIntegrityAnalysisFeature::onActionTriggered( bool isChecked ) runProgress.setProgressDescription( "Writing input files." ); - modelSettings->extractModelData(); + if ( !modelSettings->extractModelData() ) + { + QMessageBox::critical( nullptr, + wiaTitle, + "Unable to get necessary data from the defined model box. Is the model box center " + "outside the reservoir?" ); + return; + } if ( !RifWellIAFileWriter::writeToJsonFile( *modelSettings, outErrorText ) ) { diff --git a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellIASettings.cpp b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellIASettings.cpp index 8b4fac8684..f1c1ee07c7 100644 --- a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellIASettings.cpp +++ b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellIASettings.cpp @@ -433,7 +433,7 @@ void RimWellIASettings::resetResInsightParameters() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimWellIASettings::updateResInsightParameters() +bool RimWellIASettings::updateResInsightParameters() { resetResInsightParameters(); @@ -469,10 +469,25 @@ void RimWellIASettings::updateResInsightParameters() double stressValue = dataAccess.interpolatedResultValue( "ST", nativeKeys[i], RigFemResultPosEnum::RIG_ELEMENT_NODAL, position, 0 ); initialStress->addParameter( paramKeys[i], stressValue ); + if ( std::isfinite( stressValue ) ) + { + initialStress->addParameter( paramKeys[i], stressValue ); + } + else + { + return false; + } } double ppValue = dataAccess.interpolatedResultValue( "POR-Bar", "", RigFemResultPosEnum::RIG_NODAL, position, 0 ); - initialStress->addParameter( "PP", ppValue ); + if ( std::isfinite( ppValue ) ) + { + initialStress->addParameter( "PP", ppValue ); + } + else + { + return false; + } auto angles = RigWellPathGeometryTools::calculateAzimuthAndInclinationAtMd( ( m_startMD + m_endMD ) / 2.0, wellPath()->wellPathGeometry() ); @@ -480,6 +495,8 @@ void RimWellIASettings::updateResInsightParameters() initialStress->addParameter( "inclination_well", angles.second ); m_parametersRI.push_back( initialStress ); + + return true; } //-------------------------------------------------------------------------------------------------- @@ -579,11 +596,14 @@ void RimWellIASettings::generateModelBox() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -void RimWellIASettings::extractModelData() +bool RimWellIASettings::extractModelData() { generateModelBox(); - updateResInsightParameters(); resetModelData(); + if ( !updateResInsightParameters() ) + { + return false; + } QDateTime startDate = geostaticDate(); @@ -611,7 +631,7 @@ void RimWellIASettings::extractModelData() } } - const std::vector displacements = extractDisplacments( m_modelbox.vertices(), timestep ); + const std::vector displacements = extractDisplacements( m_modelbox.vertices(), timestep ); for ( size_t i = 0; i < displacements.size(); i++ ) { @@ -620,6 +640,8 @@ void RimWellIASettings::extractModelData() m_modelData.push_back( data ); timestep++; } + + return true; } //-------------------------------------------------------------------------------------------------- @@ -638,7 +660,7 @@ std::vector RimWellIASettings::timeStepDates() //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- -std::vector RimWellIASettings::extractDisplacments( std::vector corners, int timeStep ) +std::vector RimWellIASettings::extractDisplacements( std::vector corners, int timeStep ) { RimWellIADataAccess dataAccess( m_geomechCase ); diff --git a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellIASettings.h b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellIASettings.h index 9824dde28c..4a6a3cbab2 100644 --- a/ApplicationLibCode/ProjectDataModel/WellPath/RimWellIASettings.h +++ b/ApplicationLibCode/ProjectDataModel/WellPath/RimWellIASettings.h @@ -86,7 +86,7 @@ public: std::vector modelBoxVertices() const; std::vector modelData() const; - void extractModelData(); + bool extractModelData(); void updateVisualization(); protected: @@ -107,14 +107,14 @@ private: std::vector timeStepDates(); void initCsvParameters(); - void updateResInsightParameters(); + bool updateResInsightParameters(); void generateModelBox(); void resetModelData(); void resetResInsightParameters(); void addCsvGroup( QString name, QStringList timeSteps, double defaultValue = 0.0 ); - std::vector extractDisplacments( std::vector corners, int timeStep ); + std::vector extractDisplacements( std::vector corners, int timeStep ); private: caf::PdmProxyValueField m_nameProxy;