10#include "Topology/DiscreteElements.h" 
  344        const std::vector<float>& vec,
 
  345        const std::string& filename
 
  374        const std::string& filename
 
  379        const std::string& filename
 
This is an implementation of AdditiveCCD based on peridyno.
 
void JacobiIterationForSoft(DArray< float > lambda, DArray< Vec3f > impulse, DArray< Vec3f > J, DArray< Vec3f > B, DArray< float > eta, DArray< TConstraintPair< float > > constraints, DArray< int > nbq, DArray< float > K_1, DArray< Mat2f > K_2, DArray< Mat3f > K_3, DArray< float > mass, DArray< float > mu, float g, float dt, float zeta, float hertz)
 
void calculateKWithCFM(DArray< TConstraintPair< float > > constraints, DArray< Vec3f > J, DArray< Vec3f > B, DArray< Vec3f > pos, DArray< Mat3f > inertia, DArray< float > mass, DArray< float > K_1, DArray< Mat2f > K_2, DArray< Mat3f > K_3, DArray< float > CFM)
 
void JacobiIterationForCFM(DArray< float > lambda, DArray< Vec3f > impulse, DArray< Vec3f > J, DArray< Vec3f > B, DArray< float > eta, DArray< TConstraintPair< float > > constraints, DArray< int > nbq, DArray< float > K_1, DArray< Mat2f > K_2, DArray< Mat3f > K_3, DArray< float > mass, DArray< float > CFM, float mu, float g, float dt)
 
void calculateImpulseByLambda(DArray< float > lambda, DArray< TConstraintPair< float > > constraints, DArray< Vec3f > impulse, DArray< Vec3f > B)
 
Real checkOutError(DArray< Vec3f > J, DArray< Vec3f > mImpulse, DArray< TConstraintPair< float > > constraints, DArray< float > eta)
 
float vectorNorm(DArray< float > &a, DArray< float > &b)
 
void vectorSub(DArray< float > &ans, DArray< float > &subtranhend, DArray< float > &minuend, DArray< TConstraintPair< float > > &constraints)
 
double checkOutErrors(DArray< float > errors)
 
Array< T, DeviceType::GPU > DArray
 
void calculateEtaVectorForNJS(DArray< float > eta, DArray< Vec3f > J, DArray< Vec3f > pos, DArray< Quat1f > rotation_q, DArray< TConstraintPair< float > > constraints, float slop, float beta)
 
void vectorMultiplyVector(DArray< float > &v1, DArray< float > &v2, DArray< float > &ans, DArray< TConstraintPair< float > > &constraints)
 
void setUpContactsInLocalFrame(DArray< TContactPair< float > > contactsInLocalFrame, DArray< TContactPair< float > > contactsInGlobalFrame, DArray< Vec3f > pos, DArray< Mat3f > rotMat)
 
void calculateEtaVectorForPJSoft(DArray< float > eta, DArray< Vec3f > J, DArray< Vec3f > velocity, DArray< Vec3f > angular_velocity, DArray< Vec3f > pos, DArray< Quat1f > rotation_q, DArray< TConstraintPair< float > > constraints, float slop, float zeta, float hertz, float substepping, float dt)
 
void setUpContactConstraints(DArray< TConstraintPair< float > > constraints, DArray< TContactPair< float > > contactsInLocalFrame, DArray< Vec3f > pos, DArray< Mat3f > rotMat)
 
void vectorClampFriction(DArray< float > v, DArray< TConstraintPair< float > > constraints, int contact_size, float mu)
 
void updateVelocity(DArray< Attribute > attribute, DArray< Vec3f > velocity, DArray< Vec3f > angular_velocity, DArray< Vec3f > impulse, float linearDamping, float angularDamping, float dt)
 
void vectorMultiplyScale(DArray< float > &ans, DArray< float > &initialVec, float scale, DArray< TConstraintPair< float > > &constraints)
 
void setUpPointJointConstraints(DArray< TConstraintPair< float > > constraints, DArray< PointJoint< float > > joints, DArray< Vec3f > pos, int begin_index)
 
void setUpFixedJointConstraints(DArray< TConstraintPair< float > > &constraints, DArray< FixedJoint< float > > &joints, DArray< Mat3f > &rotMat, DArray< Quat1f > &rotQuat, int begin_index)
 
void calculateDiagnals(DArray< float > d, DArray< Vec3f > J, DArray< Vec3f > B)
 
void calculateEtaVectorForRelaxation(DArray< float > eta, DArray< Vec3f > J, DArray< Vec3f > velocity, DArray< Vec3f > angular_velocity, DArray< TConstraintPair< float > > constraints)
 
bool saveMatrixToFile(DArray< float > &Matrix, int n, const std::string &filename)
 
void JacobiIterationStrict(DArray< float > lambda, DArray< Vec3f > impulse, DArray< Vec3f > J, DArray< Vec3f > B, DArray< float > eta, DArray< TConstraintPair< float > > constraints, DArray< int > nbq, DArray< float > d, DArray< float > mass, float mu, float g, float dt)
 
void vectorAdd(DArray< float > &ans, DArray< float > &v1, DArray< float > &v2, DArray< TConstraintPair< float > > &constraints)
 
void calculateK(DArray< TConstraintPair< float > > constraints, DArray< Vec3f > J, DArray< Vec3f > B, DArray< Vec3f > pos, DArray< Mat3f > inertia, DArray< float > mass, DArray< float > K_1, DArray< Mat2f > K_2, DArray< Mat3f > K_3)
 
void calculateJacobianMatrixForNJS(DArray< Vec3f > J, DArray< Vec3f > B, DArray< Vec3f > pos, DArray< Mat3f > inertia, DArray< float > mass, DArray< Mat3f > rotMat, DArray< TConstraintPair< float > > constraints)
 
