mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Refactor: move fault reactivation data access to fix ownership problems.
This commit is contained in:
@@ -46,7 +46,6 @@
|
||||
#include "RimEclipseView.h"
|
||||
#include "RimFaultInView.h"
|
||||
#include "RimFaultInViewCollection.h"
|
||||
#include "RimFaultReactivationDataAccess.h"
|
||||
#include "RimFaultReactivationEnums.h"
|
||||
#include "RimFaultReactivationTools.h"
|
||||
#include "RimGeoMechCase.h"
|
||||
@@ -542,22 +541,20 @@ void RimFaultReactivationModel::defineEditorAttribute( const caf::PdmFieldHandle
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimEclipseCase* RimFaultReactivationModel::eclipseCase()
|
||||
RimEclipseCase* RimFaultReactivationModel::eclipseCase() const
|
||||
{
|
||||
auto eCase = firstAncestorOrThisOfType<RimEclipseCase>();
|
||||
|
||||
if ( eCase == nullptr )
|
||||
{
|
||||
eCase = dynamic_cast<RimEclipseCase*>( RiaApplication::instance()->activeGridView()->ownerCase() );
|
||||
}
|
||||
|
||||
return eCase;
|
||||
if ( eCase != nullptr )
|
||||
return eCase;
|
||||
else
|
||||
return dynamic_cast<RimEclipseCase*>( RiaApplication::instance()->activeGridView()->ownerCase() );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimGeoMechCase* RimFaultReactivationModel::geoMechCase()
|
||||
RimGeoMechCase* RimFaultReactivationModel::geoMechCase() const
|
||||
{
|
||||
return m_geomechCase();
|
||||
}
|
||||
@@ -602,6 +599,22 @@ std::vector<QDateTime> RimFaultReactivationModel::selectedTimeSteps() const
|
||||
return dates;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<size_t> RimFaultReactivationModel::selectedTimeStepIndexes() const
|
||||
{
|
||||
std::vector<size_t> selectedTimeStepIndexes;
|
||||
for ( auto& timeStep : selectedTimeSteps() )
|
||||
{
|
||||
auto idx = std::find( m_availableTimeSteps.begin(), m_availableTimeSteps.end(), timeStep );
|
||||
if ( idx == m_availableTimeSteps.end() ) return {};
|
||||
|
||||
selectedTimeStepIndexes.push_back( idx - m_availableTimeSteps.begin() );
|
||||
}
|
||||
return selectedTimeStepIndexes;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -660,60 +673,6 @@ QString RimFaultReactivationModel::baseFilename() const
|
||||
return tmp;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimFaultReactivationModel::exportModelSettings()
|
||||
{
|
||||
if ( m_2Dmodel.isNull() ) return false;
|
||||
if ( !m_2Dmodel->isValid() ) return false;
|
||||
|
||||
QMap<QString, QVariant> settings;
|
||||
|
||||
auto [topPosition, bottomPosition] = m_2Dmodel->faultTopBottom();
|
||||
auto faultNormal = m_2Dmodel->faultNormal();
|
||||
|
||||
// make sure we move horizontally, and along the 2D model
|
||||
faultNormal.z() = 0.0;
|
||||
faultNormal.normalize();
|
||||
faultNormal = faultNormal ^ cvf::Vec3d::Z_AXIS;
|
||||
|
||||
RimFaultReactivationTools::addSettingsToMap( settings, faultNormal, topPosition, bottomPosition );
|
||||
|
||||
QDir directory( baseDir() );
|
||||
return ResInsightInternalJson::JsonWriter::encodeFile( settingsFilename(), settings );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
bool RimFaultReactivationModel::extractAndExportModelData()
|
||||
{
|
||||
if ( m_dataAccess ) m_dataAccess->clearModelData();
|
||||
|
||||
if ( !exportModelSettings() ) return false;
|
||||
|
||||
auto eCase = eclipseCase();
|
||||
if ( eCase == nullptr ) return false;
|
||||
|
||||
// get the selected time step indexes
|
||||
std::vector<size_t> selectedTimeStepIndexes;
|
||||
for ( auto& timeStep : selectedTimeSteps() )
|
||||
{
|
||||
auto idx = std::find( m_availableTimeSteps.begin(), m_availableTimeSteps.end(), timeStep );
|
||||
if ( idx == m_availableTimeSteps.end() ) return false;
|
||||
|
||||
selectedTimeStepIndexes.push_back( idx - m_availableTimeSteps.begin() );
|
||||
}
|
||||
|
||||
// extract data for each timestep
|
||||
m_dataAccess = std::make_shared<RimFaultReactivationDataAccess>( eCase, geoMechCase(), selectedTimeStepIndexes );
|
||||
m_dataAccess->extractModelData( *model() );
|
||||
m_dataAccess.reset();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -741,14 +700,6 @@ std::array<double, 3> RimFaultReactivationModel::materialParameters( ElementSets
|
||||
return retVal;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::shared_ptr<RimFaultReactivationDataAccess> RimFaultReactivationModel::dataAccess() const
|
||||
{
|
||||
return m_dataAccess;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user