#7442 Create LGR : Segfault when no dynamic data is present

This fix will also display eperforations when no dynamic data is present

https://github.com/OPM/ResInsight/issues/6911
This commit is contained in:
Magne Sjaastad
2021-03-03 10:27:08 +01:00
parent 9bac309a4f
commit 3e2ddce10d
2 changed files with 16 additions and 7 deletions

View File

@@ -378,7 +378,12 @@ const RigVirtualPerforationTransmissibilities* RimEclipseCase::computeAndGetVirt
{ {
std::vector<std::vector<RigCompletionData>> allCompletionData; std::vector<std::vector<RigCompletionData>> allCompletionData;
for ( size_t i = 0; i < timeStepDates().size(); i++ ) size_t maxIndexCount = 1;
if ( !timeStepDates().empty() )
{
maxIndexCount = timeStepDates().size();
}
for ( size_t i = 0; i < maxIndexCount; i++ )
{ {
std::vector<RigCompletionData> dynamicCompletionDataOneTimeStep = std::vector<RigCompletionData> dynamicCompletionDataOneTimeStep =
RicWellPathExportCompletionDataFeatureImpl::computeDynamicCompletionsForWellPath( w, this, i ); RicWellPathExportCompletionDataFeatureImpl::computeDynamicCompletionsForWellPath( w, this, i );

View File

@@ -102,20 +102,24 @@ const std::map<size_t, std::vector<RigCompletionData>>&
RigVirtualPerforationTransmissibilities::multipleCompletionsPerEclipseCell( const RimWellPath* wellPath, RigVirtualPerforationTransmissibilities::multipleCompletionsPerEclipseCell( const RimWellPath* wellPath,
size_t timeStepIndex ) const size_t timeStepIndex ) const
{ {
static std::map<size_t, std::vector<RigCompletionData>> dummy;
auto item = m_mapFromWellToCompletionData.find( wellPath ); auto item = m_mapFromWellToCompletionData.find( wellPath );
if ( item != m_mapFromWellToCompletionData.end() ) if ( item != m_mapFromWellToCompletionData.end() )
{ {
size_t indexToUse = timeStepIndex; const std::vector<CompletionDataFrame>& completionData = item->second;
if ( item->second.size() == 1 ) size_t tsIndexToUse = timeStepIndex;
if ( completionData.size() == 1 )
{ {
indexToUse = 0; // Clamp to zero if we only have one time step (static case)
tsIndexToUse = 0;
} }
return item->second[indexToUse].multipleCompletionsPerEclipseCell(); if ( tsIndexToUse < completionData.size() )
{
return completionData[tsIndexToUse].multipleCompletionsPerEclipseCell();
}
} }
static std::map<size_t, std::vector<RigCompletionData>> dummy;
return dummy; return dummy;
} }