Computational simulation has become accepted as a third mode of discovery, together with theory and experimentation,1 and atomistic molecular simulation is one of the most widely used techniques in all of scientific computing. It has become standard in many disciplines, including physics, chemistry, biology, materials science, and mechanical engineering. Around 40% of supercomputing time is spent on molecular simulation (quantum chemistry and classical molecular dynamics).2 Recognizing the growing importance of molecular simulation software, funding agencies across the globe have invested heavily in computational chemistry software development.
The prominence of molecular simulation has been made possible by numerous advances in theoretical chemical physics, many of which have been published in The Journal of Chemical Physics, and also by many person-years of effort developing efficient algorithms and software to implement the theory. In this Special Topic issue on Electronic Structure Software and an upcoming issue on Classical Molecular Dynamics Simulations, we celebrate these accomplishments and the powerful software tools now available to the molecular simulation community through a collection of invited and contributed articles.
For electronic structure computations, there are a surprising number of available software packages. As pointed out by Aquilante et al.,3 Wikipedia currently lists almost a hundred quantum chemistry program packages4 (many of which are featured in this issue). With so many choices available, our primary goal for the present issue was to collect articles presenting the features, strengths, and limitations of the current programs as a resource to the community. The articles in this issue succeed admirably in this task, providing not only an overview of available features but often also demonstrations of computational speed and scaling to an increasing number of computer cores. Many of the articles also provide thorough reviews of the relevant electronic structure theory literature, which should serve as a helpful introduction to the key theoretical and algorithmic advances enabling the capabilities and speedups of the described software. Although not very widely implemented in quantum chemistry software ten years ago,5 rank-reduction techniques such as density fitting (DF) or resolution of the identity (RI)6–13 and Cholesky decomposition (CD)14–18 feature prominently in many of the papers.3,19–39
This Special Topic issue includes papers on several general-purpose quantum chemistry programs for molecules such as ACES,40 CFOUR,21 Dalton,23 DIRAC,41 eT,16 GAMESS,25 Molpro,26 MRCC,28 MOLCAS and OpenMolcas,3 ORCA,31 Psi4,33 and TeraChem.37 General-purpose codes with periodic boundary condition capabilities to treat condensed-phase systems include ABINIT,42 BDF,43 CP2K,22 MPQC,27 NWChem,29 PySCF,32 and TURBOMOLE.38 ACE-Molecule,44 BigDFT,45 CONQUEST,46 CRYSTAL,47 DFTB+,48 ONETEP,30 Quantum ESPRESSO,49 Siesta,50 and WIEN2k51 focus on density functional theory computations for condensed phases, while CASINO,52 QMCPACK,34 and TurboRVB53 are periodic quantum Monte Carlo codes. Codes aimed at configuration interaction include COLUMBUS54 and GronOR.55 The NECI code56 enables the union of full configuration interaction with quantum Monte Carlo, a union first reported in JCP in 2009.57 Several of the papers describe software focused on relativistic computations, such as BDF,43 BERTHA,20 DIRAC,41 and ReSpect.35
This issue also presents several more specialized software packages. ATOM-MOL-nonBO performs non-Born–Oppenheimer computations on atoms and small molecules.19 Octopus is a real-space code meant to model light–matter interactions using generalized time-dependent density functional theory.58 The SAPT codes described by Garcia, Podeszwa, and Szalewicz36 provide a wide array of symmetry-adapted perturbation theory methods for the study of intermolecular interactions, including automation procedures to aid in the development of new (system-specific) force field models; the Molpro and Psi4 papers also describe some SAPT capabilities.26,33 TheoDORE provides post-processing analysis of excited state computations with interfaces to several quantum chemistry programs.59 VOTCA-XTP allows for the calculation of excited electronic states using the GW approximation with the Bethe–Salpeter equation.39
Electronic structure software has been growing more user-friendly over the years. User friendliness is emphasized in several of the papers, such as native Python interfaces in packages such as ABINIT,42 BERTHA,20 BigDFT,45 Dalton Project,23 Molpro,26 MPQC,27 NWChem,29 OpenMolcas,3 Psi4,33 PySCF,32 QMCPACK,34 Quantum ESPRESSO,49 Siesta,50 TeraChem,37 TheoDORE,59 and TurboRVB53 and the graphical user interfaces mentioned in, e.g., the ACES,40 Molpro,26 ORCA,31 and WIEN2k51 papers.
Facilitating their use by the community, the majority of the software described in this issue is either open-source,3,16,22,23,27,29,32–34,39,42,44–46,48–50,55,56,58,59 free,19,25,35,36,40,41,43,53,54 or free for academic and/or non-commercial use.21,28,31,52
We hope that the collection will help introduce readers to the capabilities now available and help them find the right tools for their research problems.
We also hope that this Special Topic issue is helpful for software developers. Anyone who has written electronic structure software understands that it is an intellectually challenging and labor-intensive task. Many electronic structure methods are quite complex, and they may require special techniques to make the computations numerically stable. Computations are generally very time-consuming, and thus, software authors must think carefully about their algorithms and how to optimize their code. The evolution of computing hardware makes writing computational chemistry software even more challenging: processors feature an increasing number of compute cores, individual researchers and computing centers are making greater use of graphics processing units (GPUs), and supercomputing centers are deploying machines with increasing numbers of nodes. Adapting complex software to take advantage of these changes is a daunting task. Several of the articles in this issue discuss software design strategies,23,25,27,29,32,33,37,40,44,45,48–50 which are becoming increasingly important for large software packages. Numerical techniques utilized in implementing the software are also discussed in some detail (e.g., Refs. 22, 44–46, 52, 56, and 58). Numerical details are often not documented in the literature, and we hope that these papers are useful to the community in sharing best practices and in assisting reproducibility. Many of the packages feature distributed parallel capabilities, and several articles provide an extended discussion on their parallelization strategies (e.g., Refs. 20, 22, 25, 27, 29, 30, 32, 38, 40, 45, 48–50, 52, 55, and 56). The TeraChem package described here37 was the first electronic structure package written from the ground up for GPUs, and several additional articles in this collection discuss GPU capabilities and strategies for effective implementation on GPUs.20,22,25,27,29,34,39,40,44,45,48,49,55,58
One strategy to deal with the growing complexity of electronic structure software is to move away from monolithic, stand-alone program packages and toward reusable software components that can be combined in various ways. Efforts to help create or utilize a “software ecosystem” of components are described by the ABINIT,42 ACE-Molecule,44 BigDFT,45 Dalton Project,23 eT,16 GAMESS,25 GronOR,55 MPQC,27 NECI,56 NWChem,29 [Open]Molcas,3 Psi4,33 PySCF,32 Siesta,50 and WIEN2k51 teams, as well as the team behind the CECAM electronic structure library.60
The many excellent software papers in this Special Topic issue have convinced the editors to welcome submissions of software-focused papers to regular issues of The Journal of Chemical Physics. Submissions should describe software that will be of significant interest to the chemical physics community. They should present readers with a clear understanding of the features of the software, its scope of applicability, and any relevant limitations. Demonstrations of computational performance and discussions placing the software in the context of other available options are welcome. To aid the community in future software development, discussions of software design and algorithms are also welcome. To aid in reproducibility, a discussion of numerical implementation details is also encouraged.
The editors of this Special Topic issue thank all the authors who contributed and the staff who assisted.