canonical.py: Enforce Use of the Same Number of Canonical Orbitals

The script canonical.py guarantees that calculations on two or more isomers will use the same number of canonical orbitals, which makes the energies of these isomers comparable. Jaguar's unique SCF acceleration methods may not guarantee this even when using the same basis set for two similar jobs. This can lead to a discrepancy of a few kcal/mol, so ensuring a consistent number of canonical orbitals is necessary to make the energies of isomers comparable. This is taken care of automatically in Jaguar workflows. For other uses, you might want to run the script directly.

First, the script precomputes the number of canonical orbitals that would be employed for each provided isomer. Then the minimum number of the canonical orbitals amongst these isomers is determined. Finally, the calculations are run with this consistent number of canonical orbitals. The input can contain multiple sets of isomers as well as unique structures, and the appropriate number of canonical orbitals is determined for each set.

If you only want the consistent number of canonical orbitals to use (specified with the -get_ncanorb_only flag), the script may be stopped before running the final calculations and the results output as an .mae summary file (requested with the -mae_output flag) or as separate .in files (requested with the -infile_output flag), which can be run separately.

The command syntax is:

jaguar run canonical.py [options] filename

where filename is a space-separated list of Maestro structure files (containing any number of structures) or Jaguar .in files. The options, accepted in the form -k keyword=value, can be used to define details of the Jaguar calculations. If Jaguar .in files are supplied, any -k options take precedence over any options set in the .in files, which otherwise define the Jaguar calculations.

For example, the options -k basis=6-31G -k dftname=m06-2x -k igeopt=1 perform a geometry optimization using the basis set 6-31G and the functional M06-2X. The value can also be a comma-separated list, and jobs are set up for each possible combination of values: for example,

jaguar run canonical.py -k basis=STO-3G,6-31G -k dftname=pbe,b3lyp
input.mae

runs four jobs with the four possible combinations of basis set and functional for each structure in input.mae. Calculations on isomers with the same basis set are run with the same number of canonical orbitals. Another example,

jaguar run canonical.py -k basis=6-31G -k dftname=m06-2x -get_ncanorb_only -infile_output input1.mae input2.mae

generates Jaguar .in files for all the structures in input1.mae and input2.mae with the correct number of canonical orbitals to use set in the .in files.