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