mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#10827 Fault reactivation: extract temperatures using well log.
This commit is contained in:
committed by
jonjenssen
parent
f81dcbd2dc
commit
adf52ed301
@@ -25,10 +25,13 @@
|
||||
#include "RigCaseCellResultsData.h"
|
||||
#include "RigEclipseCaseData.h"
|
||||
#include "RigEclipseResultAddress.h"
|
||||
#include "RigEclipseWellLogExtractor.h"
|
||||
#include "RigMainGrid.h"
|
||||
#include "RigResultAccessorFactory.h"
|
||||
#include "RigWellPath.h"
|
||||
|
||||
#include "RimEclipseCase.h"
|
||||
#include "RimFaultReactivationDataAccessorWellLogExtraction.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <limits>
|
||||
@@ -36,10 +39,14 @@
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
RimFaultReactivationDataAccessorTemperature::RimFaultReactivationDataAccessorTemperature( RimEclipseCase* eclipseCase )
|
||||
RimFaultReactivationDataAccessorTemperature::RimFaultReactivationDataAccessorTemperature( RimEclipseCase* eclipseCase,
|
||||
double seabedTemperature,
|
||||
double seabedDepth )
|
||||
: m_eclipseCase( eclipseCase )
|
||||
, m_caseData( nullptr )
|
||||
, m_mainGrid( nullptr )
|
||||
, m_seabedTemperature( seabedTemperature )
|
||||
, m_seabedDepth( seabedDepth )
|
||||
{
|
||||
if ( m_eclipseCase )
|
||||
{
|
||||
@@ -60,16 +67,17 @@ RimFaultReactivationDataAccessorTemperature::~RimFaultReactivationDataAccessorTe
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimFaultReactivationDataAccessorTemperature::updateResultAccessor()
|
||||
{
|
||||
if ( m_caseData )
|
||||
{
|
||||
RigEclipseResultAddress resVarAddress( RiaDefines::ResultCatType::DYNAMIC_NATIVE, "TEMP" );
|
||||
m_eclipseCase->results( RiaDefines::PorosityModelType::MATRIX_MODEL )->ensureKnownResultLoaded( resVarAddress );
|
||||
m_resultAccessor = RigResultAccessorFactory::createFromResultAddress( m_caseData,
|
||||
0,
|
||||
RiaDefines::PorosityModelType::MATRIX_MODEL,
|
||||
m_timeStep,
|
||||
resVarAddress );
|
||||
}
|
||||
if ( !m_caseData ) return;
|
||||
|
||||
RigEclipseResultAddress resVarAddress( RiaDefines::ResultCatType::DYNAMIC_NATIVE, "SOIL" );
|
||||
m_eclipseCase->results( RiaDefines::PorosityModelType::MATRIX_MODEL )->ensureKnownResultLoaded( resVarAddress );
|
||||
m_resultAccessor =
|
||||
RigResultAccessorFactory::createFromResultAddress( m_caseData, 0, RiaDefines::PorosityModelType::MATRIX_MODEL, m_timeStep, resVarAddress );
|
||||
|
||||
auto [wellPaths, extractors] =
|
||||
RimFaultReactivationDataAccessorWellLogExtraction::createEclipseWellPathExtractors( *m_model, *m_caseData, m_seabedDepth );
|
||||
m_wellPaths = wellPaths;
|
||||
m_extractors = extractors;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -92,11 +100,19 @@ double RimFaultReactivationDataAccessorTemperature::valueAtPosition( const cvf::
|
||||
{
|
||||
if ( ( m_mainGrid != nullptr ) && m_resultAccessor.notNull() )
|
||||
{
|
||||
auto cellIdx = m_mainGrid->findReservoirCellIndexFromPoint( position );
|
||||
if ( cellIdx != cvf::UNDEFINED_SIZE_T )
|
||||
{
|
||||
return m_resultAccessor->cellScalar( cellIdx );
|
||||
}
|
||||
CAF_ASSERT( m_extractors.find( gridPart ) != m_extractors.end() );
|
||||
auto extractor = m_extractors.find( gridPart )->second;
|
||||
|
||||
CAF_ASSERT( m_wellPaths.find( gridPart ) != m_wellPaths.end() );
|
||||
auto wellPath = m_wellPaths.find( gridPart )->second;
|
||||
|
||||
auto [values, intersections] =
|
||||
RimFaultReactivationDataAccessorWellLogExtraction::extractValuesAndIntersections( *m_resultAccessor.p(), *extractor.p(), *wellPath );
|
||||
|
||||
auto [value, pos] =
|
||||
RimFaultReactivationDataAccessorWellLogExtraction::calculateTemperature( intersections, values, position, m_seabedTemperature );
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
return std::numeric_limits<double>::infinity();
|
||||
|
||||
Reference in New Issue
Block a user