mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Some performance updates
This commit is contained in:
parent
f7ecd38592
commit
8a2a1c218b
@ -50,7 +50,10 @@ RigActiveCellGrid::~RigActiveCellGrid()
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RigCell& RigActiveCellGrid::cell( size_t gridLocalCellIndex )
|
RigCell& RigActiveCellGrid::cell( size_t gridLocalCellIndex )
|
||||||
{
|
{
|
||||||
if ( m_nativeCells.contains( gridLocalCellIndex ) ) return m_nativeCells[gridLocalCellIndex];
|
if ( auto it = m_nativeCells.find( gridLocalCellIndex ); it != m_nativeCells.end() )
|
||||||
|
{
|
||||||
|
return it->second;
|
||||||
|
}
|
||||||
return m_invalidCell;
|
return m_invalidCell;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -59,7 +62,10 @@ RigCell& RigActiveCellGrid::cell( size_t gridLocalCellIndex )
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
const RigCell& RigActiveCellGrid::cell( size_t gridLocalCellIndex ) const
|
const RigCell& RigActiveCellGrid::cell( size_t gridLocalCellIndex ) const
|
||||||
{
|
{
|
||||||
if ( m_nativeCells.contains( gridLocalCellIndex ) ) return m_nativeCells.at( gridLocalCellIndex );
|
if ( const auto it = m_nativeCells.find( gridLocalCellIndex ); it != m_nativeCells.end() )
|
||||||
|
{
|
||||||
|
return it->second;
|
||||||
|
}
|
||||||
return m_invalidCell;
|
return m_invalidCell;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,6 +32,8 @@ RigGridBase::RigGridBase( RigMainGrid* mainGrid )
|
|||||||
: m_gridPointDimensions( 0, 0, 0 )
|
: m_gridPointDimensions( 0, 0, 0 )
|
||||||
, m_indexToStartOfCells( 0 )
|
, m_indexToStartOfCells( 0 )
|
||||||
, m_mainGrid( mainGrid )
|
, m_mainGrid( mainGrid )
|
||||||
|
, m_cellCountIJK( 0 )
|
||||||
|
, m_cellCountIJ( 0 )
|
||||||
{
|
{
|
||||||
if ( mainGrid == nullptr )
|
if ( mainGrid == nullptr )
|
||||||
{
|
{
|
||||||
@ -59,6 +61,9 @@ void RigGridBase::setGridPointDimensions( const cvf::Vec3st& gridDimensions )
|
|||||||
m_cellCount.x() = ( m_gridPointDimensions.x() > 0 ? m_gridPointDimensions.x() - 1 : 0 );
|
m_cellCount.x() = ( m_gridPointDimensions.x() > 0 ? m_gridPointDimensions.x() - 1 : 0 );
|
||||||
m_cellCount.y() = ( m_gridPointDimensions.y() > 0 ? m_gridPointDimensions.y() - 1 : 0 );
|
m_cellCount.y() = ( m_gridPointDimensions.y() > 0 ? m_gridPointDimensions.y() - 1 : 0 );
|
||||||
m_cellCount.z() = ( m_gridPointDimensions.z() > 0 ? m_gridPointDimensions.z() - 1 : 0 );
|
m_cellCount.z() = ( m_gridPointDimensions.z() > 0 ? m_gridPointDimensions.z() - 1 : 0 );
|
||||||
|
|
||||||
|
m_cellCountIJ = cellCountI() * cellCountJ();
|
||||||
|
m_cellCountIJK = m_cellCountIJ * cellCountK();
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -78,12 +83,11 @@ std::string RigGridBase::gridName() const
|
|||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
/// Do we need this ?
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
RigCell& RigGridBase::cell( size_t gridLocalCellIndex )
|
RigCell& RigGridBase::cell( size_t gridLocalCellIndex )
|
||||||
{
|
{
|
||||||
CVF_TIGHT_ASSERT( m_mainGrid );
|
CVF_TIGHT_ASSERT( m_mainGrid );
|
||||||
|
|
||||||
CVF_TIGHT_ASSERT( m_indexToStartOfCells + gridLocalCellIndex < m_mainGrid->reservoirCells().size() );
|
CVF_TIGHT_ASSERT( m_indexToStartOfCells + gridLocalCellIndex < m_mainGrid->reservoirCells().size() );
|
||||||
|
|
||||||
return m_mainGrid->reservoirCells()[m_indexToStartOfCells + gridLocalCellIndex];
|
return m_mainGrid->reservoirCells()[m_indexToStartOfCells + gridLocalCellIndex];
|
||||||
@ -185,7 +189,7 @@ size_t RigGridBase::cellIndexFromIJK( size_t i, size_t j, size_t k ) const
|
|||||||
CVF_TIGHT_ASSERT( i != cvf::UNDEFINED_SIZE_T && j != cvf::UNDEFINED_SIZE_T && k != cvf::UNDEFINED_SIZE_T );
|
CVF_TIGHT_ASSERT( i != cvf::UNDEFINED_SIZE_T && j != cvf::UNDEFINED_SIZE_T && k != cvf::UNDEFINED_SIZE_T );
|
||||||
CVF_TIGHT_ASSERT( i < m_gridPointDimensions.x() && j < m_gridPointDimensions.y() && k < m_gridPointDimensions.z() );
|
CVF_TIGHT_ASSERT( i < m_gridPointDimensions.x() && j < m_gridPointDimensions.y() && k < m_gridPointDimensions.z() );
|
||||||
|
|
||||||
return i + j * cellCountI() + k * cellCountI() * cellCountJ();
|
return i + j * m_cellCount.x() + k * m_cellCountIJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -193,7 +197,7 @@ size_t RigGridBase::cellIndexFromIJK( size_t i, size_t j, size_t k ) const
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
size_t RigGridBase::cellIndexFromIJKUnguarded( size_t i, size_t j, size_t k ) const
|
size_t RigGridBase::cellIndexFromIJKUnguarded( size_t i, size_t j, size_t k ) const
|
||||||
{
|
{
|
||||||
return i + j * cellCountI() + k * cellCountI() * cellCountJ();
|
return i + j * m_cellCount.x() + k * m_cellCountIJ;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -208,7 +212,7 @@ void RigGridBase::cellMinMaxCordinates( size_t cellIndex, cvf::Vec3d* minCoordin
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
bool RigGridBase::ijkFromCellIndex( size_t cellIndex, size_t* i, size_t* j, size_t* k ) const
|
bool RigGridBase::ijkFromCellIndex( size_t cellIndex, size_t* i, size_t* j, size_t* k ) const
|
||||||
{
|
{
|
||||||
CVF_TIGHT_ASSERT( cellIndex < RigGridBase::cellCount() );
|
CVF_TIGHT_ASSERT( cellIndex < m_cellCountIJK );
|
||||||
|
|
||||||
size_t index = cellIndex;
|
size_t index = cellIndex;
|
||||||
|
|
||||||
@ -217,8 +221,8 @@ bool RigGridBase::ijkFromCellIndex( size_t cellIndex, size_t* i, size_t* j, size
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
const size_t cellCountI = this->cellCountI();
|
const size_t cellCountI = m_cellCount.x();
|
||||||
const size_t cellCountJ = this->cellCountJ();
|
const size_t cellCountJ = m_cellCount.y();
|
||||||
|
|
||||||
*i = index % cellCountI;
|
*i = index % cellCountI;
|
||||||
index /= cellCountI;
|
index /= cellCountI;
|
||||||
@ -264,8 +268,8 @@ void RigGridBase::ijkFromCellIndexUnguarded( size_t cellIndex, size_t* i, size_t
|
|||||||
{
|
{
|
||||||
size_t index = cellIndex;
|
size_t index = cellIndex;
|
||||||
|
|
||||||
const size_t cellCountI = this->cellCountI();
|
const size_t cellCountI = m_cellCount.x();
|
||||||
const size_t cellCountJ = this->cellCountJ();
|
const size_t cellCountJ = m_cellCount.y();
|
||||||
|
|
||||||
*i = index % cellCountI;
|
*i = index % cellCountI;
|
||||||
index /= cellCountI;
|
index /= cellCountI;
|
||||||
@ -334,7 +338,7 @@ cvf::Vec3d RigGridBase::maxCoordinate() const
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
bool RigGridBase::isCellValid( size_t i, size_t j, size_t k ) const
|
bool RigGridBase::isCellValid( size_t i, size_t j, size_t k ) const
|
||||||
{
|
{
|
||||||
if ( i >= cellCountI() || j >= cellCountJ() || k >= cellCountK() )
|
if ( i >= m_cellCount.x() || j >= m_cellCount.y() || k >= m_cellCount.z() )
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -519,38 +523,6 @@ cvf::BoundingBox RigGridBase::boundingBox()
|
|||||||
return m_boundingBox;
|
return m_boundingBox;
|
||||||
}
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
size_t RigGridBase::cellCountI() const
|
|
||||||
{
|
|
||||||
return m_cellCount.x();
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
size_t RigGridBase::cellCountJ() const
|
|
||||||
{
|
|
||||||
return m_cellCount.y();
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
size_t RigGridBase::cellCountK() const
|
|
||||||
{
|
|
||||||
return m_cellCount.z();
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
///
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
|
||||||
size_t RigGridBase::cellCount() const
|
|
||||||
{
|
|
||||||
return cellCountI() * cellCountJ() * cellCountK();
|
|
||||||
}
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -45,11 +45,11 @@ public:
|
|||||||
|
|
||||||
void setGridPointDimensions( const cvf::Vec3st& gridDimensions );
|
void setGridPointDimensions( const cvf::Vec3st& gridDimensions );
|
||||||
|
|
||||||
size_t cellCountI() const override;
|
size_t cellCountI() const override { return m_cellCount.x(); }
|
||||||
size_t cellCountJ() const override;
|
size_t cellCountJ() const override { return m_cellCount.y(); }
|
||||||
size_t cellCountK() const override;
|
size_t cellCountK() const override { return m_cellCount.z(); }
|
||||||
|
virtual size_t cellCount() const { return m_cellCountIJK; }
|
||||||
|
|
||||||
virtual size_t cellCount() const;
|
|
||||||
virtual RigCell& cell( size_t gridLocalCellIndex );
|
virtual RigCell& cell( size_t gridLocalCellIndex );
|
||||||
virtual const RigCell& cell( size_t gridLocalCellIndex ) const;
|
virtual const RigCell& cell( size_t gridLocalCellIndex ) const;
|
||||||
|
|
||||||
@ -116,6 +116,8 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
size_t m_indexToStartOfCells; ///< Index into the global cell array stored in main-grid where this grids cells starts.
|
size_t m_indexToStartOfCells; ///< Index into the global cell array stored in main-grid where this grids cells starts.
|
||||||
|
size_t m_cellCountIJK;
|
||||||
|
size_t m_cellCountIJ;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::string m_gridName;
|
std::string m_gridName;
|
||||||
|
Loading…
Reference in New Issue
Block a user