gauopt

The gauopt utility performs an optimization by repeatedly executing Gaussian. In this way, it can optimize any parameter in the input stream, including general or massaged basis functions. It operates by repeatedly creating subprocesses running Gaussian. gauopt is typically used to optimize parameters such as basis functions for which there is no standard optimization method implemented within Gaussian. It is invoked by its command verb, gauopt, and takes its input from standard input.

Input for gauopt consists of a template file, in which certain fields are replaced with variables whose values are to be optimized. The template file is used to construct an actual Gaussian input file containing the current values of the variables for each energy evaluation. The energy is then computed at each step automatically by running a Gaussian single point calculation. The format for the first line of the template is:

NVar, MaxIt, SaveFlag, Conv, ConvV

using a format 2I3, L2, D9.2. The fields are defined as follows:

NVar
The number of variables.

MaxIt
The maximum number of optimization cycles to perform.

T|F
A logical flag indicating whether the intermediate Gaussian output files are to be saved. These are named fork.com, fork.log, fork.rwf, and so on. They are deleted by default, but can be saved as an aid in debugging the template input.

Conv
Convergence on the RMS change in the variables. A fairly tight default is provided if this parameter is set to 0.0.

ConvV
Convergence on the energy, which defaults to 1 milliHartree when the parameter is set to 0.0.

The next line of the template file has one or more pairs of values using the following syntax:

Value C|V      Repeated n times (no internal spaces)

where Value is the value for the variable, and the second value is a one-character flag which can be set to C to constrain the variable (i.e., not optimize it during the current run), or to V if the variable is to be optimized. This line uses a format of F14.9, A1 for each pair of values.

The remainder of the template file contains a Gaussian input file template. Each field in the input file where a previously-defined variable should be inserted should contain either <n x.y>, indicating that the nth variable should be inserted at that point using format Fx.y, or <-n x.y>, indicating that -1 times variable n should be inserted there.

An example will help make all of these concepts clearer. The following gauopt template file optimizes the scale factors in the STO-2G expansion of a minimal basis set for water:

  3 10 T     0.00      0.00
   7.660000000V    2.250000000V    1.240000000V
# RHF/Gen Test
 
Water RHF/STO-2G basis with optimized scale factors
 
0,1
O
H,1,r
H,1,r,2,a
 
r 0.96
a 104.5
 
1 0
sto 1s 2 <1 12.10>
sto 2sp 2 <2 12.10>
****
2 0 
sto 1s 2 <3 12.10>
****
3 0
sto 1s 2 <3 12.10>
****

The scale factors on the two hydrogens are made equal by using the same gauopt variable in more than one place; of course, this same effect could also have been accomplished by specifying that the same basis was to be used on every hydrogen atom.

 


Last update: 23 April 2013