| 
    HDK
    
   | 
 
Solve Poisson's equation ∇2x = b for x, where b is a vector comprising the values of all of the active voxels in a grid. More...
#include <openvdb/Types.h>#include <openvdb/math/ConjGradient.h>#include <openvdb/tree/LeafManager.h>#include <openvdb/tree/Tree.h>#include <openvdb/util/NullInterrupter.h>#include <openvdb/util/Assert.h>#include "Morphology.h"#include <openvdb/openvdb.h>
 Include dependency graph for PoissonSolver.h:
 This graph shows which files directly or indirectly include this file:Go to the source code of this file.
Classes | |
| struct | openvdb::OPENVDB_VERSION_NAME::tools::poisson::DirichletBoundaryOp< ValueType > | 
| Dirichlet boundary condition functor.  More... | |
Namespaces | |
| openvdb | |
| openvdb::OPENVDB_VERSION_NAME | |
| openvdb::OPENVDB_VERSION_NAME::tools | |
| openvdb::OPENVDB_VERSION_NAME::tools::poisson | |
Typedefs | |
| using | openvdb::OPENVDB_VERSION_NAME::tools::poisson::VIndex = Int32 | 
| using | openvdb::OPENVDB_VERSION_NAME::tools::poisson::LaplacianMatrix = math::pcg::SparseStencilMatrix< double, 7 > | 
| The type of a matrix used to represent a three-dimensional Laplacian operator.  More... | |
Functions | |
| template<typename TreeType > | |
| TreeType::Ptr | openvdb::OPENVDB_VERSION_NAME::tools::poisson::solve (const TreeType &, math::pcg::State &, bool staggered=false) | 
| Solve ∇2x = b for x, where b is a vector comprising the values of all of the active voxels in the input tree.  More... | |
| template<typename TreeType , typename Interrupter > | |
| TreeType::Ptr | openvdb::OPENVDB_VERSION_NAME::tools::poisson::solve (const TreeType &, math::pcg::State &, Interrupter &, bool staggered=false) | 
| Solve ∇2x = b for x, where b is a vector comprising the values of all of the active voxels in the input tree.  More... | |
| template<typename TreeType , typename BoundaryOp , typename Interrupter > | |
| TreeType::Ptr | openvdb::OPENVDB_VERSION_NAME::tools::poisson::solveWithBoundaryConditions (const TreeType &, const BoundaryOp &, math::pcg::State &, Interrupter &, bool staggered=false) | 
| Solve ∇2x = b for x with user-specified boundary conditions, where b is a vector comprising the values of all of the active voxels in the input tree or domain mask if provided.  More... | |
| template<typename PreconditionerType , typename TreeType , typename BoundaryOp , typename Interrupter > | |
| TreeType::Ptr | openvdb::OPENVDB_VERSION_NAME::tools::poisson::solveWithBoundaryConditionsAndPreconditioner (const TreeType &, const BoundaryOp &, math::pcg::State &, Interrupter &, bool staggered=false) | 
| Solve ∇2x = b for x with user-specified boundary conditions, where b is a vector comprising the values of all of the active voxels in the input tree or domain mask if provided.  More... | |
| template<typename PreconditionerType , typename TreeType , typename DomainTreeType , typename BoundaryOp , typename Interrupter > | |
| TreeType::Ptr | openvdb::OPENVDB_VERSION_NAME::tools::poisson::solveWithBoundaryConditionsAndPreconditioner (const TreeType &, const DomainTreeType &, const BoundaryOp &, math::pcg::State &, Interrupter &, bool staggered=false) | 
Low-level functions  | |
| template<typename VIndexTreeType > | |
| void | openvdb::OPENVDB_VERSION_NAME::tools::poisson::populateIndexTree (VIndexTreeType &) | 
| Overwrite each active voxel in the given scalar tree with a sequential index, starting from zero.  More... | |
| template<typename TreeType > | |
| TreeType::template  ValueConverter< VIndex > ::Type::Ptr  | openvdb::OPENVDB_VERSION_NAME::tools::poisson::createIndexTree (const TreeType &) | 
| Iterate over the active voxels of the input tree and for each one assign its index in the iteration sequence to the corresponding voxel of an integer-valued output tree.  More... | |
| template<typename VectorValueType , typename SourceTreeType > | |
| math::pcg::Vector < VectorValueType >::Ptr  | openvdb::OPENVDB_VERSION_NAME::tools::poisson::createVectorFromTree (const SourceTreeType &source, const typename SourceTreeType::template ValueConverter< VIndex >::Type &index) | 
| Return a vector of the active voxel values of the scalar-valued source tree.  More... | |
| template<typename TreeValueType , typename VIndexTreeType , typename VectorValueType > | |
| VIndexTreeType::template  ValueConverter< TreeValueType > ::Type::Ptr  | openvdb::OPENVDB_VERSION_NAME::tools::poisson::createTreeFromVector (const math::pcg::Vector< VectorValueType > &values, const VIndexTreeType &index, const TreeValueType &background) | 
| Return a tree with the same active voxel topology as the index tree but whose voxel values are taken from the the given vector.  More... | |
| template<typename BoolTreeType > | |
| LaplacianMatrix::Ptr | openvdb::OPENVDB_VERSION_NAME::tools::poisson::createISLaplacian (const typename BoolTreeType::template ValueConverter< VIndex >::Type &vectorIndexTree, const BoolTreeType &interiorMask, bool staggered=false) | 
| Generate a sparse matrix of the index-space (Δx = 1) Laplacian operator using second-order finite differences.  More... | |
| template<typename BoolTreeType , typename BoundaryOp > | |
| LaplacianMatrix::Ptr | openvdb::OPENVDB_VERSION_NAME::tools::poisson::createISLaplacianWithBoundaryConditions (const typename BoolTreeType::template ValueConverter< VIndex >::Type &vectorIndexTree, const BoolTreeType &interiorMask, const BoundaryOp &boundaryOp, typename math::pcg::Vector< LaplacianMatrix::ValueType > &source, bool staggered=false) | 
| Generate a sparse matrix of the index-space (Δx = 1) Laplacian operator with user-specified boundary conditions using second-order finite differences.  More... | |
Solve Poisson's equation ∇2x = b for x, where b is a vector comprising the values of all of the active voxels in a grid.
               P = 0
            +--------+ (N,0,N)
           /|       /|
  (0,0,0) +--------+ |
          | |      | | dP/dx = 0
dP/dx = 0 | +------|-+
          |/       |/
 (0,-N,0) +--------+ (N,-N,0)
          dP/dy = -1
 Definition in file PoissonSolver.h.