--- forces-edip.1.c	Wed Apr 17 21:49:57 2002
+++ forces-edip.1.1.c	Fri Apr 19 10:46:49 2002
@@ -3,7 +3,7 @@
    forces-edip.c
    -------------
 
-   Version 1.0c
+   Version 1.1c
 
    Force and Energy Calculation with the  
    Environment-Dependent Interatomic Potential 
@@ -22,6 +22,8 @@
    E-mail:
    bazant@math.mit.edu
 
+   optimized by Xianglong Yuan, yuanx@mit.edu, April 2002
+
 
    COPYRIGHT NOTICE
    ---------------- 
@@ -252,7 +254,7 @@
   double dV3rij,dV3rijx,dV3rijy,dV3rijz;
   double dV3rik,dV3rikx,dV3riky,dV3rikz;
   double dV3l,dV3ljx,dV3ljy,dV3ljz,dV3lkx,dV3lky,dV3lkz;
-  double dV2dZ,dxdZ,dV3dZ;
+  double dV2dZ,dxdZ,dV3dZ,dVdZ_sum;
   double dEdrl,dEdrlx,dEdrly,dEdrlz;
   double bmc,cmbinv;
   double fjx,fjy,fjz,fkx,fky,fkz;
@@ -278,7 +280,6 @@
     
   typedef struct{
     double df;           /* derivative of neighbor function f'(r) */
-    double sum;		 /* array to accumulate coordination force prefactors */
     double dx,dy,dz;     /* unit separation vector */
     double r;		 /* bond length (only needed for virial) */
   } storez;
@@ -416,9 +417,9 @@
 
     if(measure) coord_total += Z;
 
-    /* ZERO ACCUMULATION ARRAY FOR ENVIRONMENT FORCES */
+    /* ZERO ACCUMULATION VARIABLE FOR ENVIRONMENT FORCES */
 
-    for(nl=0; nl<nz; nl++) sz[nl].sum=0.0;
+    dVdZ_sum = 0.0;
 
     /* ENVIRONMENT-DEPENDENCE OF PAIR INTERACTION */
 
@@ -463,10 +464,10 @@
       if(measure) virial -= s2[nj].r * (dV2ijx*s2[nj].dx 
 	+ dV2ijy*s2[nj].dy + dV2ijz*s2[nj].dz);
 
-      /*--- LEVEL 3: LOOP FOR PAIR COORDINATION FORCES ---*/
+      /* accumulation of pair coordination forces */
 
       dV2dZ = - dp * s2[nj].t0;
-      for(nl=0; nl<nz; nl++) sz[nl].sum += dV2dZ;
+      dVdZ_sum += dV2dZ;
 
     }
 #endif
@@ -587,9 +588,9 @@
 	dxdZ = dwinv*(lcos + tau) + winv*dtau;
 	dV3dZ = temp1*dHdx*dxdZ;
 
-	/*--- LEVEL 4: LOOP FOR THREE-BODY COORDINATION FORCES ---*/
+	/* accumulation of 3-body coordination forces */
 
-        for(nl=0; nl<nz; nl++) sz[nl].sum += dV3dZ; 
+        dVdZ_sum += dV3dZ;
 #endif
       }
     }
@@ -599,7 +600,7 @@
 
     for(nl=0; nl<nz; nl++) {
 
-        dEdrl = sz[nl].sum * sz[nl].df;
+        dEdrl = dVdZ_sum * sz[nl].df;
         dEdrlx = dEdrl * sz[nl].dx;
         dEdrly = dEdrl * sz[nl].dy;
         dEdrlz = dEdrl * sz[nl].dz;
