next up previous contents
Next: The PSI3Source Code Up: progman Previous: Contents   Contents

Introduction

The PSI suite of ab initio quantum chemistry programs is the result of an ongoing attempt by a cadre of graduate students, postdoctoral associates, and professors to produce efficient and fast computer code. Some of the earliest contributions to what is now referred to as ``PSI'' include a direct configuration interaction (CI) program (Robert Lucchese, 1976, now at Texas A&M), the well-known graphical unitary group CI program (Bernie Brooks, 1977-78, now at N.I.H.), and the original integrals code (Russ Pitzer, 1978, now at Ohio State). From 1978-1987, the package was know as the BERKELEY suite, and after the Schaefer group moved to the Center for Computational Quantum Chemistry at the University of Georgia, the package was renamed PSI. Thanks primarily to the efforts of Curt Janssen (Sandia Labs, Livermore) and Ed Seidl (LLNL), the package was ported to UNIX systems, and substantially improved with new input formats and a C-based I/O system.

Beginning in 1999, an extensive effort was begun to develop PSI3 -- a PSI suite with a completely new face. Nearly all of the code is now in C and C++, including new integral/derivative integral, coupled cluster, and CI codes. In addition, new I/O libraries have been added, as well as an improved checkpoint file structure and greater automation of typical tasks such as geometry optimization and frequency analysis. The package has the capability to determine wavefunctions, energies, analytic gradients, and various molecular properties based on a variety of theories, including spin-restricted, spin-unrestricted, and restricted open-shell Hartree-Fock (RHF, UHF, and ROHF); configuration interaction (CI) (including a variety of multireference CI's and full CI); coupled-cluster (CC) including CC with variationaly optimized orbitals; second-order Møller-Plesset perturbation theory (MPPT) including explicitly correlated second-order Møller-Plesset energy (MP2-R12); and complete-active-space self-consistent field (CASSCF) theory.

The purpose of this manual is to provide a reasonably detailed overview of the source code and programming philosophy of PSI3, such that programmers interested in contributing to the code will have an easier task. Section 2 gives a succint explanation of the steps required to obtain the source code from the main repository at Virginia Tech. (Installation instructions are given separately in the installation manual or in $PSI3/INSTALL.) Section 3 discusses the essential elements of a C-language PSI3 program, with emphasis on the input parsing and I/O functions. Section 4 provides documentation of a number of other important libraries, including the library of functions for reading from the checkpoint file, libchkpt.a, the Quantum Trio miscellaneous function library, libqt.a, the libiwl.a for reading and writing one- and two-electron integrals in the ``integrals with labels'' format. Section 5 offers advice on appropriate programming style for PSI3 code, and section 6 describes the structure of the package's Makefiles. Section 6.3 gives a brief overview of the necessary steps to adding a new module to PSI3, section 7 gives some suggestions on debugging it, and section 8 explains conventions for documenting it. The appendices provide important reference material, including the currently accepted PSI3 citation and format information for some of the most important text files used by PSI3 modules.


next up previous contents
Next: The PSI3Source Code Up: progman Previous: Contents   Contents
psi 2003-01-07