Fix performance issue with filtered values

This commit is contained in:
Magne Sjaastad
2025-02-19 10:27:11 +01:00
parent 3f0a764abe
commit 346670f349
3 changed files with 13 additions and 17 deletions

View File

@@ -168,12 +168,14 @@ std::vector<std::vector<int>> RicCreateContourMapPolygonTools::convertToBinaryIm
std::vector<std::vector<int>> image( vertexSizeIJ.x(), std::vector<int>( vertexSizeIJ.y(), 0 ) );
auto filteredValues = rigContourMapProjection->aggregatedVertexResultsFiltered();
for ( cvf::uint i = 0; i < vertexSizeIJ.x(); i++ )
{
for ( cvf::uint j = 0; j < vertexSizeIJ.y(); j++ )
{
double valueAtVertex = rigContourMapProjection->filteredValueAtVertex( i, j );
auto vertexIndex = rigContourMapProjection->vertexIndex( i, j );
double valueAtVertex = vertexIndex < filteredValues.size() ? filteredValues[vertexIndex] : std::numeric_limits<double>::infinity();
if ( !std::isinf( valueAtVertex ) )
{
image[i][j] = 1;

View File

@@ -111,6 +111,14 @@ cvf::Vec2ui RigContourMapProjection::numberOfVerticesIJ() const
return m_contourMapGrid.numberOfVerticesIJ();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
size_t RigContourMapProjection::vertexIndex( unsigned int i, unsigned int j ) const
{
return m_contourMapGrid.vertexIndexFromIJ( i, j );
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@@ -124,20 +132,6 @@ double RigContourMapProjection::valueAtVertex( unsigned int i, unsigned int j )
return std::numeric_limits<double>::infinity();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
double RigContourMapProjection::filteredValueAtVertex( unsigned int i, unsigned int j ) const
{
size_t index = m_contourMapGrid.vertexIndexFromIJ( i, j );
if ( index < numberOfVertices() )
{
auto values = aggregatedVertexResultsFiltered();
return values.at( index );
}
return std::numeric_limits<double>::infinity();
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------

View File

@@ -60,8 +60,8 @@ public:
cvf::Vec2ui numberOfElementsIJ() const;
cvf::Vec2ui numberOfVerticesIJ() const;
size_t vertexIndex( unsigned int i, unsigned int j ) const;
double valueAtVertex( unsigned int i, unsigned int j ) const;
double filteredValueAtVertex( unsigned int i, unsigned int j ) const;
unsigned int numberOfCells() const;
unsigned int numberOfValidCells() const;