CubbyFlow Namespace Reference

Namespaces

 Internal
 

Classes

class  AdvectionSolver2
 Abstract based class for 2-D grid-based advection solver. More...
 
class  AdvectionSolver3
 Abstract based class for 3-D grid-based advection solver. More...
 
class  Animation
 Abstract base class for animation-related class. More...
 
class  AnisotropicPointsToImplicit2
 2-D points-to-implicit converter using Anisotropic kernels. More...
 
class  AnisotropicPointsToImplicit3
 3-D points-to-implicit converter using Anisotropic kernels. More...
 
class  APICSolver2
 2-D Affine Particle-in-Cell (APIC) implementation More...
 
class  APICSolver3
 3-D Affine Particle-in-Cell (APIC) implementation More...
 
class  Array
 Generic N-dimensional array class interface. More...
 
class  Array< T, 1 >
 1-D array class. More...
 
class  Array< T, 2 >
 2-D array class. More...
 
class  Array< T, 3 >
 3-D array class. More...
 
class  ArrayAccessor
 Generic N-dimensional array accessor class interface. More...
 
class  ArrayAccessor< T, 1 >
 1-D array accessor class. More...
 
class  ArrayAccessor< T, 2 >
 2-D array accessor class. More...
 
class  ArrayAccessor< T, 3 >
 3-D array accessor class. More...
 
class  BccLatticePointGenerator
 Body-centered lattice points generator. More...
 
struct  BLAS
 Generic BLAS operator wrapper class. More...
 
class  BoundingBox
 Generic N-D axis-aligned bounding box class. More...
 
class  BoundingBox< T, 2 >
 2-D axis-aligned bounding box class. More...
 
class  BoundingBox< T, 3 >
 3-D axis-aligned bounding box class. More...
 
struct  BoundingBoxRayIntersection2
 2-D box-ray intersection result. More...
 
struct  BoundingBoxRayIntersection3
 3-D box-ray intersection result. More...
 
class  Box2
 2-D box geometry. More...
 
class  Box3
 3-D box geometry. More...
 
class  BVH2
 Bounding Volume Hierarchy (BVH) in 2D. More...
 
class  BVH3
 Bounding Volume Hierarchy (BVH) in 3D. More...
 
class  CellCenteredScalarGrid2
 2-D Cell-centered scalar grid structure. More...
 
class  CellCenteredScalarGrid3
 3-D Cell-centered scalar grid structure. More...
 
class  CellCenteredVectorGrid2
 2-D Cell-centered vector grid structure. More...
 
class  CellCenteredVectorGrid3
 3-D Cell-centered vector grid structure. More...
 
struct  ClosestIntersectionQueryResult2
 Closest intersection query result. More...
 
struct  ClosestIntersectionQueryResult3
 Closest intersection query result. More...
 
class  Collider2
 Abstract base class for generic collider object. More...
 
class  Collider3
 Abstract base class for generic collider object. More...
 
class  ColliderSet2
 Collection of 2-D colliders. More...
 
class  ColliderSet3
 Collection of 3-D colliders. More...
 
class  CollocatedVectorGrid2
 Abstract base class for 2-D collocated vector grid structure. More...
 
class  CollocatedVectorGrid3
 Abstract base class for 3-D collocated vector grid structure. More...
 
class  ConstantScalarField2
 2-D constant scalar field. More...
 
class  ConstantScalarField3
 3-D constant scalar field. More...
 
class  ConstantVectorField2
 2-D constant vector field. More...
 
class  ConstantVectorField3
 3-D constant vector field. More...
 
class  ConstArrayAccessor
 Generic N-dimensional read-only array accessor class interface. More...
 
class  ConstArrayAccessor< T, 1 >
 1-D read-only array accessor class. More...
 
class  ConstArrayAccessor< T, 2 >
 2-D read-only array accessor class. More...
 
class  ConstArrayAccessor< T, 3 >
 3-D read-only array accessor class. More...
 
class  CubicArraySampler
 Generic N-D cubic array sampler class. More...
 
class  CubicArraySampler< T, R, 1 >
 1-D cubic array sampler class. More...
 
class  CubicArraySampler< T, R, 2 >
 2-D cubic array sampler class. More...
 
class  CubicArraySampler< T, R, 3 >
 3-D cubic array sampler class. More...
 
class  CubicSemiLagrangian2
 Implementation of 2-D cubic semi-Lagrangian advection solver. More...
 
class  CubicSemiLagrangian3
 Implementation of 3-D cubic semi-Lagrangian advection solver. More...
 
class  CustomImplicitSurface2
 Custom 2-D implicit surface using arbitrary function. More...
 
class  CustomImplicitSurface3
 Custom 3-D implicit surface using arbitrary function. More...
 
class  CustomScalarField2
 2-D scalar field with custom field function. More...
 
class  CustomScalarField3
 3-D scalar field with custom field function. More...
 
class  CustomVectorField2
 2-D vector field with custom field function. More...
 
class  CustomVectorField3
 3-D vector field with custom field function. More...
 
class  Cylinder3
 3-D cylinder geometry. More...
 
class  ENOLevelSetSolver2
 Two-dimensional third-order ENO-based iterative level set solver. More...
 
class  ENOLevelSetSolver3
 Three-dimensional third-order ENO-based iterative level set solver. More...
 
class  FaceCenteredGrid2
 2-D face-centered (a.k.a MAC or staggered) grid. More...
 
class  FaceCenteredGrid3
 3-D face-centered (a.k.a MAC or staggered) grid. More...
 
class  Factory
 
struct  FDMBLAS2
 BLAS operator wrapper for 2-D finite differencing. More...
 
struct  FDMBLAS3
 BLAS operator wrapper for 3-D finite differencing. More...
 
class  FDMCGSolver2
 2-D finite difference-type linear system solver using conjugate gradient. More...
 
class  FDMCGSolver3
 3-D finite difference-type linear system solver using conjugate gradient. More...
 
struct  FDMCompressedBLAS2
 BLAS operator wrapper for compressed 2-D finite differencing. More...
 
struct  FDMCompressedBLAS3
 BLAS operator wrapper for compressed 3-D finite differencing. More...
 
struct  FDMCompressedLinearSystem2
 Compressed linear system (Ax=b) for 2-D finite differencing. More...
 
struct  FDMCompressedLinearSystem3
 Compressed linear system (Ax=b) for 3-D finite differencing. More...
 
class  FDMGaussSeidelSolver2
 2-D finite difference-type linear system solver using Gauss-Seidel method. More...
 
class  FDMGaussSeidelSolver3
 3-D finite difference-type linear system solver using Gauss-Seidel method. More...
 
class  FDMICCGSolver2
 2-D finite difference-type linear system solver using incomplete Cholesky conjugate gradient (ICCG). More...
 
class  FDMICCGSolver3
 3-D finite difference-type linear system solver using incomplete Cholesky conjugate gradient (ICCG). More...
 
class  FDMJacobiSolver2
 2-D finite difference-type linear system solver using Jacobi method. More...
 
class  FDMJacobiSolver3
 3-D finite difference-type linear system solver using Jacobi method. More...
 
struct  FDMLinearSystem2
 Linear system (Ax=b) for 2-D finite differencing. More...
 
struct  FDMLinearSystem3
 Linear system (Ax=b) for 3-D finite differencing. More...
 
class  FDMLinearSystemSolver2
 Abstract base class for 2-D finite difference-type linear system solver. More...
 
class  FDMLinearSystemSolver3
 Abstract base class for 3-D finite difference-type linear system solver. More...
 
struct  FDMMatrixRow2
 The row of FDMMatrix2 where row corresponds to (i, j) grid point. More...
 
struct  FDMMatrixRow3
 The row of FDMMatrix3 where row corresponds to (i, j, k) grid point. More...
 
struct  FDMMGLinearSystem2
 Multigrid-syle 2-D linear system. More...
 
struct  FDMMGLinearSystem3
 Multigrid-syle 3-D linear system. More...
 
class  FDMMGPCGSolver2
 2-D finite difference-type linear system solver using Multigrid Preconditioned conjugate gradient (MGPCG). More...
 
class  FDMMGPCGSolver3
 3-D finite difference-type linear system solver using Multigrid Preconditioned conjugate gradient (MGPCG). More...
 
class  FDMMGSolver2
 2-D finite difference-type linear system solver using Multigrid. More...
 
class  FDMMGSolver3
 3-D finite difference-type linear system solver using Multigrid. More...
 
class  FDMMGUtils2
 Multigrid utilities for 2-D FDM system. More...
 
class  FDMMGUtils3
 Multigrid utilities for 2-D FDM system. More...
 
class  Field2
 Abstract base class for 2-D fields. More...
 
class  Field3
 Abstract base class for 3-D fields. More...
 
class  FLIPSolver2
 2-D Fluid-Implicit Particle (FLIP) implementation. More...
 
class  FLIPSolver3
 3-D Fluid-Implicit Particle (FLIP) implementation. More...
 
class  FMMLevelSetSolver2
 Two-dimensional fast marching method (FMM) implementation. More...
 
class  FMMLevelSetSolver3
 Three-dimensional fast marching method (FMM) implementation. More...
 
struct  Frame
 Representation of an animation frame. More...
 
class  Grid2
 Abstract base class for 2-D cartesian grid structure. More...
 
class  Grid3
 Abstract base class for 3-D cartesian grid structure. More...
 
class  GridBackwardEulerDiffusionSolver2
 2-D grid-based backward Euler diffusion solver. More...
 
class  GridBackwardEulerDiffusionSolver3
 3-D grid-based backward Euler diffusion solver. More...
 
class  GridBlockedBoundaryConditionSolver2
 Blocked 2-D boundary condition solver for grids. More...
 
class  GridBlockedBoundaryConditionSolver3
 Blocked 3-D boundary condition solver for grids. More...
 
class  GridBoundaryConditionSolver2
 Abstract base class for 2-D boundary condition solver for grids. More...
 
class  GridBoundaryConditionSolver3
 Abstract base class for 3-D boundary condition solver for grids. More...
 
class  GridDiffusionSolver2
 Abstract base class for 2-D grid-based diffusion equation solver. More...
 
class  GridDiffusionSolver3
 Abstract base class for 3-D grid-based diffusion equation solver. More...
 
class  GridEmitter2
 Abstract base class for 2-D grid-based emitters. More...
 
class  GridEmitter3
 Abstract base class for 3-D grid-based emitters. More...
 
class  GridEmitterSet2
 2-D grid-based emitter set. More...
 
class  GridEmitterSet3
 3-D grid-based emitter set. More...
 
class  GridFluidSolver2
 Abstract base class for grid-based 2-D fluid solver. More...
 
class  GridFluidSolver3
 Abstract base class for grid-based 3-D fluid solver. More...
 
class  GridFluidSolverBuilderBase2
 Base class for grid-based fluid solver builder. More...
 
class  GridFluidSolverBuilderBase3
 Base class for grid-based fluid solver builder. More...
 
class  GridForwardEulerDiffusionSolver2
 2-D grid-based forward Euler diffusion solver. More...
 
class  GridForwardEulerDiffusionSolver3
 3-D grid-based forward Euler diffusion solver. More...
 
class  GridFractionalBoundaryConditionSolver2
 Fractional 2-D boundary condition solver for grids. More...
 
class  GridFractionalBoundaryConditionSolver3
 Fractional 3-D boundary condition solver for grids. More...
 
class  GridFractionalSinglePhasePressureSolver2
 2-D fractional single-phase pressure solver. More...
 
class  GridFractionalSinglePhasePressureSolver3
 3-D fractional single-phase pressure solver. More...
 
class  GridPointGenerator2
 2-D regular-grid point generator. More...
 
class  GridPointGenerator3
 3-D regular-grid point generator. More...
 
class  GridPressureSolver2
 Abstract base class for 2-D grid-based pressure solver. More...
 
class  GridPressureSolver3
 Abstract base class for 2-D grid-based pressure solver. More...
 
class  GridSinglePhasePressureSolver2
 2-D single-phase pressure solver. More...
 
class  GridSinglePhasePressureSolver3
 3-D single-phase pressure solver. More...
 
class  GridSmokeSolver2
 2-D grid-based smoke solver. More...
 
class  GridSmokeSolver3
 3-D grid-based smoke solver. More...
 
class  GridSystemData2
 2-D grid system data. More...
 
class  GridSystemData3
 3-D grid system data. More...
 
class  ImplicitSurface2
 Abstract base class for 2-D implicit surface. More...
 
class  ImplicitSurface3
 Abstract base class for 3-D implicit surface. More...
 
class  ImplicitSurfaceSet2
 2-D implicit surface set. More...
 
class  ImplicitSurfaceSet3
 3-D implicit surface set. More...
 
class  ImplicitTriangleMesh3
 TriangleMesh3 to ImplicitSurface3 converter. More...
 
class  IntersectionQueryEngine2
 Abstract base class for 2-D intersection test query engine. More...
 
class  IntersectionQueryEngine3
 Abstract base class for 3-D intersection test query engine. More...
 
class  IterativeLevelSetSolver2
 Abstract base class for 2-D PDE-based iterative level set solver. More...
 
class  IterativeLevelSetSolver3
 Abstract base class for 3-D PDE-based iterative level set solver. More...
 
class  KdTree
 Generic k-d tree structure. More...
 
class  LevelSetLiquidSolver2
 Level set based 2-D liquid solver. More...
 
class  LevelSetLiquidSolver3
 Level set based 3-D liquid solver. More...
 
class  LevelSetSolver2
 Abstract base class for 2-D level set solver. More...
 
class  LevelSetSolver3
 Abstract base class for 3-D level set solver. More...
 
class  LinearArraySampler
 Generic N-D linear array sampler class. More...
 
class  LinearArraySampler< T, R, 1 >
 1-D linear array sampler class. More...
 
class  LinearArraySampler< T, R, 2 >
 2-D linear array sampler class. More...
 
class  LinearArraySampler< T, R, 3 >
 3-D linear array sampler class. More...
 
class  ListQueryEngine2
 Ad-hoc list-based 2-D intersection/nearest-neighbor query engine. More...
 
class  ListQueryEngine3
 Ad-hoc list-based 3-D intersection/nearest-neighbor query engine. More...
 
class  Logger
 Super simple logger implementation. More...
 
class  Logging
 Helper class for logging. More...
 
class  Matrix
 Static-sized M x N matrix class. More...
 
class  Matrix< T, 2, 2 >
 2-D matrix class. More...
 
class  Matrix< T, 3, 3 >
 3-D matrix class. More...
 
class  Matrix< T, 4, 4 >
 4-D matrix class. More...
 
class  MatrixBinaryOp
 Matrix expression for binary operation. More...
 
class  MatrixConstant
 Constant matrix expression. More...
 
class  MatrixCSR
 Compressed Sparse Row (CSR) matrix class. More...
 
class  MatrixCSRMatrixMul
 Matrix expression for CSR matrix-matrix multiplication. More...
 
class  MatrixCSRVectorMul
 Vector expression for CSR matrix-vector multiplication. More...
 
class  MatrixDiagonal
 Diagonal matrix expression. More...
 
class  MatrixExpression
 Base class for matrix expression. More...
 
class  MatrixIdentity
 Identity matrix expression. More...
 
class  MatrixMul
 Matrix expression for matrix-matrix multiplication. More...
 
class  MatrixMxN
 M x N matrix class. More...
 
class  MatrixScalarBinaryOp
 Matrix expression for matrix-scalar binary operation. More...
 
class  MatrixTriangular
 Triangular matrix expression. More...
 
class  MatrixUnaryOp
 Matrix expression for unary operation. More...
 
class  MatrixVectorMul
 Vector expression for matrix-vector multiplication. More...
 
struct  MGMatrix
 Multi-grid matrix wrapper. More...
 
struct  MGParameters
 Multi-grid input parameter set. More...
 
struct  MGResult
 Multi-grid result type. More...
 
struct  MGVector
 Multi-grid vector wrapper. More...
 
class  NearestArraySampler
 Generic N-D nearest array sampler class. More...
 
class  NearestArraySampler< T, R, 1 >
 1-D nearest array sampler class. More...
 
class  NearestArraySampler< T, R, 2 >
 2-D nearest array sampler class. More...
 
class  NearestArraySampler< T, R, 3 >
 3-D nearest array sampler class. More...
 
class  NearestNeighborQueryEngine2
 Abstract base class for 2-D nearest neighbor query engine. More...
 
class  NearestNeighborQueryEngine3
 Abstract base class for 3-D nearest neighbor query engine. More...
 
struct  NearestNeighborQueryResult2
 Nearest neighbor query result. More...
 
struct  NearestNeighborQueryResult3
 Nearest neighbor query result. More...
 
struct  NullCGPreconditioner
 No-op pre-conditioner for conjugate gradient. More...
 
class  Octree
 Generic octree data structure. More...
 
class  ParticleEmitter2
 Abstract base class for 2-D particle emitter. More...
 
class  ParticleEmitter3
 Abstract base class for 3-D particle emitter. More...
 
class  ParticleEmitterSet2
 2-D particle-based emitter set. More...
 
class  ParticleEmitterSet3
 3-D particle-based emitter set. More...
 
class  ParticleSystemData2
 2-D particle system data. More...
 
class  ParticleSystemData3
 3-D particle system data. More...
 
class  ParticleSystemSolver2
 Basic 2-D particle system solver. More...
 
class  ParticleSystemSolver3
 Basic 3-D particle system solver. More...
 
class  ParticleSystemSolverBuilderBase2
 Base class for particle-based solver builder. More...
 
class  ParticleSystemSolverBuilderBase3
 Base class for particle-based solver builder. More...
 
class  PCISPHSolver2
 2-D PCISPH solver. More...
 
class  PCISPHSolver3
 3-D PCISPH solver. More...
 
class  PhysicsAnimation
 Abstract base class for physics-based animation. More...
 
class  PICSolver2
 2-D Particle-in-Cell (PIC) implementation. More...
 
class  PICSolver3
 3-D Particle-in-Cell (PIC) implementation. More...
 
class  Plane2
 2-D plane geometry. More...
 
class  Plane3
 3-D plane geometry. More...
 
class  Point
 Generic N-D point class. More...
 
class  Point< T, 2 >
 2-D point class. More...
 
class  Point< T, 3 >
 3-D point class. More...
 
class  PointGenerator2
 Abstract base class for 2-D point generator. More...
 
class  PointGenerator3
 Abstract base class for 3-D point generator. More...
 
class  PointHashGridSearcher2
 Hash grid-based 2-D point searcher. More...
 
class  PointHashGridSearcher3
 Hash grid-based 3-D point searcher. More...
 
class  PointKdTreeSearcher2
 KdTree-based 2-D point searcher. More...
 
class  PointKdTreeSearcher3
 KdTree-based 3-D point searcher. More...
 
class  PointNeighborSearcher2
 Abstract base class for 2-D neighbor point searcher. More...
 
class  PointNeighborSearcher3
 Abstract base class for 3-D neighbor point searcher. More...
 
class  PointNeighborSearcherBuilder2
 Abstract base class for 2-D point neighbor searcher builders. More...
 
class  PointNeighborSearcherBuilder3
 Abstract base class for 3-D point neighbor searcher builders. More...
 
class  PointParallelHashGridSearcher2
 Parallel version of hash grid-based 2-D point searcher. More...
 
class  PointParallelHashGridSearcher3
 Parallel version of hash grid-based 3-D point searcher. More...
 
class  PointParticleEmitter2
 2-D point particle emitter. More...
 
class  PointParticleEmitter3
 3-D point particle emitter. More...
 
class  PointSimpleListSearcher2
 Simple ad-hoc 2-D point searcher. More...
 
class  PointSimpleListSearcher3
 Simple ad-hoc 3-D point searcher. More...
 
class  PointsToImplicit2
 Abstract base class for 2-D points-to-implicit converters. More...
 
class  PointsToImplicit3
 Abstract base class for 3-D points-to-implicit converters. More...
 
class  Quadtree
 Generic quadtree data structure. More...
 
class  Quaternion
 Quaternion class defined as q = w + xi + yj + zk. More...
 
class  Ray
 Class for ray. More...
 
class  Ray< T, 2 >
 Class for 2-D ray. More...
 
class  Ray< T, 3 >
 Class for 3-D ray. More...
 
struct  RDivides
 Reverse divides operator. More...
 
class  RigidBodyCollider2
 2-D rigid body collider class. More...
 
class  RigidBodyCollider3
 3-D rigid body collider class. More...
 
struct  RMinus
 Reverse minus operator. More...
 
class  ScalarField2
 Abstract base class for 2-D scalar field. More...
 
class  ScalarField3
 Abstract base class for 3-D scalar field. More...
 
class  ScalarGrid2
 Abstract base class for 2-D scalar grid structure. More...
 
class  ScalarGrid3
 Abstract base class for 3-D scalar grid structure. More...
 
class  ScalarGridBuilder2
 Abstract base class for 2-D scalar grid builder. More...
 
class  ScalarGridBuilder3
 Abstract base class for 3-D scalar grid builder. More...
 
struct  ScalarType
 Returns the type of the value itself. More...
 
struct  ScalarType< Vector< T, 2 > >
 Returns the type of the value itself. More...
 
struct  ScalarType< Vector< T, 3 > >
 Returns the type of the value itself. More...
 
struct  ScalarType< Vector< T, 4 > >
 Returns the type of the value itself. More...
 
struct  ScalarType< Vector< T, N > >
 Returns the type of the value. More...
 
class  SemiLagrangian2
 Implementation of 2-D semi-Lagrangian advection solver. More...
 
class  SemiLagrangian3
 Implementation of 3-D semi-Lagrangian advection solver. More...
 
class  Serializable
 Abstract base class for any serializable class. More...
 
class  Sphere2
 2-D sphere geometry. More...
 
class  Sphere3
 3-D sphere geometry. More...
 
class  SphericalPointsToImplicit2
 2-D points-to-implicit converter based on simple sphere model. More...
 
class  SphericalPointsToImplicit3
 3-D points-to-implicit converter based on simple sphere model. More...
 
class  SPHPointsToImplicit2
 2-D points-to-implicit converter based on standard SPH kernel. More...
 
class  SPHPointsToImplicit3
 3-D points-to-implicit converter based on standard SPH kernel. More...
 
class  SPHSolver2
 2-D SPH solver. More...
 
class  SPHSolver3
 3-D SPH solver. More...
 
class  SPHSolverBuilderBase2
 Base class for SPH-based fluid solver builder. More...
 
class  SPHSolverBuilderBase3
 Base class for SPH-based fluid solver builder. More...
 
struct  SPHSpikyKernel2
 Spiky 2-D SPH kernel function object. More...
 
struct  SPHSpikyKernel3
 Spiky 3-D SPH kernel function object. More...
 
struct  SPHStdKernel2
 Standard 2-D SPH kernel function object. More...
 
struct  SPHStdKernel3
 Standard 3-D SPH kernel function object. More...
 
class  SPHSystemData2
 2-D SPH particle system data. More...
 
class  SPHSystemData3
 3-D SPH particle system data. More...
 
class  Surface2
 Abstract base class for 2-D surface. More...
 
class  Surface3
 Abstract base class for 3-D surface. More...
 
class  SurfaceBuilderBase2
 Base class for 2-D surface builder. More...
 
class  SurfaceBuilderBase3
 Base class for 3-D surface builder. More...
 
struct  SurfaceRayIntersection2
 Structure that represents ray-surface intersection point. More...
 
struct  SurfaceRayIntersection3
 Structure that represents ray-surface intersection point. More...
 
class  SurfaceSet2
 2-D surface set. More...
 
class  SurfaceSet3
 3-D surface set. More...
 
class  SurfaceToImplicit2
 2-D implicit surface wrapper for generic Surface2 instance. More...
 
class  SurfaceToImplicit3
 3-D implicit surface wrapper for generic Surface3 instance. More...
 
class  Timer
 Simple timer class. More...
 
class  Transform2
 Represents 2-D rigid body transform. More...
 
class  Transform3
 Represents 3-D rigid body transform. More...
 
class  Triangle3
 3-D triangle geometry. More...
 
class  TriangleMesh3
 3-D triangle mesh geometry. More...
 
class  TrianglePointGenerator
 Right triangle point generator. More...
 
struct  TypeCast
 Type casting operator. More...
 
class  UpwindLevelSetSolver2
 
class  UpwindLevelSetSolver3
 Three-dimensional first-order upwind-based iterative level set solver. More...
 
class  Vector
 Generic statically-sized N-D vector class. More...
 
class  Vector< T, 2 >
 2-D vector class. More...
 
class  Vector< T, 3 >
 3-D vector class. More...
 
class  Vector< T, 4 >
 4-D vector class. More...
 
class  VectorBinaryOp
 Vector expression for binary operation. More...
 
class  VectorExpression
 Base class for vector expression. More...
 
class  VectorField2
 Abstract base class for 2-D vector field. More...
 
class  VectorField3
 Abstract base class for 3-D vector field. More...
 
class  VectorGrid2
 Abstract base class for 2-D vector grid structure. More...
 
class  VectorGrid3
 Abstract base class for 3-D vector grid structure. More...
 
class  VectorGridBuilder2
 Abstract base class for 2-D vector grid builder. More...
 
class  VectorGridBuilder3
 Abstract base class for 3-D vector grid builder. More...
 
class  VectorN
 General purpose dynamically-sizedN-D vector class. More...
 
class  VectorScalarBinaryOp
 Vector expression for matrix-scalar binary operation. More...
 
class  VectorUnaryOp
 Vector expression for unary operation. More...
 
class  VertexCenteredScalarGrid2
 2-D Vertex-centered scalar grid structure. More...
 
class  VertexCenteredScalarGrid3
 3-D Vertex-centered scalar grid structure. More...
 
class  VertexCenteredVectorGrid2
 2-D Vertex-centered vector grid structure. More...
 
class  VertexCenteredVectorGrid3
 3-D Vertex-centered vector grid structure. More...
 
class  VolumeGridEmitter2
 2-D grid-based volumetric emitter. More...
 
class  VolumeGridEmitter3
 3-D grid-based volumetric emitter. More...
 
class  VolumeParticleEmitter2
 2-D volumetric particle emitter. More...
 
class  VolumeParticleEmitter3
 3-D volumetric particle emitter. More...
 
class  ZhuBridsonPointsToImplicit2
 2-D points-to-implicit converter based on Zhu and Bridson's method. More...
 
class  ZhuBridsonPointsToImplicit3
 3-D points-to-implicit converter based on Zhu and Bridson's method. More...
 

Typedefs

using AnimationPtr = std::shared_ptr< Animation >
 Shared pointer for the Animation type. More...
 
using PhysicsAnimationPtr = std::shared_ptr< PhysicsAnimation >
 
template<typename T >
using Array1 = Array< T, 1 >
 Type alias for 1-D array. More...
 
template<typename T >
using Array2 = Array< T, 2 >
 Type alias for 2-D array. More...
 
template<typename T >
using Array3 = Array< T, 3 >
 Type alias for 3-D array. More...
 
template<typename T >
using ArrayAccessor1 = ArrayAccessor< T, 1 >
 Type alias for 1-D array accessor. More...
 
template<typename T >
using ConstArrayAccessor1 = ConstArrayAccessor< T, 1 >
 Type alias for 1-D const array accessor. More...
 
template<typename T >
using ArrayAccessor2 = ArrayAccessor< T, 2 >
 Type alias for 2-D array accessor. More...
 
template<typename T >
using ConstArrayAccessor2 = ConstArrayAccessor< T, 2 >
 Type alias for 2-D const array accessor. More...
 
template<typename T >
using ArrayAccessor3 = ArrayAccessor< T, 3 >
 Type alias for 3-D array accessor. More...
 
template<typename T >
using ConstArrayAccessor3 = ConstArrayAccessor< T, 3 >
 Type alias for 3-D const array accessor. More...
 
template<typename T , typename R >
using NearestArraySampler1 = NearestArraySampler< T, R, 1 >
 Type alias for 1-D nearest array sampler. More...
 
template<typename T , typename R >
using LinearArraySampler1 = LinearArraySampler< T, R, 1 >
 Type alias for 1-D linear array sampler. More...
 
template<typename T , typename R >
using CubicArraySampler1 = CubicArraySampler< T, R, 1 >
 Type alias for 1-D cubic array sampler. More...
 
template<typename T , typename R >
using NearestArraySampler2 = NearestArraySampler< T, R, 2 >
 Type alias for 2-D nearest array sampler. More...
 
template<typename T , typename R >
using LinearArraySampler2 = LinearArraySampler< T, R, 2 >
 Type alias for 2-D linear array sampler. More...
 
template<typename T , typename R >
using CubicArraySampler2 = CubicArraySampler< T, R, 2 >
 Type alias for 2-D cubic array sampler. More...
 
template<typename T , typename R >
using NearestArraySampler3 = NearestArraySampler< T, R, 3 >
 Type alias for 3-D nearest array sampler. More...
 
template<typename T , typename R >
using LinearArraySampler3 = LinearArraySampler< T, R, 3 >
 Type alias for 3-D linear array sampler. More...
 
template<typename T , typename R >
using CubicArraySampler3 = CubicArraySampler< T, R, 3 >
 Type alias for 3-D cubic array sampler. More...
 
template<typename T >
using BoundingBox2 = BoundingBox< T, 2 >
 Type alias for 2-D BoundingBox. More...
 
using BoundingBox2F = BoundingBox2< float >
 Float-type 2-D BoundingBox. More...
 
using BoundingBox2D = BoundingBox2< double >
 Double-type 2-D BoundingBox. More...
 
using BoundingBoxRayIntersection2F = BoundingBoxRayIntersection2< float >
 Float-type 2-D box-ray intersection result. More...
 
using BoundingBoxRayIntersection2D = BoundingBoxRayIntersection2< double >
 Double-type 2-D box-ray intersection result. More...
 
template<typename T >
using BoundingBox3 = BoundingBox< T, 3 >
 Type alias for 3-D BoundingBox. More...
 
using BoundingBox3F = BoundingBox3< float >
 Float-type 3-D BoundingBox. More...
 
using BoundingBox3D = BoundingBox3< double >
 Double-type 3-D BoundingBox. More...
 
using BoundingBoxRayIntersection3F = BoundingBoxRayIntersection3< float >
 Float-type 3-D box-ray intersection result. More...
 
using BoundingBoxRayIntersection3D = BoundingBoxRayIntersection3< double >
 Double-type 3-D box-ray intersection result. More...
 
using Collider2Ptr = std::shared_ptr< Collider2 >
 Shared pointer type for the Collider2. More...
 
using Collider3Ptr = std::shared_ptr< Collider3 >
 Shared pointer type for the Collider3. More...
 
typedef std::shared_ptr< ColliderSet2ColliderSet2Ptr
 Shared pointer for the ColliderSet2 type. More...
 
using ColliderSet3Ptr = std::shared_ptr< ColliderSet3 >
 Shared pointer for the ColliderSet3 type. More...
 
using RigidBodyCollider2Ptr = std::shared_ptr< RigidBodyCollider2 >
 Shared pointer for the RigidBodyCollider2 type. More...
 
using RigidBodyCollider3Ptr = std::shared_ptr< RigidBodyCollider3 >
 Shared pointer for the RigidBodyCollider3 type. More...
 
using GridEmitter2Ptr = std::shared_ptr< GridEmitter2 >
 Shared pointer type for the GridEmitter2. More...
 
using GridEmitter3Ptr = std::shared_ptr< GridEmitter3 >
 Shared pointer type for the GridEmitter3. More...
 
using GridEmitterSet2Ptr = std::shared_ptr< GridEmitterSet2 >
 Shared pointer type for the GridEmitterSet2. More...
 
using GridEmitterSet3Ptr = std::shared_ptr< GridEmitterSet3 >
 Shared pointer type for the GridEmitterSet3. More...
 
using ParticleEmitter2Ptr = std::shared_ptr< ParticleEmitter2 >
 Shared pointer for the ParticleEmitter2 type. More...
 
using ParticleEmitter3Ptr = std::shared_ptr< ParticleEmitter3 >
 Shared pointer for the ParticleEmitter3 type. More...
 
using ParticleEmitterSet2Ptr = std::shared_ptr< ParticleEmitterSet2 >
 Shared pointer type for the ParticleEmitterSet2. More...
 
using ParticleEmitterSet3Ptr = std::shared_ptr< ParticleEmitterSet3 >
 Shared pointer type for the ParticleEmitterSet3. More...
 
using PointParticleEmitter2Ptr = std::shared_ptr< PointParticleEmitter2 >
 Shared pointer for the PointParticleEmitter2 type. More...
 
using PointParticleEmitter3Ptr = std::shared_ptr< PointParticleEmitter3 >
 Shared pointer for the PointParticleEmitter3 type. More...
 
using VolumeGridEmitter2Ptr = std::shared_ptr< VolumeGridEmitter2 >
 Shared pointer type for the VolumeGridEmitter2. More...
 
using VolumeGridEmitter3Ptr = std::shared_ptr< VolumeGridEmitter3 >
 Shared pointer type for the VolumeGridEmitter3. More...
 
using VolumeParticleEmitter2Ptr = std::shared_ptr< VolumeParticleEmitter2 >
 Shared pointer for the VolumeParticleEmitter2 type. More...
 
using VolumeParticleEmitter3Ptr = std::shared_ptr< VolumeParticleEmitter3 >
 Shared pointer for the VolumeParticleEmitter3 type. More...
 
using FDMVector2 = Array2< double >
 Vector type for 2-D finite differencing. More...
 
using FDMMatrix2 = Array2< FDMMatrixRow2 >
 Matrix type for 2-D finite differencing. More...
 
using FDMVector3 = Array3< double >
 Vector type for 3-D finite differencing. More...
 
