RFT ensemble refactoring

* Compute average MD for intersections with a cell
* Create extractor for simulation well
* Remove rftReader from RifDataSourceForRftPlt
* Add function compute measured depth for RFT cells based on well path geometry
* Move statistics reader to well ensemble curve set
* Make sure both TVD and MD are cached if possible
* Add selection of grid case to use for estimation of measured depth (MD)
Add "Grid Model For MD" where the user can select a grid model. This grid model is propagated to a hidden field in EnsembleCurveSet. The grid model is then applied to RifReaderEnsembleStatisticsRft owned by EnsembleCurveSet
This commit is contained in:
Magne Sjaastad
2023-09-04 10:08:30 +02:00
committed by GitHub
parent fe17b211b8
commit 7a782cec66
27 changed files with 627 additions and 428 deletions

View File

@@ -18,7 +18,6 @@
#include "RifDataSourceForRftPlt.h"
#include "RifReaderEclipseRft.h"
#include "RigEclipseCaseData.h"
#include "RimEclipseCase.h"
@@ -230,37 +229,6 @@ auto RifDataSourceForRftPlt::operator<=>( const RifDataSourceForRftPlt& addr2 )
}
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RifReaderRftInterface* RifDataSourceForRftPlt::rftReader() const
{
if ( m_sourceType == SourceType::GRID_MODEL_CELL_DATA || m_sourceType == SourceType::RFT_SIM_WELL_DATA )
{
// TODO: Consider changing to RimEclipseResultCase to avoid casting
auto eclResCase = dynamic_cast<RimEclipseResultCase*>( eclCase() );
if ( eclResCase ) return eclResCase->rftReader();
}
else if ( m_sourceType == SourceType::SUMMARY_RFT )
{
if ( m_summaryCase ) return m_summaryCase->rftReader();
}
else if ( m_sourceType == SourceType::ENSEMBLE_RFT )
{
if ( m_ensemble ) return m_ensemble->rftStatisticsReader();
}
else if ( m_sourceType == SourceType::OBSERVED_FMU_RFT )
{
if ( m_observedFmuRftData ) return m_observedFmuRftData->rftReader();
}
else if ( m_sourceType == SourceType::OBSERVED_PRESSURE_DEPTH )
{
if ( m_pressureDepthData ) return m_pressureDepthData->rftReader();
}
return nullptr;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------