mirror of
https://github.com/OPM/ResInsight.git
synced 2026-10-30 17:10:19 -05:00
#12281 Well Target Mapping: show only available volumes types.
This commit is contained in:
1 parent
1d46af79fe
commit
e9645d5261
2 files changed
+60
-5
No files matched your search
@@ -190,6 +190,13 @@ QList<caf::PdmOptionItemInfo> RimWellTargetMapping::calculateValueOptions( const
|
||||
RimTools::timeStepsForCase( fc, &options );
|
||||
}
|
||||
}
|
||||
else if ( fieldNeedingOptions == &m_volumesType )
|
||||
{
|
||||
if ( auto fc = firstCase() )
|
||||
{
|
||||
caf::AppEnum<RigWellTargetMapping::VolumesType>::setEnumSubset( &m_volumesType, findAvailableVolumesTypes( fc ) );
|
||||
}
|
||||
}
|
||||
|
||||
return options;
|
||||
}
|
||||
@@ -218,10 +225,12 @@ void RimWellTargetMapping::updateAllBoundaries()
|
||||
{
|
||||
double currentMinimum;
|
||||
double currentMaximum;
|
||||
resultsData->ensureKnownResultLoaded( address );
|
||||
resultsData->minMaxCellScalarValues( address, timeStepIdx, currentMinimum, currentMaximum );
|
||||
globalMin = std::min( globalMin, currentMinimum );
|
||||
globalMax = std::max( globalMax, currentMaximum );
|
||||
if ( resultsData->ensureKnownResultLoaded( address ) )
|
||||
{
|
||||
resultsData->minMaxCellScalarValues( address, timeStepIdx, currentMinimum, currentMaximum );
|
||||
globalMin = std::min( globalMin, currentMinimum );
|
||||
globalMax = std::max( globalMax, currentMaximum );
|
||||
}
|
||||
}
|
||||
return { globalMin, globalMax };
|
||||
};
|
||||
@@ -464,9 +473,53 @@ RimEclipseCase* RimWellTargetMapping::ensembleStatisticsCase() const
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimWellTargetMapping::setDefaults()
|
||||
{
|
||||
auto findFirstByPriority = []( const std::vector<RigWellTargetMapping::VolumesType>& priority,
|
||||
const std::vector<RigWellTargetMapping::VolumesType>& available )
|
||||
{
|
||||
for ( auto pri : priority )
|
||||
{
|
||||
if ( std::find( available.begin(), available.end(), pri ) != available.end() ) return pri;
|
||||
}
|
||||
|
||||
return RigWellTargetMapping::VolumesType::COMPUTED_VOLUMES;
|
||||
};
|
||||
|
||||
// Use last available time step
|
||||
if ( RimEclipseCase* eclipseCase = firstCase() )
|
||||
{
|
||||
m_timeStep = eclipseCase->timeStepDates().size() - 1;
|
||||
m_timeStep = static_cast<int>( eclipseCase->timeStepDates().size() ) - 1;
|
||||
|
||||
std::vector<RigWellTargetMapping::VolumesType> volumesTypesByPriority = { RigWellTargetMapping::VolumesType::RESERVOIR_VOLUMES,
|
||||
RigWellTargetMapping::VolumesType::SURFACE_VOLUMES,
|
||||
RigWellTargetMapping::VolumesType::COMPUTED_VOLUMES };
|
||||
std::vector<RigWellTargetMapping::VolumesType> availableVolumesTypes = findAvailableVolumesTypes( eclipseCase );
|
||||
m_volumesType = findFirstByPriority( volumesTypesByPriority, availableVolumesTypes );
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::vector<RigWellTargetMapping::VolumesType> RimWellTargetMapping::findAvailableVolumesTypes( RimEclipseCase* eclipseCase )
|
||||
{
|
||||
auto hasResult = []( RigCaseCellResultsData& resultsData, const QString& resultName ) -> bool
|
||||
{
|
||||
RigEclipseResultAddress address( RiaDefines::ResultCatType::DYNAMIC_NATIVE, resultName );
|
||||
return resultsData.ensureKnownResultLoaded( address );
|
||||
};
|
||||
|
||||
auto resultsData = eclipseCase->results( RiaDefines::PorosityModelType::MATRIX_MODEL );
|
||||
if ( !resultsData ) return {};
|
||||
|
||||
std::vector<RigWellTargetMapping::VolumesType> availableVolumesTypes;
|
||||
if ( hasResult( *resultsData, RiaResultNames::riPorvSoil() ) || hasResult( *resultsData, RiaResultNames::riPorvSgas() ) )
|
||||
availableVolumesTypes.push_back( RigWellTargetMapping::VolumesType::COMPUTED_VOLUMES );
|
||||
|
||||
if ( hasResult( *resultsData, "RFIPOIL" ) || hasResult( *resultsData, "RFIPGAS" ) )
|
||||
availableVolumesTypes.push_back( RigWellTargetMapping::VolumesType::RESERVOIR_VOLUMES );
|
||||
|
||||
if ( hasResult( *resultsData, "SFIPOIL" ) || hasResult( *resultsData, "SFIPGAS" ) )
|
||||
availableVolumesTypes.push_back( RigWellTargetMapping::VolumesType::SURFACE_VOLUMES );
|
||||
|
||||
return availableVolumesTypes;
|
||||
}
|
||||
Reference in new issue
Block a user