using FDMMatrix3 = Array3< FDMMatrixRow3 >
 Matrix type for 3-D finite differencing. More...
 
using FDMMGMatrix2 = MGMatrix< FDMBLAS2 >
 Multigrid-style 2-D FDM matrix. More...
 
using FDMMGVector2 = MGVector< FDMBLAS2 >
 Multigrid-style 2-D FDM vector. More...
 
using FDMMGMatrix3 = MGMatrix< FDMBLAS3 >
 Multigrid-style 3-D FDM matrix. More...
 
using FDMMGVector3 = MGVector< FDMBLAS3 >
 Multigrid-style 3-D FDM vector. More...
 
using ConstantScalarField2Ptr = std::shared_ptr< ConstantScalarField2 >
 Shared pointer for the ConstantScalarField2 type. More...
 
using ConstantScalarField3Ptr = std::shared_ptr< ConstantScalarField3 >
 Shared pointer for the ConstantScalarField3 type. More...
 
using ConstantVectorField2Ptr = std::shared_ptr< ConstantVectorField2 >
 Shared pointer for the ConstantVectorField2 type. More...
 
using ConstantVectorField3Ptr = std::shared_ptr< ConstantVectorField3 >
 Shared pointer for the ConstantVectorField3 type. More...
 
using CustomScalarField2Ptr = std::shared_ptr< CustomScalarField2 >
 Shared pointer type for the CustomScalarField2. More...
 
using CustomScalarField3Ptr = std::shared_ptr< CustomScalarField3 >
 Shared pointer type for the CustomScalarField3. More...
 
using CustomVectorField2Ptr = std::shared_ptr< CustomVectorField2 >
 Shared pointer type for the CustomVectorField2. More...
 
using CustomVectorField3Ptr = std::shared_ptr< CustomVectorField3 >
 Shared pointer type for the CustomVectorField3. More...
 
using Field2Ptr = std::shared_ptr< Field2 >
 
using Field3Ptr = std::shared_ptr< Field3 >
 
using ScalarField2Ptr = std::shared_ptr< ScalarField2 >
 Shared pointer for the ScalarField2 type. More...
 
using ScalarField3Ptr = std::shared_ptr< ScalarField3 >
 Shared pointer for the ScalarField3 type. More...
 
using VectorField2Ptr = std::shared_ptr< VectorField2 >
 Shared pointer for the VectorField2 type. More...
 
using VectorField3Ptr = std::shared_ptr< VectorField3 >
 Shared pointer for the VectorField3 type. More...
 
using Box2Ptr = std::shared_ptr< Box2 >
 Shared pointer type for the Box2. More...
 
using Box3Ptr = std::shared_ptr< Box3 >
 Shared pointer type for the Box3. More...
 
using Cylinder3Ptr = std::shared_ptr< Cylinder3 >
 Shared pointer type for the Cylinder3. More...
 
using ImplicitTriangleMesh3Ptr = std::shared_ptr< ImplicitTriangleMesh3 >
 Shared pointer for the ImplicitTriangleMesh3 type. More...
 
using Plane2Ptr = std::shared_ptr< Plane2 >
 Shared pointer for the Plane2 type. More...
 
using Plane3Ptr = std::shared_ptr< Plane3 >
 Shared pointer for the Plane3 type. More...
 
using Sphere2Ptr = std::shared_ptr< Sphere2 >
 Shared pointer for the Sphere2 type. More...
 
using Sphere3Ptr = std::shared_ptr< Sphere3 >
 Shared pointer for the Sphere3 type. More...
 
using Triangle3Ptr = std::shared_ptr< Triangle3 >
 Shared pointer for the Triangle3 type. More...
 
using TriangleMesh3Ptr = std::shared_ptr< TriangleMesh3 >
 Shared pointer for the TriangleMesh3 type. More...
 
using CellCenteredScalarGrid2Ptr = std::shared_ptr< CellCenteredScalarGrid2 >
 Shared pointer for the CellCenteredScalarGrid2 type. More...
 
using CellCenteredScalarGrid3Ptr = std::shared_ptr< CellCenteredScalarGrid3 >
 Shared pointer for the CellCenteredScalarGrid3 type. More...
 
using CellCenteredVectorGrid2Ptr = std::shared_ptr< CellCenteredVectorGrid2 >
 Shared pointer for the CellCenteredVectorGrid2 type. More...
 
using CellCenteredVectorGrid3Ptr = std::shared_ptr< CellCenteredVectorGrid3 >
 Shared pointer for the CellCenteredVectorGrid3 type. More...
 
using CollocatedVectorGrid2Ptr = std::shared_ptr< CollocatedVectorGrid2 >
 Shared pointer for the CollocatedVectorGrid2 type. More...
 
using CollocatedVectorGrid3Ptr = std::shared_ptr< CollocatedVectorGrid3 >
 Shared pointer for the CollocatedVectorGrid3 type. More...
 
using FaceCenteredGrid2Ptr = std::shared_ptr< FaceCenteredGrid2 >
 Shared pointer type for the FaceCenteredGrid2. More...
 
using FaceCenteredGrid3Ptr = std::shared_ptr< FaceCenteredGrid3 >
 Shared pointer type for the FaceCenteredGrid3. More...
 
using Grid2Ptr = std::shared_ptr< Grid2 >
 
using Grid3Ptr = std::shared_ptr< Grid3 >
 
using GridSystemData2Ptr = std::shared_ptr< GridSystemData2 >
 Shared pointer type of GridSystemData2. More...
 
using GridSystemData3Ptr = std::shared_ptr< GridSystemData3 >
 Shared pointer type of GridSystemData3. More...
 
using ScalarGrid2Ptr = std::shared_ptr< ScalarGrid2 >
 Shared pointer for the ScalarGrid2 type. More...
 
using ScalarGridBuilder2Ptr = std::shared_ptr< ScalarGridBuilder2 >
 Shared pointer for the ScalarGridBuilder2 type. More...
 
using ScalarGrid3Ptr = std::shared_ptr< ScalarGrid3 >
 Shared pointer for the ScalarGrid3 type. More...
 
using ScalarGridBuilder3Ptr = std::shared_ptr< ScalarGridBuilder3 >
 Shared pointer for the ScalarGridBuilder3 type. More...
 
using VectorGrid2Ptr = std::shared_ptr< VectorGrid2 >
 Shared pointer for the VectorGrid2 type. More...
 
using VectorGridBuilder2Ptr = std::shared_ptr< VectorGridBuilder2 >
 Shared pointer for the VectorGridBuilder2 type. More...
 
using VectorGrid3Ptr = std::shared_ptr< VectorGrid3 >
 Shared pointer for the VectorGrid3 type. More...
 
using VectorGridBuilder3Ptr = std::shared_ptr< VectorGridBuilder3 >
 Shared pointer for the VectorGridBuilder3 type. More...
 
using VertexCenteredScalarGrid2Ptr = std::shared_ptr< VertexCenteredScalarGrid2 >
 Shared pointer for the VertexCenteredScalarGrid2 type. More...
 
using VertexCenteredScalarGrid3Ptr = std::shared_ptr< VertexCenteredScalarGrid3 >
 Shared pointer for the VertexCenteredScalarGrid3 type. More...
 
using VertexCenteredVectorGrid2Ptr = std::shared_ptr< VertexCenteredVectorGrid2 >
 Shared pointer for the VertexCenteredVectorGrid2 type. More...
 
using VertexCenteredVectorGrid3Ptr = std::shared_ptr< VertexCenteredVectorGrid3 >
 Shared pointer for the VertexCenteredVectorGrid3 type. More...
 
using QuaternionF = Quaternion< float >
 Float-type quaternion. More...
 
using QuaternionD = Quaternion< double >
 Double-type quaternion. More...
 
template<typename T >
using Matrix2x2 = Matrix< T, 2, 2 >
 Type alias for 2x2 matrix. More...
 
using Matrix2x2F = Matrix2x2< float >
 Float-type 2x2 matrix. More...
 
using Matrix2x2D = Matrix2x2< double >
 Double-type 2x2 matrix. More...
 
template<typename T >
using Matrix3x3 = Matrix< T, 3, 3 >
 Type alias for 3x3 matrix. More...
 
using Matrix3x3F = Matrix3x3< float >
 Float-type 3x3 matrix. More...
 
using Matrix3x3D = Matrix3x3< double >
 Double-type 3x3 matrix. More...
 
template<typename T >
using Matrix4x4 = Matrix< T, 4, 4 >
 Type alias for 4x4 matrix. More...
 
using Matrix4x4F = Matrix4x4< float >
 Float-type 4x4 matrix. More...
 
using Matrix4x4D = Matrix4x4< double >
 Double-type 4x4 matrix. More...
 
using MatrixCSRF = MatrixCSR< float >
 Float-type CSR matrix. More...
 
using MatrixCSRD = MatrixCSR< double >
 Double-type CSR matrix. More...
 
template<typename T , typename E , typename U >
using MatrixTypeCast = MatrixUnaryOp< T, E, TypeCast< U, T > >
 Matrix expression for type casting. More...
 
template<typename T , typename E1 , typename E2 >
using MatrixAdd = MatrixBinaryOp< T, E1, E2, std::plus< T > >
 Matrix-matrix addition expression. More...
 
template<typename T , typename E >
using MatrixScalarAdd = MatrixScalarBinaryOp< T, E, std::plus< T > >
 Matrix-scalar addition expression. More...
 
template<typename T , typename E1 , typename E2 >
using MatrixSub = MatrixBinaryOp< T, E1, E2, std::minus< T > >
 Matrix-matrix subtraction expression. More...
 
template<typename T , typename E >
using MatrixScalarSub = MatrixScalarBinaryOp< T, E, std::minus< T > >
 Matrix-scalar subtraction expression. More...
 
template<typename T , typename E >
using MatrixScalarRSub = MatrixScalarBinaryOp< T, E, RMinus< T > >
 Matrix-matrix subtraction expression with inversed order. More...
 
template<typename T , typename E >
using MatrixScalarMul = MatrixScalarBinaryOp< T, E, std::multiplies< T > >
 Matrix-scalar multiplication expression. More...
 
template<typename T , typename E >
using MatrixScalarDiv = MatrixScalarBinaryOp< T, E, std::divides< T > >
 Matrix-scalar division expression. More...
 
template<typename T , typename E >
using MatrixScalarRDiv = MatrixScalarBinaryOp< T, E, RDivides< T > >
 Matrix-scalar division expression with inversed order. More...
 
using MatrixMxNF = MatrixMxN< float >
 Float-type M x N matrix. More...
 
using MatrixMxND = MatrixMxN< double >
 Double-type M x N matrix. More...
 
using ParticleSystemData2Ptr = std::shared_ptr< ParticleSystemData2 >
 Shared pointer type of ParticleSystemData2. More...
 
using ParticleSystemData3Ptr = std::shared_ptr< ParticleSystemData3 >
 Shared pointer type of ParticleSystemData3. More...
 
template<typename T >
using Point2 = Point< T, 2 >
 Type alias for two dimensional point. More...
 
using Point2F = Point2< float >
 Float-type 2D point. More...
 
using Point2D = Point2< double >
 Double-type 2D point. More...
 
using Point2I = Point2< ssize_t >
 Integer-type 2D point. More...
 
using Point2UI = Point2< size_t >
 Unsigned integer-type 2D point. More...
 
template<typename T >
using Point3 = Point< T, 3 >
 Type alias for three dimensional point. More...
 
using Point3F = Point3< float >
 Float-type 3D point. More...
 
using Point3D = Point3< double >
 Double-type 3D point. More...
 
using Point3I = Point3< ssize_t >
 Integer-type 3D point. More...
 
using Point3UI = Point3< size_t >
 Unsigned integer-type 3D point. More...
 
using BccLatticePointGeneratorPtr = std::shared_ptr< BccLatticePointGenerator >
 Shared pointer type for the BccLatticePointGenerator. More...
 
using GridPointGenerator2Ptr = std::shared_ptr< GridPointGenerator2 >
 Shared pointer type for the GridPointGenerator2. More...
 
using GridPointGenerator3Ptr = std::shared_ptr< GridPointGenerator3 >
 Shared pointer type for the GridPointGenerator3. More...
 
using PointGenerator2Ptr = std::shared_ptr< PointGenerator2 >
 Shared pointer for the PointGenerator2 type. More...
 
using PointGenerator3Ptr = std::shared_ptr< PointGenerator3 >
 Shared pointer for the PointGenerator3 type. More...
 
using TrianglePointGeneratorPtr = std::shared_ptr< TrianglePointGenerator >
 
using AnisotropicPointsToImplicit2Ptr = std::shared_ptr< AnisotropicPointsToImplicit2 >
 Shared pointer for the AnisotropicPointsToImplicit2 type. More...
 
using AnisotropicPointsToImplicit3Ptr = std::shared_ptr< AnisotropicPointsToImplicit3 >
 Shared pointer for the AnisotropicPointsToImplicit3 type. More...
 
using PointsToImplicit2Ptr = std::shared_ptr< PointsToImplicit2 >
 Shared pointer for the PointsToImplicit2 type. More...
 
using PointsToImplicit3Ptr = std::shared_ptr< PointsToImplicit3 >
 Shared pointer for the PointsToImplicit3 type. More...
 
using SphericalPointsToImplicit2Ptr = std::shared_ptr< SphericalPointsToImplicit2 >
 Shared pointer type for SphericalPointsToImplicit2. More...
 
using SphericalPointsToImplicit3Ptr = std::shared_ptr< SphericalPointsToImplicit3 >
 Shared pointer type for SphericalPointsToImplicit3. More...
 
using SPHPointsToImplicit2Ptr = std::shared_ptr< SPHPointsToImplicit2 >
 Shared pointer type for SPHPointsToImplicit2 class. More...
 
using SPHPointsToImplicit3Ptr = std::shared_ptr< SPHPointsToImplicit3 >
 Shared pointer type for SPHPointsToImplicit3 class. More...
 
using ZhuBridsonPointsToImplicit2Ptr = std::shared_ptr< ZhuBridsonPointsToImplicit2 >
 Shared pointer type for ZhuBridsonPointsToImplicit2 class. More...
 
using ZhuBridsonPointsToImplicit3Ptr = std::shared_ptr< ZhuBridsonPointsToImplicit3 >
 Shared pointer type for ZhuBridsonPointsToImplicit3 class. More...
 
template<typename T >
using ClosestIntersectionDistanceFunc2 = std::function< double(const T &, const Vector2D &)>
 Closest intersection distance measure function. More...
 
template<typename T >
using BoxIntersectionTestFunc2 = std::function< bool(const T &, const BoundingBox2D &)>
 Box-item intersection test function. More...
 
template<typename T >
using RayIntersectionTestFunc2 = std::function< bool(const T &, const Ray2D &)>
 Ray-item intersection test function. More...
 
template<typename T >
using GetRayIntersectionFunc2 = std::function< double(const T &, const Ray2D &)>
 Ray-item closest intersection evaluation function. More...
 
template<typename T >
using IntersectionVisitorFunc2 = std::function< void(const T &)>
 Visitor function which is invoked for each intersecting item. More...
 
template<typename T >
using ClosestIntersectionDistanceFunc3 = std::function< double(const T &, const Vector3D &)>
 Closest intersection distance measure function. More...
 
template<typename T >
using BoxIntersectionTestFunc3 = std::function< bool(const T &, const BoundingBox3D &)>
 Box-item intersection test function. More...
 
template<typename T >
using RayIntersectionTestFunc3 = std::function< bool(const T &, const Ray3D &)>
 Ray-item intersection test function. More...
 
template<typename T >
using GetRayIntersectionFunc3 = std::function< double(const T &, const Ray3D &)>
 Ray-item closest intersection evaluation function. More...
 
template<typename T >
using IntersectionVisitorFunc3 = std::function< void(const T &)>
 Visitor function which is invoked for each intersecting item. More...
 
template<typename T >
using NearestNeighborDistanceFunc2 = std::function< double(const T &, const Vector2D &)>
 Nearest neighbor distance measure function. More...
 
template<typename T >
using NearestNeighborDistanceFunc3 = std::function< double(const T &, const Vector3D &)>
 Nearest neighbor distance measure function. More...
 
template<typename T >
using Ray2 = Ray< T, 2 >
 Type alias for 2-D ray. More...
 
using Ray2F = Ray2< float >
 Float-type 2-D ray. More...
 
using Ray2D = Ray2< double >
 Double-type 2-D ray. More...
 
template<typename T >
using Ray3 = Ray< T, 3 >
 Type alias for 3-D ray. More...
 
using Ray3F = Ray3< float >
 Float-type 3-D ray. More...
 
using Ray3D = Ray3< double >
 Double-type 3-D ray. More...
 
using PointHashGridSearcher2Ptr = std::shared_ptr< PointHashGridSearcher2 >
 Shared pointer for the PointHashGridSearcher2 type. More...
 
using PointHashGridSearcher3Ptr = std::shared_ptr< PointHashGridSearcher3 >
 Shared pointer for the PointHashGridSearcher3 type. More...
 
using PointKdTreeSearcher2Ptr = std::shared_ptr< PointKdTreeSearcher2 >
 Shared pointer for the PointKdTreeSearcher2 type. More...
 
using PointKdTreeSearcher3Ptr = std::shared_ptr< PointKdTreeSearcher3 >
 Shared pointer for the PointKdTreeSearcher3 type. More...
 
using PointNeighborSearcher2Ptr = std::shared_ptr< PointNeighborSearcher2 >
 Shared pointer for the PointNeighborSearcher2 type. More...
 
using PointNeighborSearcherBuilder2Ptr = std::shared_ptr< PointNeighborSearcherBuilder2 >
 Shared pointer for the PointNeighborSearcherBuilder2 type. More...
 
using PointNeighborSearcher3Ptr = std::shared_ptr< PointNeighborSearcher3 >
 Shared pointer for the PointNeighborSearcher3 type. More...
 
using PointNeighborSearcherBuilder3Ptr = std::shared_ptr< PointNeighborSearcherBuilder3 >
 Shared pointer for the PointNeighborSearcherBuilder3 type. More...
 
using PointParallelHashGridSearcher2Ptr = std::shared_ptr< PointParallelHashGridSearcher2 >
 Shared pointer for the PointParallelHashGridSearcher2 type. More...
 
using PointParallelHashGridSearcher3Ptr = std::shared_ptr< PointParallelHashGridSearcher3 >
 Shared pointer for the PointParallelHashGridSearcher3 type. More...
 
using PointSimpleListSearcher2Ptr = std::shared_ptr< PointSimpleListSearcher2 >
 Shared pointer for the PointSimpleListSearcher2 type. More...
 
using PointSimpleListSearcher3Ptr = std::shared_ptr< PointSimpleListSearcher3 >
 Shared pointer for the PointSimpleListSearcher3 type. More...
 
using CubicSemiLagrangian2Ptr = std::shared_ptr< CubicSemiLagrangian2 >
 
using CubicSemiLagrangian3Ptr = std::shared_ptr< CubicSemiLagrangian3 >
 
using SemiLagrangian2Ptr = std::shared_ptr< SemiLagrangian2 >
 
using SemiLagrangian3Ptr = std::shared_ptr< SemiLagrangian3 >
 
template<size_t N>
using Size = Point< size_t, N >
 
using Size2 = Point2< size_t >
 
using Size3 = Point3< size_t >
 
using AdvectionSolver2Ptr = std::shared_ptr< AdvectionSolver2 >
 Shared pointer type for the 2-D advection solver. More...
 
using AdvectionSolver3Ptr = std::shared_ptr< AdvectionSolver3 >
 Shared pointer type for the 3-D advection solver. More...
 
using FDMCGSolver2Ptr = std::shared_ptr< FDMCGSolver2 >
 Shared pointer type for the FDMCGSolver2. More...
 
using FDMCGSolver3Ptr = std::shared_ptr< FDMCGSolver3 >
 Shared pointer type for the FDMCGSolver3. More...
 
using FDMGaussSeidelSolver2Ptr = std::shared_ptr< FDMGaussSeidelSolver2 >
 Shared pointer type for the FDMGaussSeidelSolver2. More...
 
using FDMGaussSeidelSolver3Ptr = std::shared_ptr< FDMGaussSeidelSolver3 >
 Shared pointer type for the FDMGaussSeidelSolver3. More...
 
using FDMICCGSolver2Ptr = std::shared_ptr< FDMICCGSolver2 >
 Shared pointer type for the FDMICCGSolver2. More...
 
using FDMICCGSolver3Ptr = std::shared_ptr< FDMICCGSolver3 >
 Shared pointer type for the FDMICCGSolver3. More...
 
using FDMJacobiSolver2Ptr = std::shared_ptr< FDMJacobiSolver2 >
 Shared pointer type for the FDMJacobiSolver2. More...
 
using FDMJacobiSolver3Ptr = std::shared_ptr< FDMJacobiSolver3 >
 Shared pointer type for the FDMJacobiSolver3. More...
 
using FDMLinearSystemSolver2Ptr = std::shared_ptr< FDMLinearSystemSolver2 >
 Shared pointer type for the FDMLinearSystemSolver2. More...
 
using FDMLinearSystemSolver3Ptr = std::shared_ptr< FDMLinearSystemSolver3 >
 Shared pointer type for the FDMLinearSystemSolver3. More...
 
using FDMMGPCGSolver2Ptr = std::shared_ptr< FDMMGPCGSolver2 >
 Shared pointer type for the FDMMGPCGSolver2. More...
 
using FDMMGPCGSolver3Ptr = std::shared_ptr< FDMMGPCGSolver3 >
 Shared pointer type for the FDMMGPCGSolver3. More...
 
using FDMMGSolver2Ptr = std::shared_ptr< FDMMGSolver2 >
 Shared pointer type for the FDMMGSolver2. More...
 
using FDMMGSolver3Ptr = std::shared_ptr< FDMMGSolver3 >
 Shared pointer type for the FDMMGSolver3. More...
 
using GridBackwardEulerDiffusionSolver2Ptr = std::shared_ptr< GridBackwardEulerDiffusionSolver2 >
 Shared pointer type for the GridBackwardEulerDiffusionSolver2. More...
 
using GridBackwardEulerDiffusionSolver3Ptr = std::shared_ptr< GridBackwardEulerDiffusionSolver3 >
 Shared pointer type for the GridBackwardEulerDiffusionSolver3. More...
 
using GridBlockedBoundaryConditionSolver2Ptr = std::shared_ptr< GridBlockedBoundaryConditionSolver2 >
 Shared pointer type for the GridBlockedBoundaryConditionSolver2. More...
 
using GridBlockedBoundaryConditionSolver3Ptr = std::shared_ptr< GridBlockedBoundaryConditionSolver3 >
 Shared pointer type for the GridBlockedBoundaryConditionSolver3. More...
 
using GridBoundaryConditionSolver2Ptr = std::shared_ptr< GridBoundaryConditionSolver2 >
 Shared pointer type for the GridBoundaryConditionSolver2. More...
 
using GridBoundaryConditionSolver3Ptr = std::shared_ptr< GridBoundaryConditionSolver3 >
 Shared pointer type for the GridBoundaryConditionSolver3. More...
 
using GridDiffusionSolver2Ptr = std::shared_ptr< GridDiffusionSolver2 >
 Shared pointer type for the GridDiffusionSolver2. More...
 
using GridDiffusionSolver3Ptr = std::shared_ptr< GridDiffusionSolver3 >
 Shared pointer type for the GridDiffusionSolver3. More...
 
using GridFluidSolver2Ptr = std::shared_ptr< GridFluidSolver2 >
 Shared pointer type for the GridFluidSolver2. More...
 
using GridFluidSolver3Ptr = std::shared_ptr< GridFluidSolver3 >
 Shared pointer type for the GridFluidSolver3. More...
 
using GridForwardEulerDiffusionSolver2Ptr = std::shared_ptr< GridForwardEulerDiffusionSolver2 >
 Shared pointer type for the GridForwardEulerDiffusionSolver2. More...
 
using GridForwardEulerDiffusionSolver3Ptr = std::shared_ptr< GridForwardEulerDiffusionSolver3 >
 Shared pointer type for the GridForwardEulerDiffusionSolver3. More...
 
using GridFractionalBoundaryConditionSolver2Ptr = std::shared_ptr< GridFractionalBoundaryConditionSolver2 >
 Shared pointer type for the GridFractionalBoundaryConditionSolver2. More...
 
using GridFractionalBoundaryConditionSolver3Ptr = std::shared_ptr< GridFractionalBoundaryConditionSolver3 >
 Shared pointer type for the GridFractionalBoundaryConditionSolver3. More...
 
using GridFractionalSinglePhasePressureSolver2Ptr = std::shared_ptr< GridFractionalSinglePhasePressureSolver2 >
 Shared pointer type for the GridFractionalSinglePhasePressureSolver2. More...
 
using GridFractionalSinglePhasePressureSolver3Ptr = std::shared_ptr< GridFractionalSinglePhasePressureSolver3 >
 Shared pointer type for the GridFractionalSinglePhasePressureSolver3. More...
 
using GridPressureSolver2Ptr = std::shared_ptr< GridPressureSolver2 >
 Shared pointer type for the GridPressureSolver2. More...
 
using GridPressureSolver3Ptr = std::shared_ptr< GridPressureSolver3 >
 Shared pointer type for the GridPressureSolver3. More...
 
using GridSinglePhasePressureSolver2Ptr = std::shared_ptr< GridSinglePhasePressureSolver2 >
 Shared pointer type for the GridSinglePhasePressureSolver2. More...
 
using GridSinglePhasePressureSolver3Ptr = std::shared_ptr< GridSinglePhasePressureSolver3 >
 Shared pointer type for the GridSinglePhasePressureSolver3. More...
 
using GridSmokeSolver2Ptr = std::shared_ptr< GridSmokeSolver2 >
 Shared pointer type for the GridSmokeSolver2. More...
 
using GridSmokeSolver3Ptr = std::shared_ptr< GridSmokeSolver3 >
 Shared pointer type for the GridSmokeSolver3. More...
 
using APICSolver2Ptr = std::shared_ptr< APICSolver2 >
 Shared pointer type for the APICSolver2. More...
 
using APICSolver3Ptr = std::shared_ptr< APICSolver3 >
 Shared pointer type for the APICSolver3. More...
 
using FLIPSolver2Ptr = std::shared_ptr< FLIPSolver2 >
 Shared pointer type for the FLIPSolver2. More...
 
using FLIPSolver3Ptr = std::shared_ptr< FLIPSolver3 >
 Shared pointer type for the FLIPSolver3. More...
 
using PICSolver2Ptr = std::shared_ptr< PICSolver2 >
 Shared pointer type for the PICSolver2. More...
 
using PICSolver3Ptr = std::shared_ptr< PICSolver3 >
 Shared pointer type for the PICSolver3. More...
 
using ENOLevelSetSolver2Ptr = std::shared_ptr< ENOLevelSetSolver2 >
 
using ENOLevelSetSolver3Ptr = std::shared_ptr< ENOLevelSetSolver3 >
 
using FMMLevelSetSolver2Ptr = std::shared_ptr< FMMLevelSetSolver2 >
 Shared pointer type for the FMMLevelSetSolver2. More...
 
using FMMLevelSetSolver3Ptr = std::shared_ptr< FMMLevelSetSolver3 >
 Shared pointer type for the FMMLevelSetSolver3. More...
 
using IterativeLevelSetSolver2Ptr = std::shared_ptr< IterativeLevelSetSolver2 >
 
using IterativeLevelSetSolver3Ptr = std::shared_ptr< IterativeLevelSetSolver3 >
 
using LevelSetLiquidSolver2Ptr = std::shared_ptr< LevelSetLiquidSolver2 >
 Shared pointer type for the LevelSetLiquidSolver2. More...
 
using LevelSetLiquidSolver3Ptr = std::shared_ptr< LevelSetLiquidSolver3 >
 Shared pointer type for the LevelSetLiquidSolver3. More...
 
using LevelSetSolver2Ptr = std::shared_ptr< LevelSetSolver2 >
 Shared pointer type for the LevelSetSolver2. More...
 
using LevelSetSolver3Ptr = std::shared_ptr< LevelSetSolver3 >
 Shared pointer type for the LevelSetSolver3. More...
 
using UpwindLevelSetSolver2Ptr = std::shared_ptr< UpwindLevelSetSolver2 >
 
using UpwindLevelSetSolver3Ptr = std::shared_ptr< UpwindLevelSetSolver3 >
 
using ParticleSystemSolver2Ptr = std::shared_ptr< ParticleSystemSolver2 >
 Shared pointer type for the ParticleSystemSolver2. More...
 
using ParticleSystemSolver3Ptr = std::shared_ptr< ParticleSystemSolver3 >
 Shared pointer type for the ParticleSystemSolver3. More...
 
using PCISPHSolver2Ptr = std::shared_ptr< PCISPHSolver2 >
 Shared pointer type for the PCISPHSolver2. More...
 
using PCISPHSolver3Ptr = std::shared_ptr< PCISPHSolver3 >
 Shared pointer type for the PCISPHSolver3. More...
 
using SPHSolver2Ptr = std::shared_ptr< SPHSolver2 >
 Shared pointer type for the SPHSolver2. More...
 
using SPHSolver3Ptr = std::shared_ptr< SPHSolver3 >
 Shared pointer type for the SPHSolver3. More...
 
using SPHSystemData2Ptr = std::shared_ptr< SPHSystemData2 >
 Shared pointer for the SPHSystemData2 type. More...
 
using SPHSystemData3Ptr = std::shared_ptr< SPHSystemData3 >
 Shared pointer for the SPHSystemData3 type. More...
 
using CustomImplicitSurface2Ptr = std::shared_ptr< CustomImplicitSurface2 >
 Shared pointer type for the CustomImplicitSurface2. More...
 
using CustomImplicitSurface3Ptr = std::shared_ptr< CustomImplicitSurface3 >
 Shared pointer type for the CustomImplicitSurface3. More...
 
using ImplicitSurface2Ptr = std::shared_ptr< ImplicitSurface2 >
 Shared pointer type for the ImplicitSurface2. More...
 
using ImplicitSurface3Ptr = std::shared_ptr< ImplicitSurface3 >
 Shared pointer type for the ImplicitSurface3. More...
 
using ImplicitSurfaceSet2Ptr = std::shared_ptr< ImplicitSurfaceSet2 >
 Shared pointer type for the ImplicitSurfaceSet2. More...
 
using ImplicitSurfaceSet3Ptr = std::shared_ptr< ImplicitSurfaceSet3 >
 Shared pointer type for the ImplicitSurfaceSet3. More...
 
using Surface2Ptr = std::shared_ptr< Surface2 >
 Shared pointer for the Surface2 type. More...
 
using Surface3Ptr = std::shared_ptr< Surface3 >
 Shared pointer for the Surface3 type. More...
 
using SurfaceSet2Ptr = std::shared_ptr< SurfaceSet2 >
 Shared pointer for the SurfaceSet2 type. More...
 
using SurfaceSet3Ptr = std::shared_ptr< SurfaceSet3 >
 Shared pointer for the SurfaceSet3 type. More...
 
using SurfaceToImplicit2Ptr = std::shared_ptr< SurfaceToImplicit2 >
 Shared pointer for the SurfaceToImplicit2 type. More...
 
using SurfaceToImplicit3Ptr = std::shared_ptr< SurfaceToImplicit3 >
 Shared pointer for the SurfaceToImplicit3. More...
 
template<typename BlasType >
using MGRelaxFunc = std::function< void(const typename BlasType::MatrixType &A, const typename BlasType::VectorType &b, unsigned int numberOfIterations, double maxTolerance, typename BlasType::VectorType *x, typename BlasType::VectorType *buffer)>
 Multi-grid relax function type. More...
 
template<typename BlasType >
using MGRestrictFunc = std::function< void(const typename BlasType::VectorType &finer, typename BlasType::VectorType *coarser)>
 Multi-grid restriction function type. More...
 
template<typename BlasType >
using MGCorrectFunc = std::function< void(const typename BlasType::VectorType &coarser, typename BlasType::VectorType *finer)>
 Multi-grid correction function type. More...
 
template<typename T >
using Vector2 = Vector< T, 2 >
 Type alias for two dimensional vector. More...
 
using Vector2F = Vector2< float >
 Float-type 2D vector. More...
 
using Vector2D = Vector2< double >
 Double-type 2D vector. More...
 
template<typename T >
using Vector3 = Vector< T, 3 >
 Type alias for three dimensional vector. More...
 
using Vector3F = Vector3< float >
 Float-type 3D vector. More...
 
using Vector3D = Vector3< double >
 Double-type 3D vector. More...
 
template<typename T >
using Vector4 = Vector< T, 4 >
 Type alias for four dimensional vector. More...
 
using Vector4F = Vector4< float >
 Float-type 4D vector. More...
 
using Vector4D = Vector4< double >
 Double-type 4D vector. More...
 
template<typename T , typename E , typename U >
using VectorTypeCast = VectorUnaryOp< T, E, TypeCast< U, T > >
 Matrix expression for type casting. More...
 
template<typename T , typename E1 , typename E2 >
using VectorAdd = VectorBinaryOp< T, E1, E2, std::plus< T > >
 Vector-vector addition expression. More...
 
template<typename T , typename E >
using VectorScalarAdd = VectorScalarBinaryOp< T, E, std::plus< T > >
 Vector-scalar addition expression. More...
 
template<typename T , typename E1 , typename E2 >
using VectorSub = VectorBinaryOp< T, E1, E2, std::minus< T > >
 Vector-vector addition expression. More...
 
template<typename T , typename E >
using VectorScalarSub = VectorScalarBinaryOp< T, E, std::minus< T > >
 Vector-scalar subtraction expression. More...
 
