ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/freemol/branches/sync4pymol12/src/mengine/src/initiali.c
Revision: 3
Committed: Mon Jun 9 21:38:26 2008 UTC (11 years, 5 months ago) by tjod
Original Path: trunk/smi23d/src/mengine/initiali.c
File size: 8899 byte(s)
Log Message:
test

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