         time_elapsed_SU += stepSize_SU;
     }
 
-    // printf("compute contact force time: %.2f ms\n", computeForce_totalTime);
-    // printf("update friction data time: %.2f ms\n", updateFriction_totalTime);
-
     return time_elapsed_SU * TIME_SU2UU;  // return elapsed UU time
 }
 }  // namespace gpu

            gpuErrchk(cudaDeviceSynchronize());

            if (gran_params->use_mat_based == true) {
                // cudaEvent_t compForce_start, compForce_end;
                // float compForce_time;
                // cudaEventCreate(&compForce_start);
                // cudaEventCreate(&compForce_end);
                // cudaEventRecord(compForce_start, 0);

                computeSphereContactForces_matBased<<<nBlocks, CUDA_THREADS_PER_BLOCK>>>(
                    sphere_data, gran_params, BC_type_list.data(), BC_params_list_SU.data(),
                    (unsigned int)BC_params_list_SU.size(), nSpheres);

                // cudaEventRecord(compForce_end, 0);
                // cudaEventSynchronize(compForce_end);
                // cudaEventElapsedTime(&compForce_time, compForce_start, compForce_end);
                // computeForce_totalTime = computeForce_totalTime + compForce_time;

            } else {
                computeSphereContactForces<<<nBlocks, CUDA_THREADS_PER_BLOCK>>>(


            METRICS_PRINTF("Update Friction Data!\n");

            updateFrictionData<<<nBlocksFricHistoryPostProcess, nThreadsUpdateHist>>>(fricMapSize, sphere_data,
                                                                                      gran_params);

            gpuErrchk(cudaPeekAtLastError());
            gpuErrchk(cudaDeviceSynchronize());
