CudaPlaneForceField.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef SOFA_GPU_CUDA_CUDAPLANEFORCEFIELD_H
00026 #define SOFA_GPU_CUDA_CUDAPLANEFORCEFIELD_H
00027
00028 #include "CudaTypes.h"
00029 #include <sofa/component/forcefield/PlaneForceField.h>
00030
00031 namespace sofa
00032 {
00033
00034 namespace gpu
00035 {
00036
00037 namespace cuda
00038 {
00039
00040 template<class real>
00041 struct GPUPlane
00042 {
00043 defaulttype::Vec<3,real> normal;
00044 real d;
00045 real stiffness;
00046 real damping;
00047 };
00048
00049 }
00050
00051 }
00052
00053 namespace component
00054 {
00055
00056 namespace forcefield
00057 {
00058
00059 template<class TCoord, class TDeriv, class TReal>
00060 class PlaneForceFieldInternalData< gpu::cuda::CudaVectorTypes<TCoord,TDeriv,TReal> >
00061 {
00062 public:
00063 typedef TReal Real;
00064 gpu::cuda::GPUPlane<Real> plane;
00065 gpu::cuda::CudaVector<Real> penetration;
00066 };
00067
00068 template <>
00069 void PlaneForceField<gpu::cuda::CudaVec3fTypes>::addForce (VecDeriv& f, const VecCoord& x, const VecDeriv& v);
00070
00071 template <>
00072 void PlaneForceField<gpu::cuda::CudaVec3fTypes>::addDForce (VecDeriv& df, const VecDeriv& dx, double kFactor, double bFactor);
00073
00074 template <>
00075 void PlaneForceField<gpu::cuda::CudaVec3f1Types>::addForce (VecDeriv& f, const VecCoord& x, const VecDeriv& v);
00076
00077 template <>
00078 void PlaneForceField<gpu::cuda::CudaVec3f1Types>::addDForce (VecDeriv& df, const VecDeriv& dx, double kFactor, double bFactor);
00079
00080
00081 }
00082
00083 }
00084
00085 }
00086
00087 #endif