Abstract
According to the modern paradigms of software engineering, standard tasks are best accomplished by reusable open source libraries. We describe OpenOrbitalOptimizer: a reusable open source C++ library for the iterative solution of coupled self-consistent field (SCF) equations Fpσ({Cpσ}) Cpσ = CpσEpσ for an arbitrary number of particle types p and symmetries. Although OpenOrbitalOptimizer is a new project, it already implements standard algorithms for solving SCF equations: Pulay's direct inversion in the iterative subspace (DIIS), energy DIIS (EDIIS), augmented DIIS (ADIIS), and the optimal damping algorithm (ODA). The library was designed as an easy way to introduce state-of-the-art convergence accelerators in a number of legacy programs. It is easy to interface with various programs, as it only requires a function to evaluate the total energy E and Fock matrices {Fpσ} for a given set of orbitals {Cpσ}. The only assumption behind the library is that one is able to easily store Fock and orbital matrices in memory, and to diagonalize the Fock matrices in full, which is the case in the overwhelming majority of quantum chemistry applications. We exemplify the library with nuclear-electronic orbital (NEO) calculations of protonated water clusters with Gaussian-type orbital basis sets. We find that a minimal-basis protonic guess works well, and that the stepwise SCF algorithm requires less computational time than the simultaneous SCF algorithm.