OEP calculation for a Be atom
The optimized effective potential (OEP) framework allows one to use orbital-dependent functionals while remaining in the Kohn-Sham picture. In Octopus, the default OEP approximation is the Krieger-Li-Iafrate (KLI) scheme1, which is much faster than the full OEP solution2. In this tutorial we therefore start from a KLI calculation for an isolated Be atom, and then restart from that result to run the full OEP calculation. While we do here exact exchange (EXX) calculations, this can also be used for mGGA functionals with dependence on the kinetic energy density for instance.
KLI approximation
We begin with the KLI input:
CalculationMode = gs
FromScratch = yes
PseudopotentialSet = hgh_lda_sc
ExperimentalFeatures = yes
%Coordinates
'Be' | 0 | 0 | 0
%
Spacing = 0.2
Radius = 10
XCFunctional = oep_x
OEPLevel = oep_kli
%Output
potential
density
%
OutputFormat = axis_x
The OEP-specific ingredients are:
- XCFunctional = oep_x: use exchange-only OEP.
- OEPLevel = oep_kli: use the KLI approximation to the OEP equation.
We use here a moderate grid spacing for a fast but physical example (Spacing = 0.2) and we define a compact simulation box for this atom (Radius = 10).
This KLI calculation converges in 23 SCF iterations and provides the restart data for the following full-OEP step. The corresponding eigenvalues are:
SCF converged in 23 iterations
Some of the states are not fully converged!
Eigenvalues [H]
#st Spin Eigenvalue Occupation
1 -- -4.174637 2.000000
2 -- -0.309001 2.000000
3 -- -0.056433 0.000000
Full OEP restarted from KLI
To perform the full OEP calculation, we now rerun Octopus in the same directory with:
CalculationMode = gs
FromScratch = no
PseudopotentialSet = hgh_lda_sc
ExperimentalFeatures = yes
%Coordinates
'Be' | 0 | 0 | 0
%
Spacing = 0.2
Radius = 10
XCFunctional = oep_x
OEPLevel = oep_full
%Output
potential
density
%
OutputFormat = axis_x
OptimizeChebyshevFilterDegree = no
LRMaximumIter = 1
LRTolFinalTol = 1.0e-9
The important change is:
- OEPLevel = oep_full: switch from KLI to the full OEP equation.
- FromScratch = no: reuse the converged KLI ground-state from restart/gs. While we could do the calculation from scratch, we restarted here from the KLI result, as this results in less iterations, and hence a shorter wall time for the calculation.
The final full-OEP eigenvalues are:
Some of the states are not fully converged!
Eigenvalues [H]
#st Spin Eigenvalue Occupation
1 -- -4.172733 2.000000
2 -- -0.309035 2.000000
3 -- -0.062219 0.000000
The total energies of the two runs are very close because we considered a simple Be atom. More complicated molecules or solids show more pronounced differences between the approximate and exact solutions for the OEP equation.
The values shown here depend on numerical parameters such as Spacing, Radius, and the OEP solver settings. For practical workflows it is often convenient to converge first with KLI and then restart the full-OEP calculation from that result.
References
-
J. B. Krieger, Y. Li, and G. J. Iafrate, Krieger-Li-Iafrate approximation for the exchange potential, Phys. Lett. A 146 256 (1990); ↩︎
-
S. Kuemmel and J. P. Perdew, Optimized effective potential made simple: Orbital functionals, orbital shifts, and the exact Kohn-Sham exchange potential, Phys. Rev. Lett. 90 043004 (2003); ↩︎