The restricted open-shell Kohn-Sham (ROKS) approach is a
highly accurate method for estimating core-excitation energies of closed-shell
molecules,
435
J. Phys. Chem. Lett.
(2020),
11,
pp. 775.
Link
as described in Section 7.8.2. Here, we briefly recapitulate
the key aspects and refer the reader to Ref.
435
J. Phys. Chem. Lett.
(2020),
11,
pp. 775.
Link
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
as compared to TDDFT using the same 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 modeling of K-edge of elements
up to can be achieved with the SCAN functional.
252
J. Phys. Chem. Lett.
(2022),
13,
pp. 3438.
Link
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 initial 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- 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- 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 core 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 the affordability 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.
435
J. Phys. Chem. Lett.
(2020),
11,
pp. 775.
Link
when using ROKS for core excitations and Ref.
252
J. Phys. Chem. Lett.
(2022),
13,
pp. 3438.
Link
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