• 宏观和微观介电函数的关系

    宏观介电函数: \[\epsilon_M(\omega)=\lim_{q\rightarrow0}\frac{1}{\epsilon^{-1}_{G=0,G'=0}(q,\omega)}\tag{1}\] 一些软件的文档12中提到,可以用“去除了v(G=0)的响应函数\(\bar\chi\)”计算宏观介电函数:(可以避免求逆) \[\epsilon_M=1-\frac{4\pi}{\mathbf{q}^2}\bar\chi_{00}\tag{2}\] 联想到微观介电函数和不可约极化率(对KSDFT是\(\chi^0\))的关系:\(\epsilon=1-v\chi^0\),于是一开始我以为\(\epsilon_M\)就是\(\epsilon\)对响应函数做了个截断。 宏观介电函数的公式(1)到(2)是可以严格推出来的。3 将库伦核分为对角项(长程项)和非对角项(局域场效应): \[v_\mathbf{GG'}=\frac{4\pi}{|\mathbf{q+G}|^2}+\bar{v}_\text{GG'}\] Dyson方程: \[\chi=\chi^0+\chi^0v\chi\] 定义\(\bar\chi\)为只含局域场部分相互作用的响应函数: \[\bar\chi=\chi^0+\chi^0\bar{v}\bar\chi\] 由此得出\(\bar\chi\)和\(\chi\)之间的关系: \[\begin{aligned} \chi/\bar{\chi}&=(1+v\chi)/(1+\bar{v}\bar\chi)\\ \chi+\chi\bar{v}\bar\chi&=\bar\chi+\bar\chi v\chi\\ \chi&=\bar\chi+\bar\chi\frac{4\pi}{|\mathbf{q+G}|^2}\chi \end{aligned}\] 可以证明:(原文3.5式,\(\bar\chi^{(2)}(\omega)\)是\(q^2\)项系数,根据\(k\cdot p\)微扰论推出) \[\lim_{\mathbf{q}\rightarrow0}\bar\chi=\bar\chi^{(2)}(\omega)q^2+O(q)\tag{3}\] 所以对G=0有 \[\chi=\frac{\bar\chi}{1-4\pi\bar\chi^{(2)}}\] 现在计算宏观介电函数: \[\epsilon_M(\omega)=\lim_{q\rightarrow0}\frac{1}{\epsilon^{-1}_{G=0,G'=0}(q,\omega)}\] 利用微观介电函数和响应函数的关系: \[\epsilon^{-1}=1+v\chi\] 在G=0,\(q\rightarrow 0\)时有:(原文3.8式) \[\begin{aligned} \epsilon_M(\omega)&=\lim_{\mathbf{q}\rightarrow0}\frac{1}{1+[v\chi]_{00}}\\ &=\left[1+\frac{v\bar\chi}{1-4\pi\bar\chi^{(2)}}\right]_{00}^{-1}\\ &=\left[1+\frac{4\pi\bar\chi^{(2)}}{1-4\pi\bar\chi^{(2)}}\right]^{-1}\\ &=1-4\pi\bar\chi^{(2)}(\omega)\\ \end{aligned}\] 如果(3)对\(\chi^0\)也成立,即\(\lim_{\mathbf{q}\rightarrow0}\chi^0=\chi^{0(2)}(\omega)q^2+O(q)\),那么\(q\rightarrow0,G=G'=0\)的微观介电函数就是:\(\epsilon=1-4\pi\chi^{0(2)}\)。 对比微观和宏观介电函数,确实是\(\chi^0\)和\(\bar\chi\)的区别。根据\(\bar\chi=\chi^0+\chi^0\bar{v}\bar\chi\),可以理解为宏观介电函数是从微观介电函数中减去了局域场效应::\(\chi^0\bar{v}\bar\chi\)。 之前认为\(\bar\chi\)是\(\chi^0\)的截断,是因为默认应用了\(\chi=\chi^0\)的近似。实际上\(\bar\chi\)是\(\chi\)的一部分,比\(\chi^0\)多包含了局域场效应。 Bethe-Salpeter Equation - Theory — GPAW (dtu.dk) ↩ The RPA and RPA+BSE Dielectric functions (questaal.gitlab.io) ↩ W. Hanke (1978) Dielectric theory of elementary excitations in crystals, Advances in Physics, 27:2, 287-341, DOI: 10.1080/00018737800101384 ↩
  • Git Advanced

    rebase family A,B两分支都在共同的基上有各自的修改,如果希望把A分支(当前分支)的修改建立在B分支修改的基础上,即:共同的基 + B分支的修改 + A分支的修改: git rebase <branch-B> 如果B分支在远程,可以拉取的同时rebase: git pull --rebase origin <branch-B> 批量处理之前的n个commit:改名、多合一、删除 git rebase -i HEAD~n pick保留,s/squash合并,r/reword改名,d/drop删除 — cherry-pick 将某个分支的连续某几个commit合并到当前分支 git cherry-pick <commit-id-begin>.. <commit-id-end>
  • 49のCoding事件簿

    记录各种奇怪的bug和解决过程。 “事件簿”是因为debug时抽丝剥茧的过程和阅读推理小说有异曲同工之处。
  • GDB Notes

    参考教程:https://mp.weixin.qq.com/s/w_Z2ftOnb4VtB4jUaMF0fw 运行gdb:gdb 可执行文件,例如gdb /root/abacus-develop/build/abacus 用gdb调试程序:r (run) 断点:b 文件:行数,例如b /abacus/source/module_cell/module_symmetry/symmetry.cpp:1049 查看所有断点:i b (info breakpoints)(可以看到每个断点的编号) 删除断点:clear 删除特定断点:delete 断点编号。可以一次操作多个,比如delete 1-4 设置变量断点(当变量值改变时停下,显示下一行的内容):watch 变量名 查看变量的值 单次:p 变量名 或 print 变量名 每个断点都显示:display 变量名 查看显示列表: info display (可以看到每个显示项的编号) 取消显示:undisplay 编号 查看数组的值(p/print/display) display *数组名@区间长度,例如 display *rotpos@12 继续,往下运行一步:n (next) 继续,直至下一个断点:c (continue) 查看调用堆栈:bt (backtrace),同where