#3090 Add findReservoirCellIndexFromPoint

This commit is contained in:
Magne Sjaastad committed 2018-08-02 13:51:38 +02:00
1 parent e3e7ededf8
commit 91552c155a
2 files changed
+32 -2

No files matched your search

@@ -20,10 +20,11 @@
#include "RigMainGrid.h" #include "RigMainGrid.h"
#include "RiaLogging.h"
#include "RiaDefines.h" #include "RiaDefines.h"
#include "RigFault.h" #include "RiaLogging.h"
#include "RigActiveCellInfo.h" #include "RigActiveCellInfo.h"
#include "RigFault.h"
#include "RigHexIntersectionTools.h"
#include "cvfBoundingBoxTree.h" #include "cvfBoundingBoxTree.h"
#include "cvfAssert.h" #include "cvfAssert.h"
@@ -90,6 +91,34 @@ size_t RigMainGrid::reservoirCellIndexByGridAndGridLocalCellIndex(size_t gridIdx
return gridByIndex(gridIdx)->reservoirCellIndex(gridLocalCellIdx); return gridByIndex(gridIdx)->reservoirCellIndex(gridLocalCellIdx);
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
size_t RigMainGrid::findReservoirCellIndexFromPoint(const cvf::Vec3d& point) const
{
size_t cellContainingPoint = cvf::UNDEFINED_SIZE_T;
cvf::BoundingBox pointBBox;
pointBBox.add(point);
std::vector<size_t> cellIndices;
m_mainGrid->findIntersectingCells(pointBBox, &cellIndices);
for (size_t cellIndex : cellIndices)
{
cvf::Vec3d hexCorners[8];
m_mainGrid->cellCornerVertices(cellIndex, hexCorners);
if (RigHexIntersectionTools::isPointInCell(point, hexCorners))
{
cellContainingPoint = cellIndex;
break;
}
}
return cellContainingPoint;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@@ -56,6 +56,7 @@ public:
const RigCell& cellByGridAndGridLocalCellIdx(size_t gridIdx, size_t gridLocalCellIdx) const; const RigCell& cellByGridAndGridLocalCellIdx(size_t gridIdx, size_t gridLocalCellIdx) const;
size_t reservoirCellIndexByGridAndGridLocalCellIndex(size_t gridIdx, size_t gridLocalCellIdx) const; size_t reservoirCellIndexByGridAndGridLocalCellIndex(size_t gridIdx, size_t gridLocalCellIdx) const;
size_t findReservoirCellIndexFromPoint(const cvf::Vec3d& point) const;
void addLocalGrid(RigLocalGrid* localGrid); void addLocalGrid(RigLocalGrid* localGrid);
size_t gridCount() const { return m_localGrids.size() + 1; } size_t gridCount() const { return m_localGrids.size() + 1; }