This class provides an interface to linearization of coordinates and viceversa when blocks are involved. This can be seen as a lightweight version of grid_sm, with just LinId and InvLinId methods, but tuned for blocked data.
Definition at line 19 of file grid_smb.hpp.
#include <grid_smb.hpp>
Public Member Functions | |
Box< dim, size_t > | getBox () const |
Return the box enclosing the grid. More... | |
__host__ __device__ | grid_smb (const size_t(&sz)[dim]) |
__host__ __device__ | grid_smb (const indexT(&sz)[dim]) |
__host__ __device__ | grid_smb (const size_t domainBlockEdgeSize) |
template<typename T > | |
__host__ __device__ | grid_smb (const grid_sm< dim, T > blockGrid) |
__host__ __device__ | grid_smb (const grid_smb< dim, blockEdgeSize > &other) |
__host__ __device__ grid_smb & | operator= (const grid_smb< dim, blockEdgeSize > &other) |
__host__ __device__ const indexT(& | getSize () const)[dim] |
__host__ __device__ const indexT & | size (int i) const |
template<typename indexT_ > | |
__host__ __device__ indexT | LinId (const grid_key_dx< dim, indexT_ > coord) const |
Linearize the coordinate index. More... | |
template<typename indexT_ > | |
__host__ __device__ void | LinId (const grid_key_dx< dim, indexT_ > coord, indexT &blockLinId, int &localLinId) const |
Linearize the coordinate index. More... | |
__host__ __device__ grid_key_dx< dim, int > | InvLinId (const indexT linId) const |
__host__ __device__ grid_key_dx< dim, int > | LocalInvLinId (unsigned int localLinId) const |
__host__ __device__ grid_key_dx< dim, int > | InvLinId (indexT blockLinId, indexT localLinId) const |
Invert from the linearized block id + local id to the position of the point in coordinates. More... | |
template<typename indexT_ > | |
__host__ __device__ indexT | BlockLinId (const grid_key_dx< dim, indexT_ > &blockCoord) const |
template<typename indexT_ > | |
__host__ __device__ grid_key_dx< dim, indexT > | getGlobalCoord (const grid_key_dx< dim, indexT_ > &blockCoord, unsigned int offset) const |
__host__ __device__ grid_key_dx< dim, int > | BlockInvLinId (indexT blockLinId) const |
indexT | size_blocks () const |
indexT | size () const |
__host__ __device__ indexT | getBlockSize () const |
__host__ __device__ void | swap (grid_smb< dim, blockEdgeSize, indexT > &other) |
Static Public Member Functions | |
static bool | noPointers () |
Static Protected Attributes | |
static constexpr indexT | blockSize = IntPow<blockEdgeSize, dim>::value |
Private Attributes | |
Box< dim, size_t > | box |
Box enclosing the grid. | |
indexT | blockSz [dim] |
indexT | sz [dim] |
|
inline |
Invert from the linearized block id + local id to the position of the point in coordinates.
From the point coordinated x,y,z you can get the block coordinated block_x,block_y,block_z and the local coordinates inside the chunk loc_x,loc_y,loc_z
linearizing block coordinated you get blockId and linearizing the local coordinated you get localLinId
each point in a sparse grid is identified by the formula blockId*blockSize + localLinId
This function invert such formula.
blockLinId | is blockId |
localLinId | is localLinId in the formula |
Definition at line 263 of file grid_smb.hpp.
|
inline |
Linearize the coordinate index.
The linearization is given by getting the block indexes and the local coordinate indexes
Linearize the block index (blockLinId), linearize the local index (localLinId) and return blockLinId * blockSize + localLinId
coord | coordinates |
Definition at line 176 of file grid_smb.hpp.
|
inline |
Linearize the coordinate index.
The linearization is given by getting the block indexes and the local coordinate indexes
Linearize the block index (blockLinId), linearize the local index (localLinId) and return blockLinId and offset
coord | coordinates |
Definition at line 204 of file grid_smb.hpp.
|
inline |
brief Given a local offset it provide the the position in coordinates
linId | point |
Definition at line 232 of file grid_smb.hpp.