The restricted open-shell Kohn-Sham (ROKS) approach is a highly accurate method for estimating core-excitation energies of closed-shell molecules,409 as described in Section 7.8.2. Here, we briefly recapitulate the key aspects and refer the reader to Ref. 409 for details ROKS with the SCAN functional is found to reproduce 40 experimental core excitation energies (from the 1s orbital, i.e., K-edge) of second period elements (C, N, O, and F) to an RMS error of 0.2 eV and a maximum absolute error of 0.5 eV. The B97X-V functional provides similar (if a little worse) accuracy as well. Similar behavior is observed for the L edges of third-period elements Si, P, S and Cl. Other widely used functionals like PBE fare somewhat worse, but still predict much lower error than TDDFT with corresponding functionals. Recently, we extended the applicability for ROKS for core excited states of heavier elements by including scalar relativistic effects as described in Section 4.9.6. Accurate modelling of K-edge of elements up to Z = 24 can be achieved with the SCAN functional Cunha:2021.
That said, the ROKS approach is state-specific in that it can only predict a single state at a time and needs to be told which state to target (via the $reorder_mo section, as shown in example 7.8.3). This makes it less black-box than TDDFT as the final orbital needs to be identified a priori, perhaps via a pilot TDDFT job if no other information is available. (For core-level excitations, the intial orbital is usually intuitively obvious.) ROKS can also be used for two-site doubly core-ionized states, or other systems with one broken electron pair in total.
The accuracy of ROKS stems from three factors: choice of density functional (SCAN or B97X-V), excited state orbital optimization (only available via SGM for core excitations, as described in Section 4.5.13) and a sufficiently flexible basis set. The last is key, as the split-core functions (as provided by basis sets like cc-pCVZ) are needed instead of standard basis sets like cc-pVZ that only have split valence functions. Indeed, a basis of triple-zeta quality like cc-pCVTZ is necessary to fully account for the core-hole relaxation and smaller basis sets lead to systematic overestimation of excitation energies. However, the highly local nature of the core-hole ensures that a large basis is only needed for the target atom of the ROKS calculation, and a smaller basis (of double-zeta quality, like cc-pVDZ) is adequate for all other atoms. An example of this mixed basis strategy is given below in example 7.13.4. Details about using mixed basis sets in general can be found in Section 8.5.
The number of cycles needed for ROKS calculations can also be considerably reduced by decoupling the cole-hole relaxation from the rest of the orbital optimization. This entails a restricted open-shell SCF calculation of the core-ionized state first, and use of those orbitals as guess for ROKS. Example 7.8.3 is a representative case for how such calculations should proceed.
The conjunction of high accuracy and low computational cost (due to cheapness of the SCAN meta-GGA and the mixed basis strategy) makes ROKS a very attractive approach for computing core spectra of large, closed-shell systems (where more expensive wave function theories are unaffordable). Users are requested to cite Ref. 409 when using ROKS for core excitations and Ref Cunha:2021 when performing calculations that include scalar relativistic effects.
$molecule 0 1 C 0.0000 0.0000 0.0000 O 0.0000 0.0000 1.1282 $end $rem METHOD scan BASIS gen BASIS2 aug-cc-pVDZ SYMMETRY false $end $basis C aug-cc-pCVTZ **** O aug-cc-pVDZ **** $end @@@@ $molecule 1 2 C 0.0000 0.0000 0.0000 O 0.0000 0.0000 1.1282 $end $rem METHOD scan BASIS gen UNRESTRICTED false SCF_GUESS read SYMMETRY false SCF_ALGORITHM sgm $end $reorder_mo 1 3 4 5 6 7 2 1 3 4 5 6 7 2 $end $basis C aug-cc-pCVTZ **** O aug-cc-pVDZ **** $end
$molecule 0 1 Cl 0.0000 0.0000 0.0000 H 0.0000 0.0000 1.2746 $end $rem method scan basis gen ! Decontracted aug-pcX-2 basis for X2C symmetry false sym_ignore true rel_x2c 1 ! Do X2C relativistic one-electron Hamiltonian rel_x2c_fd_displacement 100 ! Controls the finite difference step for W (default = 100 * 1e-6 = 1e-4) $end $basis Cl 0 S 1 1.00 0.216264D+06 1.00000000D+00 S 1 1.00 0.324104D+05 1.00000000D+00 S 1 1.00 0.737630D+04 1.00000000D+00 S 1 1.00 0.208877D+04 1.00000000D+00 S 1 1.00 0.681028D+03 1.00000000D+00 S 1 1.00 0.245288D+03 1.00000000D+00 S 1 1.00 0.949871D+02 1.00000000D+00 S 1 1.00 0.385297D+02 1.00000000D+00 S 1 1.00 0.158316D+02 1.00000000D+00 S 1 1.00 0.610936D+01 1.00000000D+00 S 1 1.00 0.244372D+01 1.00000000D+00 S 1 1.00 0.603084D+00 1.00000000D+00 S 1 1.00 0.209285D+00 1.00000000D+00 S 1 1.00 0.679167D-01 1.00000000D+00 P 1 1.00 0.121088D+04 1.00000000D+00 P 1 1.00 0.287276D+03 1.00000000D+00 P 1 1.00 0.924350D+02 1.00000000D+00 P 1 1.00 0.343221D+02 1.00000000D+00 P 1 1.00 0.139811D+02 1.00000000D+00 P 1 1.00 0.590468D+01 1.00000000D+00 P 1 1.00 0.250190D+01 1.00000000D+00 P 1 1.00 0.928135D+00 1.00000000D+00 P 1 1.00 0.348099D+00 1.00000000D+00 P 1 1.00 0.117780D+00 1.00000000D+00 P 1 1.00 0.373244D-01 1.00000000D+00 D 1 1.00 0.241272D+01 1.00000000D+00 D 1 1.00 0.544426D+00 1.00000000D+00 D 1 1.00 0.111960D+00 1.00000000D+00 F 1 1.00 0.749400D+00 1.00000000D+00 F 1 1.00 0.149279D+00 1.00000000D+00 **** H 0 S 1 1.00 0.754732D+02 1.00000000D+00 S 1 1.00 0.113575D+02 1.00000000D+00 S 1 1.00 0.260081D+01 1.00000000D+00 S 1 1.00 0.735503D+00 1.00000000D+00 S 1 1.00 0.231761D+00 1.00000000D+00 S 1 1.00 0.741675D-01 1.00000000D+00 S 1 1.00 0.223070D-01 1.00000000D+00 P 1 1.00 0.160000D+01 1.00000000D+00 P 1 1.00 0.450000D+00 1.00000000D+00 P 1 1.00 0.669210D-01 1.00000000D+00 D 1 1.00 0.125000D+01 1.00000000D+00 D 1 1.00 0.892290D-01 1.00000000D+00 **** $end @@@@@@@@@@@ $comment RO core ionized state. Note that the $molecule section thus set up will read geometry from before, but not charge/spin, which is supplied $end $molecule 1 2 read $end $rem method scan basis gen scf_algorithm sgm symmetry false sym_ignore true scf_guess read roscf true rel_x2c 1 ! Do X2C relativistic one-electron Hamiltonian rel_x2c_fd_displacement 100 ! Controls the finite difference step for W (default = 100 * 1e-6 = 1e-4) $end $reorder_mo ! push the 1s orbital to the frontier. For HCl we have 18 electrons, so 9 orbitals. Pushing 1 (1s) to the frontier (9) is done thus. 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 $end $basis Cl 0 S 1 1.00 0.216264D+06 1.00000000D+00 S 1 1.00 0.324104D+05 1.00000000D+00 S 1 1.00 0.737630D+04 1.00000000D+00 S 1 1.00 0.208877D+04 1.00000000D+00 S 1 1.00 0.681028D+03 1.00000000D+00 S 1 1.00 0.245288D+03 1.00000000D+00 S 1 1.00 0.949871D+02 1.00000000D+00 S 1 1.00 0.385297D+02 1.00000000D+00 S 1 1.00 0.158316D+02 1.00000000D+00 S 1 1.00 0.610936D+01 1.00000000D+00 S 1 1.00 0.244372D+01 1.00000000D+00 S 1 1.00 0.603084D+00 1.00000000D+00 S 1 1.00 0.209285D+00 1.00000000D+00 S 1 1.00 0.679167D-01 1.00000000D+00 P 1 1.00 0.121088D+04 1.00000000D+00 P 1 1.00 0.287276D+03 1.00000000D+00 P 1 1.00 0.924350D+02 1.00000000D+00 P 1 1.00 0.343221D+02 1.00000000D+00 P 1 1.00 0.139811D+02 1.00000000D+00 P 1 1.00 0.590468D+01 1.00000000D+00 P 1 1.00 0.250190D+01 1.00000000D+00 P 1 1.00 0.928135D+00 1.00000000D+00 P 1 1.00 0.348099D+00 1.00000000D+00 P 1 1.00 0.117780D+00 1.00000000D+00 P 1 1.00 0.373244D-01 1.00000000D+00 D 1 1.00 0.241272D+01 1.00000000D+00 D 1 1.00 0.544426D+00 1.00000000D+00 D 1 1.00 0.111960D+00 1.00000000D+00 F 1 1.00 0.749400D+00 1.00000000D+00 F 1 1.00 0.149279D+00 1.00000000D+00 **** H 0 S 1 1.00 0.754732D+02 1.00000000D+00 S 1 1.00 0.113575D+02 1.00000000D+00 S 1 1.00 0.260081D+01 1.00000000D+00 S 1 1.00 0.735503D+00 1.00000000D+00 S 1 1.00 0.231761D+00 1.00000000D+00 S 1 1.00 0.741675D-01 1.00000000D+00 S 1 1.00 0.223070D-01 1.00000000D+00 P 1 1.00 0.160000D+01 1.00000000D+00 P 1 1.00 0.450000D+00 1.00000000D+00 P 1 1.00 0.669210D-01 1.00000000D+00 D 1 1.00 0.125000D+01 1.00000000D+00 D 1 1.00 0.892290D-01 1.00000000D+00 **** $end @@@@@@@ $comment ROKS for core excitation $end $molecule 0 1 read $end $rem method scan basis gen scf_algorithm sgm symmetry false sym_ignore true scf_guess read os_roscf true ! Turns ROKS on scf_convergence 5 max_scf_cycles 5000 rel_x2c 1 ! Do X2C relativistic one-electron Hamiltonian rel_x2c_fd_displacement 100 ! Controls the finite difference step for W (default = 100 * 1e-6 = 1e-4) $end $basis Cl 0 S 1 1.00 0.216264D+06 1.00000000D+00 S 1 1.00 0.324104D+05 1.00000000D+00 S 1 1.00 0.737630D+04 1.00000000D+00 S 1 1.00 0.208877D+04 1.00000000D+00 S 1 1.00 0.681028D+03 1.00000000D+00 S 1 1.00 0.245288D+03 1.00000000D+00 S 1 1.00 0.949871D+02 1.00000000D+00 S 1 1.00 0.385297D+02 1.00000000D+00 S 1 1.00 0.158316D+02 1.00000000D+00 S 1 1.00 0.610936D+01 1.00000000D+00 S 1 1.00 0.244372D+01 1.00000000D+00 S 1 1.00 0.603084D+00 1.00000000D+00 S 1 1.00 0.209285D+00 1.00000000D+00 S 1 1.00 0.679167D-01 1.00000000D+00 P 1 1.00 0.121088D+04 1.00000000D+00 P 1 1.00 0.287276D+03 1.00000000D+00 P 1 1.00 0.924350D+02 1.00000000D+00 P 1 1.00 0.343221D+02 1.00000000D+00 P 1 1.00 0.139811D+02 1.00000000D+00 P 1 1.00 0.590468D+01 1.00000000D+00 P 1 1.00 0.250190D+01 1.00000000D+00 P 1 1.00 0.928135D+00 1.00000000D+00 P 1 1.00 0.348099D+00 1.00000000D+00 P 1 1.00 0.117780D+00 1.00000000D+00 P 1 1.00 0.373244D-01 1.00000000D+00 D 1 1.00 0.241272D+01 1.00000000D+00 D 1 1.00 0.544426D+00 1.00000000D+00 D 1 1.00 0.111960D+00 1.00000000D+00 F 1 1.00 0.749400D+00 1.00000000D+00 F 1 1.00 0.149279D+00 1.00000000D+00 **** H 0 S 1 1.00 0.754732D+02 1.00000000D+00 S 1 1.00 0.113575D+02 1.00000000D+00 S 1 1.00 0.260081D+01 1.00000000D+00 S 1 1.00 0.735503D+00 1.00000000D+00 S 1 1.00 0.231761D+00 1.00000000D+00 S 1 1.00 0.741675D-01 1.00000000D+00 S 1 1.00 0.223070D-01 1.00000000D+00 P 1 1.00 0.160000D+01 1.00000000D+00 P 1 1.00 0.450000D+00 1.00000000D+00 P 1 1.00 0.669210D-01 1.00000000D+00 D 1 1.00 0.125000D+01 1.00000000D+00 D 1 1.00 0.892290D-01 1.00000000D+00 **** $end