template<typename T , typename E >
using VectorScalarRSub = VectorScalarBinaryOp< T, E, RMinus< T > >
 Scalar-vector subtraction expression. More...
 
template<typename T , typename E1 , typename E2 >
using VectorMul = VectorBinaryOp< T, E1, E2, std::multiplies< T > >
 Element-wise vector-vector multiplication expression. More...
 
template<typename T , typename E >
using VectorScalarMul = VectorScalarBinaryOp< T, E, std::multiplies< T > >
 Vector-scalar multiplication expression. More...
 
template<typename T , typename E1 , typename E2 >
using VectorDiv = VectorBinaryOp< T, E1, E2, std::divides< T > >
 Element-wise vector-vector division expression. More...
 
template<typename T , typename E >
using VectorScalarDiv = VectorScalarBinaryOp< T, E, std::divides< T > >
 Vector-scalar division expression. More...
 
template<typename T , typename E >
using VectorScalarRDiv = VectorScalarBinaryOp< T, E, RDivides< T > >
 Scalar-vector division expression. More...
 
using VectorNF = VectorN< float >
 Float-type N-D vector. More...
 
using VectorND = VectorN< double >
 Double-type N-D vector. More...
 

Enumerations

enum  LogLevel : uint8_t {
  LogLevel::All = 0, LogLevel::Debug = 1, LogLevel::Info = 2, LogLevel::Warn = 3,
  LogLevel::Error = 4, LogLevel::Off = 5
}
 
enum  ExecutionPolicy { ExecutionPolicy::Serial, ExecutionPolicy::Parallel }
 Execution policy tag. More...
 

Functions

Size2 TupleToSize2 (pybind11::tuple tuple)
 
Size2 TupleToSize2 (pybind11::list list)
 
Size3 TupleToSize3 (pybind11::tuple tuple)
 
Size3 TupleToSize3 (pybind11::list list)
 
Point2UI TupleToPoint2UI (pybind11::tuple tuple)
 
Point2UI TupleToPoint2UI (pybind11::list list)
 
Point3UI TupleToPoint3UI (pybind11::tuple tuple)
 
Point3UI TupleToPoint3UI (pybind11::list list)
 
pybind11::tuple Size2ToTuple (const Size2 &size)
 
pybind11::tuple Size3ToTuple (const Size3 &size)
 
template<typename T , size_t N>
Vector< T, N > TupleToVector (pybind11::tuple tuple)
 
template<typename T , size_t N>
Vector< T, N > TupleToVector (pybind11::list list)
 
template<typename T >
Quaternion< T > TupleToQuaternion (pybind11::tuple tuple)
 
template<typename T >
Quaternion< T > TupleToQuaternion (pybind11::list list)
 
Vector2F TupleToVector2F (pybind11::tuple tuple)
 
Vector2F TupleToVector2F (pybind11::list list)
 
Vector3F TupleToVector3F (pybind11::tuple tuple)
 
Vector3F TupleToVector3F (pybind11::list list)
 
Vector4F TupleToVector4F (pybind11::tuple tuple)
 
Vector4F TupleToVector4F (pybind11::list list)
 
QuaternionF TupleToQuaternionF (pybind11::tuple tuple)
 
QuaternionF TupleToQuaternionF (pybind11::list list)
 
Vector2D TupleToVector2D (pybind11::tuple tuple)
 
Vector2D TupleToVector2D (pybind11::list list)
 
Vector3D TupleToVector3D (pybind11::tuple tuple)
 
Vector3D TupleToVector3D (pybind11::list list)
 
Vector4D TupleToVector4D (pybind11::tuple tuple)
 
Vector4D TupleToVector4D (pybind11::list list)
 
template<typename T >
pybind11::tuple Vector2ToTuple (const Vector< T, 2 > &vec)
 
template<typename T >
pybind11::tuple Vector3ToTuple (const Vector< T, 3 > &vec)
 
template<typename T >
pybind11::tuple Vector4ToTuple (const Vector< T, 4 > &vec)
 
QuaternionD TupleToQuaternionD (pybind11::tuple tuple)
 
QuaternionD TupleToQuaternionD (pybind11::list list)
 
Size2 ObjectToSize2 (const pybind11::object &obj)
 
Size3 ObjectToSize3 (const pybind11::object &obj)
 
Point2UI ObjectToPoint2UI (const pybind11::object &obj)
 
Point3UI ObjectToPoint3UI (const pybind11::object &obj)
 
Vector2F ObjectToVector2F (const pybind11::object &obj)
 
Vector2D ObjectToVector2D (const pybind11::object &obj)
 
Vector3F ObjectToVector3F (const pybind11::object &obj)
 
Vector3D ObjectToVector3D (const pybind11::object &obj)
 
Vector4F ObjectToVector4F (const pybind11::object &obj)
 
Vector4D ObjectToVector4D (const pybind11::object &obj)
 
QuaternionF ObjectToQuaternionF (const pybind11::object &obj)
 
QuaternionD ObjectToQuaternionD (const pybind11::object &obj)
 
void ParseGridResizeParams (pybind11::args args, pybind11::kwargs kwargs, Size2 &resolution, Vector2D &gridSpacing, Vector2D &gridOrigin)
 
void ParseGridResizeParams (pybind11::args args, pybind11::kwargs kwargs, Size3 &resolution, Vector3D &gridSpacing, Vector3D &gridOrigin)
 
template<typename ArrayType , typename T >
void SetRange1 (size_t size, const T &value, ArrayType *output)
 Assigns value to 1-D array output with size. More...
 
template<typename ArrayType , typename T >
void SetRange1 (size_t begin, size_t end, const T &value, ArrayType *output)
 Assigns value to 1-D array output from begin to end. More...
 
template<typename ArrayType1 , typename ArrayType2 >
void CopyRange1 (const ArrayType1 &input, size_t size, ArrayType2 *output)
 Copies input array to output array with size. More...
 
template<typename ArrayType1 , typename ArrayType2 >
void CopyRange1 (const ArrayType1 &input, size_t begin, size_t end, ArrayType2 *output)
 Copies input array to output array from begin to end. More...
 
template<typename ArrayType1 , typename ArrayType2 >
void CopyRange2 (const ArrayType1 &input, size_t sizeX, size_t sizeY, ArrayType2 *output)
 Copies 2-D input array to output array with sizeX and sizeY. More...
 
template<typename ArrayType1 , typename ArrayType2 >
void CopyRange2 (const ArrayType1 &input, size_t beginX, size_t endX, size_t beginY, size_t endY, ArrayType2 *output)
 Copies 2-D input array to output array from (beginX, beginY) to (endX, endY). More...
 
template<typename ArrayType1 , typename ArrayType2 >
void CopyRange3 (const ArrayType1 &input, size_t sizeX, size_t sizeY, size_t sizeZ, ArrayType2 *output)
 Copies 3-D input array to output array with sizeX and sizeY. More...
 
template<typename ArrayType1 , typename ArrayType2 >
void CopyRange3 (const ArrayType1 &input, size_t beginX, size_t endX, size_t beginY, size_t endY, size_t beginZ, size_t endZ, ArrayType2 *output)
 Copies 3-D input array to output array from (beginX, beginY, beginZ) to (endX, endY, endZ). More...
 
template<typename T >
void ExtrapolateToRegion (const ConstArrayAccessor2< T > &input, const ConstArrayAccessor2< char > &valid, unsigned int numberOfIterations, ArrayAccessor2< T > output)
 Extrapolates 2-D input data from 'valid' (1) to 'invalid' (0) region. More...
 
template<typename T >
void ExtrapolateToRegion (const ConstArrayAccessor3< T > &input, const ConstArrayAccessor3< char > &valid, unsigned int numberOfIterations, ArrayAccessor3< T > output)
 Extrapolates 3-D input data from 'valid' (1) to 'invalid' (0) region. More...
 
template<typename ArrayType >
void ConvertToCSV (const ArrayType &data, std::ostream *stream)
 Converts 2-D array to Comma Separated Value (CSV) stream. More...
 
Vector2D Gradient2 (const ConstArrayAccessor2< double > &data, const Vector2D &gridSpacing, size_t i, size_t j)
 Returns 2-D gradient vector from given 2-D scalar grid-like array data, gridSpacing, and array index (i, j). More...
 
std::array< Vector2D, 2 > Gradient2 (const ConstArrayAccessor2< Vector2D > &data, const Vector2D &gridSpacing, size_t i, size_t j)
 Returns 2-D gradient vectors from given 2-D vector grid-like array data, gridSpacing, and array index (i, j). More...
 
Vector3D Gradient3 (const ConstArrayAccessor3< double > &data, const Vector3D &gridSpacing, size_t i, size_t j, size_t k)
 Returns 3-D gradient vector from given 3-D scalar grid-like array data, gridSpacing, and array index (i, j, k). More...
 
std::array< Vector3D, 3 > Gradient3 (const ConstArrayAccessor3< Vector3D > &data, const Vector3D &gridSpacing, size_t i, size_t j, size_t k)
 Returns 3-D gradient vectors from given 3-D vector grid-like array data, gridSpacing, and array index (i, j, k). More...
 
double Laplacian2 (const ConstArrayAccessor2< double > &data, const Vector2D &gridSpacing, size_t i, size_t j)
 Returns Laplacian value from given 2-D scalar grid-like array data, gridSpacing, and array index (i, j). More...
 
Vector2D Laplacian2 (const ConstArrayAccessor2< Vector2D > &data, const Vector2D &gridSpacing, size_t i, size_t j)
 Returns 2-D Laplacian vectors from given 2-D vector grid-like array data, gridSpacing, and array index (i, j). More...
 
double Laplacian3 (const ConstArrayAccessor3< double > &data, const Vector3D &gridSpacing, size_t i, size_t j, size_t k)
 Returns Laplacian value from given 3-D scalar grid-like array data, gridSpacing, and array index (i, j, k). More...
 
Vector3D Laplacian3 (const ConstArrayAccessor3< Vector3D > &data, const Vector3D &gridSpacing, size_t i, size_t j, size_t k)
 Returns 3-D Laplacian vectors from given 3-D vector grid-like array data, gridSpacing, and array index (i, j, k). More...
 
void TriangleMeshToSDF (const TriangleMesh3 &mesh, ScalarGrid3 *sdf, const unsigned int exactBand=1)
 Generates signed-distance field out of given triangle mesh. More...
 
template<typename T >
bool IsInsideSDF (T phi)
 Returns true if phi is inside the implicit surface (< 0). More...
 
template<typename T >
SmearedHeavisideSDF (T phi)
 Returns smeared Heaviside function. More...
 
template<typename T >
SmearedDeltaSDF (T phi)
 Returns smeared delta function. More...
 
template<typename T >
FractionInsideSDF (T phi0, T phi1)
 Returns the fraction occupied by the implicit surface. More...
 
template<typename T >
void CycleArray (T *arr, int size)
 
template<typename T >
FractionInside (T phiBottomLeft, T phiBottomRight, T phiTopLeft, T phiTopRight)
 Returns the fraction occupied by the implicit surface. More...
 
template<typename T >
DistanceToZeroLevelSet (T phi0, T phi1)
 
void MarchingCubes (const ConstArrayAccessor3< double > &grid, const Vector3D &gridSize, const Vector3D &origin, TriangleMesh3 *mesh, double isoValue=0, int bndFlag=DIRECTION_ALL)
 Computes marching cubes and extract triangle mesh from grid. More...
 
template<typename BLASType >
void CG (const typename BLASType::MatrixType &A, const typename BLASType::VectorType &b, unsigned int maxNumberOfIterations, double tolerance, typename BLASType::VectorType *x, typename BLASType::VectorType *r, typename BLASType::VectorType *d, typename BLASType::VectorType *q, typename BLASType::VectorType *s, unsigned int *lastNumberOfIterations, double *lastResidualNorm)
 Solves conjugate gradient. More...
 
template<typename BLASType , typename PrecondType >
void PCG (const typename BLASType::MatrixType &A, const typename BLASType::VectorType &b, unsigned int maxNumberOfIterations, double tolerance, PrecondType *M, typename BLASType::VectorType *x, typename BLASType::VectorType *r, typename BLASType::VectorType *d, typename BLASType::VectorType *q, typename BLASType::VectorType *s, unsigned int *lastNumberOfIterations, double *lastResidualNorm)
 Solves pre-conditioned conjugate gradient. More...
 
template<typename T >
bool Similar (T x, T y, T eps=std::numeric_limits< T >::epsilon())
 Returns true if x and y are similar. More...
 
template<typename T >
Sign (T x)
 Returns the sign of the value. More...
 
template<typename T >
AbsMin (T x, T y)
 Returns the absolute minimum value among the two inputs. More...
 
template<typename T >
AbsMax (T x, T y)
 Returns the absolute maximum value among the two inputs. More...
 
template<typename T >
AbsMinN (const T *x, size_t n)
 Returns absolute minimum among n-elements. More...
 
template<typename T >
AbsMaxN (const T *x, size_t n)
 Returns absolute maximum among n-elements. More...
 
template<typename T >
size_t ArgMin2 (T x, T y)
 
template<typename T >
size_t ArgMax2 (T x, T y)
 
template<typename T >
size_t ArgMin3 (T x, T y, T z)
 
template<typename T >
size_t ArgMax3 (T x, T y, T z)
 
template<typename T >
Square (T x)
 Returns the square of x. More...
 
template<typename T >
Cubic (T x)
 Returns the cubic of x. More...
 
template<typename T >
Clamp (T val, T low, T high)
 Returns the clamped value. More...
 
template<typename T >
DegreesToRadians (T angleInDegrees)
 Converts degrees to radians. More...
 
template<typename T >
RadiansToDegrees (T angleInRadians)
 Converts radians to degrees. More...
 
template<typename T >
void GetBarycentric (T x, ssize_t iLow, ssize_t iHigh, ssize_t *i, T *t)
 Gets the barycentric coordinate. More...
 
template<typename S , typename T >
Lerp (const S &f0, const S &f1, T t)
 Computes linear interpolation. More...
 
template<typename S , typename T >
BiLerp (const S &f00, const S &f10, const S &f01, const S &f11, T tx, T ty)
 Computes bilinear interpolation. More...
 
template<typename S , typename T >
TriLerp (const S &f000, const S &f100, const S &f010, const S &f110, const S &f001, const S &f101, const S &f011, const S &f111, T tx, T ty, T tz)
 Computes trilinear interpolation. More...
 
template<typename S , typename T >
CatmullRom (const S &f0, const S &f1, const S &f2, const S &f3, T t)
 Computes Catmull-Rom interpolation. More...
 
template<typename T >
MonotonicCatmullRom (const T &f0, const T &f1, const T &f2, const T &f3, T t)
 Computes monotonic Catmull-Rom interpolation. More...
 
template<typename T >
std::array< T, 2 > Upwind1 (T *d0, T dx)
 1st order upwind differencing. d0[1] is the origin. More...
 
template<typename T >
Upwind1 (T *d0, T dx, bool isDirectionPositive)
 1st order upwind differencing. d0[1] is the origin. More...
 
template<typename T >
CD2 (T *d0, T dx)
 2nd order central differencing. d0[1] is the origin. More...
 
template<typename T >
std::array< T, 2 > ENO3 (T *d0, T dx)
 3rd order ENO. d0[3] is the origin. More...
 
template<typename T >
ENO3 (T *d0, T dx, bool isDirectionPositive)
 3rd order ENO. d0[3] is the origin. More...
 
template<typename T >
std::array< T, 2 > WENO5 (T *v, T h, T eps=1.0e-8)
 5th order WENO. d0[3] is the origin. More...
 
template<typename T >
WENO5 (T *v, T h, bool is_velocity_positive, T eps=1.0e-8)
 5th order WENO. d0[3] is the origin. More...
 
template<typename T >
Quaternion< T > Slerp (const Quaternion< T > &a, const Quaternion< T > &b, T t)
 Computes spherical linear interpolation. More...
 
template<typename T >
Vector< T, 3 > operator* (const Quaternion< T > &q, const Vector< T, 3 > &v)
 Returns quaternion q * vector v. More...
 
template<typename T >
Quaternion< T > operator* (const Quaternion< T > &a, const Quaternion< T > &b)
 Returns quaternion a times quaternion b. More...
 
template<typename T >
void SVD (const MatrixMxN< T > &a, MatrixMxN< T > &u, VectorN< T > &w, MatrixMxN< T > &v)
 Singular value decomposition (SVD). More...
 
template<typename T , size_t M, size_t N>
void SVD (const Matrix< T, M, N > &a, Matrix< T, M, N > &u, Vector< T, N > &w, Matrix< T, N, N > &v)
 Singular value decomposition (SVD). More...
 
template<typename T >
Matrix< T, 2, 2 > operator- (const Matrix< T, 2, 2 > &a)
 Returns a matrix with opposite sign. More...
 
template<typename T >
Matrix< T, 2, 2 > operator+ (const Matrix< T, 2, 2 > &a, const Matrix< T, 2, 2 > &b)
 Returns a + b (element-size). More...
 
template<typename T >
Matrix< T, 2, 2 > operator+ (const Matrix< T, 2, 2 > &a, const T b)
 Returns a + b', where every element of matrix b' is b. More...
 
template<typename T >
Matrix< T, 2, 2 > operator+ (const T a, const Matrix< T, 2, 2 > &b)
 Returns a' + b, where every element of matrix a' is a. More...
 
template<typename T >
Matrix< T, 2, 2 > operator- (const Matrix< T, 2, 2 > &a, const Matrix< T, 2, 2 > &b)
 Returns a - b (element-size). More...
 
template<typename T >
Matrix< T, 2, 2 > operator- (const Matrix< T, 2, 2 > &a, T b)
 Returns a - b', where every element of matrix b' is b. More...
 
template<typename T >
Matrix< T, 2, 2 > operator- (T a, const Matrix< T, 2, 2 > &b)
 Returns a' - b, where every element of matrix a' is a. More...
 
template<typename T >
Matrix< T, 2, 2 > operator* (const Matrix< T, 2, 2 > &a, T b)
 Returns a * b', where every element of matrix b' is b. More...
 
template<typename T >
Matrix< T, 2, 2 > operator* (T a, const Matrix< T, 2, 2 > &b)
 Returns a' * b, where every element of matrix a' is a. More...
 
template<typename T >
Vector2< T > operator* (const Matrix< T, 2, 2 > &a, const Vector2< T > &b)
 Returns a * b. More...
 
template<typename T >
Matrix< T, 2, 2 > operator* (const Matrix< T, 2, 2 > &a, const Matrix< T, 2, 2 > &b)
 Returns a * b. More...
 
template<typename T >
Matrix< T, 2, 2 > operator/ (const Matrix< T, 2, 2 > &a, T b)
 
template<typename T >
Matrix< T, 2, 2 > operator/ (T a, const Matrix< T, 2, 2 > &b)
 
template<typename T >
Matrix2x2< T > operator/ (const Matrix2x2< T > &a, T b)
 Returns a' / b, where every element of matrix a' is a. More...
 
template<typename T >
Matrix2x2< T > operator/ (const T &a, const Matrix2x2< T > &b)
 Returns a / b', where every element of matrix b' is b. More...
 
template<typename T >
Matrix< T, 3, 3 > operator- (const Matrix< T, 3, 3 > &a)
 Returns a matrix with opposite sign. More...
 
template<typename T >
Matrix< T, 3, 3 > operator+ (const Matrix< T, 3, 3 > &a, const Matrix< T, 3, 3 > &b)
 Returns a + b (element-size). More...
 
template<typename T >
Matrix< T, 3, 3 > operator+ (const Matrix< T, 3, 3 > &a, T b)
 Returns a + b', where every element of matrix b' is b. More...
 
template<typename T >
Matrix< T, 3, 3 > operator+ (T a, const Matrix< T, 3, 3 > &b)
 Returns a' + b, where every element of matrix a' is a. More...
 
template<typename T >
Matrix< T, 3, 3 > operator- (const Matrix< T, 3, 3 > &a, const Matrix< T, 3, 3 > &b)
 Returns a - b (element-size). More...
 
template<typename T >
Matrix< T, 3, 3 > operator- (const Matrix< T, 3, 3 > &a, T b)
 Returns a - b', where every element of matrix b' is b. More...
 
template<typename T >
Matrix< T, 3, 3 > operator- (T a, const Matrix< T, 3, 3 > &b)
 Returns a' - b, where every element of matrix a' is a. More...
 
template<typename T >
Matrix< T, 3, 3 > operator* (const Matrix< T, 3, 3 > &a, T b)
 Returns a * b', where every element of matrix b' is b. More...
 
template<typename T >
Matrix< T, 3, 3 > operator* (T a, const Matrix< T, 3, 3 > &b)
 Returns a' * b, where every element of matrix a' is a. More...
 
template<typename T >
Vector< T, 3 > operator* (const Matrix< T, 3, 3 > &a, const Vector< T, 3 > &b)
 
template<typename T >
Matrix< T, 3, 3 > operator* (const Matrix< T, 3, 3 > &a, const Matrix< T, 3, 3 > &b)
 Returns a * b. More...
 
template<typename T >
Matrix< T, 3, 3 > operator/ (const Matrix< T, 3, 3 > &a, T b)
 Returns a' / b, where every element of matrix a' is a. More...
 
template<typename T >
Matrix< T, 3, 3 > operator/ (T a, const Matrix< T, 3, 3 > &b)
 Returns a / b', where every element of matrix b' is b. More...
 
template<typename T >
Vector3< T > operator* (const Matrix< T, 3, 3 > &a, const Vector3< T > &b)
 Returns a * b. More...
 
template<typename T >
Matrix< T, 4, 4 > operator- (const Matrix< T, 4, 4 > &a)
 Returns a matrix with opposite sign. More...
 
template<typename T >
Matrix< T, 4, 4 > operator+ (const Matrix< T, 4, 4 > &a, const Matrix< T, 4, 4 > &b)
 Returns a + b (element-size). More...
 
template<typename T >
Matrix< T, 4, 4 > operator+ (const Matrix< T, 4, 4 > &a, T b)
 Returns a + b', where every element of matrix b' is b. More...
 
template<typename T >
Matrix< T, 4, 4 > operator+ (T a, const Matrix< T, 4, 4 > &b)
 Returns a' + b, where every element of matrix a' is a. More...
 
template<typename T >
Matrix< T, 4, 4 > operator- (const Matrix< T, 4, 4 > &a, const Matrix< T, 4, 4 > &b)
 Returns a - b (element-size). More...
 
template<typename T >
Matrix< T, 4, 4 > operator- (const Matrix< T, 4, 4 > &a, T b)
 Returns a - b', where every element of matrix b' is b. More...
 
template<typename T >
Matrix< T, 4, 4 > operator- (T a, const Matrix< T, 4, 4 > &b)
 Returns a' - b, where every element of matrix a' is a. More...
 
template<typename T >
Matrix< T, 4, 4 > operator* (const Matrix< T, 4, 4 > &a, T b)
 Returns a * b', where every element of matrix b' is b. More...
 
template<typename T >
Matrix< T, 4, 4 > operator* (T a, const Matrix< T, 4, 4 > &b)
 Returns a' * b, where every element of matrix a' is a. More...
 
template<typename T >
Vector< T, 3 > operator* (const Matrix< T, 4, 4 > &a, const Vector< T, 3 > &b)
 
template<typename T >
Vector< T, 4 > operator* (const Matrix< T, 4, 4 > &a, const Vector< T, 4 > &b)
 
template<typename T >
Matrix< T, 4, 4 > operator* (const Matrix< T, 4, 4 > &a, const Matrix< T, 4, 4 > &b)
 Returns a * b. More...
 
template<typename T >
Matrix< T, 4, 4 > operator/ (const Matrix< T, 4, 4 > &a, T b)
 Returns a' / b, where every element of matrix a' is a. More...
 
template<typename T >
Matrix< T, 4, 4 > operator/ (const T &a, const Matrix< T, 4, 4 > &b)
 Returns a / b', where every element of matrix b' is b. More...
 
template<typename T >
Vector3< T > operator* (const Matrix< T, 4, 4 > &a, const Vector3< T > &b)
 Returns a * b. More...
 
template<typename T >
Vector4< T > operator* (const Matrix< T, 4, 4 > &a, const Vector4< T > &b)
 Returns a * b. More...
 
template<typename T >
MatrixCSR< T > operator- (const MatrixCSR< T > &a)
 
template<typename T >
MatrixCSR< T > operator+ (const MatrixCSR< T > &a, const MatrixCSR< T > &b)
 
template<typename T >
MatrixCSR< T > operator+ (const MatrixCSR< T > &a, T b)
 
template<typename T >
MatrixCSR< T > operator+ (T a, const MatrixCSR< T > &b)
 
template<typename T >
MatrixCSR< T > operator- (const MatrixCSR< T > &a, const MatrixCSR< T > &b)
 
template<typename T >
MatrixCSR< T > operator- (const MatrixCSR< T > &a, T b)
 
template<typename T >
MatrixCSR< T > operator- (T a, const MatrixCSR< T > &b)
 
template<typename T >
MatrixCSR< T > operator* (const MatrixCSR< T > &a, T b)
 
template<typename T >
MatrixCSR< T > operator* (T a, const MatrixCSR< T > &b)
 
template<typename T , typename VE >
MatrixCSRVectorMul< T, VE > operator* (const MatrixCSR< T > &a, const VectorExpression< T, VE > &b)
 
template<typename T , typename ME >
MatrixCSRMatrixMul< T, ME > operator* (const MatrixCSR< T > &a, const MatrixExpression< T, ME > &b)
 
template<typename T >
MatrixCSR< T > operator/ (const MatrixCSR< T > &a, T b)
 
template<typename T >
MatrixCSR< T > operator/ (T a, const MatrixCSR< T > &b)
 
template<typename T , typename E >
MatrixScalarMul< T, E > operator- (const MatrixExpression< T, E > &a)
 Returns a matrix with opposite sign. More...
 
template<typename T , typename E1 , typename E2 >
MatrixAdd< T, E1, E2 > operator+ (const MatrixExpression< T, E1 > &a, const MatrixExpression< T, E2 > &b)
 Returns a + b (element-size). More...
 
template<typename T , typename E >
MatrixScalarAdd< T, E > operator+ (const MatrixExpression< T, E > &a, T b)
 Returns a + b', where every element of matrix b' is b. More...
 
template<typename T , typename E >
MatrixScalarAdd< T, E > operator+ (T a, const MatrixExpression< T, E > &b)
 Returns a' + b, where every element of matrix a' is a. More...
 
template<typename T , typename E1 , typename E2 >
MatrixSub< T, E1, E2 > operator- (const MatrixExpression< T, E1 > &a, const MatrixExpression< T, E2 > &b)
 Returns a - b (element-size). More...
 
template<typename T , typename E >
MatrixScalarSub< T, E > operator- (const MatrixExpression< T, E > &a, T b)
 Returns a - b', where every element of matrix b' is b. More...
 
template<typename T , typename E >
MatrixScalarRSub< T, E > operator- (T a, const MatrixExpression< T, E > &b)
 Returns a' - b, where every element of matrix a' is a. More...
 
template<typename T , typename E >
MatrixScalarMul< T, E > operator* (const MatrixExpression< T, E > &a, T b)
 Returns a * b', where every element of matrix b' is b. More...
 
template<typename T , typename E >
MatrixScalarMul< T, E > operator* (T a, const MatrixExpression< T, E > &b)
 Returns a' * b, where every element of matrix a' is a. More...
 
template<typename T , typename ME , typename VE >
MatrixVectorMul< T, ME, VE > operator* (const MatrixExpression< T, ME > &a, const VectorExpression< T, VE > &b)
 Returns a * b. More...
 
template<typename T , typename E1 , typename E2 >
MatrixMul< T, E1, E2 > operator* (const MatrixExpression< T, E1 > &a, const MatrixExpression< T, E2 > &b)
 Returns a * b. More...
 
template<typename T , typename E >
MatrixScalarDiv< T, E > operator/ (const MatrixExpression< T, E > &a, T b)
 Returns a' / b, where every element of matrix a' is a. More...
 
template<typename T , typename E >
MatrixScalarRDiv< T, E > operator/ (T a, const MatrixExpression< T, E > &b)
 Returns a / b', where every element of matrix b' is b. More...
 
template<typename T >
Point< T, 2 > operator+ (const Point< T, 2 > &a)
 Positive sign operator. More...
 
template<typename T >
Point< T, 2 > operator- (const Point< T, 2 > &a)
 Negative sign operator. More...
 
template<typename T >
Point< T, 2 > operator+ (const Point< T, 2 > &a, T b)
 
template<typename T >
Point< T, 2 > operator+ (T a, const Point< T, 2 > &b)
 Computes (a, a) + (b.x, b.y). More...
 
template<typename T >
Point< T, 2 > operator+ (const Point< T, 2 > &a, const Point< T, 2 > &b)
 Computes (a.x, a.y) + (b.x, b.y). More...
 
template<typename T >
Point< T, 2 > operator- (const Point< T, 2 > &a, T b)
 Computes (a.x, a.y) - (b, b). More...
 
template<typename T >
Point< T, 2 > operator- (T a, const Point< T, 2 > &b)
 Computes (a, a) - (b.x, b.y). More...
 
template<typename T >
Point< T, 2 > operator- (const Point< T, 2 > &a, const Point< T, 2 > &b)
 Computes (a.x, a.y) - (b.x, b.y). More...
 
template<typename T >
Point< T, 2 > operator* (const Point< T, 2 > &a, T b)
 Computes (a.x, a.y) * (b, b). More...
 
template<typename T >
Point< T, 2 > operator* (T a, const Point< T, 2 > &b)
 Computes (a, a) * (b.x, b.y). More...
 
template<typename T >
Point< T, 2 > operator* (const Point< T, 2 > &a, const Point< T, 2 > &b)
 Computes (a.x, a.y) * (b.x, b.y). More...
 
template<typename T >
Point< T, 2 > operator/ (const Point< T, 2 > &a, T b)
 Computes (a.x, a.y) / (b, b). More...
 
template<typename T >
Point< T, 2 > operator/ (T a, const Point< T, 2 > &b)
 Computes (a, a) / (b.x, b.y). More...
 
template<typename T >
Point< T, 2 > operator/ (const Point< T, 2 > &a, const Point< T, 2 > &b)
 Computes (a.x, a.y) / (b.x, b.y). More...
 
template<typename T >
Point< T, 2 > Min (const Point< T, 2 > &a, const Point< T, 2 > &b)
 Returns element-wise min point: (min(a.x, b.x), min(a.y, b.y)). More...
 
template<typename T >
Point< T, 2 > Max (const Point< T, 2 > &a, const Point< T, 2 > &b)
 Returns element-wise max point: (max(a.x, b.x), max(a.y, b.y)). More...
 
template<typename T >
Point< T, 2 > Clamp (const Point< T, 2 > &v, const Point< T, 2 > &low, const Point< T, 2 > &high)
 Returns element-wise clamped point. More...
 
template<typename T >
Point< T, 2 > Ceil (const Point< T, 2 > &a)
 Returns element-wise ceiled point. More...
 
template<typename T >
Point< T, 2 > Floor (const Point< T, 2 > &a)
 Returns element-wise floored point. More...
 
template<typename T >
Point< T, 3 > operator+ (const Point< T, 3 > &a)
 Positive sign operator. More...
 
template<typename T >
Point< T, 3 > operator- (const Point< T, 3 > &a)
 Negative sign operator. More...
 
template<typename T >
Point< T, 3 > operator+ (const Point< T, 3 > &a, T b)
 
template<typename T >
Point< T, 3 > operator+ (T a, const Point< T, 3 > &b)
 Computes (a, a, a) + (b.x, b.y, b.z). More...
 
template<typename T >
Point< T, 3 > operator+ (const Point< T, 3 > &a, const Point< T, 3 > &b)
 Computes (a.x, a.y, a.z) + (b.x, b.y, b.z). More...
 
template<typename T >
Point< T, 3 > operator- (const Point< T, 3 > &a, T b)
 Computes (a.x, a.y, a.z) - (b, b, b). More...
 
template<typename T >
Point< T, 3 > operator- (T a, const Point< T, 3 > &b)
 Computes (a, a, a) - (b.x, b.y, b.z). More...
 
template<typename T >
Point< T, 3 > operator- (const Point< T, 3 > &a, const Point< T, 3 > &b)
 Computes (a.x, a.y, a.z) - (b.x, b.y, b.z). More...
 
template<typename T >
Point< T, 3 > operator* (const Point< T, 3 > &a, T b)
 Computes (a.x, a.y, a.z) * (b, b, b). More...
 
template<typename T >
Point< T, 3 > operator* (T a, const Point< T, 3 > &b)
 Computes (a, a, a) * (b.x, b.y, b.z). More...
 
template<typename T >
Point< T, 3 > operator* (const Point< T, 3 > &a, const Point< T, 3 > &b)
 Computes (a.x, a.y, a.z) * (b.x, b.y, b.z). More...
 
template<typename T >
Point< T, 3 > operator/ (const Point< T, 3 > &a, T b)
 Computes (a.x, a.y, a.z) / (b, b, b). More...
 
template<typename T >
Point< T, 3 > operator/ (T a, const Point< T, 3 > &b)
 Computes (a, a, a) / (b.x, b.y, b.z). More...
 
template<typename T >
Point< T, 3 > operator/ (const Point< T, 3 > &a, const Point< T, 3 > &b)
 Computes (a.x, a.y, a.z) / (b.x, b.y, b.z). More...
 
template<typename T >
Point< T, 3 > Min (const Point< T, 3 > &a, const Point< T, 3 > &b)
 Returns element-wise min point. More...
 
template<typename T >
Point< T, 3 > Max (const Point< T, 3 > &a, const Point< T, 3 > &b)
 Returns element-wise max point. More...
 
