19 |
|
float dielc; |
20 |
|
} minim_values; |
21 |
|
|
22 |
– |
EXTERN int *skip; |
23 |
– |
|
24 |
– |
void image(double *, double *, double *, int mode); |
22 |
|
|
23 |
|
void ebufcharge() |
24 |
|
{ |
47 |
|
fprintf(pcmlogfile,"\nCharge-Charge Interactions\n"); |
48 |
|
fprintf(pcmlogfile," At1 At2 q1 q2 Rik Eqq\n"); |
49 |
|
} |
53 |
– |
for (i=1; i <= natom; i++) |
54 |
– |
skip[i] = 0; |
50 |
|
|
51 |
|
for (i=1; i < natom; i++) |
52 |
|
{ |
53 |
|
if (atom[i].charge != 0.0 ) |
54 |
|
{ |
60 |
– |
for (k=0; k < MAXIAT; k++) |
61 |
– |
{ |
62 |
– |
if (atom[i].iat[k] != 0 && atom[i].bo[k] != 9) |
63 |
– |
skip[atom[i].iat[k]] = i; |
64 |
– |
} |
65 |
– |
for(k=0; k < attached.n13[i]; k++) |
66 |
– |
skip[attached.i13[k][i]] = i; |
67 |
– |
for(k=0; k < attached.n14[i]; k++) |
68 |
– |
{ |
69 |
– |
temp = attached.i14[k][i]; |
70 |
– |
skip[attached.i14[k][i]] = -i; |
71 |
– |
} |
55 |
|
|
56 |
|
for(j=i+1; j <= natom; j++) |
57 |
|
{ |
58 |
|
if (atom[i].use || atom[j].use) |
59 |
|
{ |
60 |
< |
if ( skip[j] != i) |
60 |
> |
if ( skip[i][j] != i) |
61 |
|
{ |
62 |
|
if (atom[j].charge != 0.0) |
63 |
|
{ |
93 |
|
{ |
94 |
|
rik = sqrt( xr*xr + yr*yr + zr*zr); |
95 |
|
e = cc*atom[i].charge*atom[j].charge/(units.dielec*(rik+0.05)); |
96 |
< |
if (skip[j] == -i) |
96 |
> |
if (skip[i][j] == -i) |
97 |
|
e *= units.chgscale; |
98 |
|
energies.eu += e; |
99 |
|
atom[i].energy += e; |
138 |
|
deriv.deqq[i][2] = 0.0; |
139 |
|
} |
140 |
|
|
158 |
– |
for (i=1; i <= natom; i++) |
159 |
– |
skip[i] = 0; |
141 |
|
|
142 |
|
for (i=1; i < natom; i++) |
143 |
|
{ |
144 |
|
if (atom[i].charge != 0.0 ) |
145 |
|
{ |
165 |
– |
for (k=0; k < MAXIAT; k++) |
166 |
– |
{ |
167 |
– |
if (atom[i].iat[k] != 0 && atom[i].bo[k] != 9) |
168 |
– |
skip[atom[i].iat[k]] = i; |
169 |
– |
} |
170 |
– |
for(k=0; k < attached.n13[i]; k++) |
171 |
– |
skip[attached.i13[k][i]] = i; |
172 |
– |
for(k=0; k < attached.n14[i]; k++) |
173 |
– |
skip[attached.i14[k][i]] = -i; |
174 |
– |
|
146 |
|
for(j=i+1; j <= natom; j++) |
147 |
|
{ |
148 |
|
if (atom[i].use || atom[j].use) |
149 |
|
{ |
150 |
< |
if (atom[j].charge != 0.0 && skip[j] != i ) |
150 |
> |
if (atom[j].charge != 0.0 && skip[i][j] != i ) |
151 |
|
{ |
152 |
|
if (atom[i].type == 5 || atom[i].type == 36) |
153 |
|
{ |
181 |
|
{ |
182 |
|
rik = sqrt( rik2); |
183 |
|
st = -cc*rdielc*atom[i].charge*atom[j].charge/(rik*(rik+0.05)*(rik+0.05)); |
184 |
< |
if (skip[j] == -i) |
184 |
> |
if (skip[i][j] == -i) |
185 |
|
st *= units.chgscale; |
186 |
|
e = cc*rdielc*atom[i].charge*atom[j].charge/(rik+0.05); |
187 |
< |
if (skip[j] == -i) |
187 |
> |
if (skip[i][j] == -i) |
188 |
|
e *= units.chgscale; |
189 |
|
|
190 |
|
deriv.deqq[i][0] += st*xr; |
194 |
|
deriv.deqq[j][0] -= st*xr; |
195 |
|
deriv.deqq[j][1] -= st*yr; |
196 |
|
deriv.deqq[j][2] -= st*zr; |
197 |
< |
|
227 |
< |
virial.virx += xr*st*xr; |
228 |
< |
virial.viry += yr*st*yr; |
229 |
< |
virial.virz += zr*st*zr; |
230 |
< |
|
197 |
> |
|
198 |
|
energies.eu += e; |
199 |
|
} |
200 |
|
} |
227 |
|
else if (field.type == MM3) |
228 |
|
rdn = .923; |
229 |
|
|
263 |
– |
for (j=1; j <= natom; j++) |
264 |
– |
skip[j] = 0; |
265 |
– |
|
266 |
– |
skip[i] = i; |
267 |
– |
for (k=0; k < MAXIAT; k++) |
268 |
– |
{ |
269 |
– |
if (atom[i].iat[k] != 0 && atom[i].bo[k] != 9) |
270 |
– |
skip[atom[i].iat[k]] = i; |
271 |
– |
} |
272 |
– |
for(k=0; k < attached.n13[i]; k++) |
273 |
– |
skip[attached.i13[k][i]] = i; |
274 |
– |
for(k=0; k < attached.n14[i]; k++) |
275 |
– |
{ |
276 |
– |
temp = attached.i14[k][i]; |
277 |
– |
skip[attached.i14[k][i]] = -i; |
278 |
– |
} |
230 |
|
|
231 |
|
if (atom[i].type == 5 || atom[i].type == 36) |
232 |
|
{ |
243 |
|
|
244 |
|
for (k=1; k <= natom; k++) |
245 |
|
{ |
246 |
< |
if (atom[k].charge != 0.0 && (skip[k] != i) ) |
246 |
> |
if (atom[k].charge != 0.0 && (skip[i][k] != i) ) |
247 |
|
{ |
248 |
|
if (atom[j].type == 5 || atom[j].type == 36) |
249 |
|
{ |
265 |
|
{ |
266 |
|
r = sqrt(r2); |
267 |
|
fik = cc*rdielc*atom[i].charge*atom[k].charge; |
268 |
< |
if (skip[k] == -i) |
268 |
> |
if (skip[i][k] == -i) |
269 |
|
fik *= units.chgscale; |
270 |
|
de = -fik/((r+0.05)*(r+0.05)); |
271 |
|
d2e = -2.0*de/r; |