OpenVDB 12.1.0

Loading...
Searching...
No Matches
SparseStencilMatrix< ValueType_, STENCIL_SIZE > Class Template Reference

Sparse, square matrix representing a 3D stencil operator of size STENCIL_SIZE. More...

`#include <openvdb/math/ConjGradient.h>`

## Classes
class | ConstRow
| Read-only accessor to a row of this matrix. More...
class | ConstValueIter
| Iterator over the stored values in a row of this matrix. More...
struct | IsFiniteOp
struct | MatrixCopyOp
class | RowEditor
| Read/write accessor to a row of this matrix. More...

## Public Types
using | ValueType = ValueType_
using | VectorType = Vector<ValueType>
using | Ptr = SharedPtr<SparseStencilMatrix>

## Public Member Functions
| SparseStencilMatrix (SizeType n)
| Construct an n x n matrix with at most STENCIL_SIZE nonzero elements per row.
| SparseStencilMatrix (const SparseStencilMatrix &)
| Deep copy the given matrix.
SizeType | numRows () const
| Return the number of rows in this matrix.
SizeType | size () const
void | setValue (SizeType row, SizeType col, const ValueType &)
| Set the value at the given coordinates.
const ValueType & | getValue (SizeType row, SizeType col) const
| Return the value at the given coordinates.
const ValueType & | operator() (SizeType row, SizeType col) const
ConstRow | getConstRow (SizeType row) const
| Return a read-only view onto the given row of this matrix.
RowEditor | getRowEditor (SizeType row)
| Return a read/write view onto the given row of this matrix.
template<typename Scalar>
void | scale (const Scalar &s)
| Multiply all elements in the matrix by s;.
template<typename Scalar>
SparseStencilMatrix & | operator*= (const Scalar &s)
template<typename VecValueType>
void | vectorMultiply (const Vector< VecValueType > &inVec, Vector< VecValueType > &resultVec) const
| Multiply this matrix by inVec and return the result in resultVec.
template<typename VecValueType>
void | vectorMultiply (const VecValueType *inVec, VecValueType *resultVec) const
| Multiply this matrix by the vector represented by the array inVec and return the result in resultVec.
template<typename OtherValueType>
bool | eq (const SparseStencilMatrix< OtherValueType, STENCIL_SIZE > &other, ValueType eps=Tolerance< ValueType >::value()) const
| Return `true` if this matrix is equivalent to the given matrix to within the specified tolerance.
bool | isFinite () const
| Return `true` if every element of this matrix has a finite value.
std::string | str () const
| Return a string representation of this matrix.

## Static Public Attributes
static constexpr ValueType | sZeroValue = zeroVal<ValueType>()

## Detailed Description

template<typename ValueType_, SizeType STENCIL_SIZE>
class openvdb::v12_1::math::pcg::SparseStencilMatrix< ValueType_, STENCIL_SIZE >

Sparse, square matrix representing a 3D stencil operator of size STENCIL_SIZE.

The implementation is a variation on compressed row storage (CRS).

## Member Typedef Documentation

## ◆ Ptr

template<typename ValueType_, SizeType STENCIL_SIZE>

using Ptr = SharedPtr<SparseStencilMatrix>

## ◆ ValueType

template<typename ValueType_, SizeType STENCIL_SIZE>

using ValueType = ValueType_

## ◆ VectorType

template<typename ValueType_, SizeType STENCIL_SIZE>

using VectorType = Vector<ValueType>

## Constructor & Destructor Documentation

## ◆ SparseStencilMatrix() [1/2]

template<typename ValueType, SizeType STENCIL_SIZE>

SparseStencilMatrix | ( | SizeType | n | ) |
| inline

Construct an n x n matrix with at most STENCIL_SIZE nonzero elements per row.

## ◆ SparseStencilMatrix() [2/2]

template<typename ValueType, SizeType STENCIL_SIZE>

SparseStencilMatrix | ( | const SparseStencilMatrix< ValueType_, STENCIL_SIZE > & | other | ) |
| inline

