25 {
26 double dr[
NDIM+1], invWid[
NDIM+1], shift[
NDIM+1], f, fcVal, rr, ri, r, uVal;
27 int c, I, J, m1, m1X, m1Y, m2, m2X, m2Y, n, offset;
28 int iofX[] = {0, 0, 1, 1, 0, -1, -1, -1, 0, 1},
29 iofY[] = {0, 0, 0, 1 ,1, 1, 0, -1, -1, -1};
30
33
36
37 for(n = 1 ; n <=
nAtom ; n ++){
41 }
42
43 for(n = 1 ; n <=
nAtom ; n ++){
46 }
47
52
54 double vr[
NDIM+1], fd, fdVal, rrinv;
55 rrinv = 0.0;
56 fd = 0.0;
57 fdVal = 0.0;
58
61
62 for(m1Y = start ; m1Y <= end ; m1Y ++){
63 for(m1X = 1 ; m1X <=
cells[1] ; m1X ++){
65 for(offset = 1 ; offset <= 9 ; offset ++){
66 m2X = m1X + iofX[offset]; shift[1] = 0.;
68 m2X = 1; shift[1] =
region[1];
69 }else if(m2X == 0){
71 }
72 m2Y = m1Y + iofY[offset]; shift[2] = 0.;
74 m2Y = 1; shift[2] =
region[2];
75 }else if(m2Y == 0){
77 }
80 while(I > 0){
82 while(J > 0){
84 dr[1] =
rx[I] -
rx[J] - shift[1];
85 dr[2] =
ry[I] -
ry[J] - shift[2];
86 rr =
Sqr(dr[1]) +
Sqr(dr[2]);
90 r = sqrt(rr);
91 ri = 1.0/r;
92 rrinv = 1.0/rr;
93 vr[1] =
vx[I] -
vx[J];
94 vr[2] =
vy[I] -
vy[J];
98 fdVal = -
gamman * (vr[1]*dr[1] + vr[2]*dr[2]) * rrinv;
99
100 f = fcVal * dr[1];
101 fd = fdVal * dr[1];
104
105 f = fcVal * dr[2];
106 fd = fdVal * dr[2];
109
111 virSum += 0.5 * fcVal * rr;
112 rfAtom += 0.5 * dr[1] * fcVal * dr[2];
113 }
115 dr[1] =
rx[I] -
rx[J] - shift[1];
116 dr[2] =
ry[I] -
ry[J] - shift[2];
117 rr =
Sqr(dr[1]) +
Sqr(dr[2]);
121 r = sqrt(rr);
122 ri = 1.0/r;
123 rrinv = 1.0/r;
124 vr[1] =
vx[I] -
vx[J];
125 vr[2] =
vy[I] -
vy[J];
129 fdVal = -
gamman * (vr[1]*dr[1] + vr[2]*dr[2]) * rrinv;
130
131 f = fcVal * dr[1];
132 fd = fdVal * dr[1];
135
136 f = fcVal * dr[2];
137 fd = fdVal * dr[2];
140
142 virSum += 0.5 * fcVal * rr;
143 rfAtom += 0.5 * dr[1] * fcVal * dr[2];
144 }
145 }
147 }
149 }
150 }
151 }
152 }
153}