ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/freemol/branches/sync4pymol12/src/mengine/src/pcm7.c
(Generate patch)
# Line 3 | Line 3
3   #include "pcwin.h"
4   #include "pcmod.h"
5  
6 + #include "attached.h"
7   #include "energies.h"
8   #include "bonds_ff.h"
9   #include "derivs.h"
# Line 27 | Line 28
28      } solvent;
29  
30   int Missing_constants;
30 FILE *errfile;
31      
32 FILE * fopen_path ( char * , char * , char * ) ;
32   void message_alert(char *,char *);
33   void pcm7_min(void);
34   int isbond(int, int);
# Line 87 | Line 86
86   void hdel(int);
87   void set_atomtypes(int);
88   void type(void);
90 void generate_bonds(void);
89   void zero_data(void);
90   void xlogp(float *);
91  
92   // ==================================================================
93   int setup_calculation()
94   {
95 <    int nRet;
95 >  int i,j,nRet;
96      char string[30];
97      double etot;
98 <    if (minim_control.field == MM3)
101 <    {
102 <        // copy mm3 types into type file and retype
103 <        pot.use_hbond = FALSE;
104 <        hbondreset();
105 <        hdel(1);
106 <        strcpy(string,"mm3.prm");
107 <        zero_data();
108 <        read_datafiles(string);
109 <        set_field();
110 <        default_intype = MM3;
111 <        default_outtype = MM3;
112 <        set_atomtypes(MM3);
113 <        generate_bonds();
114 <        if (minim_control.added_const)
115 <           get_added_const();
116 <    } else if (minim_control.field == MMFF94)
98 >    if (minim_control.field == MMFF94)
99      {
100          // copy mm3 types into type file and retype
101          pot.use_hbond = FALSE;
102          pot.use_picalc = FALSE;
121        hbondreset();
122        pireset();
103          hdel(1);
104          set_field();
125        default_intype = MMFF94;
126        default_outtype = MMFF94;
105          set_atomtypes(MMFF94);
128        generate_bonds();
106          if (minim_control.added_const)
107             get_added_const();
108      } else
# Line 139 | Line 116
116          }
117          type();
118          set_field();
142        generate_bonds();
119      }
120  
121              
# Line 157 | Line 133
133  
134    // set active atoms
135    set_active();
136 <
136 >  // setup non_bonded list of atoms to skip
137 >  for (i=1; i <= natom; i++)
138 >    {
139 >         for (j=0; j < MAXIAT; j++)
140 >             if (atom[i].iat[j] != 0 && atom[i].bo[j] != 9)
141 >               {
142 >                    skip[i][atom[i].iat[j]] = i;
143 >                    skip[atom[i].iat[j]][i] = atom[i].iat[j];
144 >               }
145 >         for (j=0; j < attached.n13[i]; j++)
146 >           {
147 >               skip[i][attached.i13[j][i]] = i;
148 >               skip[attached.i13[j][i]][i] = attached.i13[j][i];
149 >           }
150 >         for(j=0; j < attached.n14[i]; j++)
151 >           {
152 >            skip[i][attached.i14[j][i]] = -i;
153 >            skip[attached.i14[j][i]][i] = -attached.i14[j][i];
154 >           }
155 >    }
156   /*  assign local geometry potential function parameters  */
157      Missing_constants = FALSE;
163    //     errfile = fopen_path(pcwindir,"pcmod.err","w");
158       if (pot.use_bond || pot.use_strbnd)  nRet = kbond();
159       if (nRet == FALSE) // use end_calc to free memory
160       {
167       //         message_alert("Parameters missing. See pcmod.err for information","Error");
168         //         fclose(errfile);
161           energies.total = 9999.;
162           return FALSE;
163       }
# Line 179 | Line 171
171  
172         if (Missing_constants == TRUE)
173         {
182         //           message_alert("Parameters missing. See pcmod.err for information","Error");
183         //           fclose(errfile);
174             energies.total = 9999.0;
175             return (FALSE);
186       } else
187       {
188         //           fclose(errfile);
189         //           remove("pcmod.err");
176         }    
177         if (minim_values.iprint == TRUE)
178            etot = print_energy();
# Line 222 | Line 208
208        energies.eurey = 0.0;
209        energies.esolv = 0.0;
210        energies.egeom =0.0;
225
226      virial.virx = 0.0;
227      virial.viry = 0.0;
228      virial.virz = 0.0;
211        
212        for (i=1; i <= natom; i++)
213             atom[i].energy = 0.0;
# Line 283 | Line 265
265   {
266      double etot;
267      int i;
286 //    struct timeb start,end;
268      
269        energies.total = 0.0;
270        energies.estr = 0.0;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines