The HDLC Optimiser

HDLCOpt is a deprecated module and will be removed in future versions of ChemShell.

Please use the DL-FIND optimiser instead.

The command line arguments for hdlcopt are kept here for reference.

The hdlcopt command

Command line arguments

Argument Argument type Mandatory Default To specify
theory= string no mopac Module used to compute energy and forces
coords= Fragment tag yes none Initial configuration of the system
result= Fragment tag no hdlcopt.result Optimised coordinates
residues= Tcl List no none Definition of residues
memory= integer no see note 1 Number of BFGS steps to store for L-BFGS
update_procedure= Tcl proc no none Procedure to execute after each geometry update, typically used for graphics, see examples section
maxstep= real no 1.0 Maximum step size
contyp= integer no 0 Connectivity type, 0: primitive internals, 1: total connection
constraints= Tcl List no none Constraints specification
toler= real no 0.00045 Maximum gradient component convergence criterion
icconv= integer no 0 Convergence criteria (0: HDLC/Cartesian gradient and displacement, 1: Cartesian gradient)
list_option= Output keyword no medium how much output to generate
printl= integer no 0 Print level (alternative to list_option)
reghdl= integer no 0 Interval in optimisation steps to restart the optimiser, regenerate HDLC, and update the pair list.
cfact= real no see note 2 Scaling factor for the Cartesians when constructing HDLC
maxfun= integer no 1000000 Maximum number of function and gradient evaluations
active_atoms= Tcl List no all atoms Specification of the atoms to be optimised (see note 3)
frozen= Tcl List no none Specification of the atoms to be frozen. Complementary to active_atoms (see note 3)
pdb_file= filename no none If specified, a pdb file is written with the residue specification as used in the coordinate conversion. Useful for setting up the residue list.
mstart= integer no 0 startup procedure:
0 start up from scratch, no checkpoint used at all
1 start up using coordinates from checkpoint file
2 start up using coordinates, resn and ctrl from checkpoint file
3 continue using the complete optimiser status from checkpoint
dump= integer no 0 dump the memory (write checkpoint file of the optimiser ) every dump= cycles (0: never)
TS-search specific options
core= string no none Specify the residue name of the reaction core, in which a TS search is performed. Specification of core or core_atoms will lead to a TS search.
core_atoms= Tcl List no none Specify the atoms forming the reaction core, in which a TS search is performed. Specification of core or core_atoms will lead to a TS search.
nvar= integer no 0 Number of degrees of freedom to be treated by P-RFO. Obsolete: use core or core_atoms now!
mode= integer no 1 Hessian mode to search in P-RFO
ctfirst= integer no 0 Connectivity type of the first HDLC residue (0: primitive internals, 1: total connection, 2: Cartesians, 3: pure DLC (primitive internals only) 4: total connection scheme (internals only)). This is of use for TS search, as the core is always the first residue.
recalc= integer no 0 Interval for recomputing the finite-difference Hessian (Number of Hessian updates before it is recalculated). Use recalc=-1 for no hessian calculation, recalc=0 for calculating it only at the start. Actually, reghdl is the better option for this task.
updmth= integer no see note 5 Hessian update method
lockon= integer no 0 Lock the Hessian eigenmode (0: mode switching, 1: mode lock)
delta= real no 0.01 Displacement for calculating the finite-difference Hessian. Atomic units (Bohr) if Cartesians or the total connection scheme are used (ctfirst= 1 or 2), otherwise undefined (but close to atomic) units
Options specific to micro-iterative QM/MM search
inner_atoms= Tcl List no none List of atoms in the inner part (should contain all QM atoms). Specification of inner_atoms or inner_residues will lead to a microiterative QM/MM optimisation.
inner_residues= Tcl List no none List of residues in the inner part (should contain all QM atoms). Specification of inner_atoms or inner_residues will lead to a microiterative QM/MM optimisation.
include_res= Boolean no false Only used when inner_atoms is specified: include the whole residue into the inner region if at least one of its atom is included in inner_atoms. This changes the number of atoms in the inner region.
mcore= Boolean no - If true, microiterations (outer region) are done by representing the QM part by esp charges. This only makes sense with hybrid QM/MM calculations. At the moment it only works with qm_therory being mndo, gamess, or turbomole. In these cases, the default is true, otherwise false.
toler_ratio= real no 10 The ratio between the tolerance (convergence criterion) of the macro-iterations and the micro-iterations. Numbers > 1 mean tighter convergence for the micro-iterations (recommended).