Deep copy the given matrix.

## Member Function Documentation

## ◆ eq()

template<typename ValueType, SizeType STENCIL_SIZE>
template<typename OtherValueType>

bool eq | ( | const SparseStencilMatrix< OtherValueType, STENCIL_SIZE > & | other,
|  | ValueType | eps = Tolerance<ValueType>::value() ) const
| inline

Return `true` if this matrix is equivalent to the given matrix to within the specified tolerance.

## ◆ getConstRow()

template<typename ValueType, SizeType STENCIL_SIZE>

SparseStencilMatrix< ValueType, STENCIL_SIZE >::ConstRow getConstRow | ( | SizeType | row | ) | const
| inline

Return a read-only view onto the given row of this matrix.

## ◆ getRowEditor()

template<typename ValueType, SizeType STENCIL_SIZE>

SparseStencilMatrix< ValueType, STENCIL_SIZE >::RowEditor getRowEditor | ( | SizeType | row | ) |
| inline

Return a read/write view onto the given row of this matrix.

## ◆ getValue()

template<typename ValueType, SizeType STENCIL_SIZE>

const ValueType & getValue | ( | SizeType | row,
|  | SizeType | col ) const
| inline

Return the value at the given coordinates.

Warning
  It is not safe to get values from a row while another thread is setting values in that row.

## ◆ isFinite()

template<typename ValueType, SizeType STENCIL_SIZE>

bool isFinite | ( |  | ) | const
| inline

Return `true` if every element of this matrix has a finite value.

## ◆ numRows()

template<typename ValueType_, SizeType STENCIL_SIZE>

SizeType numRows | ( |  | ) | const
| inline

Return the number of rows in this matrix.

## ◆ operator()()

template<typename ValueType, SizeType STENCIL_SIZE>

const ValueType & operator() | ( | SizeType | row,
|  | SizeType | col ) const
| inline

## ◆ operator*=()

template<typename ValueType_, SizeType STENCIL_SIZE>
template<typename Scalar>

SparseStencilMatrix & operator*= | ( | const Scalar & | s | ) |
| inline

## ◆ scale()

template<typename ValueType, SizeType STENCIL_SIZE>
template<typename Scalar>

void scale | ( | const Scalar & | s | ) |
| inline

Multiply all elements in the matrix by s;.

## ◆ setValue()

template<typename ValueType, SizeType STENCIL_SIZE>

void setValue | ( | SizeType | row,
|  | SizeType | col,
|  | const ValueType & | val )
| inline

Set the value at the given coordinates.

Warning
  It is not safe to set values in the same row simultaneously from multiple threads.

## ◆ size()

template<typename ValueType_, SizeType STENCIL_SIZE>

SizeType size | ( |  | ) | const
| inline

## ◆ str()

template<typename ValueType, SizeType STENCIL_SIZE>

std::string str | ( |  | ) | const
| inline

Return a string representation of this matrix.

## ◆ vectorMultiply() [1/2]

template<typename ValueType, SizeType STENCIL_SIZE>
template<typename VecValueType>

void vectorMultiply | ( | const Vector< VecValueType > & | inVec,
|  | Vector< VecValueType > & | resultVec ) const
| inline

Multiply this matrix by inVec and return the result in resultVec.

Exceptions

  ArithmeticError | if either inVec or resultVec is not of size N, where N x N is the size of this matrix.

## ◆ vectorMultiply() [2/2]

template<typename ValueType, SizeType STENCIL_SIZE>
template<typename VecValueType>

void vectorMultiply | ( | const VecValueType * | inVec,
|  | VecValueType * | resultVec ) const
| inline

Multiply this matrix by the vector represented by the array inVec and return the result in resultVec.

Warning
  Both inVec and resultVec must have at least N elements, where N x N is the size of this matrix.

## Member Data Documentation

## ◆ sZeroValue

template<typename ValueType_, SizeType STENCIL_SIZE>

ValueType sZeroValue = zeroVal<ValueType>()
| inline static constexpr