ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/freemol/branches/sync4pymol12/src/mengine/src/initiali.c
(Generate patch)
# Line 1 | Line 1
1 < /* NOTICE: this source code file has been modified for use with FreeMOL */
2 < #define EXTERN extern
3 <
4 < #include "pcwin.h"
5 < #include "pcmod.h"
6 < #include "pot.h"
7 < #include "field.h"
8 < #include "cutoffs.h"
9 < #include "energies.h"
10 < #include "utility.h"
11 < #include "fix.h"
12 < #include "substr.h"
13 < #include "atom_k.h"
14 <
15 < void reset_atom_data(void);
16 < void reset_calc_parameters(void);
17 < FILE * fopen_path ( char * , char * , char * ) ;
18 < void InitialTransform(void);
19 < void zero_data(void);
20 < void read_datafiles(char *);
21 < void initialize_pcmodel(char *);
22 < void fixdisreset(void);
23 < void coordreset(void);
24 < void ddrivereset(void);
25 < void hbondreset(void);
26 < void pireset(void);
27 < void generate_bonds(void);
28 < void set_field(void);
29 < void fixangle_reset(void);
30 < void message_alert(char *, char *);
31 < int strmessage_alert(char *);
32 < void gettoken(void);
33 < void free_dotmem(void);
34 < void init_pov(void);
35 < void reset_fixtype(void);
36 < void set_window_title(void);
37 < void remove_file(char *,char *);
38 <
39 < struct  t_optimize {
40 <        int param_avail, converge;
41 <        float initial_energy, final_energy, initial_heat, final_heat;
42 <        } optimize_data;
43 <
44 <
45 < struct t_ts_bondorder {
46 <        float fbnd[15];
47 <        }       ts_bondorder;
48 <
49 < EXTERN struct t_files {
50 <        int nfiles, append, batch, icurrent;
51 <        int ibatno;
52 <        } files;
53 <
54 < EXTERN struct t_minim_control {
55 <        int type, method, field, added_const;
56 <        char added_path[256],added_name[256];
57 <        } minim_control;
58 <
59 < EXTERN struct t_minim_values {
60 <        int iprint, ndc, nconst;
61 <        float dielc;
62 <        } minim_values;
63 <
64 <                
65 < EXTERN struct t_units {
66 <        double bndunit, cbnd, qbnd;
67 <        double angunit, cang, qang, pang, sang, aaunit;
68 <        double stbnunit, ureyunit, torsunit, storunit, v14scale;
69 <        double aterm, bterm, cterm, dielec, chgscale;
70 <        } units;
71 <
72 <
73 < struct t_user {
74 <        int dielec;
75 <        } user;
76 <
77 < EXTERN struct t_pcmfile {
78 <        char string[200];
79 <        int head;
80 <        char token[20];
81 <        int state;
82 <        unsigned int nocaps;
83 <        }       pcmfile;
84 <
85 < EXTERN struct t_residues {
86 <        int  nchain, ichainstart[10];
87 <        int  ngroup, iresnum[200], irestype[200], istartatom[200];
88 <        }       residues;
89 <
90 < EXTERN struct t_dipolemom {
91 <        double total, xdipole, ydipole, zdipole;
92 <       }  dipolemom;
93 <
94 < struct t_dmomv {
95 <        float xn,yn,zn,xp,yp,zp;
96 <        } dmomv;
97 <
98 < #define NL gettoken(); if (pcmfile.head == 1000) goto L_30;
99 < #define ALPHABETIC      2
100 < #define NUMERIC 1
101 <
102 < // =======================================
103 < void message_alert(char *astring, char *title)
104 < {
105 < //    MessageBox(NULL, astring, title, MB_ICONEXCLAMATION);
106 <      printf("%s\n",astring);
107 < }
108 < // ===================================
109 < void initialize_pcmodel(char *pfile)
110 < {
111 <    int i;
112 <    char string[256];
113 <        strcpy(pcwindir,"");
114 <        user.dielec = FALSE;
115 <        units.dielec = 1.0;
116 <        dipolemom.total = 0.0;
117 <        use_external_chrg = FALSE;
118 <        use_gast_chrg = FALSE;
119 <        zero_data();
120 < //        strcpy(string,mmxfile);
121 <        read_datafiles(pfile);  
122 <        set_field();
123 < // initialize atom definitions
124 <        atom_def.natomtype = atom_k.natomtype;
125 <        for (i=1; i < MAXATOMTYPE; i++)
126 <        {
127 <                atom_def.type[i] = atom_k.type[i];
128 <                atom_def.valency[i] = atom_k.valency[i];
129 <                atom_def.number[i] = atom_k.number[i];
130 <                atom_def.ligands[i] = atom_k.ligands[i];
131 <                atom_def.weight[i] = atom_k.weight[i];
132 <                strcpy(atom_def.symbol[i],atom_k.symbol[i]);
133 <        }
134 <        LPTYPE = 20;
135 <        if (field.type == MMX ||field.type == MM2 ||field.type == MM3  )
136 <          LPTYPE = 20;
137 <        else
138 <          LPTYPE = 0;
139 <        Openbox.ftype = FTYPE_PCM;
140 <        Savebox.ftype = FTYPE_PCM;
141 <        default_intype = MMX;
142 <        default_outtype = MMX;
143 <        strcpy(Openbox.path,pcwindir);
144 <        strcpy(Savebox.path,pcwindir);
145 <        hbond_flag = TRUE;
146 <        pot.use_hbond = TRUE;
147 <        reset_calc_parameters();
148 <        curtype = 1;
149 <        natom = 0;
150 <        bonds.numbonds = -1;
151 <        residues.ngroup = 0;
152 < /*  minimizer control */
153 <        minim_control.method = 3;
154 <        minim_control.field = MMX;
155 <        minim_control.added_const = FALSE;
156 < // printout
157 <        minim_values.iprint = FALSE;
158 < /*  cutoffs    */
159 <        cutoffs.vdwcut = 10.0;
160 <        cutoffs.pmecut = 9.0;
161 <        cutoffs.chrgcut = 100.0;
162 <        cutoffs.dipcut = 8.0;
163 < /*  solvation stuff  */
164 <        pot.use_bounds = FALSE;
165 <        pot.use_image = FALSE;
166 <        pot.use_deform = FALSE;
167 <        pot.use_solv = FALSE;
168 < }
169 <
170 < int initialize(void)
171 < {
172 <    curtype = 1;
173 <    natom = 0;
174 <    bonds.numbonds = -1;
175 <    reset_calc_parameters();
176 <    pot.use_bounds = FALSE;
177 <    pot.use_image = FALSE;
178 <    pot.use_deform = FALSE;
179 <    dipolemom.total = 0.0;
180 < // optimization flags
181 <    optimize_data.param_avail = FALSE;
182 <    optimize_data.converge = FALSE;
183 <    optimize_data.initial_energy = 0.0;
184 <    optimize_data.final_energy = 0.0;
185 <    optimize_data.initial_heat = 0.0;
186 <    optimize_data.final_heat = 0.0;
187 < //
188 <    reset_atom_data();
189 <    return(0);
190 < }
191 < /* ============================================== */
192 < void reset_calc_parameters(void)
193 < {
194 <   flags.noh = False;
195 <   flags.nohyd = False;
196 <   flags.immx = True;
197 <
198 < /* default to hydrogen bonding on  */
199 <   minim_values.ndc = 4;
200 <   minim_values.nconst= 0;
201 < }
202 < /* =============================================== */
203 < void pireset()
204 < {
205 <        long int i,mask;
206 <        mask = 1L << PI_MASK;
207 < }
208 < /* =============================================== */
209 < void reset_fixtype()
210 < {
211 <        long int i,mask;
212 <        mask = 1L << NO_RETYPE;
213 <        for (i = 1; i <= natom; i++)
214 <                atom[i].flags &= ~mask;
215 < }
216 < /* ------------------------- */
217 < void hbondreset()
218 < {
219 <        long int i,mask;
220 <
221 <        mask = 1L << HBOND_MASK;
222 <        for (i = 1; i <= natom; i++)
223 <                atom[i].flags &= ~mask;
224 < }
225 < /* ------------------------- */
226 < void resetsubstrmem()
227 < {
228 < }
229 < /* ------------------------- */
230 < void coordreset()
231 < {
232 <        long int i,j, mask4,mask5,mask6,mask7,mask8;
233 <
234 <        mask4 = 1L << METCOORD_MASK;
235 <        mask5 = 1L << SATMET_MASK;
236 <        mask6 = 1L << GT18e_MASK;
237 <        mask7 = 1L << LOWSPIN_MASK;
238 <        mask8 = 1L << SQPLAN_MASK;
239 <
240 <        for (i=1; i <= natom; i++)
241 <        {
242 <                atom[i].flags &= ~mask4;
243 <                atom[i].flags &= ~mask5;
244 <                atom[i].flags &= ~mask6;
245 <                atom[i].flags &= ~mask7;
246 <                atom[i].flags &= ~mask8;
247 <
248 <                for (j=0; j < MAXIAT; j++)
249 <                {
250 <                        if (atom[i].bo[j] == 9)
251 <                        {
252 <                                atom[i].bo[j] = 0;
253 <                                atom[i].iat[j] = 0;
254 <                        }
255 <                }
256 <        }
257 <        generate_bonds();
258 < }              
259 < /* ------------------------- */
260 < void fixdisreset()
261 < {
262 < }
263 < /* ============================================== */
264 < void fixangle_reset()
265 < {
266 < }
267 < /* ============================================== */      
268 < void reset_atom_data(void)
269 < {
270 <        int i, j;
271 <
272 <    for (i = 0; i < MAXATOM; i++)
273 <    {
274 <        selatom[i] = 0;
275 <        atom[i].use = 0;
276 <        atom[i].x = 0.0F; atom[i].y = 0.0F; atom[i].z = 0.0F;
277 <        atom[i].color = 0;
278 <        atom[i].chrg_color = 7;
279 <        atom[i].charge = 0.0F;
280 <        atom[i].energy = 0.0F;
281 <        atom[i].atomnum = 0;
282 <        atom[i].serno = 0;
283 <        atom[i].molecule = 0;
284 <        atom[i].residue = 0;
285 <        atom[i].formal_charge = 0;
286 <        atom[i].atomwt = 0.0;
287 <        atom[i].type = 0;
288 <        atom[i].mmx_type = 0;
289 <        atom[i].mm3_type = 0;
290 <        atom[i].mmff_type = 0;
291 <        atom[i].tclass = 0;
292 <        *atom[i].name = '\0';
293 <        atom[i].flags = 0;
294 <        for (j = 0; j < MAXIAT; j++)
295 <        {
296 <           atom[i].bo[j] = 0;
297 <           atom[i].iat[j] = 0;
298 <        }
299 <        for (j=0; j < MAXSS; j++)
300 <        {
301 <          atom[i].substr[j] = 0;
302 <          substr.istract[j] = 0;
303 <        }
304 <     }
305 < }
306 < #ifdef PCM_WIN
307 < // =======================================
308 < /*int strcasecmp(char *str1,char *str2)
309 < {
310 <     char c1,c2;
311 <     while(1)
312 <     {
313 <         c1 = tolower(*str1++);
314 <         c2 = tolower(*str2++);
315 <         if (c1 < c2) return -1;
316 <         if (c1 > c2) return 1;
317 <         if (c1 == 0) return 0;
318 <     }
319 < } */
320 < // ========================================
321 < /*int strncasecmp(char *s1,char *s2,int n)
322 < {
323 <    int i;
324 <    char c1, c2;
325 <    for (i=0; i<n; i++)
326 <    {
327 <        c1 = tolower(*s1++);
328 <        c2 = tolower(*s2++);
329 <        if (c1 < c2) return -1;
330 <        if (c1 > c2) return 1;
331 <        if (!c1) return 0;
332 <    }
333 <    return 0;
334 < }*/
335 < #endif
336 < // void itoa(int n,char *s, int radix)
337 < //{
338 < //    sprintf(s,"%d",n);
339 < //}
340 < // ========================================
341 < void remove_file(char *path,char *name)
342 < {
343 <    char tempname[255];
344 <    int ix;
345 <
346 <    strcpy(tempname,"");
347 <    if ( (ix = strlen(path)) != 0)
348 <    {
349 <        strcpy(tempname,path);
350 <        strcat(tempname,"\\");
351 <        strcat(tempname,name);
352 <    } else
353 <    {
354 <        strcpy(tempname,name);
355 <    }
356 <    remove(tempname);
357 < }
1 > #define EXTERN extern
2 >
3 > #include "pcwin.h"
4 > #include "pcmod.h"
5 > #include "pot.h"
6 > #include "field.h"
7 > #include "cutoffs.h"
8 > #include "energies.h"
9 > #include "utility.h"
10 > #include "fix.h"
11 > #include "atom_k.h"
12 > #include "dipmom.h"
13 >
14 > void reset_atom_data(void);
15 > void reset_calc_parameters(void);
16 > void zero_data(void);
17 > void read_datafiles(char *);
18 > void initialize_pcmodel(char *);
19 > void set_field(void);
20 > void message_alert(char *, char *);
21 >
22 >
23 > EXTERN struct t_files {
24 >        int nfiles, append, batch, icurrent;
25 >        int ibatno;
26 >        } files;
27 >
28 > EXTERN struct t_minim_control {
29 >        int type, method, field, added_const;
30 >        char added_path[256],added_name[256];
31 >        } minim_control;
32 >
33 > EXTERN struct t_minim_values {
34 >        int iprint, ndc, nconst;
35 >        float dielc;
36 >        } minim_values;
37 >                
38 > struct t_user {
39 >        int dielec;
40 >        } user;
41 >
42 > EXTERN struct t_pcmfile {
43 >        char string[200];
44 >        int head;
45 >        char token[20];
46 >        int state;
47 >        unsigned int nocaps;
48 >        }       pcmfile;
49 >
50 >
51 > // =======================================
52 > void message_alert(char *astring, char *title)
53 > {
54 >  fprintf(pcmlogfile,"%s\n",astring);
55 > }
56 > // ===================================
57 > void initialize_pcmodel(char *mmxfilename)
58 > {
59 >    int i;
60 >    user.dielec = FALSE;
61 >    units.dielec = 1.0;
62 >    dipolemom.total = 0.0;
63 >    zero_data();
64 >    read_datafiles(mmxfilename);
65 >    set_field();
66 >    // initialize atom definitions
67 >    atom_def.natomtype = atom_k.natomtype;
68 >    for (i=1; i < MAXATOMTYPE; i++)
69 >      {
70 >        atom_def.type[i] = atom_k.type[i];
71 >        atom_def.valency[i] = atom_k.valency[i];
72 >        atom_def.number[i] = atom_k.number[i];
73 >        atom_def.ligands[i] = atom_k.ligands[i];
74 >        atom_def.weight[i] = atom_k.weight[i];
75 >        strcpy(atom_def.symbol[i],atom_k.symbol[i]);
76 >      }
77 >    LPTYPE = 20;
78 >    if (field.type == MMX ||field.type == MM2 ||field.type == MM3  )
79 >      LPTYPE = 20;
80 >    else
81 >      LPTYPE = 0;
82 >    Openbox.ftype = FTYPE_PCM;
83 >    Savebox.ftype = FTYPE_PCM;
84 >    default_intype = MMX;
85 >    default_outtype = MMX;
86 >    strcpy(Openbox.path,pcwindir);
87 >    strcpy(Savebox.path,pcwindir);
88 >    hbond_flag = TRUE;
89 >    pot.use_hbond = TRUE;
90 >    reset_calc_parameters();
91 >    natom = 0;
92 >    /*  minimizer control */
93 >    minim_control.method = 3;
94 >    minim_control.field = MMX;
95 >    minim_control.added_const = FALSE;
96 >    // printout
97 >    minim_values.iprint = FALSE;
98 >    /*  cutoffs    */
99 >    cutoffs.vdwcut = 10.0;
100 >    cutoffs.pmecut = 9.0;
101 >    cutoffs.chrgcut = 100.0;
102 >    cutoffs.dipcut = 8.0;
103 >    /*  solvation stuff  */
104 >    pot.use_bounds = FALSE;
105 >    pot.use_image = FALSE;
106 >    pot.use_deform = FALSE;
107 >    pot.use_solv = FALSE;
108 >    // fixed stuff
109 >    fx_atom.natom_fix = 0;
110 >    fx_dist.ndfix = 0;
111 >    fx_angle.nafix = 0;
112 >    fx_torsion.ntfix = 0;
113 >    restrain_atom.natom_restrain = 0;
114 > }
115 >
116 > int initialize(void)
117 > {
118 >  natom = 0;
119 >  reset_calc_parameters();
120 >  pot.use_bounds = FALSE;
121 >    pot.use_image = FALSE;
122 >    pot.use_deform = FALSE;
123 >    dipolemom.total = 0.0;
124 >    reset_atom_data();
125 >    return(0);
126 > }
127 > /* ============================================== */
128 > void reset_calc_parameters(void)
129 > {
130 >
131 > /* default to hydrogen bonding on  */
132 >   minim_values.ndc = 4;
133 >   minim_values.nconst= 0;
134 > }
135 > /* ============================================== */      
136 > void reset_atom_data(void)
137 > {
138 >        int i, j;
139 >
140 >    for (i = 0; i < MAXATOM; i++)
141 >    {
142 >        atom[i].use = 0;
143 >        atom[i].x = 0.0F; atom[i].y = 0.0F; atom[i].z = 0.0F;
144 >        atom[i].charge = 0.0F;
145 >        atom[i].energy = 0.0F;
146 >        atom[i].atomnum = 0;
147 >        atom[i].formal_charge = 0;
148 >        atom[i].atomwt = 0.0;
149 >        atom[i].type = 0;
150 >        atom[i].mmx_type = 0;
151 >        atom[i].mm3_type = 0;
152 >        atom[i].mmff_type = 0;
153 >        atom[i].tclass = 0;
154 >        *atom[i].name = '\0';
155 >        atom[i].flags = 0;
156 >        for (j = 0; j < MAXIAT; j++)
157 >        {
158 >           atom[i].bo[j] = 0;
159 >           atom[i].iat[j] = 0;
160 >        }
161 >     }
162 > }

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines