Fix issue with flow diagnostics loading with assertion error

This commit is contained in:
Bjørnar Grip Fjær 2017-08-15 10:12:02 +02:00
parent a99eae7c24
commit 0314a045e7

View File

@ -37,12 +37,12 @@ const RigWellResultFrame& RigSingleWellResultsData::wellResultFrame(size_t resul
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RigSingleWellResultsData::computeMappingFromResultTimeIndicesToWellTimeIndices(const std::vector<QDateTime>& simulationTimeSteps)
void RigSingleWellResultsData::computeMappingFromResultTimeIndicesToWellTimeIndices(const std::vector<QDateTime>& resultTimes)
{
m_resultTimeStepIndexToWellTimeStepIndex.clear();
if (m_wellCellsTimeSteps.size() == 0) return;
m_resultTimeStepIndexToWellTimeStepIndex.resize(simulationTimeSteps.size(), cvf::UNDEFINED_SIZE_T);
m_resultTimeStepIndexToWellTimeStepIndex.resize(resultTimes.size(), cvf::UNDEFINED_SIZE_T);
if (false)
{
@ -54,23 +54,28 @@ void RigSingleWellResultsData::computeMappingFromResultTimeIndicesToWellTimeIndi
}
qDebug() << "Result TimeStamps";
for (size_t i = 0; i < simulationTimeSteps.size(); i++)
for (size_t i = 0; i < resultTimes.size(); i++)
{
qDebug() << simulationTimeSteps[i].toString();
qDebug() << resultTimes[i].toString();
}
}
for (size_t resultTimeStepIndex = 0; resultTimeStepIndex< simulationTimeSteps.size(); resultTimeStepIndex++)
{
size_t wellTimeStepIndex = 0;
int resultIdx = 0;
size_t wellIdx = 0;
size_t activeWellIdx = cvf::UNDEFINED_SIZE_T;
while (wellTimeStepIndex < m_wellCellsTimeSteps.size() &&
m_wellCellsTimeSteps[wellTimeStepIndex].m_timestamp < simulationTimeSteps[resultTimeStepIndex])
while (wellIdx <= m_wellCellsTimeSteps.size() && resultIdx < static_cast<int>(resultTimes.size()))
{
if (wellIdx < m_wellCellsTimeSteps.size() && m_wellCellsTimeSteps[wellIdx].m_timestamp <= resultTimes[resultIdx])
{
wellTimeStepIndex++;
activeWellIdx = wellIdx;
wellIdx++;
}
m_resultTimeStepIndexToWellTimeStepIndex[resultTimeStepIndex] = wellTimeStepIndex;
CVF_ASSERT(resultIdx < static_cast<int>(m_resultTimeStepIndexToWellTimeStepIndex.size()));
m_resultTimeStepIndexToWellTimeStepIndex[resultIdx] = activeWellIdx;
resultIdx++;
}
}