mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#3090 Add findReservoirCellIndexFromPoint
This commit is contained in:
@@ -20,10 +20,11 @@
|
||||
|
||||
#include "RigMainGrid.h"
|
||||
|
||||
#include "RiaLogging.h"
|
||||
#include "RiaDefines.h"
|
||||
#include "RigFault.h"
|
||||
#include "RiaLogging.h"
|
||||
#include "RigActiveCellInfo.h"
|
||||
#include "RigFault.h"
|
||||
#include "RigHexIntersectionTools.h"
|
||||
|
||||
#include "cvfBoundingBoxTree.h"
|
||||
#include "cvfAssert.h"
|
||||
@@ -90,6 +91,34 @@ size_t RigMainGrid::reservoirCellIndexByGridAndGridLocalCellIndex(size_t gridIdx
|
||||
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;
|
||||
size_t reservoirCellIndexByGridAndGridLocalCellIndex(size_t gridIdx, size_t gridLocalCellIdx) const;
|
||||
size_t findReservoirCellIndexFromPoint(const cvf::Vec3d& point) const;
|
||||
|
||||
void addLocalGrid(RigLocalGrid* localGrid);
|
||||
size_t gridCount() const { return m_localGrids.size() + 1; }
|
||||
|
||||
Reference in New Issue
Block a user