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;
|
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.
|
/// 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.
|
/// Useful for running in a loop after doing the sanity check once.
|
||||||
|
@ -23,11 +23,13 @@
|
|||||||
#include "RifReaderInterface.h"
|
#include "RifReaderInterface.h"
|
||||||
#include "RigFault.h"
|
#include "RigFault.h"
|
||||||
|
|
||||||
|
#include "cafVecIjk.h"
|
||||||
#include "cvfBoundingBox.h"
|
#include "cvfBoundingBox.h"
|
||||||
#include "cvfStructGrid.h"
|
#include "cvfStructGrid.h"
|
||||||
#include "cvfStructGridGeometryGenerator.h"
|
#include "cvfStructGridGeometryGenerator.h"
|
||||||
#include "cvfVector3.h"
|
#include "cvfVector3.h"
|
||||||
|
|
||||||
|
#include <optional>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
@ -95,6 +97,9 @@ public:
|
|||||||
bool ijkFromCellIndex( size_t cellIndex, size_t* i, size_t* j, size_t* k ) const override;
|
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;
|
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;
|
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;
|
void cellCornerVertices( size_t cellIndex, cvf::Vec3d vertices[8] ) const override;
|
||||||
cvf::Vec3d cellCentroid( size_t cellIndex ) const override;
|
cvf::Vec3d cellCentroid( size_t cellIndex ) const override;
|
||||||
|
@ -70,4 +70,12 @@ size_t VecIjk::k() const
|
|||||||
return m_values[2];
|
return m_values[2];
|
||||||
}
|
}
|
||||||
|
|
||||||
}; // namespace caf
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
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 <array>
|
||||||
#include <cstddef>
|
#include <cstddef>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
namespace caf
|
namespace caf
|
||||||
{
|
{
|
||||||
@ -50,6 +51,8 @@ public:
|
|||||||
size_t j() const;
|
size_t j() const;
|
||||||
size_t k() const;
|
size_t k() const;
|
||||||
|
|
||||||
|
std::string toString() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::array<size_t, 3> m_values;
|
std::array<size_t, 3> m_values;
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user