This software package is copyrighted, and may be used subject to the following conditions: * This software is provided free of charge to academic users, subject to the condition that no part of it be sold or used otherwise for commercial purposes, including, but not limited to its incorporation into commercial software packages, without written consent from the authors. For permission contact Prof. H. A. Scheraga, Cornell University. * This software package is provided on an "as is" basis. We in no way warrant either this software or results it may produce. * Reports or publications using this software package must contain an acknowledgement to the authors and the NIH Resource in the form commonly used in academic research. CRYSTALG Deformation-based global optimization for crystals. Authors and Contributors: 1 1 1 1,2 Jaroslaw Pillardy, Ryszard J. Wawak, Yelena A. Arnautova, Cezary Czaplewski 1 Harold A. Scheraga 1 Baker Laboratory of Chemistry and Chemical Biology, Cornell University, Ithaca, NY 14853-1301, U.S.A. 2 Faculty of Chemistry, University of Gdansk, ul. Sobieskiego 18, 80-952 Gdansk, Poland The algorithm and its application for various crystals has been described in: (1) Journal of the American Chemical Society, 2000, Volume 122, Number 5, Pages 907-921. Please refer to the above paper when citing any usage of the CRYSTALG program. The global optimization method used in CRYSTALG has been described also in: (2) J. Phys. Chem. B, 1999, Vol 103, Page 7353 (3) J. Phys. Chem. A, 1999, Vol 103, Page 9370 All correspondence about the program, especially informations about discovered bugs and errors, please send to Jaroslaw Pillardy at jp86@cornell.edu . I. Compilation. The program is tested on two platforms: IBM SP2 with MPI, and Linux with MPICH. For compiling on the IBM SP2 Makefile.sp2 should be used, for Linux Makefile.linux should be used. There are several important variables and parameters that should be checked and tailored to a particular software and system configuration. DIRROOT - The directory, where crystalg is installed (e.g. ~jarekp/crystalg) FC - fortran compiler (e.g. mpxlf for AIX with MPI) PP - pre-processor name (e.g. usually cpp) LIBS - libraries FFLAGS - parameters for fortran compiler, must include at least -c (compile only) optimization level, debugging options etc may be set here CPPFLAGS - parameters for pre-processor. -DAIX : IBM SP2 with AIX -DLINUX : Linux -DNAG : NAG library mathematical routines will be used when appropriate -DIMSL : IMSL mathematical routines will be used when appropriate -MPI_CG : must be always present - defines the parallelization level (only MPI_CG is currently avaiable for CRSTALG) -DHAGLER : DISCOVER force field will be used (Ewig C.S. at all. J. Phys. Chem. B, 1999, Vol 103, Page 6998) -DAMBER : AMBER force field will be used (Cornell W.D. at all. J. Am. Chem. Soc. 1995, Vol 117, Page 5179) II. Input file The name of the input file defines names of other files used, they are created by adding appropriate suffixes to the core part of the input file name. Input file must be named according to the template _name_.inp, where _name_ is core name (e.g. ethene.inp). Record 1 : Title (1 line - character - free format) Record 2 : Program parameters/ global optimization parameters part 1 This record contains arbitrary number of 80-character lines terminated with '&', the first line shorter than 80 characters or not terminated with '&' ends this record. The record consists of expressions VAR_NAME1=VALUE or VAR_NAME separated by spaces. In the first case variable VAR_NAME1 is set to value VALUE, in the second case logical vaiable VAR_NAME2 is set to .true. Record 3 : Global optimization parameters part 2 Structure of the Record 2 is identical as for Record 1. Detailed description of all variables and parameters from Record 1 & 2 is in the next section. Record 4 : Number of molecules in the unit cell (1 line - integer - numbmol) Record 5 : Number of atoms in the molecule (1 line - integer - numbat) Record 6 : Atom types, numbat lines, each containing atom number (integer) and atom label (character*2). Record 7 : Number of chemical bonds in the molecule (1 line - integer - nnbond) Record 8 : Connectivity information, nnbond lines, each containing two atom numbers Record 9 : Geometry of a molecule (only rigid molecules are currently supported) line 1 - title line 2 to numbat+1 - atom number, x, y, z (cartesian coordinates of atom) Record 10: Force field parameters part 1 - Van der Waals interactions. Record contains numbat lines, each containing atom number, epsilon0 and radius0**2, where epsilon0 is potential well depth (kcal/mol) and radius0 is interatomic distance at the minimum (Angstrom). Record 11: Force field parameters part 2 - partial charges. Record contains numbat lines, each containing atom number and a partial charge in electronic units for this atom, multiplyed by a coeffitient equal to square root of 332.09 in order to have electrostatic energy in kcal/mol. The meaning of the value the particular partial charge depends on the force field chosen. III. Variables and parameters. Please refer to papers (1), (2) and (3) for more detailed description of parameters' meaning. A. Record 2 SEED (double) random number initialization RAND_CONF (logical) start using randomly generated conformations PDBOUT (logical) produce output in PDB format MOL2OUT (logical) produce output in MOL2 format IRST (integer) restart, =0 means fresh start, =1 means restart using _name_.rst ENEDIF (double) when energies of two structures differ less the ENEDIF they are treated as identical IPRINT (integer) level of output from the program (except local minimization), 0-6 IPRT (integer) level of output from the local minimization (SUMSL) RTOLF1 (double) local minimization accuracy parameters used at the final minimizations TOLF1 with the undeformed potential (highest accuracy) RTOLF2 (double) local minimization accuracy parameters used at the local search or TOLF2 turning points of the global optimization procedure (intermediate acuracy) RTOLF3 (double) local minimization accuracy parameters used between the local searches TOLF3 (least accuracy) MCM_TYPE (integer) where and when a local search for minimum deformation should be carried out 0 - no local search 1 - local search on deformed surface 2 - local search on undeformed surface 3 - local search on undeformed and deformed surface MCM_TYPE1 (integer) kind of local search carried out at the lowest deformation (for more details see description of a particular search): 4 - perturbations (PERT_SEARCH) 5 - systematic search 1 (SYS_SEARCH) 6 - systematic search 2 (SYS_SEARCH1) 7 - linear search (LOC_SEARCH) 8 - PERT_SEARCH and LOC_SEARCH 9 - SYS_SEARCH and SYS_SEARCH1 10 - PERT_SEARCH and LOC_SEARCH and SYS_SEARCH and SYS_SEARCH1 INITMODE (integer) initialization: 0 - random-generated structures 1 - structures read from file XXX.rev2ini IGRAND_MCM (integer) after how many iterations (reversing procedures) local search should be carried out NOMAP (logical) program does not use minima mapping (see papers) KUTOFF_1 (double) number of unit cell layers (real space) used for global optimization calculations KUTOFF_R_1 (double) number of unit cell layers (reciprocal space) used for global optimization calculations KUTOFF_2 (double) number of unit cell layers (real space) used for final minimization KUTOFF_R_2 (double) number of unit cell layers (reciprocal space) used for global optimization EPMIN (double) minimum value for randomly generated component of unit cell vector EPMAX (double) maximum value for randomly generated component of unit cell vector IDIPOL_SWITCH (integer) 0 - no unit cell dipole moment correction is added 1 - spherical unit cell dipole moment correction is added INPUTTYPE (integer) only value of 1 is currently supported R_LATTICE_FACTOR (double) EPMIN and EPMAX are multiplied by R_LATTICE_FACTOR WELEC (double) equilibrium radius coefficient in DSM formula for electrostatic interactions BEL_DEF (double) b coefficient in DSM formula for electrostatic interactions MAXREDUCE (integer) maximum nuber of iterations in procedure standarizing unit cell during local minimization (deafult = 100) B. Record 3 TIMESTART (double) initial (maximum) deformation TIMEEND (double) final (minimum) deformation (greater than 0.0d0 for logarithmic scale !!! - in this case it is the lowest non-zero deformation before undeformed surface is used) IGRANDMAX (integer) maximum nuber of iterations (pairs of reversing and rev-reversing procedures) INI_SEARCH (integer) number of minimizations starting from randomly generated structures on maximum deformation at the beginning NUM_THREAD (integer) number of trajectories DECAY (double) constant in exponential for loigarithmic scale of deformation MID_SEARCH (integer) number of local searches carried out for single point during the reversing procedure D_ROT (double) perturbation (in deg) of a Eulerian angle D_TRL (double) perturbation of a position of a center of a molecule D_RST (double) perturbation of a unit cell vector component DD_ROT (double) coefficient defining linear dependence of D_ROT from deformation DD_TRL (double) coefficient defining linear dependence of D_TRL from deformation DD_RST (double) coefficient defining linear dependence of D_RST from deformation DELTATIME (double) smallest (basic) step in deformation IPERT (integer) number of points during a reversing procedure where local search is carried out RAN_SEARCH (logical) local minimization of randomly generated structure is carried out after local searches NUM_REP_THREAD (integer) number of iterations within a macroiteration NUM_THREAD_SS (integer) number of structures stored at the end of macroiteration MODE (integer) type of run: 1 - global optimization 2 - single rev-reversing procedure starting from undeformed surface (structures are read in from file XXX.rev2test) 3 - local minimization of an experimental structure (see tutorial for more details and examples) 4 - local minimization 5 - read restart file XXX.rst and print out as if it was the final result 6 - testing only - do not use SC_TYPE (integer) value of 1 should be used NEW_FIRST (logical) newly located structures will be firs used in local searches (in order of their energies) NUM_SHRINK (integer) number of macroiterations LOW_SEARCH (integer) number of low-energy structures that are chosen for local searches (within LOC_SEARCH) MULT_MAX1 (integer) how many times given low-energy structure is used HIGH_SEARCH (integer) number of high-energy structures that are chosen for local searches (within LOC_SEARCH) MULT_MAX2 (integer) how many times given high-energy structure is used LOC_SEARCH (integer) number of local searches carried out PERT_SEARCH (logical) perturbations will be carried out STEP_SEARCH (logical) linear search will be carried out STEPH (double) step in a linear search MAXSTEP (integer) maximum number of steps in linear search SYS_SEARCH (integer) systematic search in angles will be carried out NSYSPT (integer) number of steps in SYS_SEARCH SYS_SEARCH1 (integer) flipping in angles will be carried out B_DEF (double) b coefficient in DSM formula