Basis Sets

Choosing a basis set is an important part of running a quantum chemical calculation. Rowan supports many commonly used basis sets of various sizes, permitting users to select the best basis set for their applciation.

When submitting calculations using the Python API, basis sets can be selected through their name, typically the one in the Basis Set Exchange. If no basis set is specified, STO-3G will be used.

import cctk
import rowan

rowan.api_key = "rowan-SK"
client = rowan.Client()

# load molecule by name
molecule = cctk.Molecule.new_from_name("cyclopentane")

# run calculation remotely and return result
result = client.compute(
    "calculation",
    input_mol=molecule,
    name="opt cyclopentane",
    method="b3lyp",
    basis_set="6-31G*",
    tasks=["optimize", "frequency"]
)

For instructions on how to select basis sets when submitting calculations using the web interface, see the web interface documentation.


How Rowan Handles Basis Sets

Generally contracted basis sets are not handled efficiently in Rowan (and many other programs: see this explanation), so we recommend avoiding general contraction unless there is no reasonable alternative. This will probably change in the future.

Rowan uses "pure"/spherical basis functions for d orbitals and higher, meaning that there are 5 d orbitals instead of 6, 7 f orbitals instead of 10, and so forth. This increases computational efficiency because the number of orbitals grows as LL and not as L2L^2, but differs from how some other programs are structured (for instance, Gaussian uses 6 d functions for Pople basis sets).

Rowan does not currently support effective core potentials, although we hope to change this in the near future. There is also currently no way to specify custom basis sets in Rowan, or to employ different basis sets on different atoms.


The number of basis sets available through the Basis Set Exchange can be overwhelming! Here are some common choices, as well as some less common but underrated choices:

Pople's STO-nG basis sets

The venerable STO-nG family of minimal basis sets can be requested for any n between 2 and 6. STO-3G is probably the most popular: however, HF-3c or MIDI! might be a better choice today.

Pople's 6-31 basis sets

Perhaps the most famous basis sets are Pople's 6-31 basis sets. The ubiquitous "6-31G(d)" double-zeta basis set can be requested as 6-31G*, while a larger basis set suitable for single-point calculations is 6-311+G(2d,p). There are many other combinations of augmentation, zeta, and polarization functions possible, but most of them are considered unbalanced and should be avoided.

Jensen's pcseg-n basis sets

An underrated class of basis sets for density-functional theory is Frank Jensen's pcseg family. pcseg-0 requests a minimal basis set, pcseg-1 requests a double-zeta basis set, and so on up until pcseg-4. Augmentation can be requested by prepending "aug", so the augmented triple-zeta Jensen basis set is aug-pcseg-2.

In our experience, these basis sets often dramatically outperform Pople basis sets without incurring a higher computational cost. (See also this discussion by Jensen himself, comparing the pcseg and 6-31 basis sets.)

Dunning's cc-PVNZ basis sets

The correlation-consistent basis sets of Thom Dunning can be requested with keywords cc-pVDZ, cc-pVTZ, and so forth—but these basis sets are generally contracted and thus horribly slow. Instead, we recommend using the "(seg-opt)" variants, which are almost exactly the same but will run much faster. (Gaussian performs an analogous operation on the Dunning basis sets: see the discussion on their website.)

To request these basis sets, use the keywords cc-pVDZ(seg-opt), cc-pVTZ(seg-opt), and cc-pVQZ(seg-opt). Unfortunately, those are the only three Dunning basis sets with optimized variants in the Basis Set Exchange, so any other Dunning basis sets will be very slow (e.g. aug-cc-pVTZ).

Ahlrichs's def2 basis sets

The def2 family of basis sets from Ahlrichs/Karlsruhe can be requested with keywords def2-SV(P), def2-TZVP, and so forth. Their minimally augmented congeners are not yet available on the Basis Set Exchange, but will hopefully be added soon.

Truhlar's MIDI! basis set

The very efficient polarized minimal basis set MIDI!/MIDIX is available under either name, and is a good choice when speed is at a premium (see the discussion here).


Recommendations

Choosing a basis set is challenging but important: this recent paper from Grimme and co-workers offers many useful recommendations depending on the task at hand. In general, we find Jensen's pcseg basis sets are a great choice for DFT calculations: in particular, pcseg-1 is a drop-in replacement for 6-31G(d) with substantially higher accuracy.

While augmentation can be essential in certain cases (e.g. anionic systems), it should be avoided if it's not absolutely necessary, because it can lead to immense challenges with runtime and SCF convergence.