+ int m;
+
+ /* Copy the single atom coordinate */
+ for (m = 0; m < DIM; m++)
+ {
+ com[m] = x[pgrp->ind_loc[0]][m];
+ }
+ /* Set all mass factors to 1 to get the correct COM */
+ wmass = 1;
+ wwmass = 1;
+ }
+
+ if (pgrp->weight_loc == NULL)
+ {
+ wwmass = wmass;
+ }
+
+ /* Copy local sums to a buffer for global summing */
+ copy_dvec(com, pull->dbuf[g*3]);
+ copy_dvec(comp, pull->dbuf[g*3+1]);
+ pull->dbuf[g*3+2][0] = wmass;
+ pull->dbuf[g*3+2][1] = wwmass;
+ pull->dbuf[g*3+2][2] = 0;
+ }
+ else
+ {
+ /* Cosine weighting geometry */
+ double cm, sm, cmp, smp, ccm, csm, ssm, csw, snw;
+ int i;
+
+ cm = 0;
+ sm = 0;
+ cmp = 0;
+ smp = 0;
+ ccm = 0;
+ csm = 0;
+ ssm = 0;
+
+ for (i = 0; i < pgrp->nat_loc; i++)
+ {
+ int ii;
+ real mass;
+
+ ii = pgrp->ind_loc[i];
+ mass = md->massT[ii];