/* Subtract the slab center from xj */
rvec_sub(xj, xcn, tmpvec2); /* tmpvec2 = xj - xcn */
+
+ /* In rare cases, when an atom position coincides with a slab center
+ * (tmpvec2 == 0) we cannot compute the vector product for sjn.
+ * However, since the atom is located directly on the pivot, this
+ * slab's contribution to the force on that atom will be zero
+ * anyway. Therefore, we directly move on to the next slab. */
+ if ( 0 == norm(tmpvec2) )
+ {
+ continue;
+ }
/* Calculate sjn */
cprod(rotg->vec, tmpvec2, tmpvec); /* tmpvec = v x (xj - xcn) */
/* Subtract the slab center from xj */
rvec_sub(xj, xcn, xj_xcn); /* xj_xcn = xj - xcn */
+ /* In rare cases, when an atom position coincides with a slab center
+ * (xj_xcn == 0) we cannot compute the vector product for qjn.
+ * However, since the atom is located directly on the pivot, this
+ * slab's contribution to the force on that atom will be zero
+ * anyway. Therefore, we directly move on to the next slab. */
+ if ( 0 == norm(xj_xcn) )
+ {
+ continue;
+ }
+
/* Calculate qjn */
cprod(rotg->vec, tmpvec2, tmpvec); /* tmpvec= v x Omega.(yj0-ycn) */