/*
- *
+ *
* This source code is part of
- *
+ *
* G R O M A C S
- *
+ *
* GROningen MAchine for Chemical Simulations
- *
+ *
* VERSION 3.2.0
* Written by David van der Spoel, Erik Lindahl, Berk Hess, and others.
* Copyright (c) 1991-2000, University of Groningen, The Netherlands.
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
- *
+ *
* If you want to redistribute modifications, please consider that
* scientific software is very special. Version control is crucial -
* bugs must be traceable. We will be happy to consider code for
* inclusion in the official distribution, but derived work must not
* be called official GROMACS. Details are found in the README & COPYING
* files - if they are missing, get the official version at www.gromacs.org.
- *
+ *
* To help us fund GROMACS development, we humbly ask that you cite
* the papers on the package - you can find them in the top README file.
- *
+ *
* For more info, check our website at http://www.gromacs.org
- *
+ *
* And Hey:
* GROningen Mixture of Alchemy and Childrens' Stories
*/
#include "nrnb.h"
#include "partdec.h"
-void move_rvecs(const t_commrec *cr,gmx_bool bForward,gmx_bool bSum,
- int left,int right,rvec vecs[],rvec buf[],
- int shift,t_nrnb *nrnb)
+void move_rvecs(const t_commrec *cr, gmx_bool bForward, gmx_bool bSum,
+ int left, int right, rvec vecs[], rvec buf[],
+ int shift, t_nrnb *nrnb)
{
- int i,j,j0=137,j1=391;
- int cur,nsum;
+ int i, j, j0 = 137, j1 = 391;
+ int cur, nsum;
int *index;
#define next ((cur + 1) % cr->nnodes)
#define prev ((cur - 1 + cr->nnodes) % cr->nnodes)
-
-#define HOMENRI(ind,i) ((ind)[(i)+1] - (ind)[(i)])
-
+
+#define HOMENRI(ind, i) ((ind)[(i)+1] - (ind)[(i)])
+
index = pd_index(cr);
-
+
if (bSum)
+ {
cur = (cr->nodeid + pd_shift(cr)) % cr->nnodes;
+ }
else
+ {
cur = cr->nodeid;
-
- nsum=0;
- for(i=0; (i<shift); i++) {
- if (bSum) {
- if (bForward) {
+ }
+
+ nsum = 0;
+ for (i = 0; (i < shift); i++)
+ {
+ if (bSum)
+ {
+ if (bForward)
+ {
j0 = index[prev];
j1 = index[prev+1];
}
- else {
+ else
+ {
j0 = index[next];
j1 = index[next+1];
}
- for(j=j0; (j<j1); j++) {
+ for (j = j0; (j < j1); j++)
+ {
clear_rvec(buf[j]);
}
}
/* Forward pulse around the ring, to increasing NODE number */
- if (bForward) {
+ if (bForward)
+ {
if (bSum)
+ {
gmx_tx_rx_real(cr,
- GMX_RIGHT,vecs[index[cur ]],HOMENRI(index,cur )*DIM,
- GMX_LEFT, buf [index[prev]],HOMENRI(index,prev)*DIM);
+ GMX_RIGHT, vecs[index[cur ]], HOMENRI(index, cur )*DIM,
+ GMX_LEFT, buf [index[prev]], HOMENRI(index, prev)*DIM);
+ }
else
+ {
gmx_tx_rx_real(cr,
- GMX_RIGHT,vecs[index[cur ]],HOMENRI(index,cur )*DIM,
- GMX_LEFT, vecs[index[prev]],HOMENRI(index,prev)*DIM);
+ GMX_RIGHT, vecs[index[cur ]], HOMENRI(index, cur )*DIM,
+ GMX_LEFT, vecs[index[prev]], HOMENRI(index, prev)*DIM);
+ }
/* Wait for communication to end */
- gmx_wait(cr, right,left);
+ gmx_wait(cr, right, left);
}
-
+
/* Backward pulse around the ring, to decreasing NODE number */
- else {
+ else
+ {
if (bSum)
+ {
gmx_tx_rx_real(cr,
- GMX_LEFT, vecs[index[cur ]],HOMENRI(index,cur )*DIM,
- GMX_RIGHT,buf [index[next]],HOMENRI(index,next)*DIM);
+ GMX_LEFT, vecs[index[cur ]], HOMENRI(index, cur )*DIM,
+ GMX_RIGHT, buf [index[next]], HOMENRI(index, next)*DIM);
+ }
else
+ {
gmx_tx_rx_real(cr,
- GMX_LEFT, vecs[index[cur ]],HOMENRI(index,cur )*DIM,
- GMX_RIGHT,vecs[index[next]],HOMENRI(index,next)*DIM);
+ GMX_LEFT, vecs[index[cur ]], HOMENRI(index, cur )*DIM,
+ GMX_RIGHT, vecs[index[next]], HOMENRI(index, next)*DIM);
+ }
/* Wait for communication to end */
- gmx_wait(cr, left,right);
+ gmx_wait(cr, left, right);
}
-
+
/* Actual summation */
- if (bSum) {
- for(j=j0; (j<j1); j++) {
- rvec_inc(vecs[j],buf[j]);
+ if (bSum)
+ {
+ for (j = j0; (j < j1); j++)
+ {
+ rvec_inc(vecs[j], buf[j]);
}
- nsum+=(j1-j0);
+ nsum += (j1-j0);
+ }
+ if (bForward)
+ {
+ cur = prev;
}
- if (bForward)
- cur=prev;
else
- cur=next;
- }
+ {
+ cur = next;
+ }
+ }
if (nsum > 0)
- inc_nrnb(nrnb,eNR_FSUM,nsum);
+ {
+ inc_nrnb(nrnb, eNR_FSUM, nsum);
+ }
#undef next
#undef prev
}
-void move_reals(const t_commrec *cr,gmx_bool bForward,gmx_bool bSum,
- int left,int right,real reals[],real buf[],
- int shift,t_nrnb *nrnb)
+void move_reals(const t_commrec *cr, gmx_bool bForward, gmx_bool bSum,
+ int left, int right, real reals[], real buf[],
+ int shift, t_nrnb *nrnb)
{
- int i,j,j0=137,j1=391;
- int cur,nsum;
+ int i, j, j0 = 137, j1 = 391;
+ int cur, nsum;
int *index;
#define next ((cur + 1) % cr->nnodes)
#define prev ((cur - 1 + cr->nnodes) % cr->nnodes)
-
-#define HOMENRI(ind,i) ((ind)[(i)+1] - (ind)[(i)])
-
+
+#define HOMENRI(ind, i) ((ind)[(i)+1] - (ind)[(i)])
+
index = pd_index(cr);
-
+
if (bSum)
{
cur = (cr->nodeid + pd_shift(cr)) % cr->nnodes;
{
cur = cr->nodeid;
}
-
- nsum=0;
- for(i=0; (i<shift); i++)
+
+ nsum = 0;
+ for (i = 0; (i < shift); i++)
{
- if (bSum)
+ if (bSum)
{
- if (bForward)
+ if (bForward)
{
j0 = index[prev];
j1 = index[prev+1];
}
- else
+ else
{
j0 = index[next];
j1 = index[next+1];
}
- for(j=j0; (j<j1); j++)
+ for (j = j0; (j < j1); j++)
{
buf[j] = 0.0;
}
}
/* Forward pulse around the ring, to increasing NODE number */
- if (bForward)
+ if (bForward)
{
if (bSum)
- { gmx_tx_rx_real(cr,
- GMX_RIGHT,reals+index[cur ],HOMENRI(index,cur ),
- GMX_LEFT, buf+index[prev],HOMENRI(index,prev));
+ {
+ gmx_tx_rx_real(cr,
+ GMX_RIGHT, reals+index[cur ], HOMENRI(index, cur ),
+ GMX_LEFT, buf+index[prev], HOMENRI(index, prev));
}
else
{
gmx_tx_rx_real(cr,
- GMX_RIGHT,reals+index[cur ],HOMENRI(index,cur ),
- GMX_LEFT, reals+index[prev],HOMENRI(index,prev));
+ GMX_RIGHT, reals+index[cur ], HOMENRI(index, cur ),
+ GMX_LEFT, reals+index[prev], HOMENRI(index, prev));
}
/* Wait for communication to end */
- gmx_wait(cr, right,left);
+ gmx_wait(cr, right, left);
}
else
{
- /* Backward pulse around the ring, to decreasing NODE number */
+ /* Backward pulse around the ring, to decreasing NODE number */
if (bSum)
- {
+ {
gmx_tx_rx_real(cr,
- GMX_LEFT, reals+index[cur ],HOMENRI(index,cur ),
- GMX_RIGHT,buf+index[next],HOMENRI(index,next));
+ GMX_LEFT, reals+index[cur ], HOMENRI(index, cur ),
+ GMX_RIGHT, buf+index[next], HOMENRI(index, next));
}
else
{
gmx_tx_rx_real(cr,
- GMX_LEFT, reals+index[cur ],HOMENRI(index,cur ),
- GMX_RIGHT,reals+index[next],HOMENRI(index,next));
+ GMX_LEFT, reals+index[cur ], HOMENRI(index, cur ),
+ GMX_RIGHT, reals+index[next], HOMENRI(index, next));
/* Wait for communication to end */
}
- gmx_wait(cr, left,right);
+ gmx_wait(cr, left, right);
}
/* Actual summation */
- if (bSum)
+ if (bSum)
{
- for(j=j0; (j<j1); j++)
+ for (j = j0; (j < j1); j++)
{
reals[j] += buf[j];
}
- nsum+=(j1-j0);
+ nsum += (j1-j0);
}
- if (bForward)
+ if (bForward)
{
- cur=prev;
+ cur = prev;
}
else
{
- cur=next;
+ cur = next;
}
- }
-
+ }
+
if (nsum > 0)
{
- inc_nrnb(nrnb,eNR_FSUM,nsum/3);
+ inc_nrnb(nrnb, eNR_FSUM, nsum/3);
}
#undef next
#undef prev
}
-void move_x(FILE *log,const t_commrec *cr,
- int left,int right,rvec x[],
- t_nrnb *nrnb)
+void move_x(FILE *log, const t_commrec *cr,
+ int left, int right, rvec x[],
+ t_nrnb *nrnb)
{
- move_rvecs(cr,FALSE,FALSE,left,right,x,NULL,pd_shift(cr),nrnb);
- move_rvecs(cr,TRUE, FALSE,left,right,x,NULL,pd_bshift(cr),nrnb);
+ move_rvecs(cr, FALSE, FALSE, left, right, x, NULL, pd_shift(cr), nrnb);
+ move_rvecs(cr, TRUE, FALSE, left, right, x, NULL, pd_bshift(cr), nrnb);
- where();
+ where();
}
-void move_rborn(FILE *log,const t_commrec *cr,
- int left,int right,real rborn[],
+void move_rborn(FILE *log, const t_commrec *cr,
+ int left, int right, real rborn[],
t_nrnb *nrnb)
{
- move_reals(cr,FALSE,FALSE,left,right,rborn,NULL,pd_shift(cr),nrnb);
- move_reals(cr,TRUE, FALSE,left,right,rborn,NULL,pd_bshift(cr),nrnb);
-
+ move_reals(cr, FALSE, FALSE, left, right, rborn, NULL, pd_shift(cr), nrnb);
+ move_reals(cr, TRUE, FALSE, left, right, rborn, NULL, pd_bshift(cr), nrnb);
+
where();
}
-void move_f(FILE *log,const t_commrec *cr,
- int left,int right,rvec f[],rvec fadd[],
- t_nrnb *nrnb)
+void move_f(FILE *log, const t_commrec *cr,
+ int left, int right, rvec f[], rvec fadd[],
+ t_nrnb *nrnb)
{
- move_rvecs(cr,TRUE, TRUE,left,right,f,fadd,pd_shift(cr),nrnb);
- move_rvecs(cr,FALSE,TRUE,left,right,f,fadd,pd_bshift(cr),nrnb);
+ move_rvecs(cr, TRUE, TRUE, left, right, f, fadd, pd_shift(cr), nrnb);
+ move_rvecs(cr, FALSE, TRUE, left, right, f, fadd, pd_bshift(cr), nrnb);
- where();
+ where();
}
-void move_gpol(FILE *log,const t_commrec *cr,
- int left,int right,real gpol[],real gpol_add[],
+void move_gpol(FILE *log, const t_commrec *cr,
+ int left, int right, real gpol[], real gpol_add[],
t_nrnb *nrnb)
{
- move_reals(cr,TRUE, TRUE,left,right,gpol,gpol_add,pd_shift(cr),nrnb);
- move_reals(cr,FALSE,TRUE,left,right,gpol,gpol_add,pd_bshift(cr),nrnb);
-
+ move_reals(cr, TRUE, TRUE, left, right, gpol, gpol_add, pd_shift(cr), nrnb);
+ move_reals(cr, FALSE, TRUE, left, right, gpol, gpol_add, pd_bshift(cr), nrnb);
+
where();
}
-void move_cgcm(FILE *log,const t_commrec *cr,rvec cg_cm[])
+void move_cgcm(FILE *log, const t_commrec *cr, rvec cg_cm[])
{
- int i,start,nr;
- int cur=cr->nodeid;
- int *cgindex;
+ int i, start, nr;
+ int cur = cr->nodeid;
+ int *cgindex;
#define next ((cur+1) % cr->nnodes)
-
- cgindex = pd_cgindex(cr);
- for(i=0; (i<cr->nnodes-1); i++) {
- start = cgindex[cur];
- nr = cgindex[cur+1] - start;
+ cgindex = pd_cgindex(cr);
+
+ for (i = 0; (i < cr->nnodes-1); i++)
+ {
+ start = cgindex[cur];
+ nr = cgindex[cur+1] - start;
- gmx_tx(cr,GMX_LEFT, cg_cm[start], nr*sizeof(cg_cm[0]));
+ gmx_tx(cr, GMX_LEFT, cg_cm[start], nr*sizeof(cg_cm[0]));
#ifdef DEBUG
- fprintf(log,"move_cgcm: TX start=%d, nr=%d\n",start,nr);
-#endif
- start = cgindex[next];
- nr = cgindex[next+1] - start;
+ fprintf(log, "move_cgcm: TX start=%d, nr=%d\n", start, nr);
+#endif
+ start = cgindex[next];
+ nr = cgindex[next+1] - start;
- gmx_rx(cr,GMX_RIGHT,cg_cm[start], nr*sizeof(cg_cm[0]));
+ gmx_rx(cr, GMX_RIGHT, cg_cm[start], nr*sizeof(cg_cm[0]));
#ifdef DEBUG
- fprintf(log,"move_cgcm: RX start=%d, nr=%d\n",start,nr);
-#endif
- gmx_tx_wait(cr,GMX_LEFT);
- gmx_rx_wait(cr,GMX_RIGHT);
+ fprintf(log, "move_cgcm: RX start=%d, nr=%d\n", start, nr);
+#endif
+ gmx_tx_wait(cr, GMX_LEFT);
+ gmx_rx_wait(cr, GMX_RIGHT);
- if (debug)
- fprintf(debug,"cgcm[0][XX] %f\n",cg_cm[0][XX]);
+ if (debug)
+ {
+ fprintf(debug, "cgcm[0][XX] %f\n", cg_cm[0][XX]);
+ }
- cur=next;
- }
+ cur = next;
+ }
#undef next
}
-
-