mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4096 Simplify code for loading case and time diff to use same method
This commit is contained in:
parent
fbd1486a4c
commit
eb0c2e4737
@ -44,22 +44,22 @@ bool RigCaseCellResultCalculator::computeDifference(RigEclipseCaseData*
|
||||
const RigEclipseResultAddress& address)
|
||||
{
|
||||
CVF_ASSERT(address.isValid());
|
||||
CVF_ASSERT(address.hasDifferenceCase());
|
||||
CVF_ASSERT(address.hasDifferenceCase() || address.isTimeLapse());
|
||||
|
||||
// Assume at this stage that data for the case is available
|
||||
// It is up to the caller to make sure the case is read from file
|
||||
|
||||
RigEclipseCaseData* baseCase = nullptr;
|
||||
RigEclipseCaseData* baseCase = sourceCase;
|
||||
|
||||
if (address.hasDifferenceCase())
|
||||
{
|
||||
auto eclipseCases = RiaApplication::instance()->project()->eclipseCases();
|
||||
for (RimEclipseCase* c : eclipseCases)
|
||||
{
|
||||
if (c->caseId() == address.m_differenceCaseId)
|
||||
auto eclipseCases = RiaApplication::instance()->project()->eclipseCases();
|
||||
for (RimEclipseCase* c : eclipseCases)
|
||||
{
|
||||
if (c && c->eclipseCaseData())
|
||||
if (c && c->caseId() == address.m_differenceCaseId && c->eclipseCaseData())
|
||||
{
|
||||
baseCase = c->eclipseCaseData();
|
||||
baseCase = c->eclipseCaseData();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1083,7 +1083,7 @@ size_t RigCaseCellResultsData::findOrLoadKnownScalarResult(const RigEclipseResul
|
||||
RiaDefines::ResultCatType type = resVarAddr.m_resultCatType;
|
||||
QString resultName = resVarAddr.m_resultName;
|
||||
|
||||
if (resVarAddr.hasDifferenceCase())
|
||||
if (resVarAddr.hasDifferenceCase() || resVarAddr.isTimeLapse())
|
||||
{
|
||||
if (!RigCaseCellResultCalculator::computeDifference(this->m_ownerCaseData, RiaDefines::MATRIX_MODEL, resVarAddr))
|
||||
{
|
||||
@ -1092,48 +1092,6 @@ size_t RigCaseCellResultsData::findOrLoadKnownScalarResult(const RigEclipseResul
|
||||
|
||||
return scalarResultIndex;
|
||||
}
|
||||
else if (resVarAddr.isTimeLapse())
|
||||
{
|
||||
RigEclipseResultAddress noneTimeLapseAddress(resVarAddr);
|
||||
noneTimeLapseAddress.m_timeLapseBaseFrameIdx = RigEclipseResultAddress::NO_TIME_LAPSE;
|
||||
size_t sourceResultIdx = this->findOrLoadKnownScalarResult(noneTimeLapseAddress);
|
||||
|
||||
if (sourceResultIdx != cvf::UNDEFINED_SIZE_T)
|
||||
{
|
||||
std::vector< std::vector<double> > & srcFrames = m_cellScalarResults[sourceResultIdx];
|
||||
std::vector< std::vector<double> > & dstFrames = m_cellScalarResults[scalarResultIndex];
|
||||
|
||||
size_t baseFrameIdx = resVarAddr.m_timeLapseBaseFrameIdx;
|
||||
size_t frameCount = srcFrames.size();
|
||||
|
||||
if (!(baseFrameIdx < frameCount ))
|
||||
{
|
||||
dstFrames.clear();
|
||||
return scalarResultIndex;
|
||||
}
|
||||
|
||||
std::vector<double>& srcBaseVals = srcFrames[baseFrameIdx];
|
||||
|
||||
dstFrames.resize(frameCount);
|
||||
|
||||
for (size_t fIdx = 0; fIdx < frameCount; ++fIdx)
|
||||
{
|
||||
std::vector<double>& srcVals = srcFrames[fIdx];
|
||||
|
||||
std::vector<double>& dstVals = dstFrames[fIdx];
|
||||
dstVals.resize(srcVals.size(), std::numeric_limits<double>::infinity());
|
||||
size_t valCount = srcVals.size();
|
||||
|
||||
//#pragma omp parallel for
|
||||
for (long vIdx = 0; vIdx < static_cast<long>(valCount); ++vIdx)
|
||||
{
|
||||
dstVals[vIdx] = srcVals[vIdx] - srcBaseVals[vIdx];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return scalarResultIndex;
|
||||
}
|
||||
|
||||
// Load dependency data sets
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user