template<typename T >
Point< T, 3 > Clamp (const Point< T, 3 > &v, const Point< T, 3 > &low, const Point< T, 3 > &high)
 Returns element-wise clamped point. More...
 
template<typename T >
Point< T, 3 > Ceil (const Point< T, 3 > &a)
 Returns element-wise ceiled point. More...
 
template<typename T >
Point< T, 3 > Floor (const Point< T, 3 > &a)
 Returns element-wise floored point. More...
 
template<typename T >
constexpr T Zero ()
 Zero for type T. More...
 
template<>
constexpr float Zero< float > ()
 Zero for float. More...
 
template<>
constexpr double Zero< double > ()
 Zero for double. More...
 
template<typename T >
constexpr T One ()
 One for type T. More...
 
template<>
constexpr float One< float > ()
 One for float. More...
 
template<>
constexpr double One< double > ()
 One for double. More...
 
template<typename T >
constexpr T PI ()
 PI for type T. More...
 
template<>
constexpr float PI< float > ()
 Pi for float. More...
 
template<>
constexpr double PI< double > ()
 Pi for double. More...
 
template<typename T >
constexpr T HalfPI ()
 PI/2 for type T. More...
 
template<>
constexpr float HalfPI< float > ()
 PI/2 for float. More...
 
template<>
constexpr double HalfPI< double > ()
 PI/2 for double. More...
 
template<typename T >
constexpr T QuarterPI ()
 PI/4 for type T. More...
 
template<>
constexpr float QuarterPI< float > ()
 PI/4 for float. More...
 
template<>
constexpr double QuarterPI< double > ()
 PI/4 for double. More...
 
template<class ForwardIter , class T , class Compare >
ForwardIter BinaryFind (ForwardIter first, ForwardIter last, const T &value, Compare comp)
 
fbs::Size2 CubbyFlowToFlatbuffers (const Size2 &vec)
 
fbs::Size3 CubbyFlowToFlatbuffers (const Size3 &vec)
 
fbs::Vector2D CubbyFlowToFlatbuffers (const Vector2D &vec)
 
fbs::Vector3D CubbyFlowToFlatbuffers (const Vector3D &vec)
 
Size2 FlatbuffersToCubbyFlow (const fbs::Size2 &vec)
 
Size3 FlatbuffersToCubbyFlow (const fbs::Size3 &vec)
 
Vector2D FlatbuffersToCubbyFlow (const fbs::Vector2D &vec)
 
Vector3D FlatbuffersToCubbyFlow (const fbs::Vector3D &vec)
 
template<typename GridType , typename FbsFactoryFunc , typename FbsGridType >
void SerializeGrid (flatbuffers::FlatBufferBuilder *builder, const std::vector< GridType > &gridList, FbsFactoryFunc func, std::vector< flatbuffers::Offset< FbsGridType >> *fbsGridList)
 
template<typename FbsGridList , typename GridType , typename FactoryFunc >
void DeserializeGrid (FbsGridList *fbsGridList, FactoryFunc factoryFunc, std::vector< GridType > *gridList)
 
template<typename BlasType >
MGResult MGVCycle (const MGMatrix< BlasType > &A, MGParameters< BlasType > params, MGVector< BlasType > *x, MGVector< BlasType > *b, MGVector< BlasType > *buffer)
 
template<typename BlasType >
MGResult MGCycle (const MGMatrix< BlasType > &A, MGParameters< BlasType > params, MGVector< BlasType > *x, MGVector< BlasType > *b, MGVector< BlasType > *buffer)
 Performs Multi-grid with V-cycle. More...
 
template<typename RandomIterator , typename T >
void ParallelFill (const RandomIterator &begin, const RandomIterator &end, const T &value, ExecutionPolicy policy=ExecutionPolicy::Parallel)
 Fills from begin to end with value in parallel. More...
 
template<typename IndexType , typename Function >
void ParallelFor (IndexType beginIndex, IndexType endIndex, const Function &function, ExecutionPolicy policy=ExecutionPolicy::Parallel)
 Makes a for-loop from beginIndex to endIndex in parallel. More...
 
template<typename IndexType , typename Function >
void ParallelRangeFor (IndexType beginIndex, IndexType endIndex, const Function &function, ExecutionPolicy policy=ExecutionPolicy::Parallel)
 Makes a range-loop from beginIndex to endIndex in parallel. More...
 
template<typename IndexType , typename Function >
void ParallelFor (IndexType beginIndexX, IndexType endIndexX, IndexType beginIndexY, IndexType endIndexY, const Function &function, ExecutionPolicy policy=ExecutionPolicy::Parallel)
 Makes a 2D nested for-loop in parallel. More...
 
template<typename IndexType , typename Function >
void ParallelRangeFor (IndexType beginIndexX, IndexType endIndexX, IndexType beginIndexY, IndexType endIndexY, const Function &function, ExecutionPolicy policy=ExecutionPolicy::Parallel)
 Makes a 2D nested range-loop in parallel. More...
 
template<typename IndexType , typename Function >
void ParallelFor (IndexType beginIndexX, IndexType endIndexX, IndexType beginIndexY, IndexType endIndexY, IndexType beginIndexZ, IndexType endIndexZ, const Function &function, ExecutionPolicy policy=ExecutionPolicy::Parallel)
 Makes a 3D nested for-loop in parallel. More...
 
template<typename IndexType , typename Function >
void ParallelRangeFor (IndexType beginIndexX, IndexType endIndexX, IndexType beginIndexY, IndexType endIndexY, IndexType beginIndexZ, IndexType endIndexZ, const Function &function, ExecutionPolicy policy=ExecutionPolicy::Parallel)
 Makes a 3D nested range-loop in parallel. More...
 
template<typename IndexType , typename Value , typename Function , typename Reduce >
Value ParallelReduce (IndexType beginIndex, IndexType endIndex, const Value &identity, const Function &function, const Reduce &reduce, ExecutionPolicy policy=ExecutionPolicy::Parallel)
 Performs reduce operation in parallel. More...
 
template<typename RandomIterator >
void ParallelSort (RandomIterator begin, RandomIterator end, ExecutionPolicy policy=ExecutionPolicy::Parallel)
 Sorts a container in parallel. More...
 
template<typename RandomIterator , typename CompareFunction >
void ParallelSort (RandomIterator begin, RandomIterator end, CompareFunction compare, ExecutionPolicy policy=ExecutionPolicy::Parallel)
 Sorts a container in parallel with a custom compare function. More...
 
void SetMaxNumberOfThreads (unsigned int numThreads)
 Sets maximum number of threads to use. More...
 
unsigned int GetMaxNumberOfThreads ()
 Returns maximum number of threads to use. More...
 
Vector2D ComputeDragForce (double dragCoefficient, double radius, const Vector2D &velocity)
 
Vector3D ComputeDragForce (double dragCoefficient, double radius, const Vector3D &velocity)
 
template<size_t N>
Vector< double, N > ProjectAndApplyFriction (const Vector< double, N > &vel, const Vector< double, N > &normal, double frictionCoefficient)
 
double ComputePressureFromEos (double density, double targetDensity, double eosScale, double eosExponent, double negativePressureScale)
 
template<typename T >
Vector3< T > UniformSampleCone (T u1, T u2, const Vector3< T > &axis, T angle)
 Returns randomly sampled direction within a cone. More...
 
template<typename T >
Vector3< T > UniformSampleHemisphere (T u1, T u2, const Vector3< T > &normal)
 Returns randomly sampled point within a unit hemisphere. More...
 
template<typename T >
Vector3< T > CosineWeightedSampleHemisphere (T u1, T u2, const Vector3< T > &normal)
 Returns weighted sampled point on a hemisphere. More...
 
template<typename T >
Vector3< T > UniformSampleSphere (T u1, T u2)
 Returns randomly a point on a sphere. More...
 
template<typename T >
Vector2< T > UniformSampleDisk (T u1, T u2)
 Returns randomly a point on a disk. More...
 
template<typename RandomIterator , typename T >
void SerialFill (const RandomIterator &begin, const RandomIterator &end, const T &value)
 Fills from begin to end with value. More...
 
template<typename IndexType , typename Function >
void SerialFor (IndexType beginIndex, IndexType endIndex, const Function &function)
 Makes a for-loop from beginIndex to endIndex. More...
 
template<typename IndexType , typename Function >
void SerialFor (IndexType beginIndexX, IndexType endIndexX, IndexType beginIndexY, IndexType endIndexY, const Function &function)
 Makes a 2D nested for-loop. More...
 
template<typename IndexType , typename Function >
void SerialFor (IndexType beginIndexX, IndexType endIndexX, IndexType beginIndexY, IndexType endIndexY, IndexType beginIndexZ, IndexType endIndexZ, const Function &function)
 Makes a 3D nested for-loop. More...
 
template<typename RandomIterator >
void SerialSort (RandomIterator begin, RandomIterator end)
 Sorts a container. More...
 
template<typename RandomIterator , typename SortingFunction >
void SerialSort (RandomIterator begin, RandomIterator end, const SortingFunction &sortingFunction)
 Sorts a container with a custom compare function. More...
 
template<typename T >
void Serialize (const ConstArrayAccessor1< T > &array, std::vector< uint8_t > *buffer)
 Serializes data chunk using common schema. More...
 
template<typename T >
void Deserialize (const std::vector< uint8_t > &buffer, Array1< T > *array)
 Deserializes buffer to data chunk using common schema. More...
 
void Serialize (const Serializable *serializable, std::vector< uint8_t > *buffer)
 Serializes serializable object. More...
 
void Serialize (const uint8_t *data, size_t size, std::vector< uint8_t > *buffer)
 Serializes data chunk using common schema. More...
 
void Deserialize (const std::vector< uint8_t > &buffer, Serializable *serializable)
 Deserializes buffer to serializable object. More...
 
void Deserialize (const std::vector< uint8_t > &buffer, std::vector< uint8_t > *data)
 Deserializes buffer to data chunk using common schema. More...
 
template<typename T >
Vector< T, 2 > operator+ (const Vector< T, 2 > &a)
 Positive sign operator. More...
 
template<typename T >
Vector< T, 2 > operator- (const Vector< T, 2 > &a)
 Negative sign operator. More...
 
template<typename T >
Vector< T, 2 > operator+ (const Vector< T, 2 > &a, T b)
 
template<typename T >
Vector< T, 2 > operator+ (T a, const Vector< T, 2 > &b)
 Computes (a, a) + (b.x, b.y). More...
 
template<typename T >
Vector< T, 2 > operator+ (const Vector< T, 2 > &a, const Vector< T, 2 > &b)
 Computes (a.x, a.y) + (b.x, b.y). More...
 
template<typename T >
Vector< T, 2 > operator- (const Vector< T, 2 > &a, T b)
 Computes (a.x, a.y) - (b, b). More...
 
template<typename T >
Vector< T, 2 > operator- (T a, const Vector< T, 2 > &b)
 Computes (a, a) - (b.x, b.y). More...
 
template<typename T >
Vector< T, 2 > operator- (const Vector< T, 2 > &a, const Vector< T, 2 > &b)
 Computes (a.x, a.y) - (b.x, b.y). More...
 
template<typename T >
Vector< T, 2 > operator* (const Vector< T, 2 > &a, T b)
 Computes (a.x, a.y) * (b, b). More...
 
template<typename T >
Vector< T, 2 > operator* (T a, const Vector< T, 2 > &b)
 Computes (a, a) * (b.x, b.y). More...
 
template<typename T >
Vector< T, 2 > operator* (const Vector< T, 2 > &a, const Vector< T, 2 > &b)
 Computes (a.x, a.y) * (b.x, b.y). More...
 
template<typename T >
Vector< T, 2 > operator/ (const Vector< T, 2 > &a, T b)
 Computes (a.x, a.y) / (b, b). More...
 
template<typename T >
Vector< T, 2 > operator/ (T a, const Vector< T, 2 > &b)
 Computes (a, a) / (b.x, b.y). More...
 
template<typename T >
Vector< T, 2 > operator/ (const Vector< T, 2 > &a, const Vector< T, 2 > &b)
 Computes (a.x, a.y) / (b.x, b.y). More...
 
template<typename T >
Vector< T, 2 > Min (const Vector< T, 2 > &a, const Vector< T, 2 > &b)
 Returns element-wise min vector: (min(a.x, b.x), min(a.y, b.y)). More...
 
template<typename T >
Vector< T, 2 > Max (const Vector< T, 2 > &a, const Vector< T, 2 > &b)
 Returns element-wise max vector: (max(a.x, b.x), max(a.y, b.y)). More...
 
template<typename T >
Vector< T, 2 > Clamp (const Vector< T, 2 > &v, const Vector< T, 2 > &low, const Vector< T, 2 > &high)
 Returns element-wise clamped vector. More...
 
template<typename T >
Vector< T, 2 > Ceil (const Vector< T, 2 > &a)
 Returns element-wise ceiled vector. More...
 
template<typename T >
Vector< T, 2 > Floor (const Vector< T, 2 > &a)
 Returns element-wise floored vector. More...
 
template<typename T >
Vector< T, 2 > MonotonicCatmullRom (const Vector< T, 2 > &v0, const Vector< T, 2 > &v1, const Vector< T, 2 > &v2, const Vector< T, 2 > &v3, T f)
 Computes monotonic Catmull-Rom interpolation. More...
 
template<>
constexpr Vector< float, 2 > Zero< Vector< float, 2 > > ()
 Returns float-type zero vector. More...
 
template<>
constexpr Vector< double, 2 > Zero< Vector< double, 2 > > ()
 Returns double-type zero vector. More...
 
template<typename T >
Vector< T, 3 > operator+ (const Vector< T, 3 > &a)
 Positive sign operator. More...
 
template<typename T >
Vector< T, 3 > operator- (const Vector< T, 3 > &a)
 Negative sign operator. More...
 
template<typename T >
Vector< T, 3 > operator+ (const Vector< T, 3 > &a, T b)
 
template<typename T >
Vector< T, 3 > operator+ (T a, const Vector< T, 3 > &b)
 Computes (a, a, a) + (b.x, b.y, b.z). More...
 
template<typename T >
Vector< T, 3 > operator+ (const Vector< T, 3 > &a, const Vector< T, 3 > &b)
 Computes (a.x, a.y, a.z) + (b.x, b.y, b.z). More...
 
template<typename T >
Vector< T, 3 > operator- (const Vector< T, 3 > &a, T b)
 Computes (a.x, a.y, a.z) - (b, b, b). More...
 
template<typename T >
Vector< T, 3 > operator- (T a, const Vector< T, 3 > &b)
 Computes (a, a, a) - (b.x, b.y, b.z). More...
 
template<typename T >
Vector< T, 3 > operator- (const Vector< T, 3 > &a, const Vector< T, 3 > &b)
 Computes (a.x, a.y, a.z) - (b.x, b.y, b.z). More...
 
template<typename T >
Vector< T, 3 > operator* (const Vector< T, 3 > &a, T b)
 Computes (a.x, a.y, a.z) * (b, b, b). More...
 
template<typename T >
Vector< T, 3 > operator* (T a, const Vector< T, 3 > &b)
 Computes (a, a, a) * (b.x, b.y, b.z). More...
 
template<typename T >
Vector< T, 3 > operator* (const Vector< T, 3 > &a, const Vector< T, 3 > &b)
 Computes (a.x, a.y, a.z) * (b.x, b.y, b.z). More...
 
template<typename T >
Vector< T, 3 > operator/ (const Vector< T, 3 > &a, T b)
 Computes (a.x, a.y, a.z) / (b, b, b). More...
 
template<typename T >
Vector< T, 3 > operator/ (T a, const Vector< T, 3 > &b)
 Computes (a, a, a) / (b.x, b.y, b.z). More...
 
template<typename T >
Vector< T, 3 > operator/ (const Vector< T, 3 > &a, const Vector< T, 3 > &b)
 Computes (a.x, a.y, a.z) / (b.x, b.y, b.z). More...
 
template<typename T >
Vector< T, 3 > Min (const Vector< T, 3 > &a, const Vector< T, 3 > &b)
 Returns element-wise min vector. More...
 
template<typename T >
Vector< T, 3 > Max (const Vector< T, 3 > &a, const Vector< T, 3 > &b)
 Returns element-wise max vector. More...
 
template<typename T >
Vector< T, 3 > Clamp (const Vector< T, 3 > &v, const Vector< T, 3 > &low, const Vector< T, 3 > &high)
 Returns element-wise clamped vector. More...
 
template<typename T >
Vector< T, 3 > Ceil (const Vector< T, 3 > &a)
 Returns element-wise ceiled vector. More...
 
template<typename T >
Vector< T, 3 > Floor (const Vector< T, 3 > &a)
 Returns element-wise floored vector. More...
 
template<typename T >
Vector< T, 3 > MonotonicCatmullRom (const Vector< T, 3 > &v0, const Vector< T, 3 > &v1, const Vector< T, 3 > &v2, const Vector< T, 3 > &v3, T f)
 
template<>
constexpr Vector3F Zero< Vector3F > ()
 Returns float-type zero vector. More...
 
template<>
constexpr Vector3D Zero< Vector3D > ()
 Returns double-type zero vector. More...
 
template<typename T >
Vector3< T > MonotonicCatmullRom (const Vector3< T > &v0, const Vector3< T > &v1, const Vector3< T > &v2, const Vector3< T > &v3, T f)
 Computes monotonic Catmull-Rom interpolation. More...
 
template<typename T >
Vector< T, 4 > operator+ (const Vector< T, 4 > &a)
 Positive sign operator. More...
 
template<typename T >
Vector< T, 4 > operator- (const Vector< T, 4 > &a)
 Negative sign operator. More...
 
template<typename T >
Vector< T, 4 > operator+ (const Vector< T, 4 > &a, T b)
 
template<typename T >
Vector< T, 4 > operator+ (T a, const Vector< T, 4 > &b)
 Computes (a, a, a, a) + (b.x, b.y, b.z, b.w). More...
 
template<typename T >
Vector< T, 4 > operator+ (const Vector< T, 4 > &a, const Vector< T, 4 > &b)
 Computes (a.x, a.y, a.z, a.w) + (b.x, b.y, b.z, b.w). More...
 
template<typename T >
Vector< T, 4 > operator- (const Vector< T, 4 > &a, T b)
 Computes (a.x, a.y, a.z, a.w) - (b, b, b, b). More...
 
template<typename T >
Vector< T, 4 > operator- (T a, const Vector< T, 4 > &b)
 Computes (a, a, a, a) - (b.x, b.y, b.z, b.w). More...
 
template<typename T >
Vector< T, 4 > operator- (const Vector< T, 4 > &a, const Vector< T, 4 > &b)
 Computes (a.x, a.y, a.z, a.w) - (b.x, b.y, b.z, b.w). More...
 
template<typename T >
Vector< T, 4 > operator* (const Vector< T, 4 > &a, T b)
 Computes (a.x, a.y, a.z, a.w) * (b, b, b, b). More...
 
template<typename T >
Vector< T, 4 > operator* (T a, const Vector< T, 4 > &b)
 Computes (a, a, a, a) * (b.x, b.y, b.z, b.w). More...
 
template<typename T >
Vector< T, 4 > operator* (const Vector< T, 4 > &a, const Vector< T, 4 > &b)
 Computes (a.x, a.y, a.z, a.w) * (b.x, b.y, b.z, b.w). More...
 
template<typename T >
Vector< T, 4 > operator/ (const Vector< T, 4 > &a, T b)
 Computes (a.x, a.y, a.z, a.w) / (b, b, b, b). More...
 
template<typename T >
Vector< T, 4 > operator/ (T a, const Vector< T, 4 > &b)
 Computes (a, a, a, a) / (b.x, b.y, b.z, b.w). More...
 
template<typename T >
Vector< T, 4 > operator/ (const Vector< T, 4 > &a, const Vector< T, 4 > &b)
 Computes (a.x, a.y, a.z, a.w) / (b.x, b.y, b.z, b.w). More...
 
template<typename T >
Vector< T, 4 > Min (const Vector< T, 4 > &a, const Vector< T, 4 > &b)
 Returns element-wise min vector. More...
 
template<typename T >
Vector< T, 4 > Max (const Vector< T, 4 > &a, const Vector< T, 4 > &b)
 Returns element-wise max vector. More...
 
template<typename T >
Vector< T, 4 > Clamp (const Vector< T, 4 > &v, const Vector< T, 4 > &low, const Vector< T, 4 > &high)
 Returns element-wise clamped vector. More...
 
template<typename T >
Vector< T, 4 > Ceil (const Vector< T, 4 > &a)
 Returns element-wise ceiled vector. More...
 
template<typename T >
Vector< T, 4 > Floor (const Vector< T, 4 > &a)
 Returns element-wise floored vector. More...
 
template<typename T >
Vector< T, 4 > MonotonicCatmullRom (const Vector< T, 4 > &v0, const Vector< T, 4 > &v1, const Vector< T, 4 > &v2, const Vector< T, 4 > &v3, T f)
 Computes monotonic Catmull-Rom interpolation. More...
 
template<>
constexpr Vector4F Zero< Vector4F > ()
 Returns float-type zero vector. More...
 
template<>
constexpr Vector4D Zero< Vector4D > ()
 Returns double-type zero vector. More...
 
template<typename T , typename E >
VectorScalarAdd< T, E > operator+ (const T &a, const VectorExpression< T, E > &b)
 Scalar-vector addition operation. More...
 
template<typename T , typename E >
VectorScalarAdd< T, E > operator+ (const VectorExpression< T, E > &a, const T &b)
 Vector-scalar addition operation. More...
 
template<typename T , typename E1 , typename E2 >
VectorAdd< T, E1, E2 > operator+ (const VectorExpression< T, E1 > &a, const VectorExpression< T, E2 > &b)
 Vector-vector addition operation. More...
 
template<typename T , typename E >
VectorScalarRSub< T, E > operator- (const T &a, const VectorExpression< T, E > &b)
 Scalar-vector subtraction operation. More...
 
template<typename T , typename E >
VectorScalarSub< T, E > operator- (const VectorExpression< T, E > &a, const T &b)
 Scalar-vector addition operation. More...
 
template<typename T , typename E1 , typename E2 >
VectorSub< T, E1, E2 > operator- (const VectorExpression< T, E1 > &a, const VectorExpression< T, E2 > &b)
 Vector-vector addition operation. More...
 
template<typename T , typename E >
VectorScalarMul< T, E > operator* (const T &a, const VectorExpression< T, E > &b)
 Scalar-vector multiplication operation. More...
 
template<typename T , typename E >
VectorScalarMul< T, E > operator* (const VectorExpression< T, E > &a, const T &b)
 Vector-scalar multiplication operation. More...
 
template<typename T , typename E1 , typename E2 >
VectorMul< T, E1, E2 > operator* (const VectorExpression< T, E1 > &a, const VectorExpression< T, E2 > &b)
 Element-wise vector-vector multiplication operation. More...
 
template<typename T , typename E >
VectorScalarRDiv< T, E > operator/ (const T &a, const VectorExpression< T, E > &b)
 Scalar-vector division operation. More...
 
template<typename T , typename E >
VectorScalarDiv< T, E > operator/ (const VectorExpression< T, E > &a, const T &b)
 Vector-scalar division operation. More...
 
template<typename T , typename E1 , typename E2 >
VectorDiv< T, E1, E2 > operator/ (const VectorExpression< T, E1 > &a, const VectorExpression< T, E2 > &b)
 Element-wise vector-vector division operation. More...
 

Variables

constexpr size_t ZERO_SIZE = 0
 Zero size_t. More...
 
constexpr ssize_t ZERO_SSIZE = 0
 Zero ssize_t. More...
 
constexpr size_t ONE_SIZE = 1
 One size_t. More...
 
constexpr ssize_t ONE_SSIZE = 1
 One ssize_t. More...
 
constexpr float PI_FLOAT = 3.14159265358979323846264338327950288f
 Float-type PI. More...
 
constexpr double PI_DOUBLE = 3.14159265358979323846264338327950288
 Double-type PI. More...
 
constexpr float HALF_PI_FLOAT = 1.57079632679489661923132169163975144f
 Float-type PI/2. More...
 
constexpr double HALF_PI_DOUBLE = 1.57079632679489661923132169163975144
 Double-type PI/2. More...
 
constexpr float QUARTER_PI_FLOAT = 0.785398163397448309615660845819875721f
 Float-type PI/4. More...
 
constexpr double QUARTER_PI_DOUBLE = 0.785398163397448309615660845819875721
 Double-type PI/4. More...
 
constexpr double GRAVITY = -9.8
 Gravity. More...
 
constexpr double WATER_DENSITY = 1000.0
 Water density. More...
 
constexpr double SPEED_OF_SOUND_IN_WATER = 1482.0
 Speed of sound in water at 20 degrees Celsius. More...
 
constexpr int DIRECTION_NONE = 0
 No direction. More...
 
constexpr int DIRECTION_LEFT = 1 << 0
 Left direction. More...
 
constexpr int DIRECTION_RIGHT = 1 << 1
 RIght direction. More...
 
constexpr int DIRECTION_DOWN = 1 << 2
 Down direction. More...
 
constexpr int DIRECTION_UP = 1 << 3
 Up direction. More...
 
constexpr int DIRECTION_BACK = 1 << 4
 Back direction. More...
 
constexpr int DIRECTION_FRONT = 1 << 5
 Front direction. More...
 
constexpr int DIRECTION_ALL
 All direction. More...
 
Logger infoLogger
 Info-level logger. More...
 
Logger warnLogger
 Warn-level logger. More...
 
Logger errorLogger
 Error-level logger. More...
 
Logger debugLogger
 Debug-level logger. More...
 

Typedef Documentation

◆ AdvectionSolver2Ptr

using CubbyFlow::AdvectionSolver2Ptr = typedef std::shared_ptr<AdvectionSolver2>

Shared pointer type for the 2-D advection solver.

◆ AdvectionSolver3Ptr

using CubbyFlow::AdvectionSolver3Ptr = typedef std::shared_ptr<AdvectionSolver3>

Shared pointer type for the 3-D advection solver.

◆ AnimationPtr

using CubbyFlow::AnimationPtr = typedef std::shared_ptr<Animation>

Shared pointer for the Animation type.

◆ AnisotropicPointsToImplicit2Ptr

Shared pointer for the AnisotropicPointsToImplicit2 type.

◆ AnisotropicPointsToImplicit3Ptr

Shared pointer for the AnisotropicPointsToImplicit3 type.

◆ APICSolver2Ptr

using CubbyFlow::APICSolver2Ptr = typedef std::shared_ptr<APICSolver2>

Shared pointer type for the APICSolver2.

◆ APICSolver3Ptr

using CubbyFlow::APICSolver3Ptr = typedef std::shared_ptr<APICSolver3>

Shared pointer type for the APICSolver3.

◆ Array1

template<typename T >
using CubbyFlow::Array1 = typedef Array<T, 1>

Type alias for 1-D array.

◆ Array2

template<typename T >
using CubbyFlow::Array2 = typedef Array<T, 2>

Type alias for 2-D array.

◆ Array3

template<typename T >
using CubbyFlow::Array3 = typedef Array<T, 3>

Type alias for 3-D array.

◆ ArrayAccessor1

template<typename T >
using CubbyFlow::ArrayAccessor1 = typedef ArrayAccessor<T, 1>

Type alias for 1-D array accessor.

◆ ArrayAccessor2

template<typename T >
using CubbyFlow::ArrayAccessor2 = typedef ArrayAccessor<T, 2>

Type alias for 2-D array accessor.

◆ ArrayAccessor3

template<typename T >
using CubbyFlow::ArrayAccessor3 = typedef ArrayAccessor<T, 3>

Type alias for 3-D array accessor.

◆ BccLatticePointGeneratorPtr

Shared pointer type for the BccLatticePointGenerator.

◆ BoundingBox2

template<typename T >
using CubbyFlow::BoundingBox2 = typedef BoundingBox<T, 2>

Type alias for 2-D BoundingBox.

◆ BoundingBox2D

using CubbyFlow::BoundingBox2D = typedef BoundingBox2<double>

Double-type 2-D BoundingBox.

◆ BoundingBox2F

using CubbyFlow::BoundingBox2F = typedef BoundingBox2<float>

Float-type 2-D BoundingBox.

◆ BoundingBox3

template<typename T >
using CubbyFlow::BoundingBox3 = typedef BoundingBox<T, 3>

Type alias for 3-D BoundingBox.

◆ BoundingBox3D

using CubbyFlow::BoundingBox3D = typedef BoundingBox3<double>

Double-type 3-D BoundingBox.

◆ BoundingBox3F

using CubbyFlow::BoundingBox3F = typedef BoundingBox3<float>

Float-type 3-D BoundingBox.

◆ BoundingBoxRayIntersection2D

Double-type 2-D box-ray intersection result.

◆ BoundingBoxRayIntersection2F

Float-type 2-D box-ray intersection result.

◆ BoundingBoxRayIntersection3D

Double-type 3-D box-ray intersection result.

◆ BoundingBoxRayIntersection3F

Float-type 3-D box-ray intersection result.

◆ Box2Ptr

using CubbyFlow::Box2Ptr = typedef std::shared_ptr<Box2>

Shared pointer type for the Box2.

◆ Box3Ptr

using CubbyFlow::Box3Ptr = typedef std::shared_ptr<Box3>

Shared pointer type for the Box3.

◆ BoxIntersectionTestFunc2

template<typename T >
using CubbyFlow::BoxIntersectionTestFunc2 = typedef std::function<bool(const T&, const BoundingBox2D&)>

Box-item intersection test function.

◆ BoxIntersectionTestFunc3

template<typename T >
using CubbyFlow::BoxIntersectionTestFunc3 = typedef std::function<bool(const T&, const BoundingBox3D&)>

Box-item intersection test function.

◆ CellCenteredScalarGrid2Ptr

Shared pointer for the CellCenteredScalarGrid2 type.

◆ CellCenteredScalarGrid3Ptr

Shared pointer for the CellCenteredScalarGrid3 type.

◆ CellCenteredVectorGrid2Ptr

Shared pointer for the CellCenteredVectorGrid2 type.

◆ CellCenteredVectorGrid3Ptr

Shared pointer for the CellCenteredVectorGrid3 type.

◆ ClosestIntersectionDistanceFunc2

template<typename T >
using CubbyFlow::ClosestIntersectionDistanceFunc2 = typedef std::function<double(const T&, const Vector2D&)>

Closest intersection distance measure function.

◆ ClosestIntersectionDistanceFunc3

template<typename T >
using CubbyFlow::ClosestIntersectionDistanceFunc3 = typedef std::function<double(const T&, const Vector3D&)>

Closest intersection distance measure function.

◆ Collider2Ptr

using CubbyFlow::Collider2Ptr = typedef std::shared_ptr<Collider2>

Shared pointer type for the Collider2.

◆ Collider3Ptr

using CubbyFlow::Collider3Ptr = typedef std::shared_ptr<Collider3>

Shared pointer type for the Collider3.

◆ ColliderSet2Ptr

typedef std::shared_ptr<ColliderSet2> CubbyFlow::ColliderSet2Ptr

Shared pointer for the ColliderSet2 type.

◆ ColliderSet3Ptr

using CubbyFlow::ColliderSet3Ptr = typedef std::shared_ptr<ColliderSet3>

Shared pointer for the ColliderSet3 type.

◆ CollocatedVectorGrid2Ptr

Shared pointer for the CollocatedVectorGrid2 type.

◆ CollocatedVectorGrid3Ptr

Shared pointer for the CollocatedVectorGrid3 type.

◆ ConstantScalarField2Ptr

using CubbyFlow::ConstantScalarField2Ptr = typedef std::shared_ptr<ConstantScalarField2>

Shared pointer for the ConstantScalarField2 type.

◆ ConstantScalarField3Ptr

using CubbyFlow::ConstantScalarField3Ptr = typedef std::shared_ptr<ConstantScalarField3>

Shared pointer for the ConstantScalarField3 type.

◆ ConstantVectorField2Ptr

using CubbyFlow::ConstantVectorField2Ptr = typedef std::shared_ptr<ConstantVectorField2>

Shared pointer for the ConstantVectorField2 type.

◆ ConstantVectorField3Ptr

using CubbyFlow::ConstantVectorField3Ptr = typedef std::shared_ptr<ConstantVectorField3>

Shared pointer for the ConstantVectorField3 type.

◆ ConstArrayAccessor1

template<typename T >
using CubbyFlow::ConstArrayAccessor1 = typedef ConstArrayAccessor<T, 1>

Type alias for 1-D const array accessor.

◆ ConstArrayAccessor2

template<typename T >
using CubbyFlow::ConstArrayAccessor2 = typedef ConstArrayAccessor<T, 2>

Type alias for 2-D const array accessor.

◆ ConstArrayAccessor3

template<typename T >
using CubbyFlow::ConstArrayAccessor3 = typedef ConstArrayAccessor<T, 3>

Type alias for 3-D const array accessor.

◆ CubicArraySampler1

template<typename T , typename R >
using CubbyFlow::CubicArraySampler1 = typedef CubicArraySampler<T, R, 1>

Type alias for 1-D cubic array sampler.

◆ CubicArraySampler2

template<typename T , typename R >
using CubbyFlow::CubicArraySampler2 = typedef CubicArraySampler<T, R, 2>

Type alias for 2-D cubic array sampler.

◆ CubicArraySampler3

template<typename T , typename R >
using CubbyFlow::CubicArraySampler3 = typedef CubicArraySampler<T, R, 3>

Type alias for 3-D cubic array sampler.

◆ CubicSemiLagrangian2Ptr

using CubbyFlow::CubicSemiLagrangian2Ptr = typedef std::shared_ptr<CubicSemiLagrangian2>

