This is a special 19-point stencil that supports optimal fifth-order WENO upwinding, second-order central differencing, Laplacian, and zero-crossing test.
More...
#include <nanovdb/util/Stencils.h>
Inherits BaseStencil< WenoStencil< GridT >, 19, GridT >.
|
| WenoStencil (const GridType &grid) |
|
| WenoStencil (const GridType &grid, double dx) |
|
ValueType | normSqGrad (ValueType isoValue=ValueType(0)) const |
| Return the norm-square of the WENO upwind gradient (computed via WENO upwinding and Godunov's scheme) at the previously buffered location. More...
|
|
Vec3< ValueType > | gradient (const Vec3< ValueType > &V) const |
|
Vec3< ValueType > | gradient () const |
|
ValueType | laplacian () const |
|
bool | zeroCrossing () const |
|
template<int i, int j, int k> |
unsigned int | pos () const |
| Return linear offset for the specified stencil point relative to its center. More...
|
|
void | moveTo (const Coord &ijk) |
| Initialize the stencil buffer with the values of voxel (i, j, k) and its neighbors. More...
|
|
void | moveTo (const Coord &ijk, const ValueType ¢erValue) |
| Initialize the stencil buffer with the values of voxel (i, j, k) and its neighbors. The method also takes a value of the center element of the stencil, assuming it is already known. More...
|
|
void | moveTo (const IterType &iter) |
| Initialize the stencil buffer with the values of voxel (x, y, z) and its neighbors. More...
|
|
void | moveTo (const Vec3< RealType > &xyz) |
| Initialize the stencil buffer with the values of voxel (x, y, z) and its neighbors. More...
|
|
const ValueType & | getValue (unsigned int pos=0) const |
| Return the value from the stencil buffer with linear offset pos. More...
|
|
const ValueType & | getValue () const |
| Return the value at the specified location relative to the center of the stencil. More...
|
|
void | setValue (const ValueType &value) |
| Set the value at the specified location relative to the center of the stencil. More...
|
|
ValueType | mean () const |
| Return the mean value of the current stencil. More...
|
|
ValueType | min () const |
| Return the smallest value in the stencil buffer. More...
|
|
ValueType | max () const |
| Return the largest value in the stencil buffer. More...
|
|
const Coord & | getCenterCoord () const |
| Return the coordinates of the center point of the stencil. More...
|
|
const ValueType & | getCenterValue () const |
| Return the value at the center of the stencil. More...
|
|
bool | intersects (const ValueType &isoValue=ValueType(0)) const |
| Return true if the center of the stencil intersects the iso-contour specified by the isoValue. More...
|
|
Mask | intersectionMask (ValueType isoValue=ValueType(0)) const |
| Return true a bit-mask where the 6 lower bits indicates if the center of the stencil intersects the iso-contour specified by the isoValue. More...
|
|
const GridType & | grid () const |
| Return a const reference to the grid from which this stencil was constructed. More...
|
|
const AccessorType & | accessor () const |
| Return a const reference to the ValueAccessor associated with this Stencil. More...
|
|
|
static int | size () |
| Return the size of the stencil buffer. More...
|
|
|
static constexpr int | SIZE = 19 |
|
template<typename GridT, typename RealT = typename GridT::ValueType>
class nanovdb::WenoStencil< GridT, RealT >
This is a special 19-point stencil that supports optimal fifth-order WENO upwinding, second-order central differencing, Laplacian, and zero-crossing test.
- Note
- For optimal random access performance this class includes its own grid accessor.
◆ AccessorType
◆ GridType
◆ TreeType
using TreeType = typename GridT::TreeType |
◆ ValueType
◆ WenoStencil() [1/2]
◆ WenoStencil() [2/2]
◆ accessor()
Return a const reference to the ValueAccessor associated with this Stencil.
◆ getCenterCoord()
const Coord & getCenterCoord |
( |
| ) |
const |
|
inlineinherited |
Return the coordinates of the center point of the stencil.
◆ getCenterValue()
Return the value at the center of the stencil.
◆ getValue() [1/2]
Return the value at the specified location relative to the center of the stencil.
◆ getValue() [2/2]
const ValueType & getValue |
( |
unsigned int |
pos = 0 | ) |
const |
|
inlineinherited |
Return the value from the stencil buffer with linear offset pos.
- Note
- The default (pos = 0) corresponds to the first element which is typically the center point of the stencil.
◆ gradient() [1/2]
Return the gradient computed at the previously buffered location by second-order central differencing.
- Note
- This method should not be called until the stencil buffer has been populated via a call to moveTo(ijk).
◆ gradient() [2/2]
Return the optimal fifth-order upwind gradient corresponding to the direction V.
- Note
- This method should not be called until the stencil buffer has been populated via a call to moveTo(ijk).
◆ grid()
Return a const reference to the grid from which this stencil was constructed.
◆ intersectionMask()
Return true a bit-mask where the 6 lower bits indicates if the center of the stencil intersects the iso-contour specified by the isoValue.
- Note
- There are 2^6 = 64 different possible cases, including no intersections!
The ordering of bit mask is ( -x, +x, -y, +y, -z, +z ), so to check if there is an intersection in -y use (mask & (1u<<2)) where mask is ther return value from this function. To check if there are any intersections use mask!=0u, and for no intersections use mask==0u. To count the number of intersections use __builtin_popcount(mask).
◆ intersects()
Return true if the center of the stencil intersects the iso-contour specified by the isoValue.
◆ laplacian()
Return the Laplacian computed at the previously buffered location by second-order central differencing.
- Note
- This method should not be called until the stencil buffer has been populated via a call to moveTo(ijk).
◆ max()
Return the largest value in the stencil buffer.
◆ mean()
Return the mean value of the current stencil.
◆ min()
Return the smallest value in the stencil buffer.
◆ moveTo() [1/4]
void moveTo |
( |
const Coord & |
ijk | ) |
|
|
inlineinherited |
Initialize the stencil buffer with the values of voxel (i, j, k) and its neighbors.
- Parameters
-
ijk | Index coordinates of stencil center |
◆ moveTo() [2/4]
Initialize the stencil buffer with the values of voxel (i, j, k) and its neighbors. The method also takes a value of the center element of the stencil, assuming it is already known.
- Parameters
-
ijk | Index coordinates of stencil center |
centerValue | Value of the center element of the stencil |
◆ moveTo() [3/4]
void moveTo |
( |
const IterType & |
iter | ) |
|
|
inlineinherited |
Initialize the stencil buffer with the values of voxel (x, y, z) and its neighbors.
- Note
- This version is slightly faster than the one above, since the center voxel's value is read directly from the iterator.
◆ moveTo() [4/4]
void moveTo |
( |
const Vec3< RealType > & |
xyz | ) |
|
|
inlineinherited |
Initialize the stencil buffer with the values of voxel (x, y, z) and its neighbors.
- Parameters
-
xyz | Floating point voxel coordinates of stencil center |
This method will check to see if it is necessary to update the stencil based on the cached index coordinates of the center point.
◆ normSqGrad()
Return the norm-square of the WENO upwind gradient (computed via WENO upwinding and Godunov's scheme) at the previously buffered location.
- Note
- This method should not be called until the stencil buffer has been populated via a call to moveTo(ijk).
◆ pos()
unsigned int pos |
( |
| ) |
const |
|
inline |
Return linear offset for the specified stencil point relative to its center.
◆ setValue()
Set the value at the specified location relative to the center of the stencil.
◆ size()
Return the size of the stencil buffer.
◆ zeroCrossing()
bool zeroCrossing |
( |
| ) |
const |
|
inline |
Return true
if the sign of the value at the center point of the stencil differs from the sign of any of its six nearest neighbors
◆ BaseStencil
◆ mCenter
◆ mGrid
◆ SIZE