CudaMath.h File Reference

#include <cuda_runtime.h>

Include dependency graph for CudaMath.h:

This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

class  CudaVec2< float >
class  CudaVec3< float >
class  CudaVec4< float >
class  matrix3< real >

Typedefs

typedef CudaVec2< float > CudaVec2f
typedef CudaVec3< float > CudaVec3f
typedef CudaVec4< float > CudaVec4f

Functions

template<class real >
__device__ CudaVec3< real > operator+ (CudaVec3< real > a, CudaVec3< real > b)
template<class real >
__device__ void operator+= (CudaVec3< real > &a, CudaVec3< real > b)
template<class real >
__device__ void operator+= (CudaVec3< real > &a, real b)
template<class real >
__device__ CudaVec3< real > operator- (CudaVec3< real > a, CudaVec3< real > b)
template<class real >
__device__ void operator-= (CudaVec3< real > &a, CudaVec3< real > b)
template<class real >
__device__ void operator-= (CudaVec3< real > &a, real b)
template<class real >
__device__ CudaVec3< real > operator- (CudaVec3< real > &a)
template<class real >
__device__ CudaVec3< real > operator* (CudaVec3< real > a, real b)
template<class real >
__device__ CudaVec3< real > operator/ (CudaVec3< real > a, real b)
template<class real >
__device__ void operator*= (CudaVec3< real > &a, real b)
template<class real >
__device__ CudaVec3< real > operator* (real a, CudaVec3< real > b)
template<class real >
__device__ CudaVec3< real > mul (CudaVec3< real > a, CudaVec3< real > b)
template<class real >
__device__ real dot (CudaVec3< real > a, CudaVec3< real > b)
template<class real >
__device__ CudaVec3< real > cross (CudaVec3< real > a, CudaVec3< real > b)
template<class real >
__device__ real norm2 (CudaVec3< real > a)
template<class real >
__device__ real norm (CudaVec3< real > a)
template<class real >
__device__ real invnorm (CudaVec3< real > a)


Typedef Documentation

typedef CudaVec2<float> CudaVec2f

Definition at line 100 of file CudaMath.h.

typedef CudaVec3<float> CudaVec3f

Definition at line 101 of file CudaMath.h.

typedef CudaVec4<float> CudaVec4f

Definition at line 102 of file CudaMath.h.


Function Documentation

template<class real >
__device__ CudaVec3<real> cross ( CudaVec3< real >  a,
CudaVec3< real >  b 
) [inline]

Definition at line 194 of file CudaMath.h.

