ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/freemol/trunk/src/mengine/src/ksolv.c
(Generate patch)
# Line 17 | Line 17
17  
18  
19   int find_bond(int,int);
20 < void born(int natom,int *mmx_type,int **skip, double *x,double *y,double *z);
20 > void born(int natom,int **skip, double *x,double *y,double *z);
21   void ksolv(void);
22   void message_alert(char *, char *);
23  
# Line 47 | Line 47
47              solvent.asolv[i] = 0.0054;
48              solvent.shct[i] = 0.0;
49              if (atom.atomnum[i] == 1) solvent.shct[i] = 0.85;
50            if (atom.mmx_type[i] == 20) solvent.shct[i] = 0.85;
50              if (atom.atomnum[i] == 6) solvent.shct[i] = 0.72;
51              if (atom.atomnum[i] == 7) solvent.shct[i] = 0.79;
52              if (atom.atomnum[i] == 8) solvent.shct[i] = 0.85;
# Line 72 | Line 71
71              solvent.rsolv[i] = 1.25;
72              if (atom.atomnum[atom.iat[i][0]] == 7) solvent.rsolv[i] = 1.15;
73              if (atom.atomnum[atom.iat[i][0]] == 8) solvent.rsolv[i] = 1.05;
75        } else if (atom.mmx_type[i] == 20)
76        {
77            solvent.rsolv[i] = 0.8;
74          } else if (atom.atomnum[i] == 3)
75          {
76              solvent.rsolv[i] = 1.432;
# Line 175 | Line 171
171      {
172          for (i=1; i <= natom; i++)
173          {
178            if (atom.mmx_type[i] != 20)
179            {
174                 solvent.vsolv[i] = (4.0*PI/3.0)*solvent.rsolv[i]*solvent.rsolv[i]*solvent.rsolv[i];
175                 ri = solvent.rsolv[i];
176                 ri2 = ri*ri;
177                 for (j=0; j < MAXIAT; j++)
178                 {
179 <                  if (atom.iat[i][j] != 0 && atom.bo[i][j] != 9 && atom.mmx_type[atom.iat[i][j]] != 20)
179 >                  if (atom.iat[i][j] != 0 && atom.bo[i][j] != 9)
180                    {
181                      k = find_bond(i,atom.iat[i][j]);
182                      rk = solvent.rsolv[atom.iat[i][j]];
# Line 193 | Line 187
187                      solvent.vsolv[i] -= term;
188                    }
189                 }
190 <            }
190 >
191          }
192  
193   // 1,2 and 1,3 polarization
194          cc = 4.80298*4.80298*14.39418;
195  
196          for (i=1; i <= natom; i++)
197 <        {
198 <            if (atom.mmx_type[i] != 20)
205 <                 solvent.gpol[i] = -0.5*cc/(solvent.rsolv[i]+solvent.doffset+solvent.p1);
206 <        }
197 >           solvent.gpol[i] = -0.5*cc/(solvent.rsolv[i]+solvent.doffset+solvent.p1);
198 >        
199          
200         for (i=0; i < bonds_ff.nbnd; i++)
201         {
202            it = bonds_ff.i12[i][0];
203            kt = bonds_ff.i12[i][1];
204 <          if (atom.mmx_type[it] != 20 && atom.mmx_type[kt] != 20)
205 <          {
206 <             r = bonds_ff.bl[i];
207 <             r4 = r*r*r*r;
208 <             solvent.gpol[it] += solvent.p2*solvent.vsolv[kt]/r4;
217 <             solvent.gpol[kt] += solvent.p2*solvent.vsolv[it]/r4;
218 <          }
204 >          r = bonds_ff.bl[i];
205 >          r4 = r*r*r*r;
206 >          solvent.gpol[it] += solvent.p2*solvent.vsolv[kt]/r4;
207 >          solvent.gpol[kt] += solvent.p2*solvent.vsolv[it]/r4;
208 >  
209         }
210  
211         for (i=0; i < angles.nang; i++)
# Line 223 | Line 213
213             ia = angles.i13[i][0];
214             ib = angles.i13[i][1];
215             ic = angles.i13[i][2];
226           if (atom.mmx_type[ia] != 20 && atom.mmx_type[ib] != 20 && atom.mmx_type[ic] != 20)
227           {
216               factor = 1.0;
217               for (j=0; j < MAXIAT; j++)
218               {
# Line 256 | Line 244
244               r4 = r2*r2;
245               solvent.gpol[ia] += factor*solvent.p3*solvent.vsolv[ic]/r4;
246               solvent.gpol[ic] += factor*solvent.p3*solvent.vsolv[ia]/r4;
247 <           }
247 >          
248         }
249      }
250   }
251   /* =================================================== */
252 < void born(int natom,int *mmx_type,int **skip, double *x,double *y,double *z)
252 > void born(int natom,int **skip, double *x,double *y,double *z)
253   {
254      int i,k;
255      double cc;
# Line 281 | Line 269
269          pip5 = PI*solvent.p5;
270          for (i=1; i <= natom; i++)
271          {
284            if (mmx_type[i] != 20)
285            {
272                 xi = x[i];
273                 yi = y[i];
274                 zi = z[i];
# Line 290 | Line 276
276                 skip[i][i] = i;
277                 for (k = 1; k <= natom; k++)
278                 {
279 <                  if (skip[i][k] != i && mmx_type[k] != 20)
279 >                  if (skip[i][k] != i)
280                    {
281                      xr = x[k] - xi;
282                      yr = y[k] - yi;
# Line 312 | Line 298
298                    }
299                 }
300                 solvent.rborn[i] = -0.5*cc/gpi;
301 <            }
301 >            
302          }
303      }else if (solvent.type == HCT)
304      {
305          for (i=1; i <= natom; i++)
306          {
321            if (mmx_type[i] != 20)
322            {
307                 xi = x[i];
308                 yi = y[i];
309                 zi = z[i];
# Line 327 | Line 311
311                 sum = 1.0/ri;
312                 for (k=1; k <= natom; k++)
313                 {
314 <                   if (i != k && mmx_type[k] != 20)
314 >                   if (i != k)
315                     {
316                        xr = x[k] - xi;
317                        yr = y[k] - yi;
# Line 351 | Line 335
335                 }
336                 theta = 1.0/sum;
337                 solvent.rborn[i] = MaxFun(ri,theta);
338 <            }
338 >
339          }
340      }
341   }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines