The Newopt Baker (eigenvector following) optimiser
- Baker algorithm: method=baker
Most of the newopt arguments described here serve to
enhance the standard method=baker algorithm. The defaults are
chosen so the implementation is as close as possible to the original Baker
algorithm described in J. Comput. Chem., 7, 385-395 (1986).
Argument |
Argument type |
Mandatory |
Default |
To specify |
follow_mode= |
integer |
?R |
?R |
hessian eigenvalue mode to be followed in
a transition state search |
update_mode= |
keyword |
?R |
?R |
flag for refreshing the TS search
direction |
original_modes= |
matrix |
?R |
?R |
matrix containing eigenvectors in
search space |
The follow_mode argument specifies the hessian eigenvector to
be followed in a TS search. The eigenvectors of the hessian are
ordered according to increasing eigenvalue. During a TS search the
actual eigenvector followed may change, as it must finally become the
lowest one. The eigenvector followed is determined on the basis of
overlap of the current hessian eigenvectors with the previous
mode-vector. The mode-vector may or may not be changed from the
initial one during the optimisation (see update_mode).
The default value is 0, to indicate a minimisation.
The update_mode argument specifies whether or not to refresh the
mode-vector on which to base the new mode to follow in a TS search
(see follow_mode). The options are boolean equivalents.
The default value is off, to indicate the
starting mode-vector to be maintained throughout the TS search.
Switching the refreshing on may help in finding transition states that
have a TS mode with a different character from that in the starting structure.
The danger is that the optimisation may go astray and find a different TS
from the one intended.
The original_modes argument specifies a matrix object
containing the definition of the modes that define the search. In this
way, the original starting (or manual input) modes may be used to
define a TS search in a subsequent job (e.g. restart). The default
value is an empty string, in which case the eigenvectors of the
input hessian for the job will be used.
The next series of arguments are grouped here in several categories, according to the
functional enhancement they provide to the standard Baker algorithm.
In the standard Baker algorithm a fixed maximum step-length is
used (the step argument discussed above). The algorithm may be
combined with a trust region to allow larger or smaller steps
according to the quality of the hessian and closeness to quadratic
behaviour.
Argument |
Argument type |
Mandatory |
Default |
To specify |
trust_region= |
keyword |
?R |
?R |
variable step through a trust region algorithm |
stepmin= |
real |
?R |
?R |
minimum step length when using a trust
region algorithm |
stepmax= |
real |
?R |
?R |
maximum step length when using a trust region algorithm |
The trust_region argument specifies the operation of a trust
region. It may be set active or inactive. If active, the
success of the quadratic model controls step argument throughout
the optimisation. The default value is inactive.
The stepmin argument specifies the minimum step length in a
variable step algorithm, i.e. trust_region=active. The default
value is 0.01.
The stepmax argument specifies the maximum step length in a
variable step algorithm, i.e. trust_region=active. The default
value is 0.5.
In the standard Baker algorithm to determine the search step, all
hessian eigenmodes contribute with a weighting according to their
eigenvalue. The following arguments serve to set threshold on the
contributions of modes and to project out certain modes.
Argument |
Argument type |
Mandatory |
Default |
To specify |
thresh_prfo= |
real |
?R |
?R |
threshold for contribution of hessian
eigenmode to prfo step |
conv_prfo= |
real |
?R |
?R |
convergence criterion for prfo step |
contribute_prfo= |
real |
?R |
?R |
hessian eigenvalue criterion for
bracketing scheme |
freeze_soft_modes= |
keyword |
?R |
?R |
switch to freeze out soft modes |
soft_mode= |
real |
?R |
?R |
criterion for setting soft modes |
freeze_modes= |
keyword |
?R |
?R |
switch to freeze out selected modes |
mode_list= |
string |
?R |
?R |
Tcl list of modes to be frozen |
The thresh_prfo argument specifies the threshold for
contributions from hessian eigenmodes to the solution of the prfo
equations. If the difference between the calculated shift-parameter
and the hessian eigenvalue is lower than this threshold, the mode is
not considered. The default value is 1.e-04.
The conv_prfo argument specifies the convergence criterion for
the iterative solution of the shift-parameter. The default value is 1.e-04.
The contribute_prfo argument specifies the hessian eigenvalue
to determine the operation of the bracketing scheme in case of a TS
search. Only if the eigenvalue of the lowest hessian eigenmode to be
minimized along falls below this value the bracketing scheme
operates. The default value is 1.e-04.
The freeze_soft_modes argument specifies the projection of
hessian eigenmodes with near-zero eigenvalues out of the calculated
prfo step. The criterion for determining whether a mode is soft is
given by the soft_mode argument. The default value is no.
The soft_mode argument sets the absolute value below which
eigenvalue modes are considered to be soft. The default value is 1.e-03.
The freeze_modes argument specifies the projection of
selected hessian eigenmodes out of the calculated
prfo step. The selected modes may be specified through the
mode_list argument. The default value is no.
The mode_list argument lists the indices of the hessian
eigenmodes to be frozen when freeze_modes=on. The lowest mode
has index 1. The default values is an empty string.
The following commands serve to manipulate the hessian.
Argument |
Argument type |
To specify |
condition_hessian= |
keyword |
hessian conditioning, i.e.
shifting hessian eigenvalues toward getting the correct inertia |
hessian_shift= |
real |
shift in hessian eigenvalue applied in
hessian conditioning |
recompute_hessian= |
integer or keyword |
recomputation of the hessian every so
many steps |
recompute_method= |
keyword |
type of hessian |
The condition_hessian argument specifies hessian conditioning to
be applied during the optimisation. It is currently valid only with
the method=baker option. Hessian conditioning causes the hessian
to be modified toward having the correct inertia (number of positive, negative and zero
eigenvalues). This is achieved by shifting the eigenvalues of
unwanted negative and zero eigenvalues upward by a certain amount (see
hessian_shift below) and by flipping
positive eigenvalues. The hessian is transformed according to the
shifted eigenvalues. Options are boolean equivalents. The default
is off.
The hessian_shift argument specifies the amount by which unwanted negative and zero hessian
eigenvalues are shifted upward when conditioning the hessian. The
default value is 0.1.
The recompute_hessian argument specifies the number of steps
after which the hessian should be recalculated. It is currently active
only with the method=baker option. The type of hessian may be
specified by the recompute_method argument (see below). Valid
options are an integer value n to indicate recomputation every
n steps and the keyword dimension which sets recompute_hessian to the dimension of the optimisation problem. The
default is 0, i.e. not to recompute the hessian.
The recompute_method argument specifies the method by which to
recompute the hessian if required through the recompute_hessian
argument. It is currently valid only with the method=baker
option. Valid options are given in the table below.
Update options |
To do what |
fd |
finite-difference hessian, one-point formula |
fd2 |
finite-difference hessian, two-point formula |
fde |
finite-differencing of selected hessian eigenmodes,
one-point formula. The
eigenmodes are specified through the var_list argument |
fde2 |
finite-differencing of selected hessian eigenmodes,
two-point formula. The eigenmodes are specified through the var_list argument |
The run_diagnostics argument specifies whether or not to
monitor the progression of the optimisation with regard to the
sensibility of the structure. Valid options are boolean equivalents.
This option may also trigger a full finite-difference recomputation of the
hessian in cases of hessian degradation.
The improve_degraded_hessian argument specifies whether an attempt
should be made to improve a hessian that has degraded through updating,
through finite-differencing the gradient along hessian eigenmodes.
Valid options are boolean equivalents.
The scale_step_when_overlap and scale_factor_when_overlap
arguments specify the scaling up or down of a computed step-length in
cases of large overlap with the previous step. Convergence may be achieved
in a lesser number of steps when these options are applied with care.
The default values are 1.0 (no scaling), and 0.0, respectively;
recommended values are 0.90, and 0.3, respectively. With these
values, the step-vectors is scaled up by 30% if the overlap with the
previous step is more than 0.9, and scaled down by 30% if the overlap
is less than -0.9. Step-size restriction (the step and maxstep
arguments) applies to the scaled step.
The folowing examples demonstrates the use of the Baker algorithm for locating a transition state structure
#
# test saddle point optimisation and frequency calc
#
z_create zmatrix=z {
zmatrix
n
x 1 1.0
x 1 10.0 2 90.0
h1 1 nh1 2 ang1 3 0.0
h2 1 nh1 2 ang1 3 120.0
h3 1 nh1 2 ang1 3 240.0
variables
nh1 1.9
ang1 85.0
}
# Calculate Hessian and store it in h
hessian function=zopt : { zmatrix=z theory=mopac : listing=mopac1.out } \
hessian=h
#look for transition state and store structure in zopt.result
newopt method=baker follow_mode=1 recompute_hessian=5 \
function=zopt : { zmatrix=z theory=mopac : listing=mopac2.out \
result=zopt.result } \
input_hessian=h \
hessian_update=bfgs
# convert TS z matrix to cartesian coordinates for the force program
z_to_c coords=finishc zmatrix=zopt.result
# calculate force constants
force coords=finishc \
theory=mopac : listing=mopac.out \
hessian=h1 \
formula=twopoint
exit
|