OpenVDB  12.0.0
Classes | Public Types | Public Member Functions | Static Public Attributes | List of all members
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. More...
 
 SparseStencilMatrix (const SparseStencilMatrix &)
 Deep copy the given matrix. More...
 
void setValue (SizeType row, SizeType col, const ValueType &)
 Set the value at the given coordinates. More...
 
ConstRow getConstRow (SizeType row) const
 Return a read-only view onto the given row of this matrix. More...
 
RowEditor getRowEditor (SizeType row)
 Return a read/write view onto the given row of this matrix. More...
 
template<typename VecValueType >
void vectorMultiply (const Vector< VecValueType > &inVec, Vector< VecValueType > &resultVec) const
 Multiply this matrix by inVec and return the result in resultVec. More...
 
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. More...
 
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. More...
 
bool isFinite () const
 Return true if every element of this matrix has a finite value. More...
 
std::string str () const
 Return a string representation of this matrix. More...
 
SizeType numRows () const
 Return the number of rows in this matrix. More...
 
SizeType size () const
 Return the number of rows in this matrix. More...
 
const ValueTypegetValue (SizeType row, SizeType col) const
 Return the value at the given coordinates. More...
 
const ValueTypeoperator() (SizeType row, SizeType col) const
 Return the value at the given coordinates. More...
 
template<typename Scalar >
void scale (const Scalar &s)
 Multiply all elements in the matrix by s;. More...
 
template<typename Scalar >
SparseStencilMatrixoperator*= (const Scalar &s)
 Multiply all elements in the matrix by s;. More...
 

Static Public Attributes

static constexpr ValueType sZeroValue = zeroVal<ValueType>()
 

Detailed Description

template<typename ValueType_, SizeType STENCIL_SIZE>
class openvdb::v12_0::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

using ValueType = ValueType_

Constructor & Destructor Documentation

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

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

Deep copy the given matrix.

Member Function Documentation

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.

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

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

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

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

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.
bool isFinite ( ) const
inline

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

SizeType numRows ( ) const
inline

Return the number of rows in this matrix.

const ValueType & operator() ( 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.
SparseStencilMatrix& operator*= ( const Scalar &  s)
inline

Multiply all elements in the matrix by s;.

void scale ( const Scalar &  s)
inline

Multiply all elements in the matrix by s;.

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.
SizeType size ( ) const
inline

Return the number of rows in this matrix.

std::string str ( ) const
inline

Return a string representation of this matrix.

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

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

Exceptions
ArithmeticErrorif either inVec or resultVec is not of size N, where N x N is the size of this matrix.
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

constexpr ValueType sZeroValue = zeroVal<ValueType>()
inlinestatic