Fault reactivation (#10624)

Update result to generate well paths based on information from model generator. Store settings in JSON file.
Add method to access local coordinate system definition
This commit is contained in:
jonjenssen
2023-09-19 18:03:36 +02:00
committed by GitHub
parent 9b797fdd36
commit 5d3fb8ceb9
17 changed files with 346 additions and 109 deletions

View File

@@ -23,6 +23,8 @@
#include "RiaPreferencesGeoMech.h"
#include "RiaQDateTimeTools.h"
#include "RifJsonEncodeDecode.h"
#include "RigBasicPlane.h"
#include "RigFaultReactivationModel.h"
#include "RigPolyLinesData.h"
@@ -39,6 +41,7 @@
#include "RimEclipseView.h"
#include "RimFaultInView.h"
#include "RimFaultInViewCollection.h"
#include "RimFaultReactivationTools.h"
#include "RimPolylineTarget.h"
#include "RimTimeStepFilter.h"
#include "RimTools.h"
@@ -52,6 +55,8 @@
#include <QDateTime>
#include <QDir>
#include <QMap>
#include <QVariant>
CAF_PDM_SOURCE_INIT( RimFaultReactivationModel, "FaultReactivationModel" );
@@ -364,6 +369,17 @@ bool RimFaultReactivationModel::showModel() const
return m_showModelPlane;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::pair<cvf::Vec3d, cvf::Vec3d> RimFaultReactivationModel::localCoordSysNormalsXY() const
{
cvf::Vec3d yNormal = m_modelPlane->normal();
cvf::Vec3d xNormal = yNormal ^ cvf::Vec3d::Z_AXIS;
return std::make_pair( xNormal, yNormal );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -503,9 +519,7 @@ void RimFaultReactivationModel::updateTimeSteps()
{
m_availableTimeSteps.clear();
const auto eCase = eclipseCase();
if ( eCase == nullptr ) return;
m_availableTimeSteps = eCase->timeStepDates();
if ( eCase != nullptr ) m_availableTimeSteps = eCase->timeStepDates();
}
//--------------------------------------------------------------------------------------------------
@@ -548,6 +562,15 @@ QString RimFaultReactivationModel::inputFilename() const
return directory.absoluteFilePath( baseFilename() + ".inp" );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString RimFaultReactivationModel::settingsFilename() const
{
QDir directory( baseDir() );
return directory.absoluteFilePath( baseFilename() + ".settings.json" );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -568,8 +591,32 @@ QString RimFaultReactivationModel::baseFilename() const
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimFaultReactivationModel::extractModelData()
bool RimFaultReactivationModel::exportModelSettings()
{
if ( m_faultPlane.isNull() ) return false;
QMap<QString, QVariant> settings;
auto [topPosition, bottomPosition] = m_faultPlane->intersectTopBottomLine();
auto faultNormal = m_faultPlane->normal();
// make sure we move horizontally
faultNormal.z() = 0.0;
faultNormal.normalize();
RimFaultReactivationTools::addSettingsToMap( settings, faultNormal, topPosition, bottomPosition );
QDir directory( baseDir() );
return ResInsightInternalJson::JsonWriter::encodeFile( settingsFilename(), settings );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RimFaultReactivationModel::extractAndExportModelData()
{
exportModelSettings();
// TODO - get values from eclipse and geomech models here
return true;
}