mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#1765 Fix of mapping between well timesteps and result timesteps, handling holes in both well and result timesteps.
This commit is contained in:
parent
0674d13e02
commit
6912ee0081
@ -37,12 +37,12 @@ const RigWellResultFrame& RigSingleWellResultsData::wellResultFrame(size_t resul
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RigSingleWellResultsData::computeMappingFromResultTimeIndicesToWellTimeIndices(const std::vector<QDateTime>& resultTimes)
|
||||
void RigSingleWellResultsData::computeMappingFromResultTimeIndicesToWellTimeIndices(const std::vector<QDateTime>& simulationTimeSteps)
|
||||
{
|
||||
m_resultTimeStepIndexToWellTimeStepIndex.clear();
|
||||
if (m_wellCellsTimeSteps.size() == 0) return;
|
||||
|
||||
m_resultTimeStepIndexToWellTimeStepIndex.resize(resultTimes.size(), cvf::UNDEFINED_SIZE_T);
|
||||
m_resultTimeStepIndexToWellTimeStepIndex.resize(simulationTimeSteps.size(), cvf::UNDEFINED_SIZE_T);
|
||||
|
||||
if (false)
|
||||
{
|
||||
@ -54,28 +54,30 @@ void RigSingleWellResultsData::computeMappingFromResultTimeIndicesToWellTimeIndi
|
||||
}
|
||||
|
||||
qDebug() << "Result TimeStamps";
|
||||
for (size_t i = 0; i < resultTimes.size(); i++)
|
||||
for (size_t i = 0; i < simulationTimeSteps.size(); i++)
|
||||
{
|
||||
qDebug() << resultTimes[i].toString();
|
||||
qDebug() << simulationTimeSteps[i].toString();
|
||||
}
|
||||
}
|
||||
|
||||
int resultIdx = 0;
|
||||
size_t wellIdx = 0;
|
||||
size_t activeWellIdx = cvf::UNDEFINED_SIZE_T;
|
||||
|
||||
while (wellIdx <= m_wellCellsTimeSteps.size() && resultIdx < static_cast<int>(resultTimes.size()))
|
||||
size_t wellTimeStepIndex = 0;
|
||||
for (size_t resultTimeStepIndex = 0; resultTimeStepIndex < simulationTimeSteps.size(); resultTimeStepIndex++)
|
||||
{
|
||||
if (wellIdx < m_wellCellsTimeSteps.size() && m_wellCellsTimeSteps[wellIdx].m_timestamp <= resultTimes[resultIdx])
|
||||
while ( wellTimeStepIndex < m_wellCellsTimeSteps.size() &&
|
||||
m_wellCellsTimeSteps[wellTimeStepIndex].m_timestamp < simulationTimeSteps[resultTimeStepIndex])
|
||||
{
|
||||
activeWellIdx = wellIdx;
|
||||
wellIdx++;
|
||||
wellTimeStepIndex++;
|
||||
}
|
||||
|
||||
CVF_ASSERT(resultIdx < static_cast<int>(m_resultTimeStepIndexToWellTimeStepIndex.size()));
|
||||
m_resultTimeStepIndexToWellTimeStepIndex[resultIdx] = activeWellIdx;
|
||||
|
||||
resultIdx++;
|
||||
if ( wellTimeStepIndex < m_wellCellsTimeSteps.size()
|
||||
&& m_wellCellsTimeSteps[wellTimeStepIndex].m_timestamp == simulationTimeSteps[resultTimeStepIndex])
|
||||
{
|
||||
m_resultTimeStepIndexToWellTimeStepIndex[resultTimeStepIndex] = wellTimeStepIndex;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_resultTimeStepIndexToWellTimeStepIndex[resultTimeStepIndex] = cvf::UNDEFINED_SIZE_T;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user