Compute Canada

Gaussian

Please note: The FAQ pages at the HPCVL website are continuously being revised. Some pages might pertain to an older configuration of the system. Please let us know if you encounter problems or inaccuracies, and we will correct the entries.

Gaussian is arguably the most-used computational quantum-chemistry program. It does electronic-structure calculations and standard quantum chemical calculations. Among the methods available are simple molecular mechanics (such as Amber force field), semi-empirical methods (such as CNDO), Hartree-Fock (restricted and unrestricted), MPn (Mollar-Plesset perturbation theory of order n=2,3,4), CI (Configuration-Interaction), CC (Coupled-Cluster), Multi-configurational SCF (such as CAS-SCF) and various DFT (Density-Functional Theory) methods. Specific to Gaussian are high-accuracy energy methods (G2, CBS). It can be used to obtain electronic properties, molecular geometries, vibrational frequencies, orbitals, reaction profiles, and much more.

For a more complete list see this Overview.

What does Gaussian do ?

Gaussian is arguably the most-used computational quantum-chemistry program. It does electronic-structure calculations and standard quantum chemical calculations. Among the methods available are simple molecular mechanics (such as Amber force field), semi-empirical methods (such as CNDO), Hartree-Fock (restricted and unrestricted), MPn (Mollar-Plesset perturbation theory of order n=2,3,4), CI (Configuration-Interaction), CC (Coupled-Cluster), Multi-configurational SCF (such as CAS-SCF) and various DFT (Density-Functional Theory) methods. Specific to Gaussian are high-accuracy energy methods (G2, CBS). It can be used to obtain electronic properties, molecular geometries, vibrational frequencies, orbitals, reaction profiles, and much more.

Where is the program located?

The program resides in /opt/gaussian/g09 and is called (you guessed it) g09. We also maintain copies of previous releases of Gaussian, namely '98 and '03. These are located in /opt/gaussian/g98 and /opt/gaussian/g03, repsectively. Their usage is completely equivalent to the one of Gaussian'09 described in this FAQ.

In the program directory, there is a series of test jobs, which are very useful to get an idea of how to perform specific types of calculations. The source code of Gaussian is not accessible to the general public, since Gaussian is a licensed product. However, Gaussian grants the permission to alter the code under certain conditions. If you want to do so, contact HPCVL to learn more. You are not allowed to copy the executable or any part of the distribution onto your local machine, unless you hold a proper license yourself. 

How do I set up my environment for Gaussian ?

There are two ways to set up your environment to enable Gaussian.

  • The easy way: The usepackage system has an entry for Gaussian 09 (and other ones for Gaussian '98 and '03). All you need to do is type use g09 and the proper changes will be made. You can also put this command into your setup files, e.g. .bash_profile for bash.
  • The hard way: You can also do things manually. Include the following lines in your setup files (.login for csh, .bash_profile for ksh or bash):

    For csh: 
    setenv g09root /opt/gaussian
    source $g09root/g09/bsd/g09.login
    setenv GAUSS_SCRDIR /scratch/hpcxxxx 
    For bash: 
    export g09root=/opt/gaussian . 
    $g09root/g09/bsd/g09.profile
    export GAUSS_SCRDIR='/scratch/hpcxxxx'

