#4073 3D calculations : Compare main grid cell value if LGR is present

This commit is contained in:
Magne Sjaastad 2019-03-25 07:36:33 +01:00
parent bcadb4383c
commit 58d369d32b
3 changed files with 24 additions and 5 deletions

View File

@ -59,7 +59,7 @@ bool RigCaseCellResultCalculator::computeDifference(RigEclipseCaseData*
{
if (c && c->caseId() == address.m_differenceCaseId && c->eclipseCaseData())
{
baseCase = c->eclipseCaseData();
baseCase = c->eclipseCaseData();
}
}
}
@ -73,9 +73,9 @@ bool RigCaseCellResultCalculator::computeDifference(RigEclipseCaseData*
}
RigMainGrid* sourceMainGrid = sourceCase->mainGrid();
RigMainGrid* baseMainGrid = baseCase->mainGrid();
RigMainGrid* baseMainGrid = baseCase->mainGrid();
if (!RigGridManager::isEqual(sourceMainGrid, baseMainGrid))
if (!RigGridManager::isMainGridDimensionsEqual(sourceMainGrid, baseMainGrid))
{
RiaLogging::error("Case difference : Grid cases do not match");
@ -126,8 +126,9 @@ bool RigCaseCellResultCalculator::computeDifference(RigEclipseCaseData*
size_t baseFrameCount = baseCaseResults->cellScalarResults(nativeAddress).size();
size_t sourceFrameCount = sourceCaseResults->cellScalarResults(nativeAddress).size();
size_t maxFrameCount = std::min(baseFrameCount, sourceFrameCount);
size_t maxGridCount = std::min(baseMainGrid->gridCount(), sourceMainGrid->gridCount());
for (size_t gridIdx = 0; gridIdx < sourceMainGrid->gridCount(); ++gridIdx)
for (size_t gridIdx = 0; gridIdx < maxGridCount; ++gridIdx)
{
auto grid = sourceMainGrid->gridByIndex(gridIdx);
const RigActiveCellInfo* activeCellInfo = sourceCaseResults->activeCellInfo();
@ -155,7 +156,7 @@ bool RigCaseCellResultCalculator::computeDifference(RigEclipseCaseData*
if (activeCellInfo->isActive(reservoirCellIndex))
{
double sourceVal = sourceResultAccessor->cellScalar(localGridCellIdx);
double baseVal = baseResultAccessor->cellScalar(localGridCellIdx);
double baseVal = baseResultAccessor->cellScalar(localGridCellIdx);
double difference = sourceVal - baseVal;

View File

@ -118,6 +118,22 @@ bool RigGridManager::isGridDimensionsEqual(const std::vector< std::vector<int> >
return true;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
bool RigGridManager::isMainGridDimensionsEqual(RigMainGrid* gridA, RigMainGrid* gridB)
{
if (gridA == nullptr || gridB == nullptr) return false;
if (gridA == gridB) return true;
if( gridA->cellCountI() != gridB->cellCountI()) return false;
if( gridA->cellCountJ() != gridB->cellCountJ()) return false;
if( gridA->cellCountK() != gridB->cellCountK()) return false;
return true;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@ -40,6 +40,8 @@ public:
static bool isEqual(RigMainGrid* gridA, RigMainGrid* gridB);
static bool isGridDimensionsEqual(const std::vector< std::vector<int> >& mainCaseGridDimensions, const std::vector< std::vector<int> >& caseGridDimensions);
static bool isMainGridDimensionsEqual(RigMainGrid* gridA, RigMainGrid* gridB);
private:
class CaseToGridMap : public cvf::Object
{