◆ CubicSemiLagrangian3Ptr

using CubbyFlow::CubicSemiLagrangian3Ptr = typedef std::shared_ptr<CubicSemiLagrangian3>

◆ CustomImplicitSurface2Ptr

Shared pointer type for the CustomImplicitSurface2.

◆ CustomImplicitSurface3Ptr

Shared pointer type for the CustomImplicitSurface3.

◆ CustomScalarField2Ptr

using CubbyFlow::CustomScalarField2Ptr = typedef std::shared_ptr<CustomScalarField2>

Shared pointer type for the CustomScalarField2.

◆ CustomScalarField3Ptr

using CubbyFlow::CustomScalarField3Ptr = typedef std::shared_ptr<CustomScalarField3>

Shared pointer type for the CustomScalarField3.

◆ CustomVectorField2Ptr

using CubbyFlow::CustomVectorField2Ptr = typedef std::shared_ptr<CustomVectorField2>

Shared pointer type for the CustomVectorField2.

◆ CustomVectorField3Ptr

using CubbyFlow::CustomVectorField3Ptr = typedef std::shared_ptr<CustomVectorField3>

Shared pointer type for the CustomVectorField3.

◆ Cylinder3Ptr

using CubbyFlow::Cylinder3Ptr = typedef std::shared_ptr<Cylinder3>

Shared pointer type for the Cylinder3.

◆ ENOLevelSetSolver2Ptr

using CubbyFlow::ENOLevelSetSolver2Ptr = typedef std::shared_ptr<ENOLevelSetSolver2>

◆ ENOLevelSetSolver3Ptr

using CubbyFlow::ENOLevelSetSolver3Ptr = typedef std::shared_ptr<ENOLevelSetSolver3>

◆ FaceCenteredGrid2Ptr

using CubbyFlow::FaceCenteredGrid2Ptr = typedef std::shared_ptr<FaceCenteredGrid2>

Shared pointer type for the FaceCenteredGrid2.

◆ FaceCenteredGrid3Ptr

using CubbyFlow::FaceCenteredGrid3Ptr = typedef std::shared_ptr<FaceCenteredGrid3>

Shared pointer type for the FaceCenteredGrid3.

◆ FDMCGSolver2Ptr

using CubbyFlow::FDMCGSolver2Ptr = typedef std::shared_ptr<FDMCGSolver2>

Shared pointer type for the FDMCGSolver2.

◆ FDMCGSolver3Ptr

using CubbyFlow::FDMCGSolver3Ptr = typedef std::shared_ptr<FDMCGSolver3>

Shared pointer type for the FDMCGSolver3.

◆ FDMGaussSeidelSolver2Ptr

Shared pointer type for the FDMGaussSeidelSolver2.

◆ FDMGaussSeidelSolver3Ptr

Shared pointer type for the FDMGaussSeidelSolver3.

◆ FDMICCGSolver2Ptr

using CubbyFlow::FDMICCGSolver2Ptr = typedef std::shared_ptr<FDMICCGSolver2>

Shared pointer type for the FDMICCGSolver2.

◆ FDMICCGSolver3Ptr

using CubbyFlow::FDMICCGSolver3Ptr = typedef std::shared_ptr<FDMICCGSolver3>

Shared pointer type for the FDMICCGSolver3.

◆ FDMJacobiSolver2Ptr

using CubbyFlow::FDMJacobiSolver2Ptr = typedef std::shared_ptr<FDMJacobiSolver2>

Shared pointer type for the FDMJacobiSolver2.

◆ FDMJacobiSolver3Ptr

using CubbyFlow::FDMJacobiSolver3Ptr = typedef std::shared_ptr<FDMJacobiSolver3>

Shared pointer type for the FDMJacobiSolver3.

◆ FDMLinearSystemSolver2Ptr

Shared pointer type for the FDMLinearSystemSolver2.

◆ FDMLinearSystemSolver3Ptr

Shared pointer type for the FDMLinearSystemSolver3.

◆ FDMMatrix2

Matrix type for 2-D finite differencing.

◆ FDMMatrix3

Matrix type for 3-D finite differencing.

◆ FDMMGMatrix2

Multigrid-style 2-D FDM matrix.

◆ FDMMGMatrix3

Multigrid-style 3-D FDM matrix.

◆ FDMMGPCGSolver2Ptr

using CubbyFlow::FDMMGPCGSolver2Ptr = typedef std::shared_ptr<FDMMGPCGSolver2>

Shared pointer type for the FDMMGPCGSolver2.

◆ FDMMGPCGSolver3Ptr

using CubbyFlow::FDMMGPCGSolver3Ptr = typedef std::shared_ptr<FDMMGPCGSolver3>

Shared pointer type for the FDMMGPCGSolver3.

◆ FDMMGSolver2Ptr

using CubbyFlow::FDMMGSolver2Ptr = typedef std::shared_ptr<FDMMGSolver2>

Shared pointer type for the FDMMGSolver2.

◆ FDMMGSolver3Ptr

using CubbyFlow::FDMMGSolver3Ptr = typedef std::shared_ptr<FDMMGSolver3>

Shared pointer type for the FDMMGSolver3.

◆ FDMMGVector2

Multigrid-style 2-D FDM vector.

◆ FDMMGVector3

Multigrid-style 3-D FDM vector.

◆ FDMVector2

using CubbyFlow::FDMVector2 = typedef Array2<double>

Vector type for 2-D finite differencing.

◆ FDMVector3

using CubbyFlow::FDMVector3 = typedef Array3<double>

Vector type for 3-D finite differencing.

◆ Field2Ptr

using CubbyFlow::Field2Ptr = typedef std::shared_ptr<Field2>

◆ Field3Ptr

using CubbyFlow::Field3Ptr = typedef std::shared_ptr<Field3>

◆ FLIPSolver2Ptr

using CubbyFlow::FLIPSolver2Ptr = typedef std::shared_ptr<FLIPSolver2>

Shared pointer type for the FLIPSolver2.

◆ FLIPSolver3Ptr

using CubbyFlow::FLIPSolver3Ptr = typedef std::shared_ptr<FLIPSolver3>

Shared pointer type for the FLIPSolver3.

◆ FMMLevelSetSolver2Ptr

using CubbyFlow::FMMLevelSetSolver2Ptr = typedef std::shared_ptr<FMMLevelSetSolver2>

Shared pointer type for the FMMLevelSetSolver2.

◆ FMMLevelSetSolver3Ptr

using CubbyFlow::FMMLevelSetSolver3Ptr = typedef std::shared_ptr<FMMLevelSetSolver3>

Shared pointer type for the FMMLevelSetSolver3.

◆ GetRayIntersectionFunc2

template<typename T >
using CubbyFlow::GetRayIntersectionFunc2 = typedef std::function<double(const T&, const Ray2D&)>

Ray-item closest intersection evaluation function.

◆ GetRayIntersectionFunc3

template<typename T >
using CubbyFlow::GetRayIntersectionFunc3 = typedef std::function<double(const T&, const Ray3D&)>

Ray-item closest intersection evaluation function.

◆ Grid2Ptr

using CubbyFlow::Grid2Ptr = typedef std::shared_ptr<Grid2>

◆ Grid3Ptr

using CubbyFlow::Grid3Ptr = typedef std::shared_ptr<Grid3>

◆ GridBackwardEulerDiffusionSolver2Ptr

◆ GridBackwardEulerDiffusionSolver3Ptr

◆ GridBlockedBoundaryConditionSolver2Ptr

◆ GridBlockedBoundaryConditionSolver3Ptr

◆ GridBoundaryConditionSolver2Ptr

Shared pointer type for the GridBoundaryConditionSolver2.

◆ GridBoundaryConditionSolver3Ptr

Shared pointer type for the GridBoundaryConditionSolver3.

◆ GridDiffusionSolver2Ptr

using CubbyFlow::GridDiffusionSolver2Ptr = typedef std::shared_ptr<GridDiffusionSolver2>

Shared pointer type for the GridDiffusionSolver2.

◆ GridDiffusionSolver3Ptr

using CubbyFlow::GridDiffusionSolver3Ptr = typedef std::shared_ptr<GridDiffusionSolver3>

Shared pointer type for the GridDiffusionSolver3.

◆ GridEmitter2Ptr

using CubbyFlow::GridEmitter2Ptr = typedef std::shared_ptr<GridEmitter2>

Shared pointer type for the GridEmitter2.

◆ GridEmitter3Ptr

using CubbyFlow::GridEmitter3Ptr = typedef std::shared_ptr<GridEmitter3>

Shared pointer type for the GridEmitter3.

◆ GridEmitterSet2Ptr

using CubbyFlow::GridEmitterSet2Ptr = typedef std::shared_ptr<GridEmitterSet2>

Shared pointer type for the GridEmitterSet2.

◆ GridEmitterSet3Ptr

using CubbyFlow::GridEmitterSet3Ptr = typedef std::shared_ptr<GridEmitterSet3>

Shared pointer type for the GridEmitterSet3.

◆ GridFluidSolver2Ptr

using CubbyFlow::GridFluidSolver2Ptr = typedef std::shared_ptr<GridFluidSolver2>

Shared pointer type for the GridFluidSolver2.

◆ GridFluidSolver3Ptr

using CubbyFlow::GridFluidSolver3Ptr = typedef std::shared_ptr<GridFluidSolver3>

Shared pointer type for the GridFluidSolver3.

◆ GridForwardEulerDiffusionSolver2Ptr

◆ GridForwardEulerDiffusionSolver3Ptr

◆ GridFractionalBoundaryConditionSolver2Ptr

◆ GridFractionalBoundaryConditionSolver3Ptr

◆ GridFractionalSinglePhasePressureSolver2Ptr

◆ GridFractionalSinglePhasePressureSolver3Ptr

◆ GridPointGenerator2Ptr

using CubbyFlow::GridPointGenerator2Ptr = typedef std::shared_ptr<GridPointGenerator2>

Shared pointer type for the GridPointGenerator2.

◆ GridPointGenerator3Ptr

using CubbyFlow::GridPointGenerator3Ptr = typedef std::shared_ptr<GridPointGenerator3>

Shared pointer type for the GridPointGenerator3.

◆ GridPressureSolver2Ptr

using CubbyFlow::GridPressureSolver2Ptr = typedef std::shared_ptr<GridPressureSolver2>

Shared pointer type for the GridPressureSolver2.

◆ GridPressureSolver3Ptr

using CubbyFlow::GridPressureSolver3Ptr = typedef std::shared_ptr<GridPressureSolver3>

Shared pointer type for the GridPressureSolver3.

◆ GridSinglePhasePressureSolver2Ptr

◆ GridSinglePhasePressureSolver3Ptr

◆ GridSmokeSolver2Ptr

using CubbyFlow::GridSmokeSolver2Ptr = typedef std::shared_ptr<GridSmokeSolver2>

Shared pointer type for the GridSmokeSolver2.

◆ GridSmokeSolver3Ptr

using CubbyFlow::GridSmokeSolver3Ptr = typedef std::shared_ptr<GridSmokeSolver3>

Shared pointer type for the GridSmokeSolver3.

◆ GridSystemData2Ptr

using CubbyFlow::GridSystemData2Ptr = typedef std::shared_ptr<GridSystemData2>

Shared pointer type of GridSystemData2.

◆ GridSystemData3Ptr

using CubbyFlow::GridSystemData3Ptr = typedef std::shared_ptr<GridSystemData3>

Shared pointer type of GridSystemData3.

◆ ImplicitSurface2Ptr

using CubbyFlow::ImplicitSurface2Ptr = typedef std::shared_ptr<ImplicitSurface2>

Shared pointer type for the ImplicitSurface2.

◆ ImplicitSurface3Ptr

using CubbyFlow::ImplicitSurface3Ptr = typedef std::shared_ptr<ImplicitSurface3>

Shared pointer type for the ImplicitSurface3.

◆ ImplicitSurfaceSet2Ptr

using CubbyFlow::ImplicitSurfaceSet2Ptr = typedef std::shared_ptr<ImplicitSurfaceSet2>

Shared pointer type for the ImplicitSurfaceSet2.

◆ ImplicitSurfaceSet3Ptr

using CubbyFlow::ImplicitSurfaceSet3Ptr = typedef std::shared_ptr<ImplicitSurfaceSet3>

Shared pointer type for the ImplicitSurfaceSet3.

◆ ImplicitTriangleMesh3Ptr

Shared pointer for the ImplicitTriangleMesh3 type.

◆ IntersectionVisitorFunc2

template<typename T >
using CubbyFlow::IntersectionVisitorFunc2 = typedef std::function<void(const T&)>

Visitor function which is invoked for each intersecting item.

◆ IntersectionVisitorFunc3

template<typename T >
using CubbyFlow::IntersectionVisitorFunc3 = typedef std::function<void(const T&)>

Visitor function which is invoked for each intersecting item.

◆ IterativeLevelSetSolver2Ptr

◆ IterativeLevelSetSolver3Ptr

◆ LevelSetLiquidSolver2Ptr

Shared pointer type for the LevelSetLiquidSolver2.

◆ LevelSetLiquidSolver3Ptr

Shared pointer type for the LevelSetLiquidSolver3.

◆ LevelSetSolver2Ptr

using CubbyFlow::LevelSetSolver2Ptr = typedef std::shared_ptr<LevelSetSolver2>

Shared pointer type for the LevelSetSolver2.

◆ LevelSetSolver3Ptr

using CubbyFlow::LevelSetSolver3Ptr = typedef std::shared_ptr<LevelSetSolver3>

Shared pointer type for the LevelSetSolver3.

◆ LinearArraySampler1

template<typename T , typename R >
using CubbyFlow::LinearArraySampler1 = typedef LinearArraySampler<T, R, 1>

Type alias for 1-D linear array sampler.

◆ LinearArraySampler2

template<typename T , typename R >
using CubbyFlow::LinearArraySampler2 = typedef LinearArraySampler<T, R, 2>

Type alias for 2-D linear array sampler.

◆ LinearArraySampler3

template<typename T , typename R >
using CubbyFlow::LinearArraySampler3 = typedef LinearArraySampler<T, R, 3>

Type alias for 3-D linear array sampler.

◆ Matrix2x2

template<typename T >
using CubbyFlow::Matrix2x2 = typedef Matrix<T, 2, 2>

Type alias for 2x2 matrix.

◆ Matrix2x2D

using CubbyFlow::Matrix2x2D = typedef Matrix2x2<double>

Double-type 2x2 matrix.

◆ Matrix2x2F

using CubbyFlow::Matrix2x2F = typedef Matrix2x2<float>

Float-type 2x2 matrix.

◆ Matrix3x3

template<typename T >
using CubbyFlow::Matrix3x3 = typedef Matrix<T, 3, 3>

Type alias for 3x3 matrix.

◆ Matrix3x3D

using CubbyFlow::Matrix3x3D = typedef Matrix3x3<double>

Double-type 3x3 matrix.

◆ Matrix3x3F

using CubbyFlow::Matrix3x3F = typedef Matrix3x3<float>

Float-type 3x3 matrix.

◆ Matrix4x4

template<typename T >
using CubbyFlow::Matrix4x4 = typedef Matrix<T, 4, 4>

Type alias for 4x4 matrix.

◆ Matrix4x4D

using CubbyFlow::Matrix4x4D = typedef Matrix4x4<double>

Double-type 4x4 matrix.

◆ Matrix4x4F

using CubbyFlow::Matrix4x4F = typedef Matrix4x4<float>

Float-type 4x4 matrix.

◆ MatrixAdd

template<typename T , typename E1 , typename E2 >
using CubbyFlow::MatrixAdd = typedef MatrixBinaryOp<T, E1, E2, std::plus<T> >

Matrix-matrix addition expression.

◆ MatrixCSRD

using CubbyFlow::MatrixCSRD = typedef MatrixCSR<double>

Double-type CSR matrix.

◆ MatrixCSRF

using CubbyFlow::MatrixCSRF = typedef MatrixCSR<float>

Float-type CSR matrix.

◆ MatrixMxND

using CubbyFlow::MatrixMxND = typedef MatrixMxN<double>

Double-type M x N matrix.

◆ MatrixMxNF

using CubbyFlow::MatrixMxNF = typedef MatrixMxN<float>

Float-type M x N matrix.

◆ MatrixScalarAdd

template<typename T , typename E >
using CubbyFlow::MatrixScalarAdd = typedef MatrixScalarBinaryOp<T, E, std::plus<T> >

Matrix-scalar addition expression.

◆ MatrixScalarDiv

template<typename T , typename E >
using CubbyFlow::MatrixScalarDiv = typedef MatrixScalarBinaryOp<T, E, std::divides<T> >

Matrix-scalar division expression.

◆ MatrixScalarMul

template<typename T , typename E >
using CubbyFlow::MatrixScalarMul = typedef MatrixScalarBinaryOp<T, E, std::multiplies<T> >

Matrix-scalar multiplication expression.

◆ MatrixScalarRDiv

template<typename T , typename E >
using CubbyFlow::MatrixScalarRDiv = typedef MatrixScalarBinaryOp<T, E, RDivides<T> >

Matrix-scalar division expression with inversed order.

◆ MatrixScalarRSub

template<typename T , typename E >
using CubbyFlow::MatrixScalarRSub = typedef MatrixScalarBinaryOp<T, E, RMinus<T> >

Matrix-matrix subtraction expression with inversed order.

◆ MatrixScalarSub

template<typename T , typename E >
using CubbyFlow::MatrixScalarSub = typedef MatrixScalarBinaryOp<T, E, std::minus<T> >

Matrix-scalar subtraction expression.

◆ MatrixSub

template<typename T , typename E1 , typename E2 >
using CubbyFlow::MatrixSub = typedef MatrixBinaryOp<T, E1, E2, std::minus<T> >

Matrix-matrix subtraction expression.

◆ MatrixTypeCast

template<typename T , typename E , typename U >
using CubbyFlow::MatrixTypeCast = typedef MatrixUnaryOp<T, E, TypeCast<U, T> >

Matrix expression for type casting.

◆ MGCorrectFunc

template<typename BlasType >
using CubbyFlow::MGCorrectFunc = typedef std::function<void( const typename BlasType::VectorType& coarser, typename BlasType::VectorType* finer)>

Multi-grid correction function type.

◆ MGRelaxFunc

template<typename BlasType >
using CubbyFlow::MGRelaxFunc = typedef std::function<void( const typename BlasType::MatrixType& A, const typename BlasType::VectorType& b, unsigned int numberOfIterations, double maxTolerance, typename BlasType::VectorType* x, typename BlasType::VectorType* buffer)>

Multi-grid relax function type.

◆ MGRestrictFunc

template<typename BlasType >
using CubbyFlow::MGRestrictFunc = typedef std::function<void( const typename BlasType::VectorType& finer, typename BlasType::VectorType* coarser)>

Multi-grid restriction function type.

◆ NearestArraySampler1

template<typename T , typename R >
using CubbyFlow::NearestArraySampler1 = typedef NearestArraySampler<T, R, 1>

Type alias for 1-D nearest array sampler.

◆ NearestArraySampler2

template<typename T , typename R >
using CubbyFlow::NearestArraySampler2 = typedef NearestArraySampler<T, R, 2>

Type alias for 2-D nearest array sampler.

◆ NearestArraySampler3

template<typename T , typename R >
using CubbyFlow::NearestArraySampler3 = typedef NearestArraySampler<T, R, 3>

Type alias for 3-D nearest array sampler.

◆ NearestNeighborDistanceFunc2

template<typename T >
using CubbyFlow::NearestNeighborDistanceFunc2 = typedef std::function<double(const T&, const Vector2D&)>

Nearest neighbor distance measure function.

◆ NearestNeighborDistanceFunc3

template<typename T >
using CubbyFlow::NearestNeighborDistanceFunc3 = typedef std::function<double(const T&, const Vector3D&)>

Nearest neighbor distance measure function.

◆ ParticleEmitter2Ptr

using CubbyFlow::ParticleEmitter2Ptr = typedef std::shared_ptr<ParticleEmitter2>

Shared pointer for the ParticleEmitter2 type.

◆ ParticleEmitter3Ptr

using CubbyFlow::ParticleEmitter3Ptr = typedef std::shared_ptr<ParticleEmitter3>

Shared pointer for the ParticleEmitter3 type.

◆ ParticleEmitterSet2Ptr

using CubbyFlow::ParticleEmitterSet2Ptr = typedef std::shared_ptr<ParticleEmitterSet2>

Shared pointer type for the ParticleEmitterSet2.

◆ ParticleEmitterSet3Ptr

using CubbyFlow::ParticleEmitterSet3Ptr = typedef std::shared_ptr<ParticleEmitterSet3>

Shared pointer type for the ParticleEmitterSet3.

◆ ParticleSystemData2Ptr

using CubbyFlow::ParticleSystemData2Ptr = typedef std::shared_ptr<ParticleSystemData2>

Shared pointer type of ParticleSystemData2.

◆ ParticleSystemData3Ptr

using CubbyFlow::ParticleSystemData3Ptr = typedef std::shared_ptr<ParticleSystemData3>

Shared pointer type of ParticleSystemData3.

◆ ParticleSystemSolver2Ptr

Shared pointer type for the ParticleSystemSolver2.

◆ ParticleSystemSolver3Ptr

Shared pointer type for the ParticleSystemSolver3.

◆ PCISPHSolver2Ptr

using CubbyFlow::PCISPHSolver2Ptr = typedef std::shared_ptr<PCISPHSolver2>

Shared pointer type for the PCISPHSolver2.

◆ PCISPHSolver3Ptr

using CubbyFlow::PCISPHSolver3Ptr = typedef std::shared_ptr<PCISPHSolver3>

Shared pointer type for the PCISPHSolver3.

◆ PhysicsAnimationPtr

using CubbyFlow::PhysicsAnimationPtr = typedef std::shared_ptr<PhysicsAnimation>

◆ PICSolver2Ptr

using CubbyFlow::PICSolver2Ptr = typedef std::shared_ptr<PICSolver2>

Shared pointer type for the PICSolver2.

◆ PICSolver3Ptr

using CubbyFlow::PICSolver3Ptr = typedef std::shared_ptr<PICSolver3>

Shared pointer type for the PICSolver3.

◆ Plane2Ptr

using CubbyFlow::Plane2Ptr = typedef std::shared_ptr<Plane2>

Shared pointer for the Plane2 type.

◆ Plane3Ptr

using CubbyFlow::Plane3Ptr = typedef std::shared_ptr<Plane3>

Shared pointer for the Plane3 type.

◆ Point2

template<typename T >
using CubbyFlow::Point2 = typedef Point<T, 2>

Type alias for two dimensional point.

◆ Point2D

using CubbyFlow::Point2D = typedef Point2<double>

Double-type 2D point.

◆ Point2F

using CubbyFlow::Point2F = typedef Point2<float>

Float-type 2D point.

◆ Point2I

using CubbyFlow::Point2I = typedef Point2<ssize_t>

Integer-type 2D point.

◆ Point2UI

using CubbyFlow::Point2UI = typedef Point2<size_t>

Unsigned integer-type 2D point.

◆ Point3

template<typename T >
using CubbyFlow::Point3 = typedef Point<T, 3>

Type alias for three dimensional point.

◆ Point3D

using CubbyFlow::Point3D = typedef Point3<double>

Double-type 3D point.

◆ Point3F

using CubbyFlow::Point3F = typedef Point3<float>

Float-type 3D point.

◆ Point3I

using CubbyFlow::Point3I = typedef Point3<ssize_t>

Integer-type 3D point.

◆ Point3UI

using CubbyFlow::Point3UI = typedef Point3<size_t>

Unsigned integer-type 3D point.

◆ PointGenerator2Ptr

using CubbyFlow::PointGenerator2Ptr = typedef std::shared_ptr<PointGenerator2>

Shared pointer for the PointGenerator2 type.

◆ PointGenerator3Ptr

using CubbyFlow::PointGenerator3Ptr = typedef std::shared_ptr<PointGenerator3>

Shared pointer for the PointGenerator3 type.

◆ PointHashGridSearcher2Ptr

Shared pointer for the PointHashGridSearcher2 type.

◆ PointHashGridSearcher3Ptr

Shared pointer for the PointHashGridSearcher3 type.

◆ PointKdTreeSearcher2Ptr

using CubbyFlow::PointKdTreeSearcher2Ptr = typedef std::shared_ptr<PointKdTreeSearcher2>

Shared pointer for the PointKdTreeSearcher2 type.

◆ PointKdTreeSearcher3Ptr

using CubbyFlow::PointKdTreeSearcher3Ptr = typedef std::shared_ptr<PointKdTreeSearcher3>

Shared pointer for the PointKdTreeSearcher3 type.

◆ PointNeighborSearcher2Ptr

Shared pointer for the PointNeighborSearcher2 type.

◆ PointNeighborSearcher3Ptr

Shared pointer for the PointNeighborSearcher3 type.

◆ PointNeighborSearcherBuilder2Ptr

◆ PointNeighborSearcherBuilder3Ptr

◆ PointParallelHashGridSearcher2Ptr

◆ PointParallelHashGridSearcher3Ptr

◆ PointParticleEmitter2Ptr

Shared pointer for the PointParticleEmitter2 type.

◆ PointParticleEmitter3Ptr

Shared pointer for the PointParticleEmitter3 type.

◆ PointSimpleListSearcher2Ptr

Shared pointer for the PointSimpleListSearcher2 type.

◆ PointSimpleListSearcher3Ptr

Shared pointer for the PointSimpleListSearcher3 type.

◆ PointsToImplicit2Ptr

using CubbyFlow::PointsToImplicit2Ptr = typedef std::shared_ptr<PointsToImplicit2>

Shared pointer for the PointsToImplicit2 type.

◆ PointsToImplicit3Ptr

using CubbyFlow::PointsToImplicit3Ptr = typedef std::shared_ptr<PointsToImplicit3>

Shared pointer for the PointsToImplicit3 type.

◆ QuaternionD

using CubbyFlow::QuaternionD = typedef Quaternion<double>

Double-type quaternion.

◆ QuaternionF

using CubbyFlow::QuaternionF = typedef Quaternion<float>

Float-type quaternion.

◆ Ray2

template<typename T >
using CubbyFlow::Ray2 = typedef Ray<T, 2>

Type alias for 2-D ray.

◆ Ray2D

using CubbyFlow::Ray2D = typedef Ray2<double>

Double-type 2-D ray.

◆ Ray2F

using CubbyFlow::Ray2F = typedef Ray2<float>

Float-type 2-D ray.

◆ Ray3

template<typename T >
using CubbyFlow::Ray3 = typedef Ray<T, 3>

Type alias for 3-D ray.

◆ Ray3D

using CubbyFlow::Ray3D = typedef Ray3<double>

Double-type 3-D ray.

◆ Ray3F

using CubbyFlow::Ray3F = typedef Ray3<float>

Float-type 3-D ray.

◆ RayIntersectionTestFunc2

template<typename T >
using CubbyFlow::RayIntersectionTestFunc2 = typedef std::function<bool(const T&, const Ray2D&)>

Ray-item intersection test function.

◆ RayIntersectionTestFunc3

template<typename T >
using CubbyFlow::RayIntersectionTestFunc3 = typedef std::function<bool(const T&, const Ray3D&)>

Ray-item intersection test function.

◆ RigidBodyCollider2Ptr

using CubbyFlow::RigidBodyCollider2Ptr = typedef std::shared_ptr<RigidBodyCollider2>

Shared pointer for the RigidBodyCollider2 type.

◆ RigidBodyCollider3Ptr

using CubbyFlow::RigidBodyCollider3Ptr = typedef std::shared_ptr<RigidBodyCollider3>

Shared pointer for the RigidBodyCollider3 type.

◆ ScalarField2Ptr

using CubbyFlow::ScalarField2Ptr = typedef std::shared_ptr<ScalarField2>

Shared pointer for the ScalarField2 type.

◆ ScalarField3Ptr

using CubbyFlow::ScalarField3Ptr = typedef std::shared_ptr<ScalarField3>

Shared pointer for the ScalarField3 type.

◆ ScalarGrid2Ptr

using CubbyFlow::ScalarGrid2Ptr = typedef std::shared_ptr<ScalarGrid2>

Shared pointer for the ScalarGrid2 type.

◆ ScalarGrid3Ptr

using CubbyFlow::ScalarGrid3Ptr = typedef std::shared_ptr<ScalarGrid3>

Shared pointer for the ScalarGrid3 type.

◆ ScalarGridBuilder2Ptr

using CubbyFlow::ScalarGridBuilder2Ptr = typedef std::shared_ptr<ScalarGridBuilder2>

Shared pointer for the ScalarGridBuilder2 type.

◆ ScalarGridBuilder3Ptr

using CubbyFlow::ScalarGridBuilder3Ptr = typedef std::shared_ptr<ScalarGridBuilder3>

Shared pointer for the ScalarGridBuilder3 type.

◆ SemiLagrangian2Ptr

using CubbyFlow::SemiLagrangian2Ptr = typedef std::shared_ptr<SemiLagrangian2>

◆ SemiLagrangian3Ptr

using CubbyFlow::SemiLagrangian3Ptr = typedef std::shared_ptr<SemiLagrangian3>

◆ Size

template<size_t N>
using CubbyFlow::Size = typedef Point<size_t, N>

◆ Size2

using CubbyFlow::Size2 = typedef Point2<size_t>

◆ Size3

using CubbyFlow::Size3 = typedef Point3<size_t>

◆ Sphere2Ptr

using CubbyFlow::Sphere2Ptr = typedef std::shared_ptr<Sphere2>

Shared pointer for the Sphere2 type.

◆ Sphere3Ptr

using CubbyFlow::Sphere3Ptr = typedef std::shared_ptr<Sphere3>

Shared pointer for the Sphere3 type.

◆ SphericalPointsToImplicit2Ptr

Shared pointer type for SphericalPointsToImplicit2.

◆ SphericalPointsToImplicit3Ptr

Shared pointer type for SphericalPointsToImplicit3.

◆ SPHPointsToImplicit2Ptr

using CubbyFlow::SPHPointsToImplicit2Ptr = typedef std::shared_ptr<SPHPointsToImplicit2>

Shared pointer type for SPHPointsToImplicit2 class.

◆ SPHPointsToImplicit3Ptr

using CubbyFlow::SPHPointsToImplicit3Ptr = typedef std::shared_ptr<SPHPointsToImplicit3>

Shared pointer type for SPHPointsToImplicit3 class.

◆ SPHSolver2Ptr

using CubbyFlow::SPHSolver2Ptr = typedef std::shared_ptr<SPHSolver2>

Shared pointer type for the SPHSolver2.

◆ SPHSolver3Ptr

using CubbyFlow::SPHSolver3Ptr = typedef std::shared_ptr<SPHSolver3>

Shared pointer type for the SPHSolver3.

◆ SPHSystemData2Ptr

using CubbyFlow::SPHSystemData2Ptr = typedef std::shared_ptr<SPHSystemData2>

Shared pointer for the SPHSystemData2 type.

◆ SPHSystemData3Ptr

using CubbyFlow::SPHSystemData3Ptr = typedef std::shared_ptr<SPHSystemData3>

Shared pointer for the SPHSystemData3 type.

◆ Surface2Ptr

using CubbyFlow::Surface2Ptr = typedef std::shared_ptr<Surface2>

Shared pointer for the Surface2 type.

◆ Surface3Ptr

using CubbyFlow::Surface3Ptr = typedef std::shared_ptr<Surface3>

Shared pointer for the Surface3 type.

◆ SurfaceSet2Ptr

using CubbyFlow::SurfaceSet2Ptr = typedef std::shared_ptr<SurfaceSet2>

Shared pointer for the SurfaceSet2 type.

◆ SurfaceSet3Ptr

using CubbyFlow::SurfaceSet3Ptr = typedef std::shared_ptr<SurfaceSet3>

Shared pointer for the SurfaceSet3 type.

◆ SurfaceToImplicit2Ptr

using CubbyFlow::SurfaceToImplicit2Ptr = typedef std::shared_ptr<SurfaceToImplicit2>

Shared pointer for the SurfaceToImplicit2 type.

◆ SurfaceToImplicit3Ptr

using CubbyFlow::SurfaceToImplicit3Ptr = typedef std::shared_ptr<SurfaceToImplicit3>

Shared pointer for the SurfaceToImplicit3.

◆ Triangle3Ptr

using CubbyFlow::Triangle3Ptr = typedef std::shared_ptr<Triangle3>

Shared pointer for the Triangle3 type.

◆ TriangleMesh3Ptr

using CubbyFlow::TriangleMesh3Ptr = typedef std::shared_ptr<TriangleMesh3>

Shared pointer for the TriangleMesh3 type.

◆ TrianglePointGeneratorPtr

◆ UpwindLevelSetSolver2Ptr

◆ UpwindLevelSetSolver3Ptr

◆ Vector2

template<typename T >
using CubbyFlow::Vector2 = typedef Vector<T, 2>

Type alias for two dimensional vector.

◆ Vector2D

using CubbyFlow::Vector2D = typedef Vector2<double>

Double-type 2D vector.

◆ Vector2F

using CubbyFlow::Vector2F = typedef Vector2<float>

Float-type 2D vector.

◆ Vector3

template<typename T >
using CubbyFlow::Vector3 = typedef Vector<T, 3>

Type alias for three dimensional vector.

◆ Vector3D

using CubbyFlow::Vector3D = typedef Vector3<double>

Double-type 3D vector.

◆ Vector3F

using CubbyFlow::Vector3F = typedef Vector3<float>

Float-type 3D vector.

◆ Vector4

template<typename T >
using CubbyFlow::Vector4 = typedef Vector<T, 4>

Type alias for four dimensional vector.

