GLYLIB
0.3.0b
|
00001 /** \file AMBER/run_control.h Contains information pertinent to amber simulations. 00002 00003 Begun on 20080715 by BLFoley. 00004 */ 00005 00006 #if !defined(GLYLIB_AMBER_RUN_CONTROL) 00007 #define GLYLIB_AMBER_RUN_CONTROL 00008 00009 /*! The following structure contains 00010 lists of information requested by a user to be output from an amber 00011 simulation. At present, however, it will be limited not only to 00012 certain types of TI runs, but also to the specific way Lachele happens 00013 to want to run them. If added to amber.h, it should be expanded. 00014 */ 00015 typedef struct { 00016 int WANT_MDEN; ///< 0=YES ; 1=NO (make mden output file?) 00017 int MDEN_EVERY; ///< Step-frequency with which to write entries to mden file 00018 int WANT_AUTOCORR; ///< Should the program call get_autocorr_est_array()? 00019 char *AUTOCORR_DATA; ///< List of mden entries to get autocorrelations for 00020 int WANT_AUTOCORR_GRAPH; ///< 0=YES ; 1=NO (might require another program) 00021 int WANT_GRAPH; ///< 0=YES ; 1=NO (might require another program) 00022 char *GRAPH_DATA; ///< List of graphs to make -- all versus step number 00023 } AMBER_MD_DATA_REQUEST; 00024 00025 00026 /*! This moves to amber.h eventually. It will be used generally for TI calcs. 00027 Contains information on which charges to change and how to change them. 00028 */ 00029 typedef struct { 00030 int NUMBER; ///< A user-defined number; not the order found in the file 00031 char *COMMENT; ///< Free-form user comment about this change 00032 char *CHANGE_BY_WHICH;///< How to make the change, e.g.,RESIDUE_TYPE NOT-SOLVENT 00033 char *SOLVENT_ID;///< List of residues to consider as solvent 00034 char *RESIDUE_LIST; ///< List of residues to consider 00035 char *ATOM_LIST; ///< List of atoms to consider 00036 char *CHANGE_TYPE;///< how to change the numbers (ABSOLUTE, FRACTION, etc.) 00037 double CHANGE_QUANT;///< Meaning will depend on the value in CHANGE_TYPE 00038 } EE_TI_CHANGE_INFO; 00039 00040 /*! This will be used generally for TI calcs. 00041 Contains information about how the TI integration is to be carried out. 00042 Information includes beginning and end of run information. For example, 00043 it contains the lambda values to use as well as the manner in which they 00044 should be integrated once the data are collected. 00045 */ 00046 typedef struct { 00047 double KLAMBDA; ///< The value of klambda. Typically integral, but might float... 00048 char *CLAMBDA_HOW; ///< Method for assigning CLAMBDA's. Not necessarily the same as the integration technique (see ANALYZE_HOW) 00049 //## CLAMBDA_HOW = GAUSSIAN 12 00050 //## CLAMBDA_HOW = SECTIONS 20 00051 char *POINTSFILE; ///< If CLAMBDA_HOW involves reading a file, this is the file to read. 00052 int nCLAMBDA; ///< The number of CLAMBDA values. 00053 double *CLAMBDA;///< The CLAMBDA values. 00054 int nWIDTHS; ///< Should equal nCLAMBDA or zero -- here to facilitate checks to see if widths are defined. 00055 double *WIDTHS; ///< Widths to assign to each CLAMBDA value (e.g., for GAUSSIAN quadrature) 00056 char *ANALYZE_HOW; ///< The numerical integration method to use. 00057 //## ANALYZE_HOW = GAUSSIAN 00058 //## ANALYZE_HOW = TRAPEZOID 00059 //## ANALYZE_HOW = SIMPSONS_RULE 00060 } TI_INTEGRATION_INFO; 00061 00062 /*! Contains the command-line requirements for a sander/pmemd run. 00063 00064 sander [-help] [-O] [-A] -i mdin -o mdout -p prmtop -c inpcrd -r restrt 00065 -ref refc -x mdcrd -y inptraj -v mdvel -e mden -inf mdinfo -radii radii 00066 -cpin cpin -cpout cpout -cprestrt cprestrt -evbin evbin 00067 00068 -O Overwrite output files if they exist. 00069 -A Append output files if they exist, (used mainly for replica exchange). 00070 */ 00071 typedef struct{ 00072 char AO; ///< Append/Overwrite files ('A', 'O' or '\0') 00073 char *mdin; ///< input control data for the min/md run 00074 char *mdout; ///< output user readable state info and diagnostics 00075 ///< -o stdout will send output to stdout (to the terminal) instead of to a file. 00076 char *prmtop; ///< input molecular topology, force field, periodic box type, atom and residue names 00077 char *inpcrd; ///< input initial coordinates and (optionally) velocities and periodic box size 00078 char *restrt; ///< output final coordinates, velocity, and box dimensions if any - for restarting run 00079 char *refc; ///< input (optional) reference coords for position restraints; also used for targeted MD 00080 char *mdcrd; ///< output coordinate sets saved over trajectory 00081 char *inptraj; ///< input input coordinate sets in trajectory format, when imin=5 00082 char *mdvel; ///< output velocity sets saved over trajectory 00083 char *mden; ///< output extensive energy data over trajectory 00084 char *mdinfo; ///< output latest mdout-format energy info 00085 char *radii; ///< Obviously, some sort of radii, but not documented at this point in the manual... (BLF) 00086 char *inpdip; ///< input polarizable dipole file, when indmeth=3 00087 char *rstdip; ///< output polarizable dipole file, when indmeth=3 00088 char *cpin; ///< input protonation state definitions 00089 char *cprestrt; ///< protonation state definitions, final protonation states for restart (same format as cpin) 00090 char *cpout; ///< output protonation state data saved over trajectory 00091 char *evbin; ///< input input for EVB potentials 00092 } sander_pmemd_command_line; 00093 00094 /*! Contains "cntrl" information pertinent to a sander/pmemd run. Currently, 00095 in the interest of time, I'm only writing it to contain the pieces I 00096 typically use in a run. The rest can be added later as these 00097 structs are easily extensible. 00098 */ 00099 typedef struct { 00100 // 00101 int nclambda; ///< The number of clambda values held in this struct 00102 double *clambda; ///< clambda values (see icfe and klambda) -- an array here b/c they are usually in groups 00103 double comp; ///< The compressibility of a system (default = 44.6); 00104 double cut; ///< Nonbonded cutoff (default = 8.0); 00105 // 00106 double dielc; ///< Dielectric for electrostatics (not same as GB simulations) 00107 double drms; ///< convergence criterion for minimization (see manual) 00108 double dt; ///< Time step (psec) for MD runs (recommended max is 0.0020); 00109 double dx0; ///< Initial min step length to use (program will self-adjust) 00110 // 00111 int ibelly; ///< Belly type dynamics. Default is 0 (don't use). See manual. 00112 int icfe; ///< Flag for thermodynamic integration; no=0; yes=1; (see clambda and klambda) 00113 int igb; ///< Flag for using GB or PB IS models; See Manual. 00114 int imin; ///< no_min=0; min=1; read_traj_and_analyze=5 00115 int ioutfm; ///< crd & vel output formats; normal=0; NetCDF=1 00116 int irest; ///< don't_restart=0; restart=1 00117 int iwrap; ///< don't_wrap=0; wrap=1 00118 // 00119 double klambda; ///< klambda value (see icfe and clambda) 00120 // 00121 int maxcyc; ///< Maximum number of minimization cycles 00122 // 00123 int ncyc; ///< at ncyc, switch from steepest descent to conjugate graduent. 00124 int nmropt; ///< none=0; some>0; NOESY=2 00125 int nsnb; ///< Frequencey of nonbonded list updates (default = 25); 00126 int nstlim; ///< Number of MD simulation steps 00127 int ntave; ///< Every ntave steps print averages over last ntave steps; =0 to disable averaging 00128 int ntb; ///< =1 for const. volume ; =2 for constant pressure ; =0 for no periodicity 00129 int ntc; ///< No Shake = 1; SHAKE=2; constrain all bonds = 3 00130 int ntf; ///< Set equal to ntc or see manual for more information 00131 int ntmin; ///< Min Method. See manual. If =1, need to set ncyc for switch 00132 int ntp; ///< Sets pressure control 00133 int ntpr; ///< Every ntpr steps, print info to mdinfo and mdout 00134 int ntr; ///< Sets restraints information; =0 for none; >0 for some (see restraint* & refc) 00135 int ntrx; ///< refc format text=1; binary=0 00136 int ntt; ///< Sets temperature control Const.Energy=0; >0 is some other control (=1 usually, see manual) 00137 int ntwe; ///< Eery ntwe steps write compact energy to mden file; =0 to inhibit 00138 int ntwprt; ///< Only print atoms 1 through ntwprt in crd files; =0 to print all 00139 int ntwr; ///< Every ntwr steps write a restart file 00140 int ntwv; ///< Every ntwx velocities are written to mdvel; =0 to inhibit; =-1 to combine with crd file 00141 int ntwx; ///< Every ntwx coordinates are written to mdcrd; =0 to inhibit 00142 int ntx; ///< only_crd=1; crd+vel=5 00143 int ntxo; ///< format of restrt file (output); =1 only (=0 is deprecated) 00144 // 00145 double pres0; ///< Desired constant pressure (bars); default = 1.0; 00146 double presi; ///< Initial pressure 00147 // 00148 double restraint_wt; ///< Sixe of k, the restraining spring constant. 00149 char *restraintmask; ///< List of atoms to be restrained if ntr=1 00150 // 00151 double scee; ///< Divide 1-4 electrostatic interactions by scee ; GLYCAM needs = 1.0; 00152 double scnb; ///< Divide 1-4 vdW interactions by scnb; GLYCAm needs = 1.0; 00153 // 00154 double taup; ///< Pressure relaxation time = 0.1; 00155 double tautp; ///< Time constant for heat-bath coupling; default = 1.0; 00156 double temp0; ///< Desired constant temperature (kelvin) 00157 double tempi; ///< Initial temperature 00158 // 00159 } sander_pmemd_cntrl; 00160 00161 /*! Contains control-ewald informatin pertinent to a sander/pmemd run. 00162 Currently, in the interest of time, I'm only writing it to contain 00163 the pieces I typically use in a run. The rest can be added later 00164 as these structs are easily extensible. */ 00165 typedef struct { 00166 int nbflag; ///< Tells how to determine when to update the nonbonded list. See manual. 00167 double skinnb; ///< Used when nbflag=1. See manual. 00168 } sander_pmemd_ewald; 00169 00170 /*! Contains control-change informatin pertinent to a sander/pmemd run. 00171 Currently, in the interest of time, I'm only writing it to contain 00172 the pieces I typically use in a run. The rest can be added later 00173 as these structs are easily extensible. */ 00174 typedef struct { 00175 char *type; ///< the type of change, e.g., TEMP0, TAUTP, etc. 00176 int istep1,istep2; ///< beginning and ending steps for the change 00177 int value1,value2; ///< change from value1 at istep1 to value2 at istep2 00178 } sander_pmemd_nmropt_wt_change; 00179 00180 /*! Contains information pertinent to a sander/pmemd run. Currently, in the 00181 interest of time, I'm only writing it to contain the pieces I 00182 typically use in a run. The rest can be added later as these 00183 structs are easily extensible. 00184 */ 00185 typedef struct { 00186 char *Title; ///< The title of the run 00187 sander_pmemd_cntrl SPC; ///< Control list for the run 00188 int use_SPE; ///< include ewald info if 0; don't if 1 00189 sander_pmemd_ewald SPE; ///< 00190 int nSPNWT; ///< number of wt change info sets to include (none if 0) 00191 sander_pmemd_nmropt_wt_change SPNWT; ///< entries in the "&wt" section for nmropt 00192 } sander_pmemd_MD_control_info; 00193 00194 typedef struct{ 00195 char *Title; ///< free-form descriptor 00196 char *exe; ///< executable name (with path, etc.) 00197 sander_pmemd_MD_control_info MDCI; ///< Control info for this run 00198 int nopt; ///< Number of command-line options 00199 char **optd; ///< The nopt dash options ('\0' if there is an argument in the next list without one of these) 00200 char **optt; ///< The nopt option strings ('\0' if there is an argument in the previous list without one of these) 00201 int nouttst; ///< Number of output tests to perform 00202 char **outdone; ///< String to check if job is complete 00203 char **outfail; ///< String to check if job has failed 00204 char **outdoing; ///< String to check if job might be still running and ok 00205 char **outpass; ///< String to check if job is finished and is probably "successful" 00206 char **outdesc; ///< Description of overall result from tests 00207 int **state; ///< Integer description of result: failed=-1; success=0; unknown or in progress=+1; 00208 int SUMMARY; ///< Integer summary: one or more failed=-1; all success=0; unknown or in progress=+1; 00209 } sander_pmemd_MD_run_info; 00210 00211 00212 #endif