Note that the setting of the environment variable GAUSS_SCRDIR is necessary to redirect the temporary files that Gaussian creates to the proper scratch space. This directory should be /scratch/hpcxxxx (replace the xxxx by your username's numbers). This is done automatically if you apply the use command.

Also note that if for some reason Gaussian does not terminate normally (e.g. a job gets cancelled by hand), it leaves behind large "scratch files" which you should delete by hand. To check if such files exist, type

ls -lt /scratch/hpcxxxx

where xxxx stands for the numbers in your username. Once you have determined that the scratch files are no longer needed, you can delete them by typing

rm /scratch/hpcxxxx/Gau-* 

where, again, xxxx needs to be replaced by the numbers in your username.

Cleaning up the scratch space is the user's responsibility and cannot be done by the system administrator. If scratch space does not get cleaned up regularly, it can cause jobs to terminate, and much work to be lost. Please do it.

How do I run Gaussian ?

To run Gaussian on HPCVL clusters, you have to belong to a user group "g98"(it's called that for historical reason, but it applies to all versions of Gaussian). You will be entered into the group list when you have read our license agreement and signed a statement that you have done so.

Given the complexity of the underlying methods, Gaussian is very simple to use. A given calculation is performed by preparing an input file, piping it to the standard input of the program g09, and catching the standard output in a log-file. We suggest you use the "extension" .g09 for input files and .log for the results.

Interactively, the command line to invoke Gaussian is thus:

g09 < test.g09 >test.gout &

The ampersand & submits the job into the background, so it doesn't block your terminal. This will only work if you are a member of the g98 group and have set the environment correctly (see previous question). Note that the interactive execution of Gaussian is only meant for test runs.

Gaussian input files have to be set up according to a scheme that is explained in the "User's Reference". It is impossible to give an outline here. The program uses the concept of keywords to describe the method used, the molecule to be described, and the conditions for the calculation (such as basis sets). Sample files can be found in opt/gaussian/g09/bsd/logs.

Note that it is absolutely essential to have a good idea about the size and complexity of your calculations before you start a Gaussian job. Many of the methods mentioned above have terrible scaling properties, i.e. the computational cost grows very quickly with the number of electrons, degrees of freedom, or number of basis functions used. We suggest you start with a small basis set and a cheap method, and then slowly increase those parameters.

How do I submit parallel Gaussian jobs?

If you want to run Gaussian on several processors (which is encouraged, since this is a multi-processor machine) on HPCVL, you will have to include a line

%Nproc=number_of_processors

where number_of_processors is exactly what it says, in your input file for the job you are running (see below).

For production jobs, especially involving multiple processes, you need to submit a Gaussian job script to our load-balancing software Grid Engine (see our SGE FAQ for details). This is mandatory. This script requires that the environment was previously set up properly, and that you are a g98 group member.

You supply the directory in which you work, the email to which you want to notified, and the name of the input/output files by editing the script. Note that you have to replace entries that are enclosed in in the script.

The script (let's call it g09.sh) is submitted by the qsub command:

qsub g09.sh

This must be done from the working directory, i.e. the directory that contains the input file and is supposed to contain the output.

Gaussian offers the opportunity to execute major portions of the code on multiple processors. For SUN computers, this feature is implemented through shared-memory programming. The %Nprocs line in the input file causes Gaussian to use up to number_of_processors CPU's in the calculation. However, it is not acceptable to start a job like this on the standard serial GridEngine queue for production jobs. If you submit a Gaussian parallel job, your SGE script must include a line

#$ -pe gaussian.pe number of processes
. /opt/gaussian/setup.sh

where the entry enclosed in stands for the number of processors requested, and has to be identical with the number appearing in the input file. Using this will assure that the GridEngine knows how many processors are used, and will allocate resources accordingly, and your parallel job will scale reasonably well since you work on dedicated processors without oversubscription.

Note that we are using a special parallel environment gaussian.pe for Gaussian submissions. This will schedule all Gaussian jobs to a dedicated node. The second line that sources in "setup.sh" redirects I/O from/to scratch files to a fast local disk. This greatly increases Gaussian performance in some cases and automatically removes scratch file when they are not needed anymore.

Important: Please do not use any PE other than gaussian.pe for Gaussian job submissions and make sure you include the "setup.sh" line.

There is an easier way to do this: We are supplying a small perl script called GaussSubmit that can be called directly, and will ask a few basic questions, such as the name for the job to be submitted and the number of processes to be used in the job. Simply type

GaussSubmit

and answer the questions. The script expects a Gaussian input file with "file extension" .g09 to be present and will do everything else automatically. This is meant for simple Gaussian job submissions. More complex job submissions are better done manually.

Where can I get more detailed information ?

This is the most important question treated here. To learn the basics about Gaussian input and output, refer to the "Gaussian 09 User's Reference". For templates, and to get many examples, check out/opt/gaussian/g09/bsd/examples.

There is a Gaussian web page with lots of information: http://www.gaussian.comThere is also a Gaussian user group that has many members who really know what they are talking about (and some who don't). Gaussian also operates a help line for licensed users. Send email to help@gaussian.com , but don't expect the answer to come too quick, they get a lot of requests.

For hardcore computational chemists, there is the "Gaussian 09 Programmer's Reference" and the IOPs Reference which are useful if you want to tinker with default settings and internal parameters, or even want to write some subroutines of your own.

If you want to learn about the methods, check out "Exploring Chemistry with Electronic Structure Methods" by J. B. Foresman and Aeleen Frisch, Gaussian Inc. Pittsburgh PA. (This book makes reference to Gaussian 98, but almost all of it applies to Gaussian 03).

You can also ask Hartmut Schmider about specific technical problems with Gaussian. I am a theoretical chemist by training and have some background in the usage of the program.

How is Gaussian licensed?

Gaussian is a licensed program. The license held by HPCVL is limited to the HPCVL-operated computers at Queen's University in Kingston, Ontario. That means that any user of HPCVL can use the program, whether they are located at Queen's or not.

HPCVL requires users of Gaussian to sign a statement in which they state that they are informed about the terms of the license to be included in the Gaussian user group named g98.