◆ Vector4D

using CubbyFlow::Vector4D = typedef Vector4<double>

Double-type 4D vector.

◆ Vector4F

using CubbyFlow::Vector4F = typedef Vector4<float>

Float-type 4D vector.

◆ VectorAdd

template<typename T , typename E1 , typename E2 >
using CubbyFlow::VectorAdd = typedef VectorBinaryOp<T, E1, E2, std::plus<T> >

Vector-vector addition expression.

◆ VectorDiv

template<typename T , typename E1 , typename E2 >
using CubbyFlow::VectorDiv = typedef VectorBinaryOp<T, E1, E2, std::divides<T> >

Element-wise vector-vector division expression.

◆ VectorField2Ptr

using CubbyFlow::VectorField2Ptr = typedef std::shared_ptr<VectorField2>

Shared pointer for the VectorField2 type.

◆ VectorField3Ptr

using CubbyFlow::VectorField3Ptr = typedef std::shared_ptr<VectorField3>

Shared pointer for the VectorField3 type.

◆ VectorGrid2Ptr

using CubbyFlow::VectorGrid2Ptr = typedef std::shared_ptr<VectorGrid2>

Shared pointer for the VectorGrid2 type.

◆ VectorGrid3Ptr

using CubbyFlow::VectorGrid3Ptr = typedef std::shared_ptr<VectorGrid3>

Shared pointer for the VectorGrid3 type.

◆ VectorGridBuilder2Ptr

using CubbyFlow::VectorGridBuilder2Ptr = typedef std::shared_ptr<VectorGridBuilder2>

Shared pointer for the VectorGridBuilder2 type.

◆ VectorGridBuilder3Ptr

using CubbyFlow::VectorGridBuilder3Ptr = typedef std::shared_ptr<VectorGridBuilder3>

Shared pointer for the VectorGridBuilder3 type.

◆ VectorMul

template<typename T , typename E1 , typename E2 >
using CubbyFlow::VectorMul = typedef VectorBinaryOp<T, E1, E2, std::multiplies<T> >

Element-wise vector-vector multiplication expression.

◆ VectorND

using CubbyFlow::VectorND = typedef VectorN<double>

Double-type N-D vector.

◆ VectorNF

using CubbyFlow::VectorNF = typedef VectorN<float>

Float-type N-D vector.

◆ VectorScalarAdd

template<typename T , typename E >
using CubbyFlow::VectorScalarAdd = typedef VectorScalarBinaryOp<T, E, std::plus<T> >

Vector-scalar addition expression.

◆ VectorScalarDiv

template<typename T , typename E >
using CubbyFlow::VectorScalarDiv = typedef VectorScalarBinaryOp<T, E, std::divides<T> >

Vector-scalar division expression.

◆ VectorScalarMul

template<typename T , typename E >
using CubbyFlow::VectorScalarMul = typedef VectorScalarBinaryOp<T, E, std::multiplies<T> >

Vector-scalar multiplication expression.

◆ VectorScalarRDiv

template<typename T , typename E >
using CubbyFlow::VectorScalarRDiv = typedef VectorScalarBinaryOp<T, E, RDivides<T> >

Scalar-vector division expression.

◆ VectorScalarRSub

template<typename T , typename E >
using CubbyFlow::VectorScalarRSub = typedef VectorScalarBinaryOp<T, E, RMinus<T> >

Scalar-vector subtraction expression.

◆ VectorScalarSub

template<typename T , typename E >
using CubbyFlow::VectorScalarSub = typedef VectorScalarBinaryOp<T, E, std::minus<T> >

Vector-scalar subtraction expression.

◆ VectorSub

template<typename T , typename E1 , typename E2 >
using CubbyFlow::VectorSub = typedef VectorBinaryOp<T, E1, E2, std::minus<T> >

Vector-vector addition expression.

◆ VectorTypeCast

template<typename T , typename E , typename U >
using CubbyFlow::VectorTypeCast = typedef VectorUnaryOp<T, E, TypeCast<U, T> >

Matrix expression for type casting.

◆ VertexCenteredScalarGrid2Ptr

Shared pointer for the VertexCenteredScalarGrid2 type.

◆ VertexCenteredScalarGrid3Ptr

Shared pointer for the VertexCenteredScalarGrid3 type.

◆ VertexCenteredVectorGrid2Ptr

Shared pointer for the VertexCenteredVectorGrid2 type.

◆ VertexCenteredVectorGrid3Ptr

Shared pointer for the VertexCenteredVectorGrid3 type.

◆ VolumeGridEmitter2Ptr

using CubbyFlow::VolumeGridEmitter2Ptr = typedef std::shared_ptr<VolumeGridEmitter2>

Shared pointer type for the VolumeGridEmitter2.

◆ VolumeGridEmitter3Ptr

using CubbyFlow::VolumeGridEmitter3Ptr = typedef std::shared_ptr<VolumeGridEmitter3>

Shared pointer type for the VolumeGridEmitter3.

◆ VolumeParticleEmitter2Ptr

Shared pointer for the VolumeParticleEmitter2 type.

◆ VolumeParticleEmitter3Ptr

Shared pointer for the VolumeParticleEmitter3 type.

◆ ZhuBridsonPointsToImplicit2Ptr

Shared pointer type for ZhuBridsonPointsToImplicit2 class.

◆ ZhuBridsonPointsToImplicit3Ptr

Shared pointer type for ZhuBridsonPointsToImplicit3 class.

Enumeration Type Documentation

◆ ExecutionPolicy

Execution policy tag.

Enumerator
Serial 
Parallel 

◆ LogLevel

enum CubbyFlow::LogLevel : uint8_t
strong

Level of the log. All < Debug < Info < Warn < Error < Off.

Enumerator
All 
Debug 
Info 
Warn 
Error 
Off 

Function Documentation

◆ AbsMax()

template<typename T >
T CubbyFlow::AbsMax ( x,
y 
)
inline

Returns the absolute maximum value among the two inputs.

Parameters
[in]xThe first value.
[in]yThe second value.
Template Parameters
TValue type.
Returns
The absolute maximum.

◆ AbsMaxN()

template<typename T >
T CubbyFlow::AbsMaxN ( const T *  x,
size_t  n 
)
inline

Returns absolute maximum among n-elements.

◆ AbsMin()

template<typename T >
T CubbyFlow::AbsMin ( x,
y 
)
inline

Returns the absolute minimum value among the two inputs.

Parameters
[in]xThe first value.
[in]yThe second value.
Template Parameters
TValue type.
Returns
The absolute minimum.

◆ AbsMinN()

template<typename T >
T CubbyFlow::AbsMinN ( const T *  x,
size_t  n 
)
inline

Returns absolute minimum among n-elements.

◆ ArgMax2()

template<typename T >
size_t CubbyFlow::ArgMax2 ( x,
y 
)
inline

◆ ArgMax3()

template<typename T >
size_t CubbyFlow::ArgMax3 ( x,
y,
z 
)
inline

◆ ArgMin2()

template<typename T >
size_t CubbyFlow::ArgMin2 ( x,
y 
)
inline

◆ ArgMin3()

template<typename T >
size_t CubbyFlow::ArgMin3 ( x,
y,
z 
)
inline

◆ BiLerp()

template<typename S , typename T >
S CubbyFlow::BiLerp ( const S &  f00,
const S &  f10,
const S &  f01,
const S &  f11,
tx,
ty 
)
inline

Computes bilinear interpolation.

◆ BinaryFind()

template<class ForwardIter , class T , class Compare >
ForwardIter CubbyFlow::BinaryFind ( ForwardIter  first,
ForwardIter  last,
const T &  value,
Compare  comp 
)

◆ CatmullRom()

template<typename S , typename T >
S CubbyFlow::CatmullRom ( const S &  f0,
const S &  f1,
const S &  f2,
const S &  f3,
f 
)
inline

Computes Catmull-Rom interpolation.

◆ CD2()

template<typename T >
T CubbyFlow::CD2 ( T *  d0,
dx 
)

2nd order central differencing. d0[1] is the origin.

|------|------|
d0[0] d0[1] d0[2]

◆ Ceil() [1/5]

template<typename T >
Point< T, 2 > CubbyFlow::Ceil ( const Point< T, 2 > &  a)

Returns element-wise ceiled point.

◆ Ceil() [2/5]

template<typename T >
Point< T, 3 > CubbyFlow::Ceil ( const Point< T, 3 > &  a)

Returns element-wise ceiled point.

◆ Ceil() [3/5]

template<typename T >
Vector< T, 2 > CubbyFlow::Ceil ( const Vector< T, 2 > &  a)

Returns element-wise ceiled vector.

◆ Ceil() [4/5]

template<typename T >
Vector< T, 4 > CubbyFlow::Ceil ( const Vector< T, 4 > &  a)

Returns element-wise ceiled vector.

◆ Ceil() [5/5]

template<typename T >
Vector< T, 3 > CubbyFlow::Ceil ( const Vector< T, 3 > &  a)

Returns element-wise ceiled vector.

◆ CG()

template<typename BLASType >
void CubbyFlow::CG ( const typename BLASType::MatrixType &  A,
const typename BLASType::VectorType &  b,
unsigned int  maxNumberOfIterations,
double  tolerance,
typename BLASType::VectorType *  x,
typename BLASType::VectorType *  r,
typename BLASType::VectorType *  d,
typename BLASType::VectorType *  q,
typename BLASType::VectorType *  s,
unsigned int *  lastNumberOfIterations,
double *  lastResidualNorm 
)

Solves conjugate gradient.

◆ Clamp() [1/6]

template<typename T >
T CubbyFlow::Clamp ( val,
low,
high 
)
inline

Returns the clamped value.

Parameters
[in]valThe value.
[in]lowThe low value.
[in]highThe high value.
Template Parameters
TValue type.
Returns
The clamped value.

◆ Clamp() [2/6]

template<typename T >
Point< T, 2 > CubbyFlow::Clamp ( const Point< T, 2 > &  v,
const Point< T, 2 > &  low,
const Point< T, 2 > &  high 
)

Returns element-wise clamped point.

◆ Clamp() [3/6]

template<typename T >
Point< T, 3 > CubbyFlow::Clamp ( const Point< T, 3 > &  v,
const Point< T, 3 > &  low,
const Point< T, 3 > &  high 
)

Returns element-wise clamped point.

◆ Clamp() [4/6]

template<typename T >
Vector< T, 2 > CubbyFlow::Clamp ( const Vector< T, 2 > &  v,
const Vector< T, 2 > &  low,
const Vector< T, 2 > &  high 
)

Returns element-wise clamped vector.

◆ Clamp() [5/6]

template<typename T >
Vector< T, 4 > CubbyFlow::Clamp ( const Vector< T, 4 > &  v,
const Vector< T, 4 > &  low,
const Vector< T, 4 > &  high 
)

Returns element-wise clamped vector.

◆ Clamp() [6/6]

template<typename T >
Vector< T, 3 > CubbyFlow::Clamp ( const Vector< T, 3 > &  v,
const Vector< T, 3 > &  low,
const Vector< T, 3 > &  high 
)

Returns element-wise clamped vector.

◆ ComputeDragForce() [1/2]

Vector2D CubbyFlow::ComputeDragForce ( double  dragCoefficient,
double  radius,
const Vector2D velocity 
)
inline

◆ ComputeDragForce() [2/2]

Vector3D CubbyFlow::ComputeDragForce ( double  dragCoefficient,
double  radius,
const Vector3D velocity 
)
inline

◆ ComputePressureFromEos()

double CubbyFlow::ComputePressureFromEos ( double  density,
double  targetDensity,
double  eosScale,
double  eosExponent,
double  negativePressureScale 
)
inline

◆ ConvertToCSV()

template<typename ArrayType >
void CubbyFlow::ConvertToCSV ( const ArrayType &  data,
std::ostream *  stream 
)

Converts 2-D array to Comma Separated Value (CSV) stream.

Parameters
data- data to convert
stream- stream object to write CSV

◆ CopyRange1() [1/2]

template<typename ArrayType1 , typename ArrayType2 >
void CubbyFlow::CopyRange1 ( const ArrayType1 &  input,
size_t  size,
ArrayType2 *  output 
)

Copies input array to output array with size.

This function copies input array to output array with size. The input and output array must support random access operator [].

◆ CopyRange1() [2/2]

template<typename ArrayType1 , typename ArrayType2 >
void CubbyFlow::CopyRange1 ( const ArrayType1 &  input,
size_t  begin,
size_t  end,
ArrayType2 *  output 
)

Copies input array to output array from begin to end.

This function copies input array to output array from begin to end. The input and output array must support random access operator [].

◆ CopyRange2() [1/2]

template<typename ArrayType1 , typename ArrayType2 >
void CubbyFlow::CopyRange2 ( const ArrayType1 &  input,
size_t  sizeX,
size_t  sizeY,
ArrayType2 *  output 
)

Copies 2-D input array to output array with sizeX and sizeY.

This function copies 2-D input array to output array with sizeX and sizeY. The input and output array must support 2-D random access operator (i, j).

◆ CopyRange2() [2/2]

template<typename ArrayType1 , typename ArrayType2 >
void CubbyFlow::CopyRange2 ( const ArrayType1 &  input,
size_t  beginX,
size_t  endX,
size_t  beginY,
size_t  endY,
ArrayType2 *  output 
)

Copies 2-D input array to output array from (beginX, beginY) to (endX, endY).

This function copies 2-D input array to output array from (beginX, beginY) to (endX, endY). The input and output array must support 2-D random access operator (i, j).

◆ CopyRange3() [1/2]

template<typename ArrayType1 , typename ArrayType2 >
void CubbyFlow::CopyRange3 ( const ArrayType1 &  input,
size_t  sizeX,
size_t  sizeY,
size_t  sizeZ,
ArrayType2 *  output 
)

Copies 3-D input array to output array with sizeX and sizeY.

This function copies 3-D input array to output array with sizeX and sizeY. The input and output array must support 3-D random access operator (i, j, k).

◆ CopyRange3() [2/2]

template<typename ArrayType1 , typename ArrayType2 >
void CubbyFlow::CopyRange3 ( const ArrayType1 &  input,
size_t  beginX,
size_t  endX,
size_t  beginY,
size_t  endY,
size_t  beginZ,
size_t  endZ,
ArrayType2 *  output 
)

Copies 3-D input array to output array from (beginX, beginY, beginZ) to (endX, endY, endZ).

This function copies 3-D input array to output array from (beginX, beginY, beginZ) to (endX, endY, endZ). The input and output array must support 3-D random access operator (i, j, k).

◆ CosineWeightedSampleHemisphere()

template<typename T >
Vector3< T > CubbyFlow::CosineWeightedSampleHemisphere ( u1,
u2,
const Vector3< T > &  normal 
)
inline

Returns weighted sampled point on a hemisphere.

For a given hemisphere, defined by center normal vector, this function returns a point on the hemisphere, where the probability is cosine-weighted.

Parameters
[in]u1First random sample.
[in]u2Second random sample.
[in]normalThe center normal of the hemisphere.
Template Parameters
TReal number type.
Returns
Sampled point.

◆ CubbyFlowToFlatbuffers() [1/4]

fbs::Size2 CubbyFlow::CubbyFlowToFlatbuffers ( const Size2 vec)
inline

◆ CubbyFlowToFlatbuffers() [2/4]

fbs::Size3 CubbyFlow::CubbyFlowToFlatbuffers ( const Size3 vec)
inline

◆ CubbyFlowToFlatbuffers() [3/4]

fbs::Vector2D CubbyFlow::CubbyFlowToFlatbuffers ( const Vector2D vec)
inline

◆ CubbyFlowToFlatbuffers() [4/4]

fbs::Vector3D CubbyFlow::CubbyFlowToFlatbuffers ( const Vector3D vec)
inline

◆ Cubic()

template<typename T >
T CubbyFlow::Cubic ( x)
inline

Returns the cubic of x.

Parameters
[in]xThe input.
Template Parameters
TValue type.
Returns
The cubic of x.

◆ CycleArray()

template<typename T >
void CubbyFlow::CycleArray ( T *  arr,
int  size 
)

◆ DegreesToRadians()

template<typename T >
T CubbyFlow::DegreesToRadians ( angleInDegrees)
inline

Converts degrees to radians.

Parameters
[in]angleInDegreesThe angle in degrees.
Template Parameters
TValue type.
Returns
Angle in radians.

◆ Deserialize() [1/3]

template<typename T >
void CubbyFlow::Deserialize ( const std::vector< uint8_t > &  buffer,
Array1< T > *  array 
)

Deserializes buffer to data chunk using common schema.

◆ Deserialize() [2/3]

void CubbyFlow::Deserialize ( const std::vector< uint8_t > &  buffer,
Serializable serializable 
)

Deserializes buffer to serializable object.

◆ Deserialize() [3/3]

void CubbyFlow::Deserialize ( const std::vector< uint8_t > &  buffer,
std::vector< uint8_t > *  data 
)

Deserializes buffer to data chunk using common schema.

◆ DeserializeGrid()

template<typename FbsGridList , typename GridType , typename FactoryFunc >
void CubbyFlow::DeserializeGrid ( FbsGridList *  fbsGridList,
FactoryFunc  factoryFunc,
std::vector< GridType > *  gridList 
)

◆ DistanceToZeroLevelSet()

template<typename T >
T CubbyFlow::DistanceToZeroLevelSet ( phi0,
phi1 
)

◆ ENO3() [1/2]

template<typename T >
std::array< T, 2 > CubbyFlow::ENO3 ( T *  d0,
dx 
)

3rd order ENO. d0[3] is the origin.

|------|------|------|------|------|------|
d0[0] d0[1] d0[2] d0[3] d0[4] d0[5] d0[6]

Returns two solutions for each side.

◆ ENO3() [2/2]

template<typename T >
T CubbyFlow::ENO3 ( T *  d0,
dx,
bool  isDirectionPositive 
)

3rd order ENO. d0[3] is the origin.

|------|------|------|------|------|------|
d0[0] d0[1] d0[2] d0[3] d0[4] d0[5] d0[6]

◆ ExtrapolateToRegion() [1/2]

template<typename T >
void CubbyFlow::ExtrapolateToRegion ( const ConstArrayAccessor2< T > &  input,
const ConstArrayAccessor2< char > &  valid,
unsigned int  numberOfIterations,
ArrayAccessor2< T >  output 
)

Extrapolates 2-D input data from 'valid' (1) to 'invalid' (0) region.

This function extrapolates 2-D input data from 'valid' (1) to 'invalid' (0) region. It iterates multiple times to propagate the 'valid' values to nearby 'invalid' region. The maximum distance of the propagation is equal to numberOfIterations. The input parameters 'valid' and 'data' should be collocated.

Parameters
input- data to extrapolate
valid- set 1 if valid, else 0.
numberOfIterations- number of iterations for propagation
output- extrapolated output

◆ ExtrapolateToRegion() [2/2]

template<typename T >
void CubbyFlow::ExtrapolateToRegion ( const ConstArrayAccessor3< T > &  input,
const ConstArrayAccessor3< char > &  valid,
unsigned int  numberOfIterations,
ArrayAccessor3< T >  output 
)

Extrapolates 3-D input data from 'valid' (1) to 'invalid' (0) region.

This function extrapolates 3-D input data from 'valid' (1) to 'invalid' (0) region. It iterates multiple times to propagate the 'valid' values to nearby 'invalid' region. The maximum distance of the propagation is equal to numberOfIterations. The input parameters 'valid' and 'data' should be collocated.

Parameters
input- data to extrapolate
valid- set 1 if valid, else 0.
numberOfIterations- number of iterations for propagation
output- extrapolated output

◆ FlatbuffersToCubbyFlow() [1/4]

Size2 CubbyFlow::FlatbuffersToCubbyFlow ( const fbs::Size2 &  vec)
inline

◆ FlatbuffersToCubbyFlow() [2/4]

Size3 CubbyFlow::FlatbuffersToCubbyFlow ( const fbs::Size3 &  vec)
inline

◆ FlatbuffersToCubbyFlow() [3/4]

Vector2D CubbyFlow::FlatbuffersToCubbyFlow ( const fbs::Vector2D &  vec)
inline

◆ FlatbuffersToCubbyFlow() [4/4]

Vector3D CubbyFlow::FlatbuffersToCubbyFlow ( const fbs::Vector3D &  vec)
inline

◆ Floor() [1/5]

template<typename T >
Point< T, 2 > CubbyFlow::Floor ( const Point< T, 2 > &  a)

Returns element-wise floored point.

◆ Floor() [2/5]

template<typename T >
Point< T, 3 > CubbyFlow::Floor ( const Point< T, 3 > &  a)

Returns element-wise floored point.

◆ Floor() [3/5]

template<typename T >
Vector< T, 2 > CubbyFlow::Floor ( const Vector< T, 2 > &  a)

Returns element-wise floored vector.

◆ Floor() [4/5]

template<typename T >
Vector< T, 4 > CubbyFlow::Floor ( const Vector< T, 4 > &  a)

Returns element-wise floored vector.

◆ Floor() [5/5]

template<typename T >
Vector< T, 3 > CubbyFlow::Floor ( const Vector< T, 3 > &  a)

Returns element-wise floored vector.

◆ FractionInside()

template<typename T >
T CubbyFlow::FractionInside ( phiBottomLeft,
phiBottomRight,
phiTopLeft,
phiTopRight 
)

Returns the fraction occupied by the implicit surface.

Given four signed distance values (square corners), determine what fraction of the square is "inside". The original implementation can be found from Christopher Batty's variational fluid code at https://github.com/christopherbatty/Fluid3D.

Template Parameters
TValue type.
Parameters
phiBottomLeftThe level set value on the bottom-left corner.
phiBottomRightThe level set value on the bottom-right corner.
phiTopLeftThe level set value on the top-left corner.
phiTopRightThe level set value on the top-right corner.
Returns
The fraction occupied by the implicit surface.

◆ FractionInsideSDF()

template<typename T >
T CubbyFlow::FractionInsideSDF ( phi0,
phi1 
)

Returns the fraction occupied by the implicit surface.

The input parameters, phi0 and phi1, are the level set values, measured from two nearby points. This function computes how much the implicit surface occupies the line between two points. For example, if both phi0 and phi1 are negative, it means the points are both inside the surface, thus the function will return 1. If both are positive, it will return 0 because both are outside the surface. If the signs are different, then only one of the points is inside the surface and the function will return a value between 0 and 1.

Parameters
[in]phi0The level set value from the first point.
[in]phi1The level set value from the second point.
Template Parameters
TValue type.
Returns
The fraction occupied by the implicit surface.

◆ GetBarycentric()

template<typename T >
void CubbyFlow::GetBarycentric ( x,
ssize_t  iLow,
ssize_t  iHigh,
ssize_t *  i,
T *  t 
)
inline

Gets the barycentric coordinate.

Parameters
[in]xThe input value.
[in]iLowThe lowest index.
[in]iHighThe highest index.
iThe output index.
tThe offset from i.
Template Parameters
TValue type.

◆ GetMaxNumberOfThreads()

unsigned int CubbyFlow::GetMaxNumberOfThreads ( )

Returns maximum number of threads to use.

◆ Gradient2() [1/2]

Vector2D CubbyFlow::Gradient2 ( const ConstArrayAccessor2< double > &  data,
const Vector2D gridSpacing,
size_t  i,
size_t  j 
)

Returns 2-D gradient vector from given 2-D scalar grid-like array data, gridSpacing, and array index (i, j).

◆ Gradient2() [2/2]

std::array<Vector2D, 2> CubbyFlow::Gradient2 ( const ConstArrayAccessor2< Vector2D > &  data,
const Vector2D gridSpacing,
size_t  i,
size_t  j 
)

Returns 2-D gradient vectors from given 2-D vector grid-like array data, gridSpacing, and array index (i, j).

◆ Gradient3() [1/2]

Vector3D CubbyFlow::Gradient3 ( const ConstArrayAccessor3< double > &  data,
const Vector3D gridSpacing,
size_t  i,
size_t  j,
size_t  k 
)

Returns 3-D gradient vector from given 3-D scalar grid-like array data, gridSpacing, and array index (i, j, k).

◆ Gradient3() [2/2]

std::array<Vector3D, 3> CubbyFlow::Gradient3 ( const ConstArrayAccessor3< Vector3D > &  data,
const Vector3D gridSpacing,
size_t  i,
size_t  j,
size_t  k 
)

Returns 3-D gradient vectors from given 3-D vector grid-like array data, gridSpacing, and array index (i, j, k).

◆ HalfPI()

template<typename T >
constexpr T CubbyFlow::HalfPI ( )

PI/2 for type T.

◆ HalfPI< double >()

template<>
constexpr double CubbyFlow::HalfPI< double > ( )

PI/2 for double.

◆ HalfPI< float >()

template<>
constexpr float CubbyFlow::HalfPI< float > ( )

PI/2 for float.

◆ IsInsideSDF()

template<typename T >
bool CubbyFlow::IsInsideSDF ( phi)

Returns true if phi is inside the implicit surface (< 0).

Parameters
[in]phiThe level set value.
Template Parameters
TValue type.
Returns
True if inside the implicit surface, false otherwise.

◆ Laplacian2() [1/2]

double CubbyFlow::Laplacian2 ( const ConstArrayAccessor2< double > &  data,
const Vector2D gridSpacing,
size_t  i,
size_t  j 
)

Returns Laplacian value from given 2-D scalar grid-like array data, gridSpacing, and array index (i, j).

◆ Laplacian2() [2/2]

Vector2D CubbyFlow::Laplacian2 ( const ConstArrayAccessor2< Vector2D > &  data,
const Vector2D gridSpacing,
size_t  i,
size_t  j 
)

Returns 2-D Laplacian vectors from given 2-D vector grid-like array data, gridSpacing, and array index (i, j).

◆ Laplacian3() [1/2]

double CubbyFlow::Laplacian3 ( const ConstArrayAccessor3< double > &  data,
const Vector3D gridSpacing,
size_t  i,
size_t  j,
size_t  k 
)

Returns Laplacian value from given 3-D scalar grid-like array data, gridSpacing, and array index (i, j, k).

◆ Laplacian3() [2/2]

Vector3D CubbyFlow::Laplacian3 ( const ConstArrayAccessor3< Vector3D > &  data,
const Vector3D gridSpacing,
size_t  i,
size_t  j,
size_t  k 
)

Returns 3-D Laplacian vectors from given 3-D vector grid-like array data, gridSpacing, and array index (i, j, k).

◆ Lerp()

template<typename S , typename T >
S CubbyFlow::Lerp ( const S &  f0,
const S &  f1,
t 
)
inline

Computes linear interpolation.

Parameters
[in]f0The first value.
[in]f1The second value.
[in]tRelative offset [0, 1] from the first value.
Template Parameters
SInput value type.
TOffset type.
Returns
The interpolated value.

◆ MarchingCubes()

void CubbyFlow::MarchingCubes ( const ConstArrayAccessor3< double > &  grid,
const Vector3D gridSize,
const Vector3D origin,
TriangleMesh3 mesh,
double  isoValue = 0,
int  bndFlag = DIRECTION_ALL 
)

Computes marching cubes and extract triangle mesh from grid.

This function computes the marching cube algorithm to extract triangle mesh from the scalar grid field. The triangle mesh will be the iso-surface, and the iso-value can be specified. For the boundaries (or the walls), it can be specified whether to close or open.

Parameters
[in]gridThe grid.
[in]gridSizeThe grid size.
[in]originThe origin.
meshThe output triangle mesh.
[in]isoValueThe iso-surface value.
[in]bndFlagThe boundary direction flag.

◆ Max() [1/5]

template<typename T >
Point< T, 2 > CubbyFlow::Max ( const Point< T, 2 > &  a,
const Point< T, 2 > &  b 
)

Returns element-wise max point: (max(a.x, b.x), max(a.y, b.y)).

◆ Max() [2/5]

template<typename T >
Point< T, 3 > CubbyFlow::Max ( const Point< T, 3 > &  a,
const Point< T, 3 > &  b 
)

Returns element-wise max point.

◆ Max() [3/5]

template<typename T >
Vector< T, 2 > CubbyFlow::Max ( const Vector< T, 2 > &  a,
const Vector< T, 2 > &  b 
)

Returns element-wise max vector: (max(a.x, b.x), max(a.y, b.y)).

◆ Max() [4/5]

template<typename T >
Vector< T, 4 > CubbyFlow::Max ( const Vector< T, 4 > &  a,
const Vector< T, 4 > &  b 
)

Returns element-wise max vector.

◆ Max() [5/5]

template<typename T >
Vector< T, 3 > CubbyFlow::Max ( const Vector< T, 3 > &  a,
const Vector< T, 3 > &  b 
)

Returns element-wise max vector.

◆ MGCycle()

template<typename BlasType >
MGResult CubbyFlow::MGCycle ( const MGMatrix< BlasType > &  A,
MGParameters< BlasType >  params,
MGVector< BlasType > *  x,
MGVector< BlasType > *  b,
MGVector< BlasType > *  buffer 
)

Performs Multi-grid with V-cycle.

For given linear system matrix A and RHS vector b, this function computes the solution x using Multi-grid method with V-cycle.

◆ MGVCycle()

template<typename BlasType >
MGResult CubbyFlow::MGVCycle ( const MGMatrix< BlasType > &  A,
MGParameters< BlasType >  params,
MGVector< BlasType > *  x,
MGVector< BlasType > *  b,
MGVector< BlasType > *  buffer 
)

◆ Min() [1/5]

template<typename T >
Point< T, 2 > CubbyFlow::Min ( const Point< T, 2 > &  a,
const Point< T, 2 > &  b 
)

Returns element-wise min point: (min(a.x, b.x), min(a.y, b.y)).

◆ Min() [2/5]

template<typename T >
Point< T, 3 > CubbyFlow::Min ( const Point< T, 3 > &  a,
const Point< T, 3 > &  b 
)

Returns element-wise min point.

◆ Min() [3/5]

template<typename T >
Vector< T, 2 > CubbyFlow::Min ( const Vector< T, 2 > &  a,
const Vector< T, 2 > &  b 
)

Returns element-wise min vector: (min(a.x, b.x), min(a.y, b.y)).

◆ Min() [4/5]

template<typename T >
Vector< T, 4 > CubbyFlow::Min ( const Vector< T, 4 > &  a,
const Vector< T, 4 > &  b 
)

Returns element-wise min vector.

◆ Min() [5/5]

template<typename T >
Vector< T, 3 > CubbyFlow::Min ( const Vector< T, 3 > &  a,
const Vector< T, 3 > &  b 
)

Returns element-wise min vector.

◆ MonotonicCatmullRom() [1/5]

template<typename T >
T CubbyFlow::MonotonicCatmullRom ( const T &  f0,
const T &  f1,
const T &  f2,
const T &  f3,
f 
)
inline

Computes monotonic Catmull-Rom interpolation.

◆ MonotonicCatmullRom() [2/5]

template<typename T >
Vector3<T> CubbyFlow::MonotonicCatmullRom ( const Vector3< T > &  v0,
const Vector3< T > &  v1,
const Vector3< T > &  v2,
const Vector3< T > &  v3,
f 
)

Computes monotonic Catmull-Rom interpolation.

◆ MonotonicCatmullRom() [3/5]

template<typename T >
Vector< T, 2 > CubbyFlow::MonotonicCatmullRom ( const Vector< T, 2 > &  v0,
const Vector< T, 2 > &  v1,
const Vector< T, 2 > &  v2,
const Vector< T, 2 > &  v3,
f 
)

Computes monotonic Catmull-Rom interpolation.

◆ MonotonicCatmullRom() [4/5]

template<typename T >
Vector< T, 4 > CubbyFlow::MonotonicCatmullRom ( const Vector< T, 4 > &  v0,
const Vector< T, 4 > &  v1,
const Vector< T, 4 > &  v2,
const Vector< T, 4 > &  v3,
f 
)

Computes monotonic Catmull-Rom interpolation.

◆ MonotonicCatmullRom() [5/5]

template<typename T >
Vector<T, 3> CubbyFlow::MonotonicCatmullRom ( const Vector< T, 3 > &  v0,
const Vector< T, 3 > &  v1,
const Vector< T, 3 > &  v2,
const Vector< T, 3 > &  v3,
f 
)

◆ ObjectToPoint2UI()

Point2UI CubbyFlow::ObjectToPoint2UI ( const pybind11::object &  obj)
inline

◆ ObjectToPoint3UI()

Point3UI CubbyFlow::ObjectToPoint3UI ( const pybind11::object &  obj)
inline

◆ ObjectToQuaternionD()

QuaternionD CubbyFlow::ObjectToQuaternionD ( const pybind11::object &  obj)
inline

◆ ObjectToQuaternionF()

QuaternionF CubbyFlow::ObjectToQuaternionF ( const pybind11::object &  obj)
inline

◆ ObjectToSize2()

Size2 CubbyFlow::ObjectToSize2 ( const pybind11::object &  obj)
inline

◆ ObjectToSize3()

Size3 CubbyFlow::ObjectToSize3 ( const pybind11::object &  obj)
inline

◆ ObjectToVector2D()

Vector2D CubbyFlow::ObjectToVector2D ( const pybind11::object &  obj)
inline

◆ ObjectToVector2F()

Vector2F CubbyFlow::ObjectToVector2F ( const pybind11::object &  obj)
inline

◆ ObjectToVector3D()

Vector3D CubbyFlow::ObjectToVector3D ( const pybind11::object &  obj)
inline

◆ ObjectToVector3F()

Vector3F CubbyFlow::ObjectToVector3F ( const pybind11::object &  obj)
inline

◆ ObjectToVector4D()

Vector4D CubbyFlow::ObjectToVector4D ( const pybind11::object &  obj)
inline

