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





This manual was generated using htp, an HTML pre-processor Powered by htp