ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/freemol/branches/sync4pymol12/src/mengine/src/ebufchrg.c
(Generate patch)
# Line 19 | Line 19
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   {
# Line 50 | Line 47
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                 {
# Line 110 | Line 93
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;
# Line 155 | Line 138
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                  {
# Line 210 | Line 181
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;
# Line 223 | Line 194
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                 }
# Line 260 | Line 227
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      {
# Line 292 | Line 243
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                  {
# Line 314 | Line 265
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;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines