mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#4073 3D calculations : Compare main grid cell value if LGR is present
This commit is contained in:
parent
bcadb4383c
commit
58d369d32b
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -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
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user