◆ ObjectToVector4F()

Vector4F CubbyFlow::ObjectToVector4F ( const pybind11::object &  obj)
inline

◆ One()

template<typename T >
constexpr T CubbyFlow::One ( )

One for type T.

◆ One< double >()

template<>
constexpr double CubbyFlow::One< double > ( )

One for double.

◆ One< float >()

template<>
constexpr float CubbyFlow::One< float > ( )

One for float.

◆ operator*() [1/44]

template<typename T , typename E >
VectorScalarMul< T, E > CubbyFlow::operator* ( const T &  a,
const VectorExpression< T, E > &  b 
)

Scalar-vector multiplication operation.

◆ operator*() [2/44]

template<typename T , typename E >
VectorScalarMul< T, E > CubbyFlow::operator* ( const VectorExpression< T, E > &  a,
const T &  b 
)

Vector-scalar multiplication operation.

◆ operator*() [3/44]

template<typename T , typename E1 , typename E2 >
VectorMul< T, E1, E2 > CubbyFlow::operator* ( const VectorExpression< T, E1 > &  a,
const VectorExpression< T, E2 > &  b 
)

Element-wise vector-vector multiplication operation.

◆ operator*() [4/44]

template<typename T , typename E >
MatrixScalarMul< T, E > CubbyFlow::operator* ( const MatrixExpression< T, E > &  a,
b 
)

Returns a * b', where every element of matrix b' is b.

◆ operator*() [5/44]

template<typename T , typename E >
MatrixScalarMul< T, E > CubbyFlow::operator* ( a,
const MatrixExpression< T, E > &  b 
)

Returns a' * b, where every element of matrix a' is a.

◆ operator*() [6/44]

template<typename T >
Vector3<T> CubbyFlow::operator* ( const Matrix< T, 3, 3 > &  a,
const Vector3< T > &  b 
)

Returns a * b.

◆ operator*() [7/44]

template<typename T , typename ME , typename VE >
MatrixVectorMul< T, ME, VE > CubbyFlow::operator* ( const MatrixExpression< T, ME > &  a,
const VectorExpression< T, VE > &  b 
)

Returns a * b.

◆ operator*() [8/44]

template<typename T , typename E1 , typename E2 >
MatrixMul< T, E1, E2 > CubbyFlow::operator* ( const MatrixExpression< T, E1 > &  a,
const MatrixExpression< T, E2 > &  b 
)

Returns a * b.

◆ operator*() [9/44]

template<typename T >
Vector3<T> CubbyFlow::operator* ( const Matrix< T, 4, 4 > &  a,
const Vector3< T > &  b 
)

Returns a * b.

◆ operator*() [10/44]

template<typename T >
Vector4<T> CubbyFlow::operator* ( const Matrix< T, 4, 4 > &  a,
const Vector4< T > &  b 
)

Returns a * b.

◆ operator*() [11/44]

template<typename T >
Point< T, 2 > CubbyFlow::operator* ( const Point< T, 2 > &  a,
b 
)

Computes (a.x, a.y) * (b, b).

◆ operator*() [12/44]

template<typename T >
Point< T, 2 > CubbyFlow::operator* ( a,
const Point< T, 2 > &  b 
)

Computes (a, a) * (b.x, b.y).

◆ operator*() [13/44]

template<typename T >
Point< T, 2 > CubbyFlow::operator* ( const Point< T, 2 > &  a,
const Point< T, 2 > &  b 
)

Computes (a.x, a.y) * (b.x, b.y).

◆ operator*() [14/44]

template<typename T >
Point< T, 3 > CubbyFlow::operator* ( const Point< T, 3 > &  a,
b 
)

Computes (a.x, a.y, a.z) * (b, b, b).

◆ operator*() [15/44]

template<typename T >
Point< T, 3 > CubbyFlow::operator* ( a,
const Point< T, 3 > &  b 
)

Computes (a, a, a) * (b.x, b.y, b.z).

◆ operator*() [16/44]

template<typename T >
Point< T, 3 > CubbyFlow::operator* ( const Point< T, 3 > &  a,
const Point< T, 3 > &  b 
)

Computes (a.x, a.y, a.z) * (b.x, b.y, b.z).

◆ operator*() [17/44]

template<typename T >
Vector< T, 3 > CubbyFlow::operator* ( const Quaternion< T > &  q,
const Vector< T, 3 > &  v 
)

Returns quaternion q * vector v.

◆ operator*() [18/44]

template<typename T >
Quaternion< T > CubbyFlow::operator* ( const Quaternion< T > &  a,
const Quaternion< T > &  b 
)

Returns quaternion a times quaternion b.

◆ operator*() [19/44]

template<typename T >
Vector< T, 2 > CubbyFlow::operator* ( const Vector< T, 2 > &  a,
b 
)

Computes (a.x, a.y) * (b, b).

◆ operator*() [20/44]

template<typename T >
Vector< T, 2 > CubbyFlow::operator* ( a,
const Vector< T, 2 > &  b 
)

Computes (a, a) * (b.x, b.y).

◆ operator*() [21/44]

template<typename T >
Vector< T, 2 > CubbyFlow::operator* ( const Vector< T, 2 > &  a,
const Vector< T, 2 > &  b 
)

Computes (a.x, a.y) * (b.x, b.y).

◆ operator*() [22/44]

template<typename T >
Vector< T, 4 > CubbyFlow::operator* ( const Vector< T, 4 > &  a,
b 
)

Computes (a.x, a.y, a.z, a.w) * (b, b, b, b).

◆ operator*() [23/44]

template<typename T >
Vector< T, 4 > CubbyFlow::operator* ( a,
const Vector< T, 4 > &  b 
)

Computes (a, a, a, a) * (b.x, b.y, b.z, b.w).

◆ operator*() [24/44]

template<typename T >
Vector< T, 4 > CubbyFlow::operator* ( const Vector< T, 4 > &  a,
const Vector< T, 4 > &  b 
)

Computes (a.x, a.y, a.z, a.w) * (b.x, b.y, b.z, b.w).

◆ operator*() [25/44]

template<typename T >
Vector< T, 3 > CubbyFlow::operator* ( const Vector< T, 3 > &  a,
b 
)

Computes (a.x, a.y, a.z) * (b, b, b).

◆ operator*() [26/44]

template<typename T >
Vector< T, 3 > CubbyFlow::operator* ( a,
const Vector< T, 3 > &  b 
)

Computes (a, a, a) * (b.x, b.y, b.z).

◆ operator*() [27/44]

template<typename T >
Vector< T, 3 > CubbyFlow::operator* ( const Vector< T, 3 > &  a,
const Vector< T, 3 > &  b 
)

Computes (a.x, a.y, a.z) * (b.x, b.y, b.z).

◆ operator*() [28/44]

template<typename T >
Matrix< T, 2, 2 > CubbyFlow::operator* ( const Matrix< T, 2, 2 > &  a,
const T  b 
)

Returns a * b', where every element of matrix b' is b.

◆ operator*() [29/44]

template<typename T >
Matrix< T, 2, 2 > CubbyFlow::operator* ( const T  a,
const Matrix< T, 2, 2 > &  b 
)

Returns a' * b, where every element of matrix a' is a.

◆ operator*() [30/44]

template<typename T >
Vector2< T > CubbyFlow::operator* ( const Matrix< T, 2, 2 > &  a,
const Vector2< T > &  b 
)

Returns a * b.

◆ operator*() [31/44]

template<typename T >
Matrix< T, 2, 2 > CubbyFlow::operator* ( const Matrix< T, 2, 2 > &  a,
const Matrix< T, 2, 2 > &  b 
)

Returns a * b.

◆ operator*() [32/44]

template<typename T >
Matrix< T, 3, 3 > CubbyFlow::operator* ( const Matrix< T, 3, 3 > &  a,
b 
)

Returns a * b', where every element of matrix b' is b.

◆ operator*() [33/44]

template<typename T >
Matrix< T, 3, 3 > CubbyFlow::operator* ( a,
const Matrix< T, 3, 3 > &  b 
)

Returns a' * b, where every element of matrix a' is a.

◆ operator*() [34/44]

template<typename T >
Vector<T, 3> CubbyFlow::operator* ( const Matrix< T, 3, 3 > &  a,
const Vector< T, 3 > &  b 
)

◆ operator*() [35/44]

template<typename T >
Matrix< T, 3, 3 > CubbyFlow::operator* ( const Matrix< T, 3, 3 > &  a,
const Matrix< T, 3, 3 > &  b 
)

Returns a * b.

◆ operator*() [36/44]

template<typename T >
Matrix< T, 4, 4 > CubbyFlow::operator* ( const Matrix< T, 4, 4 > &  a,
b 
)

Returns a * b', where every element of matrix b' is b.

◆ operator*() [37/44]

template<typename T >
Matrix< T, 4, 4 > CubbyFlow::operator* ( a,
const Matrix< T, 4, 4 > &  b 
)

Returns a' * b, where every element of matrix a' is a.

◆ operator*() [38/44]

template<typename T >
Vector<T, 3> CubbyFlow::operator* ( const Matrix< T, 4, 4 > &  a,
const Vector< T, 3 > &  b 
)

◆ operator*() [39/44]

template<typename T >
Vector<T, 4> CubbyFlow::operator* ( const Matrix< T, 4, 4 > &  a,
const Vector< T, 4 > &  b 
)

◆ operator*() [40/44]

template<typename T >
Matrix< T, 4, 4 > CubbyFlow::operator* ( const Matrix< T, 4, 4 > &  a,
const Matrix< T, 4, 4 > &  b 
)

Returns a * b.

◆ operator*() [41/44]

template<typename T >
MatrixCSR<T> CubbyFlow::operator* ( const MatrixCSR< T > &  a,
b 
)

◆ operator*() [42/44]

template<typename T >
MatrixCSR<T> CubbyFlow::operator* ( a,
const MatrixCSR< T > &  b 
)

◆ operator*() [43/44]

template<typename T , typename VE >
MatrixCSRVectorMul<T, VE> CubbyFlow::operator* ( const MatrixCSR< T > &  a,
const VectorExpression< T, VE > &  b 
)

◆ operator*() [44/44]

template<typename T , typename ME >
MatrixCSRMatrixMul<T, ME> CubbyFlow::operator* ( const MatrixCSR< T > &  a,
const MatrixExpression< T, ME > &  b 
)

◆ operator+() [1/38]

template<typename T , typename E >
VectorScalarAdd< T, E > CubbyFlow::operator+ ( const T &  a,
const VectorExpression< T, E > &  b 
)

Scalar-vector addition operation.

◆ operator+() [2/38]

template<typename T , typename E >
VectorScalarAdd< T, E > CubbyFlow::operator+ ( const VectorExpression< T, E > &  a,
const T &  b 
)

Vector-scalar addition operation.

◆ operator+() [3/38]

template<typename T , typename E1 , typename E2 >
VectorAdd< T, E1, E2 > CubbyFlow::operator+ ( const VectorExpression< T, E1 > &  a,
const VectorExpression< T, E2 > &  b 
)

Vector-vector addition operation.

◆ operator+() [4/38]

template<typename T , typename E1 , typename E2 >
MatrixAdd< T, E1, E2 > CubbyFlow::operator+ ( const MatrixExpression< T, E1 > &  a,
const MatrixExpression< T, E2 > &  b 
)

Returns a + b (element-size).

◆ operator+() [5/38]

template<typename T , typename E >
MatrixScalarAdd< T, E > CubbyFlow::operator+ ( const MatrixExpression< T, E > &  a,
b 
)

Returns a + b', where every element of matrix b' is b.

◆ operator+() [6/38]

template<typename T , typename E >
MatrixScalarAdd< T, E > CubbyFlow::operator+ ( a,
const MatrixExpression< T, E > &  b 
)

Returns a' + b, where every element of matrix a' is a.

◆ operator+() [7/38]

template<typename T >
Point< T, 2 > CubbyFlow::operator+ ( const Point< T, 2 > &  a)

Positive sign operator.

◆ operator+() [8/38]

template<typename T >
Point<T, 2> CubbyFlow::operator+ ( const Point< T, 2 > &  a,
b 
)

◆ operator+() [9/38]

template<typename T >
Point< T, 2 > CubbyFlow::operator+ ( a,
const Point< T, 2 > &  b 
)

Computes (a, a) + (b.x, b.y).

◆ operator+() [10/38]

template<typename T >
Point< T, 3 > CubbyFlow::operator+ ( const Point< T, 3 > &  a)

Positive sign operator.

◆ operator+() [11/38]

template<typename T >
Point< T, 2 > CubbyFlow::operator+ ( const Point< T, 2 > &  a,
const Point< T, 2 > &  b 
)

Computes (a.x, a.y) + (b.x, b.y).

◆ operator+() [12/38]

template<typename T >
Point<T, 3> CubbyFlow::operator+ ( const Point< T, 3 > &  a,
b 
)

◆ operator+() [13/38]

template<typename T >
Point< T, 3 > CubbyFlow::operator+ ( a,
const Point< T, 3 > &  b 
)

Computes (a, a, a) + (b.x, b.y, b.z).

◆ operator+() [14/38]

template<typename T >
Point< T, 3 > CubbyFlow::operator+ ( const Point< T, 3 > &  a,
const Point< T, 3 > &  b 
)

Computes (a.x, a.y, a.z) + (b.x, b.y, b.z).

◆ operator+() [15/38]

template<typename T >
Vector< T, 2 > CubbyFlow::operator+ ( const Vector< T, 2 > &  a)

Positive sign operator.

◆ operator+() [16/38]

template<typename T >
Vector<T, 2> CubbyFlow::operator+ ( const Vector< T, 2 > &  a,
b 
)

◆ operator+() [17/38]

template<typename T >
Vector< T, 4 > CubbyFlow::operator+ ( const Vector< T, 4 > &  a)

Positive sign operator.

◆ operator+() [18/38]

template<typename T >
Vector< T, 2 > CubbyFlow::operator+ ( a,
const Vector< T, 2 > &  b 
)

Computes (a, a) + (b.x, b.y).

◆ operator+() [19/38]

template<typename T >
Vector< T, 2 > CubbyFlow::operator+ ( const Vector< T, 2 > &  a,
const Vector< T, 2 > &  b 
)

Computes (a.x, a.y) + (b.x, b.y).

◆ operator+() [20/38]

template<typename T >
Vector<T, 4> CubbyFlow::operator+ ( const Vector< T, 4 > &  a,
b 
)

◆ operator+() [21/38]

template<typename T >
Vector< T, 3 > CubbyFlow::operator+ ( const Vector< T, 3 > &  a)

Positive sign operator.

◆ operator+() [22/38]

template<typename T >
Vector< T, 4 > CubbyFlow::operator+ ( a,
const Vector< T, 4 > &  b 
)

Computes (a, a, a, a) + (b.x, b.y, b.z, b.w).

◆ operator+() [23/38]

template<typename T >
Vector< T, 4 > CubbyFlow::operator+ ( const Vector< T, 4 > &  a,
const Vector< T, 4 > &  b 
)

Computes (a.x, a.y, a.z, a.w) + (b.x, b.y, b.z, b.w).

◆ operator+() [24/38]

template<typename T >
Vector<T, 3> CubbyFlow::operator+ ( const Vector< T, 3 > &  a,
b 
)

◆ operator+() [25/38]

template<typename T >
Vector< T, 3 > CubbyFlow::operator+ ( a,
const Vector< T, 3 > &  b 
)

Computes (a, a, a) + (b.x, b.y, b.z).

◆ operator+() [26/38]

template<typename T >
Vector< T, 3 > CubbyFlow::operator+ ( const Vector< T, 3 > &  a,
const Vector< T, 3 > &  b 
)

Computes (a.x, a.y, a.z) + (b.x, b.y, b.z).

◆ operator+() [27/38]

template<typename T >
Matrix< T, 2, 2 > CubbyFlow::operator+ ( const Matrix< T, 2, 2 > &  a,
const Matrix< T, 2, 2 > &  b 
)

Returns a + b (element-size).

◆ operator+() [28/38]

template<typename T >
Matrix< T, 2, 2 > CubbyFlow::operator+ ( const Matrix< T, 2, 2 > &  a,
const T  b 
)

Returns a + b', where every element of matrix b' is b.

◆ operator+() [29/38]

template<typename T >
Matrix< T, 2, 2 > CubbyFlow::operator+ ( const T  a,
const Matrix< T, 2, 2 > &  b 
)

Returns a' + b, where every element of matrix a' is a.

◆ operator+() [30/38]

template<typename T >
Matrix< T, 3, 3 > CubbyFlow::operator+ ( const Matrix< T, 3, 3 > &  a,
const Matrix< T, 3, 3 > &  b 
)

Returns a + b (element-size).

◆ operator+() [31/38]

template<typename T >
Matrix< T, 3, 3 > CubbyFlow::operator+ ( const Matrix< T, 3, 3 > &  a,
const T  b 
)

Returns a + b', where every element of matrix b' is b.

◆ operator+() [32/38]

template<typename T >
Matrix< T, 3, 3 > CubbyFlow::operator+ ( const T  a,
const Matrix< T, 3, 3 > &  b 
)

Returns a' + b, where every element of matrix a' is a.

◆ operator+() [33/38]

template<typename T >
Matrix< T, 4, 4 > CubbyFlow::operator+ ( const Matrix< T, 4, 4 > &  a,
const Matrix< T, 4, 4 > &  b 
)

Returns a + b (element-size).

◆ operator+() [34/38]

template<typename T >
Matrix< T, 4, 4 > CubbyFlow::operator+ ( const Matrix< T, 4, 4 > &  a,
const T  b 
)

Returns a + b', where every element of matrix b' is b.

◆ operator+() [35/38]

template<typename T >
Matrix< T, 4, 4 > CubbyFlow::operator+ ( const T  a,
const Matrix< T, 4, 4 > &  b 
)

Returns a' + b, where every element of matrix a' is a.

◆ operator+() [36/38]

template<typename T >
MatrixCSR<T> CubbyFlow::operator+ ( const MatrixCSR< T > &  a,
const MatrixCSR< T > &  b 
)

◆ operator+() [37/38]

template<typename T >
MatrixCSR<T> CubbyFlow::operator+ ( const MatrixCSR< T > &  a,
b 
)

◆ operator+() [38/38]

template<typename T >
MatrixCSR<T> CubbyFlow::operator+ ( a,
const MatrixCSR< T > &  b 
)

◆ operator-() [1/43]

template<typename T , typename E >
VectorScalarRSub< T, E > CubbyFlow::operator- ( const T &  a,
const VectorExpression< T, E > &  b 
)

Scalar-vector subtraction operation.

◆ operator-() [2/43]

template<typename T , typename E >
VectorScalarSub< T, E > CubbyFlow::operator- ( const VectorExpression< T, E > &  a,
const T &  b 
)

Scalar-vector addition operation.

◆ operator-() [3/43]

template<typename T , typename E1 , typename E2 >
VectorSub< T, E1, E2 > CubbyFlow::operator- ( const VectorExpression< T, E1 > &  a,
const VectorExpression< T, E2 > &  b 
)

Vector-vector addition operation.

◆ operator-() [4/43]

template<typename T , typename E >
MatrixScalarMul< T, E > CubbyFlow::operator- ( const MatrixExpression< T, E > &  a)

Returns a matrix with opposite sign.

◆ operator-() [5/43]

template<typename T , typename E1 , typename E2 >
MatrixSub< T, E1, E2 > CubbyFlow::operator- ( const MatrixExpression< T, E1 > &  a,
const MatrixExpression< T, E2 > &  b 
)

Returns a - b (element-size).

◆ operator-() [6/43]

template<typename T , typename E >
MatrixScalarSub< T, E > CubbyFlow::operator- ( const MatrixExpression< T, E > &  a,
b 
)

Returns a - b', where every element of matrix b' is b.

◆ operator-() [7/43]

template<typename T , typename E >
MatrixScalarRSub< T, E > CubbyFlow::operator- ( a,
const MatrixExpression< T, E > &  b 
)

Returns a' - b, where every element of matrix a' is a.

◆ operator-() [8/43]

template<typename T >
Point< T, 2 > CubbyFlow::operator- ( const Point< T, 2 > &  a)

Negative sign operator.

◆ operator-() [9/43]

template<typename T >
Point< T, 3 > CubbyFlow::operator- ( const Point< T, 3 > &  a)

Negative sign operator.

◆ operator-() [10/43]

template<typename T >
Point< T, 2 > CubbyFlow::operator- ( const Point< T, 2 > &  a,
b 
)

Computes (a.x, a.y) - (b, b).

◆ operator-() [11/43]

template<typename T >
Point< T, 2 > CubbyFlow::operator- ( a,
const Point< T, 2 > &  b 
)

Computes (a, a) - (b.x, b.y).

◆ operator-() [12/43]

template<typename T >
Point< T, 2 > CubbyFlow::operator- ( const Point< T, 2 > &  a,
const Point< T, 2 > &  b 
)

Computes (a.x, a.y) - (b.x, b.y).

◆ operator-() [13/43]

template<typename T >
Point< T, 3 > CubbyFlow::operator- ( const Point< T, 3 > &  a,
b 
)

Computes (a.x, a.y, a.z) - (b, b, b).

◆ operator-() [14/43]

template<typename T >
Point< T, 3 > CubbyFlow::operator- ( a,
const Point< T, 3 > &  b 
)

Computes (a, a, a) - (b.x, b.y, b.z).

◆ operator-() [15/43]

template<typename T >
Point< T, 3 > CubbyFlow::operator- ( const Point< T, 3 > &  a,
const Point< T, 3 > &  b 
)

Computes (a.x, a.y, a.z) - (b.x, b.y, b.z).

◆ operator-() [16/43]

template<typename T >
Vector< T, 2 > CubbyFlow::operator- ( const Vector< T, 2 > &  a)

Negative sign operator.

◆ operator-() [17/43]

template<typename T >
Vector< T, 4 > CubbyFlow::operator- ( const Vector< T, 4 > &  a)

Negative sign operator.

◆ operator-() [18/43]

template<typename T >
Vector< T, 2 > CubbyFlow::operator- ( const Vector< T, 2 > &  a,
b 
)

Computes (a.x, a.y) - (b, b).

◆ operator-() [19/43]

template<typename T >
Vector< T, 3 > CubbyFlow::operator- ( const Vector< T, 3 > &  a)

Negative sign operator.

◆ operator-() [20/43]

template<typename T >
Vector< T, 2 > CubbyFlow::operator- ( a,
const Vector< T, 2 > &  b 
)

Computes (a, a) - (b.x, b.y).

◆ operator-() [21/43]

template<typename T >
Vector< T, 2 > CubbyFlow::operator- ( const Vector< T, 2 > &  a,
const Vector< T, 2 > &  b 
)

Computes (a.x, a.y) - (b.x, b.y).

◆ operator-() [22/43]

template<typename T >
Vector< T, 4 > CubbyFlow::operator- ( const Vector< T, 4 > &  a,
b 
)

Computes (a.x, a.y, a.z, a.w) - (b, b, b, b).

◆ operator-() [23/43]

template<typename T >
Vector< T, 4 > CubbyFlow::operator- ( a,
const Vector< T, 4 > &  b 
)

Computes (a, a, a, a) - (b.x, b.y, b.z, b.w).

◆ operator-() [24/43]

template<typename T >
Vector< T, 4 > CubbyFlow::operator- ( const Vector< T, 4 > &  a,
const Vector< T, 4 > &  b 
)

Computes (a.x, a.y, a.z, a.w) - (b.x, b.y, b.z, b.w).

◆ operator-() [25/43]

template<typename T >
Vector< T, 3 > CubbyFlow::operator- ( const Vector< T, 3 > &  a,
b 
)

Computes (a.x, a.y, a.z) - (b, b, b).

◆ operator-() [26/43]

template<typename T >
Vector< T, 3 > CubbyFlow::operator- ( a,
const Vector< T, 3 > &  b 
)

Computes (a, a, a) - (b.x, b.y, b.z).

◆ operator-() [27/43]

template<typename T >
Vector< T, 3 > CubbyFlow::operator- ( const Vector< T, 3 > &  a,
const Vector< T, 3 > &  b 
)

Computes (a.x, a.y, a.z) - (b.x, b.y, b.z).

◆ operator-() [28/43]

template<typename T >
Matrix< T, 2, 2 > CubbyFlow::operator- ( const Matrix< T, 2, 2 > &  a)

Returns a matrix with opposite sign.

◆ operator-() [29/43]

template<typename T >
Matrix< T, 2, 2 > CubbyFlow::operator- ( const Matrix< T, 2, 2 > &  a,
const Matrix< T, 2, 2 > &  b 
)

Returns a - b (element-size).

◆ operator-() [30/43]

template<typename T >
Matrix< T, 2, 2 > CubbyFlow::operator- ( const Matrix< T, 2, 2 > &  a,
const T  b 
)

Returns a - b', where every element of matrix b' is b.

◆ operator-() [31/43]

template<typename T >
Matrix< T, 2, 2 > CubbyFlow::operator- ( const T  a,
const Matrix< T, 2, 2 > &  b 
)

Returns a' - b, where every element of matrix a' is a.

◆ operator-() [32/43]

template<typename T >
Matrix< T, 3, 3 > CubbyFlow::operator- ( const Matrix< T, 3, 3 > &  a)

Returns a matrix with opposite sign.

◆ operator-() [33/43]

template<typename T >
Matrix< T, 3, 3 > CubbyFlow::operator- ( const Matrix< T, 3, 3 > &  a,
const Matrix< T, 3, 3 > &  b 
)

Returns a - b (element-size).

◆ operator-() [34/43]

template<typename T >
Matrix< T, 3, 3 > CubbyFlow::operator- ( const Matrix< T, 3, 3 > &  a,
const T  b 
)

Returns a - b', where every element of matrix b' is b.

◆ operator-() [35/43]

template<typename T >
Matrix< T, 3, 3 > CubbyFlow::operator- ( const T  a,
const Matrix< T, 3, 3 > &  b 
)

Returns a' - b, where every element of matrix a' is a.

◆ operator-() [36/43]

template<typename T >
Matrix< T, 4, 4 > CubbyFlow::operator- ( const Matrix< T, 4, 4 > &  a)

Returns a matrix with opposite sign.

◆ operator-() [37/43]

template<typename T >
Matrix< T, 4, 4 > CubbyFlow::operator- ( const Matrix< T, 4, 4 > &  a,
const Matrix< T, 4, 4 > &  b 
)

Returns a - b (element-size).

◆ operator-() [38/43]

template<typename T >
Matrix< T, 4, 4 > CubbyFlow::operator- ( const Matrix< T, 4, 4 > &  a,
const T  b 
)

Returns a - b', where every element of matrix b' is b.

◆ operator-() [39/43]

template<typename T >
Matrix< T, 4, 4 > CubbyFlow::operator- ( const T  a,
const Matrix< T, 4, 4 > &  b 
)

Returns a' - b, where every element of matrix a' is a.

◆ operator-() [40/43]

template<typename T >
MatrixCSR<T> CubbyFlow::operator- ( const MatrixCSR< T > &  a)

◆ operator-() [41/43]

template<typename T >
MatrixCSR<T> CubbyFlow::operator- ( const MatrixCSR< T > &  a,
const MatrixCSR< T > &  b 
)

◆ operator-() [42/43]

template<typename T >
MatrixCSR<T> CubbyFlow::operator- ( const MatrixCSR< T > &  a,
b 
)

◆ operator-() [43/43]

template<typename T >
MatrixCSR<T> CubbyFlow::operator- ( a,
const MatrixCSR< T > &  b 
)

◆ operator/() [1/30]

template<typename T , typename E >
VectorScalarRDiv< T, E > CubbyFlow::operator/ ( const T &  a,
const VectorExpression< T, E > &  b 
)

Scalar-vector division operation.

◆ operator/() [2/30]

template<typename T , typename E >
VectorScalarDiv< T, E > CubbyFlow::operator/ ( const VectorExpression< T, E > &  a,
const T &  b 
)

Vector-scalar division operation.

◆ operator/() [3/30]

template<typename T , typename E1 , typename E2 >
VectorDiv< T, E1, E2 > CubbyFlow::operator/ ( const VectorExpression< T, E1 > &  a,
const VectorExpression< T, E2 > &  b 
)

Element-wise vector-vector division operation.

◆ operator/() [4/30]

template<typename T >
Matrix2x2<T> CubbyFlow::operator/ ( const Matrix2x2< T > &  a,
b 
)

Returns a' / b, where every element of matrix a' is a.

◆ operator/() [5/30]

template<typename T >
Matrix2x2<T> CubbyFlow::operator/ ( const T &  a,
const Matrix2x2< T > &  b 
)

Returns a / b', where every element of matrix b' is b.

◆ operator/() [6/30]

template<typename T , typename E >
MatrixScalarDiv< T, E > CubbyFlow::operator/ ( const MatrixExpression< T, E > &  a,
b 
)

Returns a' / b, where every element of matrix a' is a.

◆ operator/() [7/30]

template<typename T , typename E >
MatrixScalarRDiv< T, E > CubbyFlow::operator/ ( a,
const MatrixExpression< T, E > &  b 
)

Returns a / b', where every element of matrix b' is b.

◆ operator/() [8/30]

template<typename T >
Point< T, 2 > CubbyFlow::operator/ ( const Point< T, 2 > &  a,
b 
)

Computes (a.x, a.y) / (b, b).

◆ operator/() [9/30]

template<typename T >
Point< T, 2 > CubbyFlow::operator/ ( a,
const Point< T, 2 > &  b 
)

Computes (a, a) / (b.x, b.y).

◆ operator/() [10/30]

template<typename T >
Point< T, 2 > CubbyFlow::operator/ ( const Point< T, 2 > &  a,
const Point< T, 2 > &  b 
)

Computes (a.x, a.y) / (b.x, b.y).

◆ operator/() [11/30]

template<typename T >
Point< T, 3 > CubbyFlow::operator/ ( const Point< T, 3 > &  a,
b 
)

Computes (a.x, a.y, a.z) / (b, b, b).

◆ operator/() [12/30]

template<typename T >
Point< T, 3 > CubbyFlow::operator/ ( a,
const Point< T, 3 > &  b 
)

Computes (a, a, a) / (b.x, b.y, b.z).

◆ operator/() [13/30]

template<typename T >
Point< T, 3 > CubbyFlow::operator/ ( const Point< T, 3 > &  a,
const Point< T, 3 > &  b 
)

Computes (a.x, a.y, a.z) / (b.x, b.y, b.z).

◆ operator/() [14/30]

template<typename T >
Vector< T, 2 > CubbyFlow::operator/ ( const Vector< T, 2 > &  a,
b 
)

Computes (a.x, a.y) / (b, b).

◆ operator/() [15/30]

template<typename T >
Vector< T, 2 > CubbyFlow::operator/ ( a,
const Vector< T, 2 > &  b 
)

Computes (a, a) / (b.x, b.y).

◆ operator/() [16/30]

template<typename T >
Vector< T, 2 > CubbyFlow::operator/ ( const Vector< T, 2 > &  a,
const Vector< T, 2 > &  b 
)

Computes (a.x, a.y) / (b.x, b.y).

◆ operator/() [17/30]

template<typename T >
Vector< T, 4 > CubbyFlow::operator/ ( const Vector< T, 4 > &  a,
b 
)

Computes (a.x, a.y, a.z, a.w) / (b, b, b, b).

◆ operator/() [18/30]

template<typename T >
Vector< T, 4 > CubbyFlow::operator/ ( a,
const Vector< T, 4 > &  b 
)

Computes (a, a, a, a) / (b.x, b.y, b.z, b.w).

◆ operator/() [19/30]

template<typename T >
Vector< T, 4 > CubbyFlow::operator/ ( const Vector< T, 4 > &  a,
const Vector< T, 4 > &  b 
)

Computes (a.x, a.y, a.z, a.w) / (b.x, b.y, b.z, b.w).

◆ operator/() [20/30]

template<typename T >
Vector< T, 3 > CubbyFlow::operator/ ( const Vector< T, 3 > &  a,
b 
)

Computes (a.x, a.y, a.z) / (b, b, b).

◆ operator/() [21/30]

template<typename T >
Vector< T, 3 > CubbyFlow::operator/ ( a,
const Vector< T, 3 > &  b 
)

Computes (a, a, a) / (b.x, b.y, b.z).

◆ operator/() [22/30]

template<typename T >
Vector< T, 3 > CubbyFlow::operator/ ( const Vector< T, 3 > &  a,
const Vector< T, 3 > &  b 
)

Computes (a.x, a.y, a.z) / (b.x, b.y, b.z).

◆ operator/() [23/30]

template<typename T >
Matrix<T, 2, 2> CubbyFlow::operator/ ( const Matrix< T, 2, 2 > &  a,
b 
)

◆ operator/() [24/30]

template<typename T >
Matrix<T, 2, 2> CubbyFlow::operator/ ( a,
const Matrix< T, 2, 2 > &  b 
)

◆ operator/() [25/30]

template<typename T >
Matrix< T, 3, 3 > CubbyFlow::operator/ ( const Matrix< T, 3, 3 > &  a,
b 
)

Returns a' / b, where every element of matrix a' is a.

◆ operator/() [26/30]

template<typename T >
Matrix< T, 3, 3 > CubbyFlow::operator/ ( a,
const Matrix< T, 3, 3 > &  b 
)

Returns a / b', where every element of matrix b' is b.

◆ operator/() [27/30]

template<typename T >
Matrix< T, 4, 4 > CubbyFlow::operator/ ( const Matrix< T, 4, 4 > &  a,
b 
)

Returns a' / b, where every element of matrix a' is a.

◆ operator/() [28/30]

