GAMESS-US¶
GAMESS-US is a computational chemistry software package based on gaussian basis functions.
Setup¶
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:
rungms PREFIX.inp <VERSION> <NUMBER_OF_CORES> <CORES_PER_NODE> [<NUMBER_OF_NODES>]
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.
Examples¶
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),
basis=dict(gbasis='ccd'))
This will run a B3LYP/cc-pVDZ calculation with Stefan Grimme’s DFT-D3 empirical dispersion correction.
Parameters¶
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:
$CONTRL SCFTYP=RHF DFTTYP=M06 $END
$SYSTEM MWORDS=4 $END
$BASIS
GBASIS=N31
NGAUSS=6
NDFUNC=1
$END
$DFT NRAD=96 NLEB=1202 $END
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'),
system=dict(mwords=4),
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
keyword |
type |
default value |
description |
---|---|---|---|
|
|
|
Used to name input and output files. |
|
|
|
The |
|
|
See description |
Specifies the arguments that go into the |
|
|
|
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=<object object>, 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 >>> SCFTYP=RHF >>> CCTYP=CCSD(T) >>> ISPHER=1 >>> RUNTYP=ENERGY >>> $END >>> >>> $BASIS >>> GBASIS=CCSD >>> $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.