mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Add helper functions to convert from cellIndex to cafVecIjk
This commit is contained in:
parent
68a4d54af2
commit
9e65eb3be9
@ -218,6 +218,34 @@ bool RigGridBase::ijkFromCellIndex( size_t cellIndex, size_t* i, size_t* j, size
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::optional<caf::VecIjk> RigGridBase::ijkFromCellIndex( size_t cellIndex ) const
|
||||
{
|
||||
size_t i, j, k;
|
||||
if ( ijkFromCellIndex( cellIndex, &i, &j, &k ) )
|
||||
{
|
||||
return caf::VecIjk( i, j, k );
|
||||
}
|
||||
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::optional<caf::VecIjk> RigGridBase::ijkFromCellIndexOneBased( size_t cellIndex ) const
|
||||
{
|
||||
size_t i, j, k;
|
||||
if ( ijkFromCellIndex( cellIndex, &i, &j, &k ) )
|
||||
{
|
||||
return caf::VecIjk( ++i, ++j, ++k );
|
||||
}
|
||||
|
||||
return std::nullopt;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// This version does no if-guarding. Check that all dimensions of the grid are non-zero before using.
|
||||
/// Useful for running in a loop after doing the sanity check once.
|
||||
|
@ -23,11 +23,13 @@
|
||||
#include "RifReaderInterface.h"
|
||||
#include "RigFault.h"
|
||||
|
||||
#include "cafVecIjk.h"
|
||||
#include "cvfBoundingBox.h"
|
||||
#include "cvfStructGrid.h"
|
||||
#include "cvfStructGridGeometryGenerator.h"
|
||||
#include "cvfVector3.h"
|
||||
|
||||
#include <optional>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@ -95,6 +97,9 @@ public:
|
||||
bool ijkFromCellIndex( size_t cellIndex, size_t* i, size_t* j, size_t* k ) const override;
|
||||
void ijkFromCellIndexUnguarded( size_t cellIndex, size_t* i, size_t* j, size_t* k ) const;
|
||||
|
||||
std::optional<caf::VecIjk> ijkFromCellIndex( size_t cellIndex ) const;
|
||||
std::optional<caf::VecIjk> ijkFromCellIndexOneBased( size_t cellIndex ) const;
|
||||
|
||||
bool cellIJKFromCoordinate( const cvf::Vec3d& coord, size_t* i, size_t* j, size_t* k ) const override;
|
||||
void cellCornerVertices( size_t cellIndex, cvf::Vec3d vertices[8] ) const override;
|
||||
cvf::Vec3d cellCentroid( size_t cellIndex ) const override;
|
||||
|
@ -70,4 +70,12 @@ size_t VecIjk::k() const
|
||||
return m_values[2];
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
std::string VecIjk::toString() const
|
||||
{
|
||||
return std::to_string( i() ) + ", " + std::to_string( j() ) + ", " + std::to_string( k() );
|
||||
}
|
||||
|
||||
}; // namespace caf
|
@ -38,6 +38,7 @@
|
||||
|
||||
#include <array>
|
||||
#include <cstddef>
|
||||
#include <string>
|
||||
|
||||
namespace caf
|
||||
{
|
||||
@ -50,6 +51,8 @@ public:
|
||||
size_t j() const;
|
||||
size_t k() const;
|
||||
|
||||
std::string toString() const;
|
||||
|
||||
private:
|
||||
std::array<size_t, 3> m_values;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user