template<typename T >
Matrix< T, 4, 4 > CubbyFlow::operator/ ( const T &  a,
const Matrix< T, 4, 4 > &  b 
)

Returns a / b', where every element of matrix b' is b.

◆ operator/() [29/30]

template<typename T >
MatrixCSR<T> CubbyFlow::operator/ ( const MatrixCSR< T > &  a,
b 
)

◆ operator/() [30/30]

template<typename T >
MatrixCSR<T> CubbyFlow::operator/ ( a,
const MatrixCSR< T > &  b 
)

◆ ParallelFill()

template<typename RandomIterator , typename T >
void CubbyFlow::ParallelFill ( const RandomIterator &  begin,
const RandomIterator &  end,
const T &  value,
ExecutionPolicy  policy = ExecutionPolicy::Parallel 
)

Fills from begin to end with value in parallel.

This function fills a container specified by begin and end iterators in parallel. The order of the filling is not guaranteed due to the nature of parallel execution.

Parameters
[in]beginThe begin iterator of a container.
[in]endThe end iterator of a container.
[in]valueThe value to fill a container.
[in]policyThe execution policy (parallel or serial).
Template Parameters
RandomIteratorRandom iterator type.
TValue type of a container.

◆ ParallelFor() [1/3]

template<typename IndexType , typename Function >
void CubbyFlow::ParallelFor ( IndexType  beginIndex,
IndexType  endIndex,
const Function &  function,
ExecutionPolicy  policy = ExecutionPolicy::Parallel 
)

Makes a for-loop from beginIndex to endIndex in parallel.

This function makes a for-loop specified by begin and end indices in parallel. The order of the visit is not guaranteed due to the nature of parallel execution.

Parameters
[in]beginIndexThe begin index.
[in]endIndexThe end index.
[in]functionThe function to call for each index.
[in]policyThe execution policy (parallel or serial).
Template Parameters
IndexTypeIndex type.
FunctionFunction type.

◆ ParallelFor() [2/3]

template<typename IndexType , typename Function >
void CubbyFlow::ParallelFor ( IndexType  beginIndexX,
IndexType  endIndexX,
IndexType  beginIndexY,
IndexType  endIndexY,
const Function &  function,
ExecutionPolicy  policy = ExecutionPolicy::Parallel 
)

Makes a 2D nested for-loop in parallel.

This function makes a 2D nested for-loop specified by begin and end indices for each dimension. X will be the inner-most loop while Y is the outer-most. The order of the visit is not guaranteed due to the nature of parallel execution.

Parameters
[in]beginIndexXThe begin index in X dimension.
[in]endIndexXThe end index in X dimension.
[in]beginIndexYThe begin index in Y dimension.
[in]endIndexYThe end index in Y dimension.
[in]functionThe function to call for each index (i, j).
[in]policyThe execution policy (parallel or serial).
Template Parameters
IndexTypeIndex type.
FunctionFunction type.

◆ ParallelFor() [3/3]

template<typename IndexType , typename Function >
void CubbyFlow::ParallelFor ( IndexType  beginIndexX,
IndexType  endIndexX,
IndexType  beginIndexY,
IndexType  endIndexY,
IndexType  beginIndexZ,
IndexType  endIndexZ,
const Function &  function,
ExecutionPolicy  policy = ExecutionPolicy::Parallel 
)

Makes a 3D nested for-loop in parallel.

This function makes a 3D nested for-loop specified by begin and end indices for each dimension. X will be the inner-most loop while Z is the outer-most. The order of the visit is not guaranteed due to the nature of parallel execution.

Parameters
[in]beginIndexXThe begin index in X dimension.
[in]endIndexXThe end index in X dimension.
[in]beginIndexYThe begin index in Y dimension.
[in]endIndexYThe end index in Y dimension.
[in]beginIndexZThe begin index in Z dimension.
[in]endIndexZThe end index in Z dimension.
[in]functionThe function to call for each index (i, j, k).
[in]policyThe execution policy (parallel or serial).
Template Parameters
IndexTypeIndex type.
FunctionFunction type.

◆ ParallelRangeFor() [1/3]

template<typename IndexType , typename Function >
void CubbyFlow::ParallelRangeFor ( IndexType  beginIndex,
IndexType  endIndex,
const Function &  function,
ExecutionPolicy  policy = ExecutionPolicy::Parallel 
)

Makes a range-loop from beginIndex to endIndex in parallel.

This function makes a for-loop specified by begin and end indices in parallel. Unlike parallelFor function, the input function object takes range instead of single index. The order of the visit is not guaranteed due to the nature of parallel execution.

Parameters
[in]beginIndexThe begin index.
[in]endIndexThe end index.
[in]functionThe function to call for each index range.
[in]policyThe execution policy (parallel or serial).
Template Parameters
IndexTypeIndex type.
FunctionFunction type.

◆ ParallelRangeFor() [2/3]

template<typename IndexType , typename Function >
void CubbyFlow::ParallelRangeFor ( IndexType  beginIndexX,
IndexType  endIndexX,
IndexType  beginIndexY,
IndexType  endIndexY,
const Function &  function,
ExecutionPolicy  policy = ExecutionPolicy::Parallel 
)

Makes a 2D nested range-loop in parallel.

This function makes a 2D nested for-loop specified by begin and end indices for each dimension. X will be the inner-most loop while Y is the outer-most. Unlike parallelFor function, the input function object takes range instead of single index. The order of the visit is not guaranteed due to the nature of parallel execution.

Parameters
[in]beginIndexXThe begin index in X dimension.
[in]endIndexXThe end index in X dimension.
[in]beginIndexYThe begin index in Y dimension.
[in]endIndexYThe end index in Y dimension.
[in]functionThe function to call for each index range.
[in]policyThe execution policy (parallel or serial).
Template Parameters
IndexTypeIndex type.
FunctionFunction type.

◆ ParallelRangeFor() [3/3]

template<typename IndexType , typename Function >
void CubbyFlow::ParallelRangeFor ( IndexType  beginIndexX,
IndexType  endIndexX,
IndexType  beginIndexY,
IndexType  endIndexY,
IndexType  beginIndexZ,
IndexType  endIndexZ,
const Function &  function,
ExecutionPolicy  policy = ExecutionPolicy::Parallel 
)

Makes a 3D nested range-loop in parallel.

This function makes a 3D nested for-loop specified by begin and end indices for each dimension. X will be the inner-most loop while Z is the outer-most. Unlike parallelFor function, the input function object takes range instead of single index. The order of the visit is not guaranteed due to the nature of parallel execution.

Parameters
[in]beginIndexXThe begin index in X dimension.
[in]endIndexXThe end index in X dimension.
[in]beginIndexYThe begin index in Y dimension.
[in]endIndexYThe end index in Y dimension.
[in]beginIndexZThe begin index in Z dimension.
[in]endIndexZThe end index in Z dimension.
[in]functionThe function to call for each index (i, j, k).
[in]policyThe execution policy (parallel or serial).
Template Parameters
IndexTypeIndex type.
FunctionFunction type.

◆ ParallelReduce()

template<typename IndexType , typename Value , typename Function , typename Reduce >
Value CubbyFlow::ParallelReduce ( IndexType  beginIndex,
IndexType  endIndex,
const Value &  identity,
const Function &  function,
const Reduce &  reduce,
ExecutionPolicy  policy = ExecutionPolicy::Parallel 
)

Performs reduce operation in parallel.

This function reduces the series of values into a single value using the provided reduce function.

Parameters
[in]beginIndexThe begin index.
[in]endIndexThe end index.
[in]identityIdentity value for the reduce operation.
[in]functionThe function for reducing subrange.
[in]reduceThe reduce operator.
[in]policyThe execution policy (parallel or serial).
Template Parameters
IndexTypeIndex type.
ValueValue type.
FunctionReduce function type.

◆ ParallelSort() [1/2]

template<typename RandomIterator >
void CubbyFlow::ParallelSort ( RandomIterator  begin,
RandomIterator  end,
ExecutionPolicy  policy = ExecutionPolicy::Parallel 
)

Sorts a container in parallel.

This function sorts a container specified by begin and end iterators.

Parameters
[in]beginThe begin random access iterator.
[in]endThe end random access iterator.
[in]policyThe execution policy (parallel or serial).
Template Parameters
RandomIteratorIterator type.

◆ ParallelSort() [2/2]

template<typename RandomIterator , typename CompareFunction >
void CubbyFlow::ParallelSort ( RandomIterator  begin,
RandomIterator  end,
CompareFunction  compare,
ExecutionPolicy  policy = ExecutionPolicy::Parallel 
)

Sorts a container in parallel with a custom compare function.

This function sorts a container specified by begin and end iterators. It takes extra compare function which returns true if the first argument is less than the second argument.

Parameters
[in]beginThe begin random access iterator.
[in]endThe end random access iterator.
[in]compareThe compare function.
[in]policyThe execution policy (parallel or serial).
Template Parameters
RandomIteratorIterator type.
CompareFunctionCompare function type.

◆ ParseGridResizeParams() [1/2]

void CubbyFlow::ParseGridResizeParams ( pybind11::args  args,
pybind11::kwargs  kwargs,
Size2 resolution,
Vector2D gridSpacing,
Vector2D gridOrigin 
)
inline

◆ ParseGridResizeParams() [2/2]

void CubbyFlow::ParseGridResizeParams ( pybind11::args  args,
pybind11::kwargs  kwargs,
Size3 resolution,
Vector3D gridSpacing,
Vector3D gridOrigin 
)
inline

◆ PCG()

template<typename BLASType , typename PrecondType >
void CubbyFlow::PCG ( const typename BLASType::MatrixType &  A,
const typename BLASType::VectorType &  b,
unsigned int  maxNumberOfIterations,
double  tolerance,
PrecondType *  M,
typename BLASType::VectorType *  x,
typename BLASType::VectorType *  r,
typename BLASType::VectorType *  d,
typename BLASType::VectorType *  q,
typename BLASType::VectorType *  s,
unsigned int *  lastNumberOfIterations,
double *  lastResidualNorm 
)

Solves pre-conditioned conjugate gradient.

◆ PI()

template<typename T >
constexpr T CubbyFlow::PI ( )

PI for type T.

◆ PI< double >()

template<>
constexpr double CubbyFlow::PI< double > ( )

Pi for double.

◆ PI< float >()

template<>
constexpr float CubbyFlow::PI< float > ( )

Pi for float.

◆ ProjectAndApplyFriction()

template<size_t N>
Vector<double, N> CubbyFlow::ProjectAndApplyFriction ( const Vector< double, N > &  vel,
const Vector< double, N > &  normal,
double  frictionCoefficient 
)
inline

◆ QuarterPI()

template<typename T >
constexpr T CubbyFlow::QuarterPI ( )

PI/4 for type T.

◆ QuarterPI< double >()

template<>
constexpr double CubbyFlow::QuarterPI< double > ( )

PI/4 for double.

◆ QuarterPI< float >()

template<>
constexpr float CubbyFlow::QuarterPI< float > ( )

PI/4 for float.

◆ RadiansToDegrees()

template<typename T >
T CubbyFlow::RadiansToDegrees ( angleInRadians)
inline

Converts radians to degrees.

Parameters
[in]angleInRadiansThe angle in radians.
Template Parameters
TValue type.
Returns
Angle in degrees.

◆ SerialFill()

template<typename RandomIterator , typename T >
void CubbyFlow::SerialFill ( const RandomIterator &  begin,
const RandomIterator &  end,
const T &  value 
)

Fills from begin to end with value.

This function fills a container specified by begin and end iterators with single thread. The order of the filling is deterministic.

Parameters
[in]beginThe begin iterator of a container.
[in]endThe end iterator of a container.
[in]valueThe value to fill a container.
Template Parameters
RandomIteratorRandom iterator type.
TValue type of a container.

◆ SerialFor() [1/3]

template<typename IndexType , typename Function >
void CubbyFlow::SerialFor ( IndexType  beginIndex,
IndexType  endIndex,
const Function &  function 
)

Makes a for-loop from beginIndex to endIndex.

This function makes a for-loop specified by begin and end indices with single thread. The order of the visit is deterministic.

Parameters
[in]beginIndexThe begin index.
[in]endIndexThe end index.
[in]functionThe function to call for each index.
Template Parameters
IndexTypeIndex type.
FunctionFunction type.

◆ SerialFor() [2/3]

template<typename IndexType , typename Function >
void CubbyFlow::SerialFor ( IndexType  beginIndexX,
IndexType  endIndexX,
IndexType  beginIndexY,
IndexType  endIndexY,
const Function &  function 
)

Makes a 2D nested for-loop.

This function makes a 2D nested for-loop specified by begin and end indices for each dimension. X will be the inner-most loop while Y is the outer-most. The order of the visit is deterministic.

Parameters
[in]beginIndexXThe begin index in X dimension.
[in]endIndexXThe end index in X dimension.
[in]beginIndexYThe begin index in Y dimension.
[in]endIndexYThe end index in Y dimension.
[in]functionThe function to call for each index (i, j).
Template Parameters
IndexTypeIndex type.
FunctionFunction type.

◆ SerialFor() [3/3]

template<typename IndexType , typename Function >
void CubbyFlow::SerialFor ( IndexType  beginIndexX,
IndexType  endIndexX,
IndexType  beginIndexY,
IndexType  endIndexY,
IndexType  beginIndexZ,
IndexType  endIndexZ,
const Function &  function 
)

Makes a 3D nested for-loop.

This function makes a 3D nested for-loop specified by begin and end indices for each dimension. X will be the inner-most loop while Z is the outer-most. The order of the visit is deterministic.

Parameters
[in]beginIndexXThe begin index in X dimension.
[in]endIndexXThe end index in X dimension.
[in]beginIndexYThe begin index in Y dimension.
[in]endIndexYThe end index in Y dimension.
[in]beginIndexZThe begin index in Z dimension.
[in]endIndexZThe end index in Z dimension.
[in]functionThe function to call for each index (i, j, k).
Template Parameters
IndexTypeIndex type.
FunctionFunction type.

◆ Serialize() [1/3]

template<typename T >
void CubbyFlow::Serialize ( const ConstArrayAccessor1< T > &  array,
std::vector< uint8_t > *  buffer 
)

Serializes data chunk using common schema.

◆ Serialize() [2/3]

void CubbyFlow::Serialize ( const Serializable serializable,
std::vector< uint8_t > *  buffer 
)

Serializes serializable object.

◆ Serialize() [3/3]

void CubbyFlow::Serialize ( const uint8_t *  data,
size_t  size,
std::vector< uint8_t > *  buffer 
)

Serializes data chunk using common schema.

◆ SerializeGrid()

template<typename GridType , typename FbsFactoryFunc , typename FbsGridType >
void CubbyFlow::SerializeGrid ( flatbuffers::FlatBufferBuilder *  builder,
const std::vector< GridType > &  gridList,
FbsFactoryFunc  func,
std::vector< flatbuffers::Offset< FbsGridType >> *  fbsGridList 
)

◆ SerialSort() [1/2]

template<typename RandomIterator >
void CubbyFlow::SerialSort ( RandomIterator  begin,
RandomIterator  end 
)

Sorts a container.

This function sorts a container specified by begin and end iterators.

Parameters
[in]beginThe begin random access iterator.
[in]endThe end random access iterator.
Template Parameters
RandomIteratorIterator type.

◆ SerialSort() [2/2]

template<typename RandomIterator , typename SortingFunction >
void CubbyFlow::SerialSort ( RandomIterator  begin,
RandomIterator  end,
const SortingFunction &  sortingFunction 
)

Sorts a container with a custom compare function.

This function sorts a container specified by begin and end iterators. It takes extra compare function which returns true if the first argument is less than the second argument.

Parameters
[in]beginThe begin random access iterator.
[in]endThe end random access iterator.
[in]sortingFunctionThe sorting function.
Template Parameters
RandomIteratorIterator type.
SortingFunctionSorting function type.

◆ SetMaxNumberOfThreads()

void CubbyFlow::SetMaxNumberOfThreads ( unsigned int  numThreads)

Sets maximum number of threads to use.

◆ SetRange1() [1/2]

template<typename ArrayType , typename T >
void CubbyFlow::SetRange1 ( size_t  size,
const T &  value,
ArrayType *  output 
)

Assigns value to 1-D array output with size.

This function assigns value to 1-D array output with size. The output array must support random access operator [].

◆ SetRange1() [2/2]

template<typename ArrayType , typename T >
void CubbyFlow::SetRange1 ( size_t  begin,
size_t  end,
const T &  value,
ArrayType *  output 
)

Assigns value to 1-D array output from begin to end.

This function assigns value to 1-D array output from begin to end. The output array must support random access operator [].

◆ Sign()

template<typename T >
T CubbyFlow::Sign ( x)
inline

Returns the sign of the value.

Parameters
[in]xInput value.
Template Parameters
TValue type.
Returns
The sign.

◆ Similar()

template<typename T >
bool CubbyFlow::Similar ( x,
y,
eps = std::numeric_limits< T >::epsilon() 
)
inline

Returns true if x and y are similar.

Parameters
[in]xThe first value.
[in]yThe second value.
[in]epsThe tolerance.
Template Parameters
TValue type.
Returns
True if similar.

◆ Size2ToTuple()

pybind11::tuple CubbyFlow::Size2ToTuple ( const Size2 size)
inline

◆ Size3ToTuple()

pybind11::tuple CubbyFlow::Size3ToTuple ( const Size3 size)
inline

◆ Slerp()

template<typename T >
Quaternion< T > CubbyFlow::Slerp ( const Quaternion< T > &  a,
const Quaternion< T > &  b,
t 
)

Computes spherical linear interpolation.

◆ SmearedDeltaSDF()

template<typename T >
T CubbyFlow::SmearedDeltaSDF ( phi)
inline

Returns smeared delta function.

This function returns smeared (or smooth) delta function between 0 and 1. If phi is less than -1.5, it will return 0. If phi is greater than 1.5, it will also return 0. Between -1.5 and 1.5, the function will return smooth delta function. Integral of this function is smearedHeavisideSdf.

Parameters
[in]phiThe level set value.
Template Parameters
TValue type.
Returns
Smeared delta function.

◆ SmearedHeavisideSDF()

template<typename T >
T CubbyFlow::SmearedHeavisideSDF ( phi)
inline

Returns smeared Heaviside function.

This function returns smeared (or smooth) Heaviside (or step) function between 0 and 1. If phi is less than -1.5, it will return 0. If phi is greater than 1.5, it will return 1. Between -1.5 and 1.5, the function will return smooth profile between 0 and 1. Derivative of this function is smearedDeltaSdf.

Parameters
[in]phiThe level set value.
Template Parameters
TValue type.
Returns
Smeared Heaviside function.

◆ Square()

template<typename T >
T CubbyFlow::Square ( x)
inline

Returns the square of x.

Parameters
[in]xThe input.
Template Parameters
TValue type.
Returns
The squared value.

◆ SVD() [1/2]

template<typename T >
void CubbyFlow::SVD ( const MatrixMxN< T > &  a,
MatrixMxN< T > &  u,
VectorN< T > &  w,
MatrixMxN< T > &  v 
)

Singular value decomposition (SVD).

This function decompose the input matrix a to u * w * v^T.

Template Parameters
TReal-value type.
Parameters
aThe input matrix to decompose.
uLeft-most output matrix.
wThe vector of singular values.
vRight-most output matrix.

◆ SVD() [2/2]

template<typename T , size_t M, size_t N>
void CubbyFlow::SVD ( const Matrix< T, M, N > &  a,
Matrix< T, M, N > &  u,
Vector< T, N > &  w,
Matrix< T, N, N > &  v 
)

Singular value decomposition (SVD).

This function decompose the input matrix a to u * w * v^T.

Template Parameters
TReal-value type.
Parameters
aThe input matrix to decompose.
uLeft-most output matrix.
wThe vector of singular values.
vRight-most output matrix.

◆ TriangleMeshToSDF()

void CubbyFlow::TriangleMeshToSDF ( const TriangleMesh3 mesh,
ScalarGrid3 sdf,
const unsigned int  exactBand = 1 
)

Generates signed-distance field out of given triangle mesh.

This function generates signed-distance field from a triangle mesh. The mesh should be water-tight, meaning there should be no gap. A gap can make the evaluation of the signs impossible. The output signed-distance field will be assigned to the scalar field, sdf, which can be any type of scalar field (vertex-centered vs. cell-centered). To accelerate the calculation, this function also takes extra parameter, exactBand, which defines the bandwidth around the mesh in a number of grid points. This bandwidth is the region where the exact distance to the mesh will be computed. Distance values of the areas that are farther from the mesh surface will be approximated using fast sweeping method. The sign of the signed-distance field is determined by assuming the bounding box of the output scalar grid is the exterior of the mesh.

This function is a port of Christopher Batty's SDFGen software.

See also
https://github.com/christopherbatty/SDFGen
Parameters
[in]meshThe mesh.
[in,out]sdfThe output signed-distance field.
[in]exactBandThe bandwidth for exact distance computation.

◆ TriLerp()

template<typename S , typename T >
S CubbyFlow::TriLerp ( const S &  f000,
const S &  f100,
const S &  f010,
const S &  f110,
const S &  f001,
const S &  f101,
const S &  f011,
const S &  f111,
tx,
ty,
fz 
)
inline

Computes trilinear interpolation.

◆ TupleToPoint2UI() [1/2]

Point2UI CubbyFlow::TupleToPoint2UI ( pybind11::tuple  tuple)
inline

◆ TupleToPoint2UI() [2/2]

Point2UI CubbyFlow::TupleToPoint2UI ( pybind11::list  list)
inline

◆ TupleToPoint3UI() [1/2]

Point3UI CubbyFlow::TupleToPoint3UI ( pybind11::tuple  tuple)
inline

◆ TupleToPoint3UI() [2/2]

Point3UI CubbyFlow::TupleToPoint3UI ( pybind11::list  list)
inline

◆ TupleToQuaternion() [1/2]

template<typename T >
Quaternion<T> CubbyFlow::TupleToQuaternion ( pybind11::tuple  tuple)
inline

◆ TupleToQuaternion() [2/2]

template<typename T >
Quaternion<T> CubbyFlow::TupleToQuaternion ( pybind11::list  list)
inline

◆ TupleToQuaternionD() [1/2]

QuaternionD CubbyFlow::TupleToQuaternionD ( pybind11::tuple  tuple)
inline

◆ TupleToQuaternionD() [2/2]

QuaternionD CubbyFlow::TupleToQuaternionD ( pybind11::list  list)
inline

◆ TupleToQuaternionF() [1/2]

QuaternionF CubbyFlow::TupleToQuaternionF ( pybind11::tuple  tuple)
inline

◆ TupleToQuaternionF() [2/2]

QuaternionF CubbyFlow::TupleToQuaternionF ( pybind11::list  list)
inline

◆ TupleToSize2() [1/2]

Size2 CubbyFlow::TupleToSize2 ( pybind11::tuple  tuple)
inline

◆ TupleToSize2() [2/2]

Size2 CubbyFlow::TupleToSize2 ( pybind11::list  list)
inline

◆ TupleToSize3() [1/2]

Size3 CubbyFlow::TupleToSize3 ( pybind11::tuple  tuple)
inline

◆ TupleToSize3() [2/2]

Size3 CubbyFlow::TupleToSize3 ( pybind11::list  list)
inline

◆ TupleToVector() [1/2]

template<typename T , size_t N>
Vector<T, N> CubbyFlow::TupleToVector ( pybind11::tuple  tuple)
inline

◆ TupleToVector() [2/2]

template<typename T , size_t N>
Vector<T, N> CubbyFlow::TupleToVector ( pybind11::list  list)
inline

◆ TupleToVector2D() [1/2]

Vector2D CubbyFlow::TupleToVector2D ( pybind11::tuple  tuple)
inline

◆ TupleToVector2D() [2/2]

Vector2D CubbyFlow::TupleToVector2D ( pybind11::list  list)
inline

◆ TupleToVector2F() [1/2]

Vector2F CubbyFlow::TupleToVector2F ( pybind11::tuple  tuple)
inline

◆ TupleToVector2F() [2/2]

Vector2F CubbyFlow::TupleToVector2F ( pybind11::list  list)
inline

◆ TupleToVector3D() [1/2]

Vector3D CubbyFlow::TupleToVector3D ( pybind11::tuple  tuple)
inline

◆ TupleToVector3D() [2/2]

Vector3D CubbyFlow::TupleToVector3D ( pybind11::list  list)
inline

◆ TupleToVector3F() [1/2]

Vector3F CubbyFlow::TupleToVector3F ( pybind11::tuple  tuple)
inline

◆ TupleToVector3F() [2/2]

Vector3F CubbyFlow::TupleToVector3F ( pybind11::list  list)
inline

◆ TupleToVector4D() [1/2]

Vector4D CubbyFlow::TupleToVector4D ( pybind11::tuple  tuple)
inline

◆ TupleToVector4D() [2/2]

Vector4D CubbyFlow::TupleToVector4D ( pybind11::list  list)
inline

◆ TupleToVector4F() [1/2]

Vector4F CubbyFlow::TupleToVector4F ( pybind11::tuple  tuple)
inline

◆ TupleToVector4F() [2/2]

Vector4F CubbyFlow::TupleToVector4F ( pybind11::list  list)
inline

◆ UniformSampleCone()

template<typename T >
Vector3< T > CubbyFlow::UniformSampleCone ( u1,
u2,
const Vector3< T > &  axis,
angle 
)
inline

Returns randomly sampled direction within a cone.

For a given cone, defined by axis and angle, this function returns a sampled direction vector within the cone.

Parameters
[in]u1First random sample.
[in]u2Second random sample.
[in]axisThe axis of the cone.
[in]angleThe angle of the cone.
Template Parameters
TReal number type.
Returns
Sampled direction vector.

◆ UniformSampleDisk()

template<typename T >
Vector2< T > CubbyFlow::UniformSampleDisk ( u1,
u2 
)
inline

Returns randomly a point on a disk.

For a given disk, this function returns a point on the disk.

Parameters
[in]u1First random sample.
[in]u2Second random sample.
Template Parameters
TReal number type.
Returns
Sampled point.

◆ UniformSampleHemisphere()

template<typename T >
Vector3< T > CubbyFlow::UniformSampleHemisphere ( u1,
u2,
const Vector3< T > &  normal 
)
inline

Returns randomly sampled point within a unit hemisphere.

For a given unit hemisphere, defined by center normal vector, this function returns a point within the hemisphere.

Parameters
[in]u1First random sample.
[in]u2Second random sample.
[in]normalThe center normal of the hemisphere.
Template Parameters
TReal number type.
Returns
Sampled point.

◆ UniformSampleSphere()

template<typename T >
Vector3< T > CubbyFlow::UniformSampleSphere ( u1,
u2 
)
inline

Returns randomly a point on a sphere.

For a given sphere, defined by center normal vector, this function returns a point on the sphere.

Parameters
[in]u1First random sample.
[in]u2Second random sample.
Template Parameters
TReal number type.
Returns
Sampled point.

◆ Upwind1() [1/2]

template<typename T >
std::array< T, 2 > CubbyFlow::Upwind1 ( T *  d0,
dx 
)

1st order upwind differencing. d0[1] is the origin.

|------|------|
d0[0] d0[1] d0[2]

Returns two solutions for each side.

◆ Upwind1() [2/2]

template<typename T >
T CubbyFlow::Upwind1 ( T *  d0,
dx,
bool  isDirectionPositive 
)

1st order upwind differencing. d0[1] is the origin.

|------|------|
d0[0] d0[1] d0[2]

◆ Vector2ToTuple()

template<typename T >
pybind11::tuple CubbyFlow::Vector2ToTuple ( const Vector< T, 2 > &  vec)
inline

◆ Vector3ToTuple()

template<typename T >
pybind11::tuple CubbyFlow::Vector3ToTuple ( const Vector< T, 3 > &  vec)
inline

◆ Vector4ToTuple()

template<typename T >
pybind11::tuple CubbyFlow::Vector4ToTuple ( const Vector< T, 4 > &  vec)
inline

◆ WENO5() [1/2]

template<typename T >
std::array< T, 2 > CubbyFlow::WENO5 ( T *  v,
h,
eps = 1.0e-8 
)

5th order WENO. d0[3] is the origin.

|------|------|------|------|------|------|
d0[0] d0[1] d0[2] d0[3] d0[4] d0[5] d0[6]

Returns two solutions for each side.

◆ WENO5() [2/2]

template<typename T >
T CubbyFlow::WENO5 ( T *  v,
h,
bool  is_velocity_positive,
eps = 1.0e-8 
)

5th order WENO. d0[3] is the origin.

|------|------|------|------|------|------|
d0[0] d0[1] d0[2] d0[3] d0[4] d0[5] d0[6]

◆ Zero()

template<typename T >
constexpr T CubbyFlow::Zero ( )

Zero for type T.

◆ Zero< double >()

template<>
constexpr double CubbyFlow::Zero< double > ( )

Zero for double.

◆ Zero< float >()

template<>
constexpr float CubbyFlow::Zero< float > ( )

Zero for float.

◆ Zero< Vector3D >()

template<>
constexpr Vector3D CubbyFlow::Zero< Vector3D > ( )

Returns double-type zero vector.

◆ Zero< Vector3F >()

template<>
constexpr Vector3F CubbyFlow::Zero< Vector3F > ( )

Returns float-type zero vector.

◆ Zero< Vector4D >()

template<>
constexpr Vector4D CubbyFlow::Zero< Vector4D > ( )

Returns double-type zero vector.

◆ Zero< Vector4F >()

template<>
constexpr Vector4F CubbyFlow::Zero< Vector4F > ( )

Returns float-type zero vector.

◆ Zero< Vector< double, 2 > >()

template<>
constexpr Vector<double, 2> CubbyFlow::Zero< Vector< double, 2 > > ( )

Returns double-type zero vector.

◆ Zero< Vector< float, 2 > >()

template<>
constexpr Vector<float, 2> CubbyFlow::Zero< Vector< float, 2 > > ( )

Returns float-type zero vector.

Variable Documentation

◆ debugLogger

Logger CubbyFlow::debugLogger

Debug-level logger.

◆ DIRECTION_ALL

constexpr int CubbyFlow::DIRECTION_ALL
Initial value:
=
constexpr int DIRECTION_DOWN
Down direction.
Definition: Constants.h:175
constexpr int DIRECTION_BACK
Back direction.
Definition: Constants.h:181
constexpr int DIRECTION_FRONT
Front direction.
Definition: Constants.h:184
constexpr int DIRECTION_UP
Up direction.
Definition: Constants.h:178
constexpr int DIRECTION_RIGHT
RIght direction.
Definition: Constants.h:172
constexpr int DIRECTION_LEFT
Left direction.
Definition: Constants.h:169

All direction.

◆ DIRECTION_BACK

constexpr int CubbyFlow::DIRECTION_BACK = 1 << 4

Back direction.

◆ DIRECTION_DOWN

constexpr int CubbyFlow::DIRECTION_DOWN = 1 << 2

Down direction.

◆ DIRECTION_FRONT

constexpr int CubbyFlow::DIRECTION_FRONT = 1 << 5

Front direction.

◆ DIRECTION_LEFT

constexpr int CubbyFlow::DIRECTION_LEFT = 1 << 0

Left direction.

◆ DIRECTION_NONE

constexpr int CubbyFlow::DIRECTION_NONE = 0

No direction.

◆ DIRECTION_RIGHT

constexpr int CubbyFlow::DIRECTION_RIGHT = 1 << 1

RIght direction.

◆ DIRECTION_UP

constexpr int CubbyFlow::DIRECTION_UP = 1 << 3

Up direction.

◆ errorLogger

Logger CubbyFlow::errorLogger

Error-level logger.

◆ GRAVITY

constexpr double CubbyFlow::GRAVITY = -9.8

Gravity.

◆ HALF_PI_DOUBLE

constexpr double CubbyFlow::HALF_PI_DOUBLE = 1.57079632679489661923132169163975144

Double-type PI/2.

◆ HALF_PI_FLOAT

constexpr float CubbyFlow::HALF_PI_FLOAT = 1.57079632679489661923132169163975144f

Float-type PI/2.

◆ infoLogger

Logger CubbyFlow::infoLogger

Info-level logger.

◆ ONE_SIZE

constexpr size_t CubbyFlow::ONE_SIZE = 1

One size_t.

◆ ONE_SSIZE

constexpr ssize_t CubbyFlow::ONE_SSIZE = 1

One ssize_t.

◆ PI_DOUBLE

constexpr double CubbyFlow::PI_DOUBLE = 3.14159265358979323846264338327950288

Double-type PI.

◆ PI_FLOAT

constexpr float CubbyFlow::PI_FLOAT = 3.14159265358979323846264338327950288f

Float-type PI.

◆ QUARTER_PI_DOUBLE

constexpr double CubbyFlow::QUARTER_PI_DOUBLE = 0.785398163397448309615660845819875721

Double-type PI/4.

◆ QUARTER_PI_FLOAT

constexpr float CubbyFlow::QUARTER_PI_FLOAT = 0.785398163397448309615660845819875721f

Float-type PI/4.

◆ SPEED_OF_SOUND_IN_WATER

constexpr double CubbyFlow::SPEED_OF_SOUND_IN_WATER = 1482.0

Speed of sound in water at 20 degrees Celsius.

◆ warnLogger

Logger CubbyFlow::warnLogger

Warn-level logger.

◆ WATER_DENSITY

constexpr double CubbyFlow::WATER_DENSITY = 1000.0

Water density.

◆ ZERO_SIZE

constexpr size_t CubbyFlow::ZERO_SIZE = 0

Zero size_t.

◆ ZERO_SSIZE

constexpr ssize_t CubbyFlow::ZERO_SSIZE = 0

Zero ssize_t.