         atomicAdd(&(df[t.ic].x), -dfc.x);
         atomicAdd(&(df[t.ic].y), -dfc.y);
         atomicAdd(&(df[t.ic].z), -dfc.z);
+#endif
 }
 
 //////////////////////

                + ts.frame_y * (ti.bx * dstress.y);                      // ( 0,  bx,   0) * dstress
        Deriv dfa = -dfb-dfc;

//        df[t.ia] -= dfa;
//        df[t.ib] -= dfb;
//        df[t.ic] -= dfc;
        atomicAdd(&(df[t.ia].x), -dfa.x);
        atomicAdd(&(df[t.ia].y), -dfa.y);
        atomicAdd(&(df[t.ia].z), -dfa.z);

                + frame_y * (ti.bx * stress.y);                     // ( 0,  bx,   0) * stress
        CudaVec3<float> fa = -fb-fc;

#if defined(__CUDA_ARCH__) &&  __CUDA_ARCH__ < 110
        f[t.ia] += fa;
        f[t.ib] += fb;
        f[t.ic] += fc;
#else
        atomicAdd(&(f[t.ia].x), fa.x);
        atomicAdd(&(f[t.ia].y), fa.y);
        atomicAdd(&(f[t.ia].z), fa.z);
