This submodule is driver for geometry optimizations, although we note that the *WALK module contains another second-order gometry optimization driver- . The *MINIMIZE module contains both first and second-order methods for energy minimization (geometry optimization). Most of the Hessian updating schemes were taken from ref.[63] and [8]. The implementation of redundant internal coordinates follows the work done by Peng et al. []. In addition to this, several keywords for VRML visualization are included [64].
Use default first-order method . This means that the BFGS update will be used, and the optimization carried out in redundant internal coordinates . Same effect as the combination of the two keywords .BFGS and .REDINT .
Use default second-order method . The level-shifted Newton method and Cartesian coordinates are used. Identical to specifying the two keywords .NEWTON and .CARTES .
Activates the convergence criteria of Baker [65]. The minimum is then said to be found, when the largest element of the gradient vector (in Cartesian or redundant internal coordinates) falls below 3.0D-4 and either the energy change from the last iteration is less than 1.0D-6 or the largest element of the predicted step vector is less 3.0D-4.
Specifies the use of a first-order method with the Broyden-Fletcher-Goldfarb-Shanno (BFGS) update formula for optimization. This is the preferred first-order method.
Indicates that Cartesian coordinates should be used in the optimization. This is the default for second-order methods.
READ(LUCMD,*) ICONDI
Set the number of convergence criteria that should be fulfilled before convergence occurs. There are three different convergence thresholds, one for the energy , one for the gradient norm and one for the step norm . The possible values for this variable is therefore between 1 and 3. Default is 2. The three convergence thresholds can be adjusted with the keywords .ENERGY , .GRADIE and .STEP T .
Specifies that a first-order method with the Davidon-Fletcher-Powell (DFP) update formula should be used for optimization.
READ(LUCMD,*) DISPLA
Read one more line containing the norm of the displacement vector to
be used during numerical evaluation of the molecular gradient, as is
needed when doing geometry optimizations with CI or MP2 wave
functions. Default is a.u.
READ(LUCMD,*) THRERG
Set the convergence threshold for the energy. This is one of the three convergence thresholds (the keywords .GRADIE and .STEP T control the other two). Default value is the maximum of 1.0D-6 and two times the threshold for the wave function gradient.
READ(LUCMD,*) THRGRD
Set the convergence threshold for the gradient norm. This is one of the three convergence thresholds (the keywords .ENERGY and .STEP T control the other two). Default value is the maximum of 1.0D-6 and two times the threshold for the wave function gradient.
Specifies that the Hessian should be reinitialized every time the norm of the gradient is larger than norm of the gradient two iterations earlier. This keyword should only be used when it's difficult to obtain a good approximation to the Hessian during optimization. Only applies to first-order methods .
Specifies that the initial Hessian should be
read from the file
DALTON.HES
. This applies to first-order methods, and the
Hessian in the file must have the correct dimensions. This option
overrides other options for the initial Hessian.
Each time a Hessian is calculated or updated ,
it's written to this
file. If an optimization is interrupted, it can be restarted with the
last geometry and the Hessian in DALTON.HES
, minimizing the
loss of information. Another useful possibility, is to transfer
the Hessian from a calculation on the same molecule with another
(smaller) basis. Finally, one can go in and edit the file directly to
set up a specific forcefield.
Specifies that the initial Hessian should be diagonal in redundant internal coordinates, and it is then transformed to Cartesian coordinates. This only applies to first-order optimizationsindexfirst-order optimization in Cartesian coordinates .
READ(LUCMD,*) EVLINI
The default initial Hessian for first-order minimizations is the identity matrix when Cartesian coordinates are used, and a diagonal matrix when redundant internal coordinates are used. If .INITEV is used all the diagonal elements (and therefore the eigenvalues) are set equal to the value EVLINI. This option only has effect when first-order methods are used and .INITHE and .HESFIL are non-present.
Specifies that the initial Hessian should be calculated (analytical Hessian), thus yielding a first step that is identical to second-order methods. This provides an excellent starting point for first-order methods, but should only be used when the Hessian can be calculated within a reasonable amount of time. It has only effect for first-order methods and overrides the keywords .INITEV and .INIRED . It has no effect when .HESFIL has been specified.
Specifies a interactive run . The energy, gradient norm , step length and Hessian index is then written to the unit LUERR(=0) in each iteration, allowing easy monitoring of the optimization.
READ(LUCMD,*) ITRMAX
Read the maximum number of geometry iterations . Default value is 25.
READ(LUCMD,*) MAXREJ
Read maximum number of rejected steps in each iterations, default is 5.
Specifies that a second-order level-shifted Newton method should be used for optimization. This is the default method.
Disables breaking of symmetry . The geometry will be optimized within the given symmetry, even if a non-zero Hessian index is found. The default is to let the symmetry be broken until a minimum is found with a Hessian index of zero. This option only has effect when second-order methods are used.
When first-order methods are used, the Hessian is reinitialized every time the Hessian index becomes non-zero (due to negative eigenvalues). This guarantees that the Hessian describes a minimum, but valuable information gathered in the Hessian may be lost.
.NOREIN disables this reinitialization, relying on the optimization method to restore the Hessian to its correct structure (by locating the area near the minimum). This option is particularly useful in conjunction with the keyword .INITHE , as it is not meaningful to calculate the Hessian at the initial geometry, then reset it to the identity matrix because some negative eigenvalue showed up.
Turns off the trust radius , so that a full Newton step is taken in each iteration. This should be used with caution, as global convergence is no longer guaranteed. If long steps are desired, it is safer to adjust the initial trust radius and the limits for the actual/predicted energy ratio.
READ(LUCMD,*) NUMPRE DO 144 I = 1, NUMPRE READ(LUCMD,*) PREBTX(I) 144 CONTINUE
First we read the number of basis sets that should be used for preoptimization , then we read those basis set names as strings. These sets will be used for optimization in the order they appear in the input. One should therefore place the smaller basis at the top. After the preoptimization, optimization is performed with the basis specified in the molecule input file.
READ(LUCMD,*) IPRINT
Set print level for this module. Read one more line containing print level. Default value is 0.
Specifies that a first-order method with the Powell-symmetric-Broyden (PSB) update formula should be used for optimization.
Specifies that a first-order method with the rank one update formula should be used for optimization.
Specifies that redundant internal coordinates should be used in the optimization. This is the default for first-order methods .
Specifies that the Hessian should be reinitialized after every rejected step , as a rejected step indicates that the Hessian models the true potential surface poorly. Only applies to first-order methods .
Specifies that a first-order method with Schlegel's updating scheme [66] should be used. This makes use of all previous displacements and gradients, not just the last, to update the Hessian.
READ(LUCMD,*) SPBSTX
Read a string containing the name of a basis set. When the geometry has converged, a single-point energy will be calculated using this basis set .
Specifies that the first-order steepest descent method should be used. No update is done on the Hessian, so the optimization will be guided by the gradient alone. The ``pure'' steepest descent method is obtained when the Hessian is set equal to the identity matrix. Each step will then be the negative of the gradient vector, and the convergence towards the minimum will be extremely slow. However, this option can be combined with other initial Hessians in Cartesian or redundant internal coordinates , giving a method where the main feature is the lack of Hessian updates.
READ(LUCMD,*) THRSTP
Set the convergence threshold for the step norm. This is one of the three convergence thresholds (the keywords .ENERGY and .GRADIE control the other two). Default value is 1.0D-6.
READ(LUCMD,*) THRSYM
Determines the gradient threshold for breaking of the symmetry . That is, if the index of the Hessian is non-zero when the gradient norm drops below this value, the symmetry is broken to avoid unnecessary iterations within the wrong symmetry. This option only applies to second-order methods and when the keyword .NOBREA is not present. The default value of this threshold is 1.0D-3.
READ(LUCMD,*) TRSTIN, TRSTDE
Read two factors that will be used for increasing and decreasing the trust radius respectively. Default values are 1.2D0 and 0.7D0.
READ(LUCMD,*) RTENBD, RTENGD, RTRJMN, RTRJMX
Read four limits for the ratio between the actual and predicted energies. This ratio indicates how good the step is, that is how accurately the the quadratic model describes the true energy surface. If the ratio is below RTRJMN or above RTRJMX, the step is rejected. With a ratio between RTRJMN and RTENBD, the step is considered bad an the trust radius decreased to less than the step length. Ratios between RTENBD and RTENGD are considered satisfactory, the trust radius is set equal to the norm of the step. Finally ratios above RTENGD (but below RTRJMX) indicate a good step, and the trust radius is given a value larger than the step length. The amount the trust radius is increased or decreased can be adjusted with .TR FAC . The default values of RTENBD, RTENGD, RTRJMN and RTRJMX are 0.4D0, 0.8D0, 0.1D0 and 3.0D0 respectively.
READ(LUCMD,*) TRSTRA
Set initial trust radius for calculation. This will also be the maximum step length for the first iteration. The trust radius is updated after each iteration depending on the ratio between predicted and actual energy change. The default trust radius is 0.5D0.
Specifies that the molecule should be visualized , writing a VRML file of the molecular geometry. No optimization will be performed when this keyword is given. See also related keywords .VR-BON and .VR-EIG .
Specifies that the molecule should be
visualized . VRML files describing
both the initial and final geometry
will be written (as initial.wrl
and final.wrl
). The file
final.wrl
is updated in each iteration, so that it always
reflects the latest geometry. See also related keywords .VR-BON
and .VR-EIG
.
Only has effect together with .VRML or .VISUAL . Specifies that the VRML files should include bonds between nearby atoms . The bonds are drawn as grey cylinders, making it easier to see the structure of the molecule. If .VR-BON is omitted, only the spheres representing the different atoms will be drawn.
Only has effect together with .VRML
or
.VISUAL
´indexeigenvector.
Specifies that the eigenvectors of the molecule (that is the eigenvectors of the
Hessian, which differs from the normal modes as they are not
mass-scaled) should be visualized. These are written to the files
eigv_###.wrl
.