mirror of
https://github.com/nwchemgit/nwchem.git
synced 2026-07-26 21:25:29 -04:00
automatically be expanded to include useful information about the checkin (including the file's revision number). With the switch over to SVN this was lost because SVN only does this expansion if you explicitly ask for it (for every single file). I have added a script to the contrib directory that sets the appropriate property to get SVN to do this expansion. This script will make it easy to do this every time new source files are added. It is called svn_expand_Id, the script contains some comments that explain the issue and how it addresses this. This checkin sets this property for a subset of the relevant files (trying to commit all files at once failed with svn crashing). In future the script will only affect those files for which the property was not set before.
214 lines
9.2 KiB
TeX
214 lines
9.2 KiB
TeX
%
|
|
% $Id$
|
|
%
|
|
|
|
\label{sec:stepper}
|
|
|
|
The STEPPER module performs a search for critical points on the
|
|
potential energy surface of the molecule defined by input using the
|
|
\verb+GEOMETRY+ directive (see Section \ref{sec:geom}). Since STEPPER
|
|
is {\bf not} the primary geometry optimization module in NWChem the
|
|
compound directive is required; the DRIVER module is the default (see
|
|
Section {\ref{sec:driver}}). Input for this module is
|
|
specified within the compound directive,
|
|
|
|
\begin{verbatim}
|
|
STEPPER
|
|
...
|
|
END
|
|
\end{verbatim}
|
|
|
|
The presence of the STEPPER compound directive automatically turns off
|
|
the default geometry optimization tool DRIVER. Input specified for the
|
|
STEPPER module must appear in the input file {\em after} the
|
|
\verb+GEOMETRY+ directive, since it must know the number of atoms that
|
|
are to be used in the geometry optimization. In the current version
|
|
of NWChem, STEPPER can be used only with geometries that are defined
|
|
in Cartesian coordinates. STEPPER removes translational and
|
|
rotational components before determining the step direction (5
|
|
components for linear systems and 6 for others) using a standard
|
|
Eckart algorithm. The default initial guess nuclear Hessian is the
|
|
identity matrix.
|
|
|
|
The default in STEPPER is to minimize the energy as a function of the
|
|
geometry with a maximum of 20 geometry optimization iterations. When
|
|
this is the desired calculation, no input is required other than the
|
|
STEPPER compound directive. However, the user also has the option of
|
|
defining different tasks for the STEPPER module, and can vary the
|
|
number of iterations and the convergence criteria from the default
|
|
values. The input for these options is described in the following
|
|
sections.
|
|
|
|
\section{{\tt MIN} and {\tt TS} --- Minimum or transition state search}
|
|
|
|
The default is for STEPPER to minimize the energy with respect to the
|
|
geometry of the system. This default behavior may be forced with the
|
|
directive
|
|
\begin{verbatim}
|
|
MIN
|
|
\end{verbatim}
|
|
|
|
STEPPER can also be used to find the transition state by following the
|
|
lowest eigenvector of the nuclear Hessian. This is usually invoked
|
|
by using the \verb+saddle+ keyword on the \verb+TASK+ directive
|
|
(Section \ref{sec:task}), but it may also be selected by specifying
|
|
the directive
|
|
\begin{verbatim}
|
|
TS
|
|
\end{verbatim}
|
|
in the STEPPER input.
|
|
|
|
\section{{\tt TRACK} --- Mode selection}
|
|
|
|
STEPPER has the ability to ``track'' a specific mode during an
|
|
optimization for a transition state search, the user can also have the
|
|
module track the eigenvector corresponding to a specific mode. This
|
|
is done by specifying the directive
|
|
\begin{verbatim}
|
|
TRACK [nmode <integer nmode default 1>]
|
|
\end{verbatim}
|
|
The keyword \verb+TRACK+ tells STEPPER to track the eigenvector
|
|
corresponding to the integer value of \verb+<nmode>+ during a transition
|
|
state walk. (Note: this input is invalid for a minimization walk
|
|
since following a specific eigenvector will not necessarily give the
|
|
desired local minimum.) The step is constructed to go up in energy
|
|
along the \verb+nmode+ eigenvector and down in all other degrees of
|
|
freedom.
|
|
|
|
\section{{\tt MAXITER} --- Maximum number of steps}
|
|
|
|
In most applications, 20 stepper iterations will be sufficient to
|
|
obtain the energy minimization. However, the user has the option of
|
|
specifying the maximum number of iterations allowed, using the input
|
|
line,
|
|
\begin{verbatim}
|
|
MAXITER <integer maxiter default 20>
|
|
\end{verbatim}
|
|
The value specified for the integer \verb+<maxiter>+ defines the maximum
|
|
number of geometry optimization steps. The geometry optimization will
|
|
restart automatically.
|
|
|
|
\section{{\tt TRUST} --- Trust radius}
|
|
|
|
The size of steps that can be taken in STEPPER is controlled by the
|
|
trust radius which has a default value of 0.1. Steps are constrained
|
|
to be no larger than the trust radius. The user has the option of
|
|
overriding this default using the keyword \verb+TRUST+, with the
|
|
following input line,
|
|
\begin{verbatim}
|
|
TRUST <real radius default 0.1>
|
|
\end{verbatim}
|
|
|
|
The larger the value specified for the variable \verb+radius+, the
|
|
larger the steps that can be taken by STEPPER. Experience has shown
|
|
that for larger systems (i.e., those with 20 or more atoms), a value
|
|
of 0.5, or greater, usually should be entered for \verb+<radius>+.
|
|
|
|
\section{{\tt CONVGGM}, {\tt CONVGG} and {\tt CONVGE} --- Convergence criteria}
|
|
|
|
Three convergence criteria can be specified explicitly for the
|
|
STEPPER calculations. The keyword \verb+CONVGGM+ allows the user to
|
|
specify the convergence tolerance for the largest component of the
|
|
gradient. This is the primary convergence criterion, as per the default
|
|
settings, although all three criteria are in effect. this default setting
|
|
is consistent with the other optimizer module DRIVER.
|
|
The input line for \verb+CONVGGM+ has the following form,
|
|
\begin{verbatim}
|
|
CONVGGM <real convggm default 8.0d-04>
|
|
\end{verbatim}
|
|
The keyword \verb+CONVGG+ allows the user to
|
|
specify the convergence tolerance for the gradient norm for
|
|
all degrees of freedom. The input line is of the following form,
|
|
\begin{verbatim}
|
|
CONVGG <real convgg default 1.0d-02>
|
|
\end{verbatim}
|
|
The entry for the real variable \verb+<convgg>+ should be approximately
|
|
equal to the square root of the energy convergence tolerance.
|
|
|
|
The energy convergence tolerance is the convergence criterion for the
|
|
energy difference in the geometry optimization in STEPPER. It can be
|
|
specified by input using a line of the following form,
|
|
\begin{verbatim}
|
|
CONVGE <real convge default 1.0d-04>
|
|
\end{verbatim}
|
|
|
|
|
|
%\section{{\tt FDAT} and {\tt FOPT} --- Initial Guess for Nuclear Hessian}
|
|
%
|
|
%Any initial hessian can be used with the STEPPER module via the ASCII
|
|
%hessian interface. The lower triangular [$3N{\times}(3N+1)/2$] matrix
|
|
%written in any ASCII format (e.g., 1pd20.10) will work but the entries
|
|
%must be one per line. This should be stored in a file called
|
|
%\verb+$file_prefix$+.hess in the current working directory of
|
|
%node zero.
|
|
%
|
|
%There are two other options that stepper allows regarding the initial
|
|
%guess for the nuclear hessian. By specifying a basis set (smaller
|
|
%than the desired basis set) with basis set name of ``fd basis'' (c.f.,
|
|
%Section \ref{sec:basis} users can optimize the geometry using the
|
|
%smaller basis and then generate a finite difference hessian.
|
|
%Alternatively users may generate a finite difference hessian at the
|
|
%current geometry.
|
|
%
|
|
%These actions are invoked with the input
|
|
%\begin{verbatim}
|
|
% FDAT
|
|
%\end{verbatim}
|
|
%This computes the finite difference nuclear hessian at the current
|
|
%geometry using the ``fd basis'' and then begins the optimization using
|
|
%the ``ao basis'' for the particular QM method.
|
|
%
|
|
%The directive
|
|
%\begin{verbatim}
|
|
%FDOPT
|
|
%\end{verbatim}
|
|
%optimizes the geomety of the system in the basis ``fd basis'' using
|
|
%the user specified QM method. The finite difference nuclear hessian
|
|
%is then computed at this optimized geometry for the ``fd basis.'' The
|
|
%optimization using the ``ao basis'' for the particular QM method is
|
|
%then started.
|
|
%
|
|
|
|
|
|
\section{Backstepping in STEPPER}
|
|
\label{sec:stepper:backstep}
|
|
If a step taken during the optimization is too large (e.g., the step
|
|
causes the energy to go up for a minimization or down for a transition
|
|
state search), the STEPPER optimizer will automatically ``backstep''
|
|
and correct the step based on information prior to the faulty step.
|
|
If you have an optimization that ``backsteps'' frequently then the
|
|
initial trust radius should most likely be decreased.
|
|
|
|
|
|
|
|
\section{Initial Nuclear Hessian Options}
|
|
Stepper uses a modified Fletcher-Powell algorithm to find the
|
|
transition state or energy minimum on the potential energy
|
|
hypersurface. There are two files left in the user's permanent
|
|
directory that are used to provide an initial hessian to the critical
|
|
point search algorithm. If these files do not exist then the default
|
|
is to use a unit matrix as the initial hessian. Once Stepper executes
|
|
it generates a binary dump file by the name of \verb+name.stpr41+
|
|
which will be used on all subsequent stepper runs and modified with
|
|
the current updated hessian. The default file prefix is the ``name''
|
|
that is used (c.f., \ref{sec:start}). It also stores the information
|
|
for the last valid step in case the algorithm must take a ``backstep''
|
|
(c.f., \ref{sec:stepper:backstep}). This file is the working data
|
|
store for all stepper-based optimizations. This file is never deleted
|
|
by default and is the {\bf\it first} source of an initial hessian.
|
|
The second source of an inital hessian is an ascii file that contains
|
|
the lower triangular values of the initial hessian. This is stored in
|
|
file \verb+name.hess+, where ``name'' is again the default file
|
|
prefix. This is the {\bf\it second} source of an initial hessian and
|
|
is the method used to incorporate an initial hessian from any other
|
|
source (e.g., another {\it ab initio} code, a molecular mechanics
|
|
code, etc.,). To get a decent starting hessian at a given point you
|
|
can use the task specification {\tt task scf hessian}, with a smaller
|
|
basis set, which will by default generate the {\tt name.hess} file.
|
|
Then you may define your basis set of choice and proceed with the
|
|
optimization you desire.\footnote{If you have done a geometry
|
|
optimization and hessian generation in the same input deck using a
|
|
small basis set, you must make sure you delete the {\tt name.stpr41}
|
|
file since stepper will by default use that hessian and not the one in
|
|
the {\tt name.hess} file}
|
|
|