OpenVDB
9.0.1
|
Preconditioned conjugate gradient solver (solves Ax = b using the conjugate gradient method with one of a selection of preconditioners) More...
#include <openvdb/Exceptions.h>
#include <openvdb/Types.h>
#include <openvdb/util/logging.h>
#include <openvdb/util/NullInterrupter.h>
#include "Math.h"
#include <tbb/parallel_for.h>
#include <tbb/parallel_reduce.h>
#include <algorithm>
#include <cassert>
#include <cmath>
#include <limits>
#include <sstream>
#include <string>
Go to the source code of this file.
Namespaces | |
openvdb | |
openvdb::v9_0 | |
openvdb::v9_0::math | |
openvdb::v9_0::math::pcg | |
openvdb::v9_0::math::pcg::internal | |
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. More... | |
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. More... | |
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. More... | |
std::ostream & | operator<< (std::ostream &os, const State &state) |
template<typename T > | |
void | axpy (const T &a, const T *xVec, const T *yVec, T *resultVec, SizeType size) |
Compute ax + y. More... | |
template<typename T > | |
void | axpy (const T &a, const Vector< T > &xVec, const Vector< T > &yVec, Vector< T > &result) |
Compute ax + y. More... | |
template<typename MatrixOperator , typename VecValueType > | |
void | computeResidual (const MatrixOperator &A, const VecValueType *x, const VecValueType *b, VecValueType *r) |
Compute r = b − Ax. More... | |
template<typename MatrixOperator , typename T > | |
void | computeResidual (const MatrixOperator &A, const Vector< T > &x, const Vector< T > &b, Vector< T > &r) |
Compute r = b − Ax. More... | |
Preconditioned conjugate gradient solver (solves Ax = b using the conjugate gradient method with one of a selection of preconditioners)