Note 1: The lower value of either 3*natoms and 40 is taken as default

Note 2: Default: 1/(number of DF in the residue), cfact>0: cfact is used, cfact<0: -cfact/(number of DF in the residue) is used

Note 3: If residues are specified, they are intersected with active_atoms, and the complement of active_atoms is added as residue "fixed". If no residues are specified, a residues list containing the complement of active_atoms as residue "fixed" is created

Note 5: The default depends on the parameter mode: if mode=0, updmth=2, else updmth=1

Update_procedure (example)

An example of a tcl procedure called by update_procedure= hdlcopt_update is
proc hdlcopt_update { args } {
    parsearg update {coords} $args
    write_xyz coords=$coords file=update.xyz
    exec cat update.xyz >> optimise.xyz
    end_module
}
It writes a file optimise.xyz, which is a trajectory of the optimisation.

If you want the coordinate and result files to be updated each step, include the statement flush_all_objects in the update_procedure.


Practical hints

  • Storage problems:
    • Lower the number of remembered steps (memory=...)
    • Move atoms from the reaction core to the environment (nvar=... and residues=...)
    • Use Cartesian coordinates for the bulk of a large system, especially for the atoms far from the QM region in a QM/MM calculation (residues=...)
  • Convergence problems:
    • HDLCopt reacts very sensitively to an inconsistent energy / gradient pair. The result is no or very slow convergence
    • Make sure you provided the option keywords=precise to MOPAC
    • MNDO provides generally a very accurate gradient
    • Force fields: make sure that the MM code never updates the nonbonded pair list on its own (see below)
  • Definition of residues:
    • Use the argument residues=... and the commands for the manipulation of residue membership lists
    • Recommended size of a residue is 3 to 50 atoms
    • The atoms of the residue named "fixed" are kept fixed
    • The argument active_atoms=... can be used if most of the atoms are to be kept fixed
    • If no core= or core_atoms= are given, the first residue represents the reaction core in a TS search
    • Try to cut single bonds only
    • Try to avoid cutting rings and other crosslinked subsystems
    • Do not put more than one molecule into a residue
    • Use the PDB fragmentation for biomolecules
  • Number of remembered L-BFGS steps (memory=...):
    • Never exceed the number of steps between two restarts (reghdl=..., default: never restart)
    • For force fields, a value between 5 and 20 is sufficient
    • For a potential from electronic structure calculations, values up to the number of degrees of freedom make sense, values up to 200 are recommended
  • Reaction core (nvar=...):
    • Including the atoms up to the second or third neighbours of the transferred atoms (approx. 6 to 20 atoms) into the reaction core is generally sufficient
    • Use the total connection scheme for the reaction core (ctfirst=1) and primitive internal coordinates for the environment (contyp=0)
    • Don't forget: the first residue defined in the residue membership list (residues=...) is the reaction core. nvar=... must be three times the number of atoms in the first residue
  • HDLC breakdowns (the G matrix is only diagonalised at start and restarts. Otherwise, no updated Hessian could be used):
    • The default value of the scaling factor of the Cartesian coordinates when delocalising cfact=... is inappropriate for large systems, since the external coordinates play an important role for a fragment surrounded by other fragments. Try using values between 0.25 and 1. Both efficiency and likeliness of coordinate breakdowns increase with decreasing values of cfact=...
    • If the HDLC of the same residue persistently break down, the optimiser automatically removes this residue from the list. For subsequent optimisations, e.g. a transition state search, it can be removed manually from the list (residues=...) using the command inlist)
    • For large systems, consider doing the first 200 to 1000 optimisation steps (maxfun=200) in Cartesian coordinates (no residues=... argument) or try using frequent restarts (reghdl=10) if starting very far from a minimum
  • Pair list update (reghdl=...):
    • At each restart of hdlcopt, the pair list for nonbonded interactions is updated automatically
    • Force regular pair list updates using (reghdl=...). Recommended intervals are between every 20 and every 200 steps
    • Under no circumstance may the MM code update its pairlist on its own. This is especially important when using an external force field code such as CHARMM (set inbfrq to zero). The GROMOS interface automatically prevents pair list updates unless forced by reghdl=...

