sapt2012 is a computer code implementing Symmetry-Adapted Perturbation Theory (SAPT). SAPT is designed to calculate the interaction energy of a dimer, i.e., a system consisting of two arbitrary closed-shell or high-spin open-shell monomers. Calculations can also be performed for trimers. Each monomer can be an atom or a molecule. In SAPT, the interaction energy is expressed as a sum of perturbative corrections in the intermolecular interaction operator V , each correction resulting from a different physical effect. This decomposition of the interaction energy into distinct physical components is a unique feature of SAPT which distinguishes this method from the popular supermolecular approach. The SAPT methodology and its applications are discussed in several review papers [1–7] where complete references to the original developments can be found. Most of the formulas programmed in sapt2012 are given in the paper published in the book accompanying the METECC collection of computer codes [8]. The METECC paper is available on the SAPT web page http://www.physics.udel.edu/~szalewic/SAPT/SAPT.html and can be also found in the sapt2012 distribution (SAPT2012/doc/METECC.ps). Note that the formulas for the SAPT corrections in the METECC paper contain several misprints—for an errata, see Ref. 9.

The METECC project [8] was the first distribution of
the SAPT codes. The next version of SAPT, called sapt96^{1}, was available since 1996. Compared to sapt96, the next version, sapt2002, was
about a factor of two faster in medium size (about 200 functions) bases. It
also allowed calculations with up to 1023 basis functions (sapt96 was restricted to 255), was interfaced with
a larger number of front-end SCF packages, and ran on a larger number of
platforms. A parallel version of the SAPT suite [9], referred to as psapt2k2, became
available in SAPT2002. This version runs on
SGI Origin, IBM SP, and on Linux clusters and scales well up to about 32 processors. See
Sec. 14
for a detailed description of this
version. The SAPT2006 edition added a new,
powerful version of SAPT based on the density-functional description of
monomers and called SAPT(DFT) [10–14]. The density fitting
implementation of SAPT(DFT) [15, 16], allowing calculations for
dimers with nearly 100 atoms, was the main addition appearing in SAPT2008.
The current version of the programs became available in 2012 and is denoted
as sapt2012. The list of changes relative to
sapt2002 is given in Sec. 2
.

A version of SAPT has also been developed [17–19] which allows calculations of the nonadditive portion of the interaction energy for an arbitrary trimer consisting of closed-shell monomers. Thus, SAPT can now be used to calculate the two leading terms in the many-body expansion of the interaction energy of a cluster. The package sapt3b containing the three-body SAPT is distributed optionally with sapt2012. The package also includes a set of codes for three-body SAPT based on the Kohn-Sham description of the monomers [SAPT(DFT)] with or without density-fitting [20]. Unfortunately, no further description of the three-body codes is available, but users should be able to use these programs following the examples provided. For details of the methods, we refer to the original papers [17, 19, 20].

The two-body SAPT(DFT) can tackle high-spin open-shell systems [21]. This option is available since the SAPT2008 edition. However, density fitting has not been implemented in open-shell SAPT(DFT). No manual is available for open-shell SAPT(DFT), but it is quite similar from a user point of view to closed-shell SAPT(DFT) and therefore, with the examples provided in the distribution package, the use of these codes should not be problematic.

The calculation of the interaction energy of a dimer using sapt2012 involves four steps. In the first step, one and two-electron integrals are computed in a chosen orbital basis set and then SCF calculations are performed on both monomers. The SCF calculation for the dimer can also be performed at this stage. Several integral/SCF packages are interfaced to sapt2012 and can be used, including free packages such as gamess [22] (see http://www.msg.ameslab.gov/ GAMESS/GAMESS.html) and atmol [23] (a modified version of the latter package, atmol1024, is included in the sapt2012 distribution and can be downloaded from the SAPT web page). After the SCF calculations are completed, the “atomic” integrals (i.e., integrals between the functions of the basis set used) are transformed into molecular integrals using the 4-index transformation program tran. In the third step, the Coupled-Cluster (CC) program ccsdt is invoked to calculate the many-body perturbation theory (MBPT, known also as the MP method since it is based on the Møller-Plesset partition of the Hamiltonian) and/or CC amplitudes for monomers A and B. Finally, the sapt.x program is run to compute the interaction energy components. Several short interface programs are also invoked between the calls to tran and ccsdt. An alternative (to that implemented in the sapt.x module) way of calculating the electrostatic component of the interaction energy computes the Coulomb interaction of the monomer charge densities obtained at the relaxed CCSD level. If such a calculation is desired, additional two codes are run after ccsdt. These are ccsdm, producing the relaxed CCSD densities, and e1dcbs, performing the integration of these densities.

SAPT approach described above is a double perturbation
expansion in powers of the operator V and in
powers of the intramonomer correlation operator W = W_{A} + W_{B}, the sum of the Møller-Plesset fluctuation
operators for monomers A and B. The expansion in V is truncated at the third-order terms. The expansion in
W is truncated at different orders depending
on the particular component and the most important components (the
electrostatic, first-order exchange, and dispersion energies) are
selectively summed to infinity in W. Thus, one
may call this approach SAPT(MP/CC). A complete SAPT(CC) approach at the
CCSD (CC with single and double excitations) level was developed by Korona
et al. [24–31] and is available in
SAPT2012.

The computational cost of the SAPT corrections scales as a product of some powers of the number of occupied orbitals and of the virtual orbitals. Therefore, with a given basis set size, calculations for larger systems will take longer. At the present time (2012), the largest runs performed at the full theory level included about 500 (300) virtual orbitals for systems with monomers containing about 10 (20) occupied orbitals, whereas routine runs typically use basis sets of about 250 functions. Larger systems can be tackled by using psapt2k2 and a few dozen of processors or by neglecting some effects of intramonomer correlation, i.e., using the SAPT2 or SAPT0 levels defined later on. However, the recommended option is to use SAPT(DFT) [14] (see Sec. 16 ), which gives interaction energies similarly accurate as those given by the full SAPT at the costs close to those of SAPT0. Complete SAPT(DFT) calculations have been performed for dimers with nearly 100 atoms and the dispersion energies can be computed for dimers with about 300 atoms [32].

In the asymptotic region, i.e., for large intermonomer separations, SAPT calculations may be significantly simplified by means of the multipole expansion which allows to express the interaction energy as a series of inverse powers of the intermonomer separation. Coefficients of this series, the so-called van der Waals constants, depend only on monomer multipole moments and polarizabilities (static and dynamic) and can be computed using the polcor suite of codes by Wormer and Hettema [33, 34]. The polcor suite, as well as a fitting program developed in our group and utilizing the ab initio asymptotic information, comprise the independent package asymp_sapt, distributed optionally with sapt2012.

This document is intended to provide a basic introduction to the SAPT method and the instructions on how to download, compile, and run the sapt2012 and psapt2k2 codes. Also included are some details on the types of computers, compilers, and integral plus Hartree-Fock self-consistent field (SCF) packages that SAPT has been tested with. Whereas extensive tests of SAPT have been performed, there may appear unforeseen difficulties with the installation and running of the codes. As sapt2012 and psapt2k2 are products of a research project, no resources are available to provide support for users. The authors of the code will try to provide limited help within the restrictions of their schedules.