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:
		@@ -59,7 +59,7 @@ bool RigCaseCellResultCalculator::computeDifference(RigEclipseCaseData*
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                if (c && c->caseId() == address.m_differenceCaseId && c->eclipseCaseData())
 | 
					                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* 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");
 | 
					        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 baseFrameCount   = baseCaseResults->cellScalarResults(nativeAddress).size();
 | 
				
			||||||
    size_t sourceFrameCount = sourceCaseResults->cellScalarResults(nativeAddress).size();
 | 
					    size_t sourceFrameCount = sourceCaseResults->cellScalarResults(nativeAddress).size();
 | 
				
			||||||
    size_t maxFrameCount    = std::min(baseFrameCount, sourceFrameCount);
 | 
					    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);
 | 
					        auto                     grid           = sourceMainGrid->gridByIndex(gridIdx);
 | 
				
			||||||
        const RigActiveCellInfo* activeCellInfo = sourceCaseResults->activeCellInfo();
 | 
					        const RigActiveCellInfo* activeCellInfo = sourceCaseResults->activeCellInfo();
 | 
				
			||||||
@@ -155,7 +156,7 @@ bool RigCaseCellResultCalculator::computeDifference(RigEclipseCaseData*
 | 
				
			|||||||
                if (activeCellInfo->isActive(reservoirCellIndex))
 | 
					                if (activeCellInfo->isActive(reservoirCellIndex))
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    double sourceVal = sourceResultAccessor->cellScalar(localGridCellIdx);
 | 
					                    double sourceVal = sourceResultAccessor->cellScalar(localGridCellIdx);
 | 
				
			||||||
                    double baseVal  = baseResultAccessor->cellScalar(localGridCellIdx);
 | 
					                    double baseVal   = baseResultAccessor->cellScalar(localGridCellIdx);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    double difference = sourceVal - baseVal;
 | 
					                    double difference = sourceVal - baseVal;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -118,6 +118,22 @@ bool RigGridManager::isGridDimensionsEqual(const std::vector< std::vector<int> >
 | 
				
			|||||||
    return true;
 | 
					    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 isEqual(RigMainGrid* gridA, RigMainGrid* gridB);
 | 
				
			||||||
    static bool isGridDimensionsEqual(const std::vector< std::vector<int> >& mainCaseGridDimensions, const std::vector< std::vector<int> >& caseGridDimensions);
 | 
					    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:
 | 
					private:
 | 
				
			||||||
    class CaseToGridMap : public cvf::Object
 | 
					    class CaseToGridMap : public cvf::Object
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user