Opt
Introduction
The opt command performs an internal ( i.e. z-matrix )
co-ordinate optimisation.
This script saddleinvokes the opt script twice, one
to numerically evaluate the hessian, and once to search for the
transitions state. All arguments are passed to opt.
Command Line Arguments
Argument |
Argument type |
Mandatory |
Default |
To specify |
zmatrix= |
Zmatrix tag
|
Yes |
- |
geometry and optimisation variables |
theory= |
Energy/Gradient code
|
yes |
- |
what type of calculation to perform for energy and gradient |
initial_hessian= |
Matrix tag
|
No |
None |
initial internal coordinate hessian |
final_hessian= |
Matrix tag
|
No |
opt.hout |
final internal coordinate hessian |
varkey= |
Tcl List
of integers |
no |
all |
control integers for numerical hessian evaluation |
result= |
file |
no |
opt.pun |
where to place optimisation history and final structure |
zout= |
Zmatrix tag
|
no |
opt.zout |
resultant optimised zmatrix |
history= |
file |
no |
none |
history file (from result= option of a previous incomplete run) |
mode= |
keyword |
no |
opt |
optimisation mode, can be one of: ts (saddle point), opt (minimisation) force (numeric force constants) |
maxlin |
integer |
no |
200 |
the maximum number of line searches allowed |
maxstep |
integer |
no |
200 |
the maximum number of energy evaluations allowed |
gdiis= |
integer |
no |
0 |
use GDIIS , specify the number of line searches before GDIIS |
list_option= |
keyword |
no |
full |
set to full, quiet, verbose, or debug |
The zmatrix argument specifies a zmatrix definition file, all parameters
specified as variables within this file will be optimised.
The result argument specifies a file to contain the history and result
of the optimisation. It may be used in subsequent restarts. It also contains the
internal coordinate hessian in the case where mode=force is specified.
The initial_hessian argument specifies a file containing an initial internal
coordinate hessian. The internal hessian matrix at the end of the calculations
is saved if the final_hessian argument is specified.
The mode argument specifies the type of run. It should be ommitted
for an optimisation (using the BFGS algorithm), set to ts for a
transition state search, and set to force for a numerical
internal coordinate second derivative evaluation. The transition state
mode should usually be preceeded by a mode=force calculation, as implemented
by the saddle routine (below).
The history argument forces a restart optimisation, and specifies the
file containing the optimisation history. This will have been generated in
a previous run, in the file specified by result= argument.
The maxlin argument specifies the maximum number of line searches
allowed in the optimisation. The optimiser will terminate with a return
code 4 if this limit is exceeded. The final hessian and z-matrix will
be output as if the optimisation had converged. There is also a second
limit (maxstep) that controls the number of steps (energy evaluations)
that are performed. Should this limit be reached ChemShell (not just the
optimiser) will abort, and no final z-matrix and hessian generated. It is
recommended that the maxlin argument is used to terminate the
optimisation if required.
The varkey argument may be used when the numerical evaluation of some,
but not all, hessian elements is required. This may occur, for example, in the
optimisation of a transition state of a system with many degrees of freedom.
If the reaction coordinate is known to be well represented by a small number
of the optimisation variables, numerical calculation of the remaining
hessian elements may be omitted. A Tcl list containing one integer for
each variable must be supplied. Use a value of 0 to denote that no
attempt to compute the hessian is required, and a value of 3
to denote that a gradient calculation should be performed to estimate
diagonal and off-diagonal hessian elements. ( The integer is the same
as the TYPE keyword that may be used for the GAMESS-UK Z-matrix variables).
The gdiis argument specifies that the geometrical DIIS proceedure be used,
the integer value provided will specify the number of line searches (or Miller
steps in the case of a transition-state optimisation) that will be performed before
GDIIS is started. This option is not fully tested, but does work for simple
test cases.
Any arguments required for the codes used to generate the energy and gradients
for opt must be passed through to those codes using the
colon (:) notation.
E.g. for a geometry optimisation using GAMESS-UK with a dzp basis set (for further
details of GAMESS-UK options vide infra).
opt zmatrix=z theory=gamess:basis=dzp result=res.pun
Valid settings for theory in the current version are
gamess (for GAMESS-UK HF-SCF calculation),
mopac, mm, and hybrid.
It is not intended in this section to describe fully the procedures
for transition state optimisation, but simple to give a few examples
illustrating the way ChemShell functionality may be employed.
We will illustrate the functionality with a simple search for the
inversion TS of ammonia.
Here, the varkey= argument indicates that only the hessian
elements associated with the second z-matrix variable (xnh) are to be
estimated by finite-difference.
#
# mopac transition state for NH3 inversion
#
z_create zmatrix=z {
zmatrix angstrom
n
x n 1.0
h1 n nh x xnh
h2 n nh x xnh h1 120.
h3 n nh x xnh h1 240.
variables
nh 1.0
xnh 75.0
end
}
#
set t { theory=mopac : listing=mopac.out }
opt $t mode=force \
zmatrix=z \
varkey= { 0 3 } \
final_hessian=h
#
opt $t mode=ts \
zmatrix=z \
initial_hessian=h
#
Where a good initial hessian is known, it may be input explicitly
using the command to create a matrix as follows. Here we assume the
hessian matrix has the form
1.0 0.0
0.0 -1.0
(which in this case has the correct structure).
#
# mopac transition state for NH3 inversion
# guessed hessian
#
z_create zmatrix=z {
zmatrix angstrom
n
x n 1.0
h1 n nh x xnh
h2 n nh x xnh h1 120.
h3 n nh x xnh h1 240.
variables
nh 1.0
xnh 75.0
end
}
#
create_matrix matrix=myhess \
name= "initial hessian" \
dimensions= { 2 2 } \
datatype=real \
{ 1 0 0 -1 }
#
opt mode=ts \
initial_hessian=myhess \
final_hessian=hout \
zmatrix=z \
theory=mopac : listing=mopac.out
#
Bugs and Problems
- Jorgensen-Simons optimisation (algorithm=js and js-rfo) are
not documented.
|