Exchange-correlation potential in pyscf
See original GitHub issueHello! Could you please explain me how does pyscf calculate exchange-correlation potential in GGA case? I analyzed code and it seems to me that pyscf uses only first-order gradients of xc energy density w.r.t. rho from libxc (vrho, vgamma). I found in file “/dft/numint.py” a function “nr_rks” and in case of GGA, for example, it slices the result obtained from “eval_xc” function:
exc, vxc = ni.eval_xc(xc_code, rho, spin=0, relativity=relativity, deriv=1, verbose=verbose)[:2]
And it uses only exc, vxc, but discards kxc and fxc. Does it mean that pyscf somehow calculates second-order gradients needed for exchange-correlation potential calculation? Or it uses another way for calculating exchange-correlation potential?
Issue Analytics
- State:
- Created 3 years ago
- Comments:13 (8 by maintainers)
Hi Zhenyu,
As answered by others before, vxc® in GGA is usually not computed for SCF, since an equivalent simple expression for the contribution to the Fock matrix can be obtained using integration by part. If you really need it, the chain rule can be used to derive an expression for vxc®, which for example can be found in Eqs. (A1-A6) [ https://aip.scitation.org/doi/10.1063/1.3479401], where we used it for the XC kernel in spin-flip TD-DFT.
Best, Zhendong Li
Zhenyu Zhu ajz34 notifications@github.com 于2020年8月12日周三 下午8:20写道:
Sorry, the correct reference should be https://doi.org/10.1063/1.3676736.
Zhendong Li zhendongli2008@gmail.com 于2020年8月13日周四 上午11:58写道: