1% 2% $Id$ 3% 4 5\label{sec:stepper} 6 7The STEPPER module performs a search for critical points on the 8potential energy surface of the molecule defined by input using the 9\verb+GEOMETRY+ directive (see Section \ref{sec:geom}). Since STEPPER 10is {\bf not} the primary geometry optimization module in NWChem the 11compound directive is required; the DRIVER module is the default (see 12Section {\ref{sec:driver}}). Input for this module is 13specified within the compound directive, 14 15\begin{verbatim} 16 STEPPER 17 ... 18 END 19\end{verbatim} 20 21The presence of the STEPPER compound directive automatically turns off 22the default geometry optimization tool DRIVER. Input specified for the 23STEPPER module must appear in the input file {\em after} the 24\verb+GEOMETRY+ directive, since it must know the number of atoms that 25are to be used in the geometry optimization. In the current version 26of NWChem, STEPPER can be used only with geometries that are defined 27in Cartesian coordinates. STEPPER removes translational and 28rotational components before determining the step direction (5 29components for linear systems and 6 for others) using a standard 30Eckart algorithm. The default initial guess nuclear Hessian is the 31identity matrix. 32 33The default in STEPPER is to minimize the energy as a function of the 34geometry with a maximum of 20 geometry optimization iterations. When 35this is the desired calculation, no input is required other than the 36STEPPER compound directive. However, the user also has the option of 37defining different tasks for the STEPPER module, and can vary the 38number of iterations and the convergence criteria from the default 39values. The input for these options is described in the following 40sections. 41 42\section{{\tt MIN} and {\tt TS} --- Minimum or transition state search} 43 44The default is for STEPPER to minimize the energy with respect to the 45geometry of the system. This default behavior may be forced with the 46directive 47\begin{verbatim} 48 MIN 49\end{verbatim} 50 51STEPPER can also be used to find the transition state by following the 52lowest eigenvector of the nuclear Hessian. This is usually invoked 53by using the \verb+saddle+ keyword on the \verb+TASK+ directive 54(Section \ref{sec:task}), but it may also be selected by specifying 55the directive 56\begin{verbatim} 57 TS 58\end{verbatim} 59in the STEPPER input. 60 61\section{{\tt TRACK} --- Mode selection} 62 63STEPPER has the ability to ``track'' a specific mode during an 64optimization for a transition state search, the user can also have the 65module track the eigenvector corresponding to a specific mode. This 66is done by specifying the directive 67\begin{verbatim} 68 TRACK [nmode <integer nmode default 1>] 69\end{verbatim} 70The keyword \verb+TRACK+ tells STEPPER to track the eigenvector 71corresponding to the integer value of \verb+<nmode>+ during a transition 72state walk. (Note: this input is invalid for a minimization walk 73since following a specific eigenvector will not necessarily give the 74desired local minimum.) The step is constructed to go up in energy 75along the \verb+nmode+ eigenvector and down in all other degrees of 76freedom. 77 78\section{{\tt MAXITER} --- Maximum number of steps} 79 80In most applications, 20 stepper iterations will be sufficient to 81obtain the energy minimization. However, the user has the option of 82specifying the maximum number of iterations allowed, using the input 83line, 84\begin{verbatim} 85 MAXITER <integer maxiter default 20> 86\end{verbatim} 87The value specified for the integer \verb+<maxiter>+ defines the maximum 88number of geometry optimization steps. The geometry optimization will 89restart automatically. 90 91\section{{\tt TRUST} --- Trust radius} 92 93The size of steps that can be taken in STEPPER is controlled by the 94trust radius which has a default value of 0.1. Steps are constrained 95to be no larger than the trust radius. The user has the option of 96overriding this default using the keyword \verb+TRUST+, with the 97following input line, 98\begin{verbatim} 99 TRUST <real radius default 0.1> 100\end{verbatim} 101 102The larger the value specified for the variable \verb+radius+, the 103larger the steps that can be taken by STEPPER. Experience has shown 104that for larger systems (i.e., those with 20 or more atoms), a value 105of 0.5, or greater, usually should be entered for \verb+<radius>+. 106 107\section{{\tt CONVGGM}, {\tt CONVGG} and {\tt CONVGE} --- Convergence criteria} 108 109Three convergence criteria can be specified explicitly for the 110STEPPER calculations. The keyword \verb+CONVGGM+ allows the user to 111specify the convergence tolerance for the largest component of the 112gradient. This is the primary convergence criterion, as per the default 113settings, although all three criteria are in effect. this default setting 114is consistent with the other optimizer module DRIVER. 115The input line for \verb+CONVGGM+ has the following form, 116\begin{verbatim} 117 CONVGGM <real convggm default 8.0d-04> 118\end{verbatim} 119The keyword \verb+CONVGG+ allows the user to 120specify the convergence tolerance for the gradient norm for 121all degrees of freedom. The input line is of the following form, 122\begin{verbatim} 123 CONVGG <real convgg default 1.0d-02> 124\end{verbatim} 125The entry for the real variable \verb+<convgg>+ should be approximately 126equal to the square root of the energy convergence tolerance. 127 128The energy convergence tolerance is the convergence criterion for the 129energy difference in the geometry optimization in STEPPER. It can be 130specified by input using a line of the following form, 131\begin{verbatim} 132 CONVGE <real convge default 1.0d-04> 133\end{verbatim} 134 135 136%\section{{\tt FDAT} and {\tt FOPT} --- Initial Guess for Nuclear Hessian} 137% 138%Any initial hessian can be used with the STEPPER module via the ASCII 139%hessian interface. The lower triangular [$3N{\times}(3N+1)/2$] matrix 140%written in any ASCII format (e.g., 1pd20.10) will work but the entries 141%must be one per line. This should be stored in a file called 142%\verb+$file_prefix$+.hess in the current working directory of 143%node zero. 144% 145%There are two other options that stepper allows regarding the initial 146%guess for the nuclear hessian. By specifying a basis set (smaller 147%than the desired basis set) with basis set name of ``fd basis'' (c.f., 148%Section \ref{sec:basis} users can optimize the geometry using the 149%smaller basis and then generate a finite difference hessian. 150%Alternatively users may generate a finite difference hessian at the 151%current geometry. 152% 153%These actions are invoked with the input 154%\begin{verbatim} 155% FDAT 156%\end{verbatim} 157%This computes the finite difference nuclear hessian at the current 158%geometry using the ``fd basis'' and then begins the optimization using 159%the ``ao basis'' for the particular QM method. 160% 161%The directive 162%\begin{verbatim} 163%FDOPT 164%\end{verbatim} 165%optimizes the geomety of the system in the basis ``fd basis'' using 166%the user specified QM method. The finite difference nuclear hessian 167%is then computed at this optimized geometry for the ``fd basis.'' The 168%optimization using the ``ao basis'' for the particular QM method is 169%then started. 170% 171 172 173\section{Backstepping in STEPPER} 174\label{sec:stepper:backstep} 175If a step taken during the optimization is too large (e.g., the step 176causes the energy to go up for a minimization or down for a transition 177state search), the STEPPER optimizer will automatically ``backstep'' 178and correct the step based on information prior to the faulty step. 179If you have an optimization that ``backsteps'' frequently then the 180initial trust radius should most likely be decreased. 181 182 183 184\section{Initial Nuclear Hessian Options} 185Stepper uses a modified Fletcher-Powell algorithm to find the 186transition state or energy minimum on the potential energy 187hypersurface. There are two files left in the user's permanent 188directory that are used to provide an initial hessian to the critical 189point search algorithm. If these files do not exist then the default 190is to use a unit matrix as the initial hessian. Once Stepper executes 191it generates a binary dump file by the name of \verb+name.stpr41+ 192which will be used on all subsequent stepper runs and modified with 193the current updated hessian. The default file prefix is the ``name'' 194that is used (c.f., \ref{sec:start}). It also stores the information 195for the last valid step in case the algorithm must take a ``backstep'' 196(c.f., \ref{sec:stepper:backstep}). This file is the working data 197store for all stepper-based optimizations. This file is never deleted 198by default and is the {\bf\it first} source of an initial hessian. 199The second source of an inital hessian is an ascii file that contains 200the lower triangular values of the initial hessian. This is stored in 201file \verb+name.hess+, where ``name'' is again the default file 202prefix. This is the {\bf\it second} source of an initial hessian and 203is the method used to incorporate an initial hessian from any other 204source (e.g., another {\it ab initio} code, a molecular mechanics 205code, etc.,). To get a decent starting hessian at a given point you 206can use the task specification {\tt task scf hessian}, with a smaller 207basis set, which will by default generate the {\tt name.hess} file. 208Then you may define your basis set of choice and proceed with the 209optimization you desire.\footnote{If you have done a geometry 210optimization and hessian generation in the same input deck using a 211small basis set, you must make sure you delete the {\tt name.stpr41} 212file since stepper will by default use that hessian and not the one in 213the {\tt name.hess} file} 214 215