ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/freemol/trunk/src/mengine/src/gmmx_run.c
(Generate patch)
# Line 4 | Line 4
4   #include "pcmod.h"
5   #include "utility.h"
6   #include "energies.h"
7 #include "torsions.h"
8 #include "gmmx.h"
9 #include "pot.h"
10 #include "field.h"
11 #include "nonbond.h"
7   #include "dipmom.h"
8   #include "vibrate.h"
9  
# Line 22 | Line 17
17          int nfiles, append, batch, icurrent, ibatno;
18          }       files;
19  
25 EXTERN struct t_pcmfile {
26        char string[200];
27        int head;
28        char token[20];
29        int state;
30        unsigned int nocaps;
31        }       pcmfile;
20   EXTERN struct t_minim_values {
21          int iprint, ndc, nconst;
22          float dielc;
# Line 37 | Line 25
25          int type, method, field, added_const;
26          char added_path[256],added_name[256];
27          } minim_control;
40            
41 struct t_tmp {
42    int tmp_nrings, tmp_natoms[4], tmp_ratoms[30][4], tmp_clo_bond[4][4];
43    float tmp_clo_ang[2][4], tmp_clo_distance[4], tmp_ring_resolution[4];
44    } tmp;
45
46 int input_type;
47
48 int nerr;
49 int gmmx_abort;
28  
29   int rd_sdf(FILE *);
52
30   int setup_calculation(void);
31   void end_calculation(void);
32   void minimize(void);
33   static int close_contact(int);
57
34   void initialize(void);
59
35   void type(void);
61
36   void read_gmmxinp(char*,FILE*,int);
37   void hdel(int);
38   void hadd(void);
# Line 87 | Line 61
61  
62   // check filetype
63      ncount = 0;
90    input_type = 0;
64  
65   /*
66      std_file = strdup(out_file);
# Line 103 | Line 76
76      logfile = pcmlogfile;
77      
78      files.nfiles = 0;
106 /*
107    // assume SDF input
108    while (FetchRecord(infile, line) )
109    {
110        if (strcmp(line,"$$$$") == 0)
111           files.nfiles++;
112    }
113    fclose(infile);
114 */
79   //
80      minim_control.field = MMFF94;
81      //strcpy(line,paramfile);
82      zero_data();
83      read_datafiles(paramfile);  
120    gmmx.run = TRUE;
84      minim_control.method = 1;  // just do first deriv minimization
85      icount = 0;
86   //
# Line 232 | Line 195
195      //    fclose(logfile);
196   }
197   // ================================================
235 // ==============================
236 void initialize_gmmx()
237 {
238    int i, j, k, nheav, nhyd,stmp;
239    long int mask;
240
241    mask = (1L << 0);
242    tmp.tmp_nrings = 0;
243    gmmxring.nrings = 0;
244    for (i=0; i < 4; i++)
245    {
246        tmp.tmp_natoms[i] = 0;
247        for (j=0; j < 4; j++)
248        {
249            gmmx_data.rng_size[j] = 0;
250            gmmxring.nring_atoms[i] = 0;
251            for (i=0; i <  30; i++)
252            {
253                gmmx_data.ring_atoms[i][j] = 0 ;
254                tmp.tmp_ratoms[i][j] = 0 ;
255            }
256            gmmx_data.clo_distance[j] = 0;
257            tmp.tmp_clo_distance[j] = 0 ;
258            gmmx_data.clo_ang[0][j] = 0;
259            gmmx_data.clo_ang[1][j] = 0;
260            tmp.tmp_clo_ang[0][j] = 0;
261            tmp.tmp_clo_ang[1][j] = 0;
262            gmmx_data.ring_resolution[j] = 0.0;
263            tmp.tmp_ring_resolution[j] = 0.0;
264            gmmx_data.clo_bond[0][j] = 0 ;
265            gmmx_data.clo_bond[1][j] = 0 ;
266            gmmx_data.clo_bond[2][j] = 0 ;
267            gmmx_data.clo_bond[3][j] = 0 ;
268            gmmx_data.clo_bond[4][j] = 0 ;
269            gmmx_data.clo_bond[5][j] = 0 ;
270            tmp.tmp_clo_bond[0][j] = 0 ;
271            tmp.tmp_clo_bond[1][j] = 0 ;
272            tmp.tmp_clo_bond[2][j] = 0 ;
273            tmp.tmp_clo_bond[3][j] = 0 ;
274        }
275    }
276    stmp = rand();
277    if(stmp >= 10000)
278       stmp = stmp/10;
279    if(stmp >= 10000)
280       stmp = stmp/10;
281    if(stmp >= 10000)
282       stmp = stmp/10;
283    if(stmp >= 10000)
284       stmp = stmp/10;
285    if(stmp >= 10000)
286       stmp = stmp/10;
287    if(stmp >= 10000)
288       stmp = stmp/10;
289    if(stmp >= 10000)
290       stmp = stmp/10;
291    if(stmp >= 10000)
292       stmp = stmp/10;
293    sprintf(gmmx_data.jobname,"gmx%d",stmp);
294    strcpy(gmmx_data.gmmx_comment,"GMMX Conf Search");
295        
296    gmmx_data.method = 3;
297    gmmx_data.iseed = 71277;
298    gmmx_data.its = 990;
299    gmmx_data.lnant = TRUE;
300    gmmx_data.hybrid = TRUE;
301    gmmx_data.ecut = TRUE;
302    gmmx_data.chig = TRUE;
303    gmmx_data.bad15 = TRUE;
304    gmmx_data.nopi1 = FALSE;
305     for (i=1; i <= natom; i++)
306     {
307         if (atom[i].flags & mask)
308          {
309           gmmx_data.nopi1 = TRUE;
310           break;
311          }
312     }
313    gmmx_data.hbond = TRUE;
314    gmmx_data.heat = FALSE;
315    
316    gmmx_data.comp = 0;
317    gmmx_data.qpmr = FALSE;
318    gmmx_data.qdist = FALSE;
319    gmmx_data.qang = FALSE;
320    gmmx_data.qdihed = FALSE;
321    gmmx_data.npmr = 0;
322    gmmx_data.ndist = 0;
323    gmmx_data.nang = 0;
324    gmmx_data.ndihed = 0;
325
326    gmmx_data.nrings = 0;
327    gmmx_data.nbonds = 0;
328    gmmx_data.ewindow = 3.5;
329    gmmx_data.ewindow2 = 3.0;
330    gmmx_data.boltz = 300.0;
331    gmmx_data.ecutoff = 0.100;
332    gmmx_data.bad15_cutoff = 3.00;
333        
334    gmmx_data.nsrms = 0;
335    gmmx_data.nsrmsa = 0;
336    gmmx_data.comp_method = 0;
337    gmmx_data.comp_method2 = 1;
338    gmmx_data.ermsa = 0.100;
339    gmmx_data.crmsa = 0.250;
340    gmmx_data.restart = FALSE;
341    gmmx_data.include_file = FALSE;
342
343    nheav = 0;
344    nhyd = 0;
345    for (i=1; i <= natom; i++)
346    {
347        if (atom[i].atomnum != 1 && atom[i].atomnum != 2)
348            nheav++;
349        else
350            nhyd++;
351    }
352
353    gmmx_data.kstop = 5;
354    gmmx_data.kmin = 5*nheav;
355    gmmx_data.kdup = 5*nheav/2;
356    if (gmmx_data.kdup > 50)
357      gmmx_data.kdup = 50;
358    gmmx_data.max_search = 100000;
359    
360    gmmx_data.nrings = 0;
361    for (i=0; i < 4; i++)
362      gmmx_data.nring_bonds[i] = 0;
363    for (i=0; i < 30; i++)
364    {
365       gmmxring.nring_atoms[i] = 0;
366       for (j=0; j < 30; j++)
367         gmmxring.ring_atoms[i][j]=0;
368       for (j=0; j < 4; j++)
369       for (k=0; k < 3; k++)
370        gmmx_data.ring_bond_data[j][i][k] = 0;
371    }
372    
373 }
374 // =======================================
198   int close_contact(int mode)
199   {
200    int i, j;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines