OpenVDB 12.1.1
Loading...
Searching...
No Matches
openvdb::v12_1::math::pcg Namespace Reference

Namespaces

namespace  internal

Classes

class  Vector
 Lightweight, variable-length vector. More...
class  SparseStencilMatrix
 Sparse, square matrix representing a 3D stencil operator of size STENCIL_SIZE. More...
class  Preconditioner
 Base class for conjugate gradient preconditioners. More...
class  JacobiPreconditioner
 Diagonal preconditioner. More...
class  IncompleteCholeskyPreconditioner
 Preconditioner using incomplete Cholesky factorization. More...
struct  State
 Information about the state of a conjugate gradient solution. More...

Typedefs

using SizeType = Index32
using SizeRange = tbb::blocked_range<SizeType>
using VectorS = Vector<float>
using VectorD = Vector<double>

Functions

template<typename ValueType>
State terminationDefaults ()
 Return default termination conditions for a conjugate gradient solver.
template<typename PositiveDefMatrix>
State solve (const PositiveDefMatrix &A, const Vector< typename PositiveDefMatrix::ValueType > &b, Vector< typename PositiveDefMatrix::ValueType > &x, Preconditioner< typename PositiveDefMatrix::ValueType > &preconditioner, const State &termination=terminationDefaults< typename PositiveDefMatrix::ValueType >())
 Solve Ax = b via the preconditioned conjugate gradient method.
template<typename PositiveDefMatrix, typename Interrupter>
State solve (const PositiveDefMatrix &A, const Vector< typename PositiveDefMatrix::ValueType > &b, Vector< typename PositiveDefMatrix::ValueType > &x, Preconditioner< typename PositiveDefMatrix::ValueType > &preconditioner, Interrupter &interrupter, const State &termination=terminationDefaults< typename PositiveDefMatrix::ValueType >())
 Solve Ax = b via the preconditioned conjugate gradient method.
std::ostream & operator<< (std::ostream &os, const State &state)

Typedef Documentation

◆ SizeRange

using SizeRange = tbb::blocked_range<SizeType>

◆ SizeType

using SizeType = Index32

◆ VectorD

using VectorD = Vector<double>

◆ VectorS

using VectorS = Vector<float>

Function Documentation

◆ operator<<()

std::ostream & operator<< ( std::ostream & os,
const State & state )
inline

◆ solve() [1/2]

template<typename PositiveDefMatrix>
State solve ( const PositiveDefMatrix & A,
const Vector< typename PositiveDefMatrix::ValueType > & b,
Vector< typename PositiveDefMatrix::ValueType > & x,
Preconditioner< typename PositiveDefMatrix::ValueType > & preconditioner,
const State & termination = terminationDefaults<typename PositiveDefMatrix::ValueType>() )
inline

Solve Ax = b via the preconditioned conjugate gradient method.

Parameters
Aa symmetric, positive-definite, N x N matrix
ba vector of size N
xa vector of size N
preconditionera Preconditioner matrix
terminationtermination conditions given as a State object with the following fields:
success
ignored
iterations
the maximum number of iterations, with or without convergence
relativeError
the relative error ||bAx|| / ||b|| that denotes convergence
absoluteError

the absolute error ||bAx|| that denotes convergence

Exceptions
ArithmeticErrorif either x or b is not of the appropriate size.

◆ solve() [2/2]

template<typename PositiveDefMatrix, typename Interrupter>
State solve ( const PositiveDefMatrix & A,
const Vector< typename PositiveDefMatrix::ValueType > & b,
Vector< typename PositiveDefMatrix::ValueType > & x,
Preconditioner< typename PositiveDefMatrix::ValueType > & preconditioner,
Interrupter & interrupter,
const State & termination = terminationDefaults<typename PositiveDefMatrix::ValueType>() )
inline

Solve Ax = b via the preconditioned conjugate gradient method.

Parameters
Aa symmetric, positive-definite, N x N matrix
ba vector of size N
xa vector of size N
preconditionera Preconditioner matrix
terminationtermination conditions given as a State object with the following fields:
success
ignored
iterations
the maximum number of iterations, with or without convergence
relativeError
the relative error ||bAx|| / ||b|| that denotes convergence
absoluteError
the absolute error ||bAx|| that denotes convergence
interrupteran object adhering to the util::NullInterrupter interface with which computation can be interrupted
Exceptions
ArithmeticErrorif either x or b is not of the appropriate size.
RuntimeErrorif the computation is interrupted.

◆ terminationDefaults()

template<typename ValueType>
State terminationDefaults ( )
inline

Return default termination conditions for a conjugate gradient solver.