Multi-configurational self-consistent-field (MCSCF) is a general method for obtaining qualitatively correct wavefunctions for highly strained molecules, diradicals, or bond breaking reactions. The most commonly used MCSCF procedure is the complete-active-space self-consistent-field (CASSCF) approach [3], which includes all possible determinants (with the proper symmetry) that can be formed by distributing a set of active electrons among a set of active orbitals. The detcasman module performs CASSCF optimization of molecular orbitals via a two-step procedure in which the CI wavefunction is computed using detci and the orbital rotation step is computed using detcas. The detcas program is fairly simple and uses an approximate orbital Hessian [4] and a Newton-Raphson update, accelerated by Pulay's DIIS procedure [5]. We have also implemented a prototype version of the RASSCF method [6], which is another kind of MCSCF which is typically less complete (and less expensive) than CASSCF. However, orbital convergence for RASSCF can be difficult in our current implementation.
Inactive orbitals in the MCSCF may be specified by the RESTRICTED_DOCC and RESTRICTED_UOCC keywords. These orbitals will remain doubly-occupied or doubly-unoccupied, respectively, in the MCSCF wavefunction. However, the form of these orbitals will be optimized in the MCSCF procedure. It is also possible to literally freeze inactive orbitals in their original (SCF) form using the FROZEN_DOCC and FROZEN_UOCC keywords. This is not normally what one wishes to do in an MCSCF computation (e.g., it complicates the computation of gradients), but it can make the computations faster and is helpful in some circumstances where unphysical mixing of inactive and active occupied orbitals might occur. Presently, it is not possible to mix the use of restricted and frozen orbitals in PSI3.
The division of the molecular orbitals into various subspaces such as RAS spaces, or frozen vs active orbitals, etc, needs to be clear not only to the detci program, but also at least to the transformation program (and in the case of MCSCF, to other programs as well). Thus, orbital subspace keywords such as RAS1, RAS2, RAS3, frozen_docc, frozen_uocc, active, etc., need to be in the psi:() or default:() sections of input so they may also be read by other modules.
The ability to perform state-averaged [7,8] CASSCF or RASSCF computations has been added. This is accomplished using the average_states keyword.
See the casscf-sp and casscf-sa-sp examples in the tests directory and the example below.