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,20 +44,20 @@ bool RigCaseCellResultCalculator::computeDifference(RigEclipseCaseData*
|
|||||||
const RigEclipseResultAddress& address)
|
const RigEclipseResultAddress& address)
|
||||||
{
|
{
|
||||||
CVF_ASSERT(address.isValid());
|
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
|
// 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
|
// 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();
|
auto eclipseCases = RiaApplication::instance()->project()->eclipseCases();
|
||||||
for (RimEclipseCase* c : eclipseCases)
|
for (RimEclipseCase* c : eclipseCases)
|
||||||
{
|
{
|
||||||
if (c->caseId() == address.m_differenceCaseId)
|
if (c && c->caseId() == address.m_differenceCaseId && c->eclipseCaseData())
|
||||||
{
|
|
||||||
if (c && c->eclipseCaseData())
|
|
||||||
{
|
{
|
||||||
baseCase = c->eclipseCaseData();
|
baseCase = c->eclipseCaseData();
|
||||||
}
|
}
|
||||||
|
@ -1083,7 +1083,7 @@ size_t RigCaseCellResultsData::findOrLoadKnownScalarResult(const RigEclipseResul
|
|||||||
RiaDefines::ResultCatType type = resVarAddr.m_resultCatType;
|
RiaDefines::ResultCatType type = resVarAddr.m_resultCatType;
|
||||||
QString resultName = resVarAddr.m_resultName;
|
QString resultName = resVarAddr.m_resultName;
|
||||||
|
|
||||||
if (resVarAddr.hasDifferenceCase())
|
if (resVarAddr.hasDifferenceCase() || resVarAddr.isTimeLapse())
|
||||||
{
|
{
|
||||||
if (!RigCaseCellResultCalculator::computeDifference(this->m_ownerCaseData, RiaDefines::MATRIX_MODEL, resVarAddr))
|
if (!RigCaseCellResultCalculator::computeDifference(this->m_ownerCaseData, RiaDefines::MATRIX_MODEL, resVarAddr))
|
||||||
{
|
{
|
||||||
@ -1092,48 +1092,6 @@ size_t RigCaseCellResultsData::findOrLoadKnownScalarResult(const RigEclipseResul
|
|||||||
|
|
||||||
return scalarResultIndex;
|
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
|
// Load dependency data sets
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user