void calculateMatrixA(DArray< Vec3f > &J, DArray< Vec3f > &B, DArray< float > &A, DArray< TConstraintPair< float > > &constraints, float k)
 
void calculateJacobianMatrix(DArray< Vec3f > J, DArray< Vec3f > B, DArray< Vec3f > pos, DArray< Mat3f > inertia, DArray< float > mass, DArray< Mat3f > rotMat, DArray< TConstraintPair< float > > constraints)
 
void setUpContactAndFrictionConstraints(DArray< TConstraintPair< float > > constraints, DArray< TContactPair< float > > contactsInLocalFrame, DArray< Vec3f > pos, DArray< Mat3f > rotMat, bool hasFriction)
 
void updatePositionAndRotation(DArray< Vec3f > pos, DArray< Quat1f > rotQuat, DArray< Mat3f > rotMat, DArray< Mat3f > inertia, DArray< Mat3f > inertia_init, DArray< Vec3f > impulse_constrain)
 
void calculateLinearSystemLHS(DArray< Vec3f > &J, DArray< Vec3f > &B, DArray< Vec3f > &impulse, DArray< float > &lambda, DArray< float > &ans, DArray< float > &CFM, DArray< TConstraintPair< float > > &constraints)
 
void preconditionedResidual(DArray< float > &residual, DArray< float > &ans, DArray< float > &k_1, DArray< Mat2f > &k_2, DArray< Mat3f > &k_3, DArray< TConstraintPair< float > > &constraints)
 
void vectorClampSupport(DArray< float > v, DArray< TConstraintPair< float > > constraints)
 
void calculateEtaVectorForPJSBaumgarte(DArray< float > eta, DArray< Vec3f > J, DArray< Vec3f > velocity, DArray< Vec3f > angular_velocity, DArray< Vec3f > pos, DArray< Quat1f > rotation_q, DArray< TConstraintPair< float > > constraints, DArray< float > errors, float slop, float beta, uint substepping, float dt)
 
void JacobiIteration(DArray< float > lambda, DArray< Vec3f > impulse, DArray< Vec3f > J, DArray< Vec3f > B, DArray< float > eta, DArray< TConstraintPair< float > > constraints, DArray< int > nbq, DArray< float > K_1, DArray< Mat2f > K_2, DArray< Mat3f > K_3, DArray< float > mass, DArray< float > fricCoeffs, float mu, float g, float dt)
 
void ApplyTransform(DArrayList< Transform3f > &instanceTransform, const DArray< Vec3f > &translate, const DArray< Mat3f > &rotation, const DArray< Pair< uint, uint > > &binding, const DArray< int > &bindingtag)
 
ArrayList< ElementType, DeviceType::GPU > DArrayList
 
void matrixMultiplyVec(DArray< Vec3f > &J, DArray< Vec3f > &B, DArray< float > &lambda, DArray< float > &ans, DArray< TConstraintPair< float > > &constraints, int bodyNum)
 
void setUpSliderJointConstraints(DArray< TConstraintPair< float > > constraints, DArray< SliderJoint< float > > joints, DArray< Vec3f > pos, DArray< Mat3f > rotMat, DArray< Quat1f > rotQuat, int begin_index)
 
void preConditionJ(DArray< Vec3f > J, DArray< float > d, DArray< float > eta)
 
void setUpBallAndSocketJointConstraints(DArray< TConstraintPair< float > > constraints, DArray< BallAndSocketJoint< float > > joints, DArray< Vec3f > pos, DArray< Mat3f > rotMat, int begin_index)
 
void JacobiIterationForNJS(DArray< float > lambda, DArray< Vec3f > impulse, DArray< Vec3f > J, DArray< Vec3f > B, DArray< float > eta, DArray< TConstraintPair< float > > constraints, DArray< int > nbq, DArray< float > K_1, DArray< Mat2f > K_2, DArray< Mat3f > K_3)
 
void calculateEtaVectorWithERP(DArray< float > eta, DArray< Vec3f > J, DArray< Vec3f > velocity, DArray< Vec3f > angular_velocity, DArray< Vec3f > pos, DArray< Quat1f > rotation_q, DArray< TConstraintPair< float > > constraints, DArray< float > ERP, float slop, float dt)
 
void updateGesture(DArray< Attribute > attribute, DArray< Vec3f > pos, DArray< Quat1f > rotQuat, DArray< Mat3f > rotMat, DArray< Mat3f > inertia, DArray< Vec3f > velocity, DArray< Vec3f > angular_velocity, DArray< Mat3f > inertia_init, float dt)
 
void calculateEtaVectorForPJS(DArray< float > eta, DArray< Vec3f > J, DArray< Vec3f > velocity, DArray< Vec3f > angular_velocity, DArray< TConstraintPair< float > > constraints)
 
bool saveVectorToFile(const std::vector< float > &vec, const std::string &filename)
 
void setUpHingeJointConstraints(DArray< TConstraintPair< float > > constraints, DArray< HingeJoint< float > > joints, DArray< Vec3f > pos, DArray< Mat3f > rotMat, DArray< Quat1f > rotation_q, int begin_index)
 
void setUpGravity(DArray< Vec3f > impulse_ext, float g, float dt)
 
void calculateContactPoints(DArray< TContactPair< float > > contacts, DArray< int > contactCnt)
 
void buildCFMAndERP(DArray< Vec3f > J, DArray< Vec3f > B, DArray< TConstraintPair< float > > constraints, DArray< float > CFM, DArray< float > ERP, float hertz, float zeta, float dt)