Referenced by sofa::component::constraint::UnilateralInteractionConstraint< DataTypes >::addContact(), sofa::component::forcefield::FrameSpringForceField< DataTypes >::addSpringForce(), sofa::helper::adjoint_transpose(), sofa::component::mapping::TubularMapping< BasicMapping >::applyJ(), sofa::component::mapping::SkinningMapping< BasicMapping >::applyJ(), sofa::component::mapping::RigidRigidMapping< BasicMapping >::applyJ(), sofa::component::mapping::RigidMapping< BasicMapping >::applyJ(), sofa::component::mapping::BeamLinearMapping< BasicMapping >::applyJ(), sofa::component::mapping::ArticulatedSystemMapping< BasicMapping >::applyJ(), sofa::component::mapping::TubularMapping< BasicMapping >::applyJT(), sofa::component::mapping::SkinningMapping< BasicMapping >::applyJT(), sofa::component::mapping::RigidRigidMapping< BasicMapping >::applyJT(), sofa::component::mapping::RigidMapping< BasicMapping >::applyJT(), sofa::component::mapping::BeamLinearMapping< BasicMapping >::applyJT(), sofa::component::mapping::ArticulatedSystemMapping< BasicMapping >::applyJT(), sofa::component::collision::DistanceGrid::calcDistance(), sofa::component::constraint::AttachConstraint< DataTypes >::calcRestRotations(), sofa::component::topology::TriangleSetGeometryAlgorithms< DataTypes >::compute3PointsBarycoefs(), sofa::component::collision::TriangleOctreeModel::computeBoundingTree(), sofa::component::collision::TriangleModel::computeBoundingTree(), sofa::component::collision::TriangleModel::computeContinuousBoundingTree(), sofa::component::collision::DiscreteIntersection::computeIntersection(), sofa::component::forcefield::TriangularAnisotropicFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::component::forcefield::TetrahedronFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::component::visualmodel::VisualModelImpl::computeNormals(), sofa::component::visualmodel::OgreVisualModel::computeNormals(), sofa::component::mapping::computeOrientation(), sofa::component::collision::FFDDistanceGridCollisionModel::DeformedCube::computePlane(), sofa::component::topology::QuadSetGeometryAlgorithms< DataTypes >::computeQuadNormal(), sofa::helper::gl::Trackball::ComputeQuaternion(), sofa::component::forcefield::TriangularFEMForceField< DataTypes >::computeRotationLarge(), sofa::component::forcefield::TriangleFEMForceField< DataTypes >::computeRotationLarge(), sofa::component::forcefield::TetrahedronFEMForceField< DataTypes >::computeRotationLarge(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeRotationLarge(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeRotationLarge(), sofa::component::forcefield::HexahedralFEMForceField< DataTypes >::computeRotationLarge(), sofa::component::topology::TriangleSetGeometryAlgorithms< DataTypes >::computeSegmentTriangleIntersection(), sofa::component::topology::TriangleSetGeometryAlgorithms< DataTypes >::computeTriangleBarycoefs(), sofa::component::topology::TriangleSetGeometryAlgorithms< DataTypes >::computeTriangleNormal(), sofa::component::mapping::BarycentricMapperMeshTopology< gpu::cuda::CudaVectorTypes< VecIn, VecIn, float >, gpu::cuda::CudaVectorTypes< VecOut, VecOut, float > >::createPointInQuad(), sofa::component::mapping::BarycentricMapperQuadSetTopology< In, Out >::createPointInQuad(), sofa::component::mapping::BarycentricMapperMeshTopology< In, Out >::createPointInQuad(), sofa::component::mapping::BarycentricMapperMeshTopology< gpu::cuda::CudaVectorTypes< VecIn, VecIn, float >, gpu::cuda::CudaVectorTypes< VecOut, VecOut, float > >::createPointInTriangle(), sofa::component::mapping::BarycentricMapperTriangleSetTopology< In, Out >::createPointInTriangle(), sofa::component::mapping::BarycentricMapperMeshTopology< In, Out >::createPointInTriangle(), sofa::helper::do_rank2(), sofa::component::collision::TetrahedronModel::draw(), projects::GenerateRigid(), sofa::helper::polygon_cube_intersection::get_polygon_normal(), sofa::component::topology::CylinderGridTopology::getPoint(), sofa::component::mapping::BarycentricMapperMeshTopology< gpu::cuda::CudaVectorTypes< VecIn, VecIn, float >, gpu::cuda::CudaVectorTypes< VecOut, VecOut, float > >::init(), sofa::component::mapping::BarycentricMapperQuadSetTopology< In, Out >::init(), sofa::component::mapping::BarycentricMapperTriangleSetTopology< In, Out >::init(), sofa::component::mapping::BarycentricMapperMeshTopology< In, Out >::init(), sofa::component::constraint::ParabolicConstraint< DataTypes >::init(), sofa::component::topology::is_point_in_halfplane(), sofa::component::topology::is_point_in_triangle(), sofa::component::topology::TriangleSetGeometryAlgorithms< DataTypes >::is_PointinTriangle(), sofa::component::collision::DiscreteIntersection::testIntersection(), sofa::component::collision::Point::testLMD(), sofa::component::collision::LocalMinDistance::testValidity(), sofa::component::forcefield::TetrahedralTensorMassForceField< DataTypes >::TetrahedralTMTetrahedronCreationFunction(), sofa::component::forcefield::TetrahedralTensorMassForceField< DataTypes >::TetrahedralTMTetrahedronDestructionFunction(), sofa::component::topology::tripleProduct(), sofa::component::collision::TriangleModel::updateNormals(), sofa::component::collision::PointModel::updateNormals(), sofa::component::behaviormodel::eulerianfluid::Fluid3D::updateVisual(), and sofa::component::behaviormodel::eulerianfluid::Fluid2D::updateVisual().

template<class real >
__device__ real dot ( CudaVec3< real >  a,
CudaVec3< real >  b 
) [inline]

Definition at line 188 of file CudaMath.h.

Referenced by sofa::component::constraint::UnilateralInteractionConstraint< DataTypes >::addContact(), sofa::component::forcefield::SpringEdgeDataForceField< DataTypes >::addDForce(), sofa::component::forcefield::TensorForceField< DataTypes >::addElasticTensors(), sofa::component::interactionforcefield::RepulsiveSpringForceField< DataTypes >::addForce(), sofa::component::forcefield::TriangularQuadraticSpringsForceField< DataTypes >::addForce(), sofa::component::forcefield::TriangularBiquadraticSpringsForceField< DataTypes >::addForce(), sofa::component::forcefield::TriangularBendingSprings< DataTypes >::addForce(), sofa::component::forcefield::SpringEdgeDataForceField< DataTypes >::addForce(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::addForce(), sofa::component::forcefield::ConicalForceField< DataTypes >::addForce(), sofa::component::forcefield::StiffSpringForceField< DataTypes >::addSpringForce(), sofa::component::forcefield::SpringForceField< DataTypes >::addSpringForce(), applyForceCallback(), sofa::component::mapping::LaparoscopicRigidMapping< BasicMapping >::applyJT(), sofa::component::mapping::ArticulatedSystemMapping< BasicMapping >::applyJT(), sofa::component::forcefield::TetrahedronFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::component::forcefield::TetrahedralCorotationalFEMForceField< DataTypes >::computeMaterialStiffness(), sofa::component::mapping::computeOrientation(), sofa::component::mapping::BarycentricMapperEdgeSetTopology< In, Out >::createPointInLine(), sofa::filemanager::pml::PMLInteractionForceField::createSprings(), SensAble::draw(), sofa::component::collision::RayTraceDetection::findPairsVolume(), sofa::component::topology::PointSetGeometryAlgorithms< DataTypes >::getEnclosingSphere(), sofa::component::collision::ContinuousTriangleIntersection::intersectEdgeEdge(), sofa::component::collision::ContinuousTriangleIntersection::intersectPointTriangle(), sofa::component::forcefield::TrianglePressureForceField< DataTypes >::isPointInPlane(), sofa::component::forcefield::EdgePressureForceField< DataTypes >::isPointInPlane(), sofa::component::constraint::FixedPlaneConstraint< DataTypes >::isPointInPlane(), sofa::helper::make_reflector(), matrix3< real >::mulX(), matrix3< real >::mulY(), matrix3< real >::mulZ(), sofa::component::collision::TriangleOctree::nearestTriangle(), sofa::component::collision::RayTriangleIntersection::NewComputation(), sofa::component::collision::DistancePointTri::NewComputation(), sofa::component::collision::DistanceSegTri::NewComputation(), sofa::component::collision::DistanceTriTri::NewComputation(), matrix3< real >::operator*(), sofa::helper::polar_decomp(), sofa::component::constraint::FixedPlaneConstraint< DataTypes >::projectResponse(), sofa::helper::reflect_rows(), sofa::component::collision::Point::testLMD(), sofa::component::collision::LocalMinDistance::testValidity(), sofa::component::forcefield::TetrahedralTensorMassForceField< DataTypes >::TetrahedralTMTetrahedronCreationFunction(), sofa::component::forcefield::TetrahedralTensorMassForceField< DataTypes >::TetrahedralTMTetrahedronDestructionFunction(), and sofa::component::topology::tripleProduct().

template<class real >
__device__ real invnorm ( CudaVec3< real >  a  )  [inline]

Definition at line 212 of file CudaMath.h.

References norm2().

template<class real >
__device__ CudaVec3<real> mul ( CudaVec3< real >  a,
CudaVec3< real >  b 
) [inline]

Definition at line 182 of file CudaMath.h.

template<class real >
__device__ real norm ( CudaVec3< real >  a  )  [inline]

Definition at line 206 of file CudaMath.h.

References norm2().

Referenced by sofa::component::forcefield::PenalityContactForceField< CudaVec3fTypes >::addDForce(), sofa::component::forcefield::SparseGridSpringForceField< DataTypes >::addDForce(), sofa::component::forcefield::RegularGridSpringForceField< DataTypes >::addDForce(), sofa::component::forcefield::PenalityContactForceField< CudaVec3fTypes >::addForce(), sofa::component::forcefield::TriangularBendingSprings< DataTypes >::addForce(), sofa::component::forcefield::SphereForceField< DataTypes >::addForce(), sofa::component::forcefield::SparseGridSpringForceField< DataTypes >::addForce(), sofa::component::forcefield::RegularGridSpringForceField< DataTypes >::addForce(), sofa::component::forcefield::EllipsoidForceField< DataTypes >::addForce(), sofa::component::forcefield::ConicalForceField< DataTypes >::addForce(), sofa::component::forcefield::TriangleBendingSprings< DataTypes >::addSpring(), sofa::component::forcefield::QuadBendingSprings< DataTypes >::addSpring(), sofa::gui::qt::viewer::qt::QtViewer::ApplyMouseInteractorTransformation(), sofa::component::topology::areaProduct(), sofa::gpu::cuda::CudaDistanceGrid::calcCubeDistance(), sofa::component::collision::DistanceGrid::calcCubeDistance(), sofa::component::interactionforcefield::InteractionEllipsoidForceField< DataTypes1, DataTypes2 >::calcF(), sofa::component::topology::EdgeSetGeometryAlgorithms< DataTypes >::computeEdgeLength(), sofa::component::forcefield::HexahedronFEMForceField< DataTypes >::computeElementStiffness(), sofa::component::forcefield::HexahedralFEMForceField< DataTypes >::computeElementStiffness(), sofa::component::topology::EdgeSetGeometryAlgorithms< DataTypes >::computeRestEdgeLength(), sofa::component::forcefield::PenalityContactForceField< CudaVec3fTypes >::draw(), sofa::gpu::cuda::CudaRigidDistanceGridCollisionModel::draw(), sofa::component::forcefield::TriangularBendingSprings< DataTypes >::draw(), sofa::component::forcefield::SpringForceField< DataTypes >::draw(), sofa::component::forcefield::SpringEdgeDataForceField< DataTypes >::draw(), sofa::component::forcefield::SparseGridSpringForceField< DataTypes >::draw(), sofa::component::forcefield::RegularGridSpringForceField< DataTypes >::draw(), sofa::component::forcefield::QuadularBendingSprings< DataTypes >::draw(), sofa::component::forcefield::FrameSpringForceField< DataTypes >::draw(), sofa::component::collision::RigidDistanceGridCollisionModel::draw(), sofa::gui::qt::viewer::qt::QtViewer::DrawBox(), sofa::gui::qt::viewer::qgl::QtGLViewer::DrawBox(), sofa::gui::glut::SimpleGUI::DrawBox(), sofa::component::topology::CylinderGridTopology::getPoint(), sofa::component::mapping::SkinningMapping< BasicMapping >::init(), sofa::component::mapping::BeamLinearMapping< BasicMapping >::init(), sofa::component::constraint::AttachConstraint< DataTypes >::init(), sofa::gpu::cuda::CudaRigidTypes< 3, real >::interpolate(), sofa::defaulttype::StdRigidTypes< 3, real >::interpolate(), sofa::helper::Quater< Real >::inverse(), sofa::helper::io::MassSpringLoader::load(), sofa::component::forcefield::BeamFEMForceField< DataTypes >::reinitBeam(), sofa::gui::qt::viewer::qt::QtViewer::resetView(), sofa::gui::qt::viewer::qt::QtViewer::setScene(), sofa::helper::Quater< Real >::toEulerVector(), and sofa::component::forcefield::SphereForceField< DataTypes >::updateStiffness().

template<class real >
__device__ real norm2 ( CudaVec3< real >  a  )  [inline]

Definition at line 200 of file CudaMath.h.

Referenced by sofa::component::forcefield::TetrahedronFEMForceFieldInternalData< gpu::cuda::CudaVectorTypes< TCoord, TDeriv, TReal > >::addForce(), sofa::component::forcefield::SPHFluidForceField< DataTypes >::addForce(), sofa::component::forcefield::SphereForceField< DataTypes >::addForce(), sofa::component::forcefield::EllipsoidForceField< DataTypes >::addForce(), sofa::component::interactionforcefield::InteractionEllipsoidForceField< DataTypes1, DataTypes2 >::calcF(), sofa::component::container::SpatialGrid< DataTypes >::computeField(), sofa::component::collision::DiscreteIntersection::computeIntersection(), sofa::component::topology::EdgeSetGeometryAlgorithms< DataTypes >::computeRestSquareEdgeLength(), sofa::component::mapping::BarycentricMapperMeshTopology< gpu::cuda::CudaVectorTypes< VecIn, VecIn, float >, gpu::cuda::CudaVectorTypes< VecOut, VecOut, float > >::createPointInTriangle(), sofa::component::mapping::BarycentricMapperTriangleSetTopology< In, Out >::createPointInTriangle(), sofa::component::mapping::BarycentricMapperMeshTopology< In, Out >::createPointInTriangle(), sofa::gpu::cuda::CudaDistanceGrid::eval(), sofa::component::collision::DistanceGrid::eval(), sofa::gpu::cuda::CudaDistanceGrid::eval2(), sofa::component::collision::DistanceGrid::eval2(), sofa::component::container::SpatialGrid< DataTypes >::findNeighbors(), sofa::component::mapping::BarycentricMapperHexahedronSetTopology< In, Out >::handleTopologyChange(), sofa::component::mapping::BarycentricMapperMeshTopology< gpu::cuda::CudaVectorTypes< VecIn, VecIn, float >, gpu::cuda::CudaVectorTypes< VecOut, VecOut, float > >::init(), sofa::component::mapping::BarycentricMapperHexahedronSetTopology< In, Out >::init(), sofa::component::mapping::BarycentricMapperTetrahedronSetTopology< In, Out >::init(), sofa::component::mapping::BarycentricMapperQuadSetTopology< In, Out >::init(), sofa::component::mapping::BarycentricMapperTriangleSetTopology< In, Out >::init(), sofa::component::mapping::BarycentricMapperMeshTopology< In, Out >::init(), invnorm(), norm(), sofa::defaulttype::RigidCoord< 2, real >::norm(), sofa::defaulttype::RigidCoord< 3, real >::norm(), sofa::gpu::cuda::CudaDistanceGrid::quickeval(), sofa::component::collision::DistanceGrid::quickeval(), sofa::gpu::cuda::CudaDistanceGrid::quickeval2(), sofa::component::collision::DistanceGrid::quickeval2(), sofa::component::forcefield::TriangularTensorMassForceField< DataTypes >::TriangularTMTriangleCreationFunction(), sofa::component::forcefield::TriangularTensorMassForceField< DataTypes >::TriangularTMTriangleDestructionFunction(), sofa::component::collision::FFDDistanceGridCollisionModel::updateGrid(), and sofa::component::forcefield::SphereForceField< DataTypes >::updateStiffness().

template<class real >
__device__ CudaVec3<real> operator* ( real  a,
CudaVec3< real >  b 
) [inline]

Definition at line 176 of file CudaMath.h.

template<class real >
__device__ CudaVec3<real> operator* ( CudaVec3< real >  a,
real  b 
) [inline]

Definition at line 156 of file CudaMath.h.

template<class real >
__device__ void operator*= ( CudaVec3< real > &  a,
real  b 
) [inline]

Definition at line 168 of file CudaMath.h.

template<class real >
__device__ CudaVec3<real> operator+ ( CudaVec3< real >  a,
CudaVec3< real >  b 
) [inline]

Definition at line 106 of file CudaMath.h.

template<class real >
__device__ void operator+= ( CudaVec3< real > &  a,
real  b 
) [inline]

Definition at line 120 of file CudaMath.h.

template<class real >
__device__ void operator+= ( CudaVec3< real > &  a,
CudaVec3< real >  b 
) [inline]

Definition at line 112 of file CudaMath.h.

template<class real >
__device__ CudaVec3<real> operator- ( CudaVec3< real > &  a  )  [inline]

Definition at line 150 of file CudaMath.h.

template<class real >
__device__ CudaVec3<real> operator- ( CudaVec3< real >  a,
CudaVec3< real >  b 
) [inline]

Definition at line 128 of file CudaMath.h.

template<class real >
__device__ void operator-= ( CudaVec3< real > &  a,
real  b 
) [inline]

Definition at line 142 of file CudaMath.h.

template<class real >
__device__ void operator-= ( CudaVec3< real > &  a,
CudaVec3< real >  b 
) [inline]

Definition at line 134 of file CudaMath.h.

template<class real >
__device__ CudaVec3<real> operator/ ( CudaVec3< real >  a,
real  b 
) [inline]

Definition at line 162 of file CudaMath.h.


Generated on Sun Nov 23 04:11:47 2008 for Sofa by  doxygen 1.5.7.1