GAMESS-US is a computational chemistry software package based on gaussian basis functions.


Ask your systems administrator to install GAMESS-US for you, or obtain it yourself from the GAMESS-US download page. Note that while GAMESS-US is available at no cost (including its source code), it is not distributed under an open source license, thus you are not permitted to redistribute copies of GAMESS-US or its source code.

GAMESS-US is distributed with a rungms script to run calculations. This script must be customized for your computer or cluster. ASE expects that a properly customized version of this rungms script will be present in your $PATH. The default argument to run GAMESS-US in ASE is:

rungms PREFIX.inp > PREFIX.log 2> PREFIX.err

The default rungms script can be instructed to run across a number of CPU cores through the following syntax:


For example, if you want to run a calculation on 8 cores, you might set the ASE_GAMESSUS_COMMAND environment variable to the following:

rungms PREFIX.inp 00 8 > PREFIX.log 2> PREFIX.err

Alternatively, this command can be passed as a string directly to the GAMESSUS Calculator with the command keyword argument.


Here is a command line example of how to optimize the geometry of a water molecule using the PBE density functional:

$ ase build H2O | ase run gamess_us -p xc=PBE -f 0.02
$ ase gui stdin.traj@-1 -tg "a(1,0,2),d(0,1)"
102.59049267228833 1.0079388022627982

An example of creating a GAMESS-US calculator using the python interface is:

from ase.calculators.gamess_us import GAMESSUS

calc = GAMESSUS(contrl=dict(scftyp='rhf', dfttyp='b3lyp', ispher=1),
                dft=dict(dc=True, idcver=3),

This will run a B3LYP/cc-pVDZ calculation with Stefan Grimme’s DFT-D3 empirical dispersion correction.


GAMESS-US organized keywords into blocks delimited by $<BLOCKNAME> and $END. The GAMESSUS calculator represents these blocks as dictionaries. For example, consider the following block of input:


Note that keywords within a block can be on the same or different lines. Equivalent input will be generated by invoking the GAMESSUS calculator with the following arguments:

calc = GAMESSUS(contrl=dict(scftyp='rhf', dfttyp='m06'),
                basis=dict(gbasis='n31', ngauss=6, ndfunc=1),
                dft=dict(nrad=96, nleb=1202))

Note that though GAMESS-US is case insensitive, Python is case sensitive. The GAMESSUS calculator expects lowercase keywords.

Most input files can be constructed in this way. The GAMESSUS calculator also has several special keywords, which are described in the table below



default value





Used to name input and output files.




The USERSCR directory defined in rungms. If not provided, ASE will attempt to automatically determine the correct value from your rungms script. This is not guaranteed to work, in which case you will need to manually provide the proper location.



See description

Specifies the arguments that go into the $BASIS block in the GAMESS-US input file. Defaults to {'gbasis': 'n21', 'ngauss': 3}, i.e. 3-21G. Alternately, basis accepts a dictionary of literal basis set definitions where the keys correspond to element type or atom index.




A dictionary of literal ECP definitions. Keys should be either an element symbol or an atom index.

class ase.calculators.gamess_us.GAMESSUS(restart=None, ignore_bad_restart_file=False, label='gamess_us', atoms=None, command=None, userscr=None, **kwargs)[source]

GAMESS-US keywords are specified using dictionaries of keywords. For example, to run a CCSD(T)/cc-pVDZ calculation, you might use the following arguments:

>>> calc = GAMESSUS(contrl={'scftyp': 'rhf', 'cctyp': 'ccsd(t)',
>>>                         'ispher': 1, 'runtyp': 'energy'},
>>>                 basis={'gbasis': 'CCD'})

This will create an input file that looks like the following:

>>>  $CONTRL
>>>   ISPHER=1
>>>  $END
>>>  $BASIS
>>>  $END

See the INPUT.DOC file provided by GAMESS-US for more information.

If \(runtyp\) is not specified, it will be set automatically.

If no basis is specified, 3-21G will be used by default. A dictionary containing literal per-index or per-element basis sets can be passed to the \(basis\) keyword. This will result in the basis set being printed in the $DATA block, alongside the geometry specification. Otherwise, \(basis\) is assumed to contain keywords for the $BASIS block, such as GBASIS and NGAUSS.

If a multiplicity is not set in contrl[‘mult’], the multiplicity will be guessed based on the Atoms object’s initial magnetic moments.

The GAMESSUS calculator has some special keyword:

xc: str

The exchange-correlation functional to use for DFT calculations. In most circumstances, setting xc is equivalent to setting contrl[‘dfttyp’]. xc will be ignored if a value has also been provided to contrl[‘dfttyp’].

userscr: str

The location of the USERSCR directory specified in your \(rungms\) script. If not provided, an attempt will be made to automatically determine the location of this directory. If this fails, you will need to manually specify the path to this directory to the calculator using this keyword.

ecp: dict

A per-index or per-element dictionary of ECP specifications.