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.
using TreeType = typename GridT::TreeType |
Return a const reference to the ValueAccessor associated with this Stencil.
const Coord& getCenterCoord |
( |
| ) |
const |
|
inlineinherited |
Return the coordinates of the center point of the stencil.
Return the value at the center of the stencil.
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.
Return the value at the specified location relative to the center of the stencil.
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).
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).
Return a const reference to the grid from which this stencil was constructed.
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).
Return true if the center of the stencil intersects the iso-contour specified by the isoValue.
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).
Return the largest value in the stencil buffer.
Return the mean value of the current stencil.
Return the smallest value in the stencil buffer.
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 |
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 |
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.
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.
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).
unsigned int pos |
( |
| ) |
const |
|
inline |
Return linear offset for the specified stencil point relative to its center.
Set the value at the specified location relative to the center of the stencil.
Return the size of the stencil buffer.
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