Related reading

For a more complete set of references, please look up the article

S. R. Billeter, A. J. Turner and W. Thiel, Linear scaling geometry optimization and transition state search in hybrid delocalised internal coordinates, Phys. Chem. Chem. Phys., 2 (2000), 2177-2186.

  • HDLCopt:
    • S. R. Billeter, A. J. Turner and W. Thiel, Linear scaling geometry optimization and transition state search in hybrid delocalised internal coordinates, Phys. Chem. Chem. Phys., 2 (2000), 2177-2186.
  • L-BFGS:
    • J. Nocedal, Updating quasi-Newton matrices with limited storage, Mathematics of Computation, 35 (1980), 773-782.
    • D. C. Liu and J. Nocedal, On the limited memory BFGS method for large scale optimization, Math. Prog., 45 (1989), 503-528.
  • P-RFO:
    • A. Banerjee, N. Adams, J. Simons and Ron Shepard, Search for Stationary Points on Surfaces, J. Phys. Chem., 89 (1985), 52-57.
    • J. Baker, An Algorithm for the Location of Transition States, J. Comput. Chem. 7 (1986), 385-395.
  • Microiterative optimisation:
    • A. J. Turner, V. Moliner and I. H. Williams, Transition-state structural refinement with GRACE and CHARMM: Flexible QM/MM modelling for lactate dehydrogenase, Phys. Chem. Chem. Phys. 1 (1999), 1323-1331.
    • S. R. Billeter, A. J. Turner and W. Thiel, Linear scaling geometry optimization and transition state search in hybrid delocalised internal coordinates, Phys. Chem. Chem. Phys., 2 (2000), 2177-2186.
  • Internal coordinates:
    • H. B. Schlegel, Adv. Chem. Phys. 67 (1987), 249.
    • P. Pulay and G. Fogarasi, Geometry optimization in redundant internal coordinates, J. Chem. Phys. 96 (1992), 2856-2867.
    • J. Baker, Techniques for Geometry Optimization: A Comparison of Cartesian and Natural Internal Coordinates, J. Comp. Chem. 14 (1993), 1085-1100.
    • C. Peng, P. Y. Ayala, H. B. Schlegel and M. J. Frisch, Using Redundant Internal Coordinates to Optimize Equilibrium Geometries and Transition States, J. Comput. Chem. 17 (1996), 49-56.
    • J. Baker, A. Kessi and B. Delley, The generation and use of delocalized internal coordinates in geometry optimization, J. Chem. Phys. 105 (1996), 192-212.
    • O. Farkas and H. B. Schlegel, Methods for geometry optimization of large molecules. I. An O(N-2) algorithm for solving systems of linear equations for the transformation of coordinates and forces, J. Chem. Phys. 109 (1998), 7100-7104.
    • M. v. Arnim and R. Ahlrichs, Geometry optimization in generalized natural internal coordinates, J. Chem. Phys. 111 (1999), 9183-9190.
    • J. Baker, D. Kinghorn and P. Pulay, Geometry optimization in delocalized internal coordinates: An efficient quadratically scaling algorithm for large molecules, J. Chem. Phys. 110 (1999), 4986-4991.




This manual was generated using htp, an HTML pre-processor Powered by htp