Thursday 8 December 2011

Printing of unrestricted natural orbitals in Gaussian 09.

I recently had some serious trouble performing an analysis of the natural orbitals using Gaussian 09, so it seems wise to share what I found. By default this program suite does not save the orbitals to the checkpoint file, which is a problem if you want to visualise the orbitals in a program such as GaussviewMolden or Gabedit.

The method to place natural orbitals in a checkpoint file is somewhat opaque and requires the queing of multiple input decks. The first step is to converge a wavefunction and thus get the canonical orbitals, the second step is to generate the natural orbitals and save them to the checkpoint file. From here the checkpoint file can be formatted or just printed to an output file.

The gaussian website suggests a method which involves adding a second link with the Geom=AllCheck ChkBasis flags. These options instruct gaussian to read in all information from the checkpoint generated by the initial SCF. The guess(save,only,naturalorbitals) options instructs the calculation to read in and then overwrite the canonical orbitals in the checkpoint with the natural orbitals. The only flag suppresses the normal SCF procedure.

Below is an example input deck to get natural orbitals into the checkpoint file:
%chk=./test.chk
#P uM06/6-31g

hydrogen scf

0 1
H 0.00 0.00 1.06
H 0.00 0.00 0.00

--link1--
 %chk=./test.chk
# Guess=(read,Save,Only,NaturalOrbitals) Geom=AllCheck ChkBasis 

Printing the natural orbital coefficients to an output file:
%chk=./test.chk
#P uM06/6-31g GFINPUT IOP(6/7=3) guess=(read,only) Geom=AllCheck ChkBasis

The resulting output file will contain the natural orbital coefficients, which can be checked by insuring the eigenvalues are close to 2 for the core orbitals or 0 for the virtual orbitals. The printing deck requires the use of GFINPUT to make sure that basis set is placed in the output file so that visualiser programs can plot the orbitals. The coefficients alone do not provide information about the functions that the orbital space is constructed out of.


Issues

If your calculations terminate from errors reading in the orbitals using guess=read and/or chkbasis such as:

 MOs are not on the read-write file.

Or
Initial guess natural orbitals from previous density.
Operation on file out of range.

A way around this is to use the IOP(3/32=2) option, which instructs Gaussian to disable a check on the overlap matrix. My understanding of this error is that quantum chemistry programs will often check for linear dependency in the basis and try to truncate the expansion space and reduce computational waste. The above errors can be caused when the number of basis being read in is less than expected. In this case disabling the check should not cause an issue if the only thing being done is printing orbitals. However, I suggest caution if you wish to use these orbitals for anything other than just printing.