GLYLIB  0.3.0b
run_control.h
Go to the documentation of this file.
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
 All Classes Files Functions Variables Typedefs Defines