From 312b9d2f226748ddf2f1f11e24a24c5e2ba1a6e8 Mon Sep 17 00:00:00 2001
From: Chris Maffeo <cmaffeo2@illinois.edu>
Date: Fri, 22 Feb 2019 18:36:26 -0600
Subject: [PATCH] Clearing forces on GPU, fixing bug in previous commit

---
 src/RigidBodyController.cu | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/RigidBodyController.cu b/src/RigidBodyController.cu
index 274c15a..1a4b2ae 100644
--- a/src/RigidBodyController.cu
+++ b/src/RigidBodyController.cu
@@ -322,7 +322,6 @@ void RigidBodyController::updateForces(Vector3* pos_d, Vector3* force_d, int s)
 		/* 	gpuErrchk(cudaStreamSynchronize( s ));  */
 		/* } */
 		gpuErrchk(cudaDeviceSynchronize());
-
 		for (int i=0; i < forcePairs.size(); i++)
 			if (forcePairs[i].isOverlapping())
 				forcePairs[i].processGPUForces();
@@ -584,6 +583,10 @@ void RigidBodyForcePair::processGPUForces() {
 		Vector3 o2 = getOrigin2(i);
 		tmpT = tmpT - (rb1->getPosition() - o2).cross( tmpF ); 
 
+		// clear forces on GPU
+		gpuErrchk(cudaMemset((void*)(forces_d[i]),0,nb*sizeof(Vector3)));
+		gpuErrchk(cudaMemset((void*)(torques_d[i]),0,nb*sizeof(Vector3)));
+
 		// sum forces and torques
 		f = f + tmpF;
 		t = t + tmpT;
-- 
GitLab