Kitaev Chain计算学习
最近重新学习关于拓扑超导的知识,先整理一下学Kitaev $p$-wave 模型的计算代码。{:.info} 模型介绍Kitaev链是最简单的1D spinless $p$-wave 超导模型,和正常态的SSH模型会非常类似,其实空间的表示为 H=-\mu \sum_{x} c_{x}^{\dagger} c_{x}-\frac{1}{2} \sum_{x}\left(t c_{x}^{\dagger} c_{x+1}+\Delta \mathrm{e}^{\mathrm{i} \phi} c_{x} c_{x+1}+\text { H.c. }\right)这里引入Majorana 算符,其实形式上看起来就是将一个费米子算符拆开成一对Majorana算符 c_{x}=\frac{\mathrm{e}^{-\mathrm{i} \phi / 2}}{2}\left(\gamma_{B, x}+\mathrm{i} \gamma_{A, x}\right)新的Majorana费米子满足的仍然是反对易关系 \gamma_{\alpha, x}=\gamma_{\alpha, x}^{\dagger}, \quad\left\{\gamma_{\alpha, x}, \gamma_{\alpha^{\prime}, x^{\prime}}\right\}=2 \delta_{\alpha \alpha^{\prime}} \delta_{x x^{\prime}}在Majorana算符表示下,哈密顿量为 H=-\frac{\mu}{2} \sum_{x=1}^{N}\left(1+\mathrm{i} \gamma_{B, x} \gamma_{A, x}\right)-\frac{\mathrm{i}}{4} \sum^{N-1}\left[(\Delta+t) \gamma_{B, x} \gamma_{A, x+1}+(\Delta-t) \gamma_{A, x} \gamma_{B, x+1}\right]\label{q1}\end{aligned}这个时候就可以像分析SSH模型一样来分析Kitaev...
APS revtex模版使用中的神神奇奇的操作
研究生期间的第一篇工作最后要使用revtex4这个模板来写,再整理内容的过程中也遇到了一些问题,比如补充材料中的公式编号修改,以及在往arxiv上传文件时候,可以把补充材料和正文放在一起,我最初的时候只是把正文上传到网站,因为补充材料是写在另外一个tex文件中,所以就没有办法一次性搞定,在这里也顺便整理一下如何可以把正文和补充材料同时写在一个文件中。因为又读了个博士,逃不过APS了,所以这里干脆就把使用revtex模版中,设置各种奇奇怪怪操作的方法全部都整理一下,{:.info} 作者信息12345678\title{Paper Title}% Force line breaks with \\\author{Author 1} \email{Author1 e-mail}\affiliation{Author 1 address}\author{Author 2}%\email{Author2 e-mail}\affiliation{Author 2 address}\affiliation{ address 3} 在那个作者后面写邮箱,就会在当前页的左下角出现对应的邮箱.同样\affiliation{}中填写作者单位,如果两个作者同属一个单位,那么在最后一个作者后面写这个信息即可,否则可以在每个作者后面分别填写对应的单位信息. 参考文献首先说一下文献的引用方式,可以查看Latex参考文献引用设置及补充材料公式编号修改这篇博文.我在这里主要再说一下,如何最后再投稿的时候避免出现.bib的文件.文献的引用方式如下,但是要保证\bibliography{ref}中的这个_ref.bib_文件在当前文件夹中存在,它里面保存的就是从网站上或者自己写的文献信息,如下图所示 1234567891011121314151617181920212223242526272829303132\begin{document}%======================== head\title{Paper Title}% Force line breaks with...
秋
科研要搞,生活也要搞。{:.info} 公众号相关内容均会在公众号进行同步,若对该Blog感兴趣,欢迎关注微信公众号。{:.info} Email yxliphy@gmail.com
根据哈密顿量获得其对称操作算符
通常给出的一个哈密顿量,它的对称性可能是比较高的,有时候在看文章的时候可能也并不会将哈密顿量满足的所有对称性都列举出来,但是在分析问题的时候总是会用到这些对称性,这里就整理个程序分析一下如果哈密顿量具有某种对称性,那么它对应的矩阵形式是怎样的。其实这里给出的也不一定就是正确的,因为我并不知道哈密顿量的基矢是什么,能给出的也就是一些操作矩阵满足对称操作对哈密顿量的变换。{:.info} 简略分析假如我现在有一个哈密顿量 \begin{equation}H(\mathbf{k})=(m_0-t_x\cos k_x-t_y\cos k_y)\sigma_z+A_x\sin k_x\sigma_xs_z+A_y\sin k_y\sigma_y +w_0(\cos k_x-\cos k_y)\sigma_xs_x\label{q1}\end{equation}选择一组参数 m_0=1.5,t_x=t_y=A_x=A_y=1.0, w_0=0.5这里我也先不明确哈密顿量中的不同Pauli算符代表的自由度是什么,因为我只想找到满足对称操作的矩阵,可能得到的并不是真正的操作算符。假如我想找哈密顿量\eqref{q1}的镜面操作$\mathcal{M}_x$和$\mathcal{M}_y$,我先不关心它是不是真的存在这两个对称性,反正它们对哈密顿量的操作满足 \begin{align}&\mathcal{M}_xH(k_x,k_y)\mathcal{M}_x^{-1}=H(-k_x,k_y)\\ &\mathcal{M}_yH(k_x,k_y)\mathcal{M}_y^{-1}=H(k_x,-k_y)\\\end{align}反正这个操作算符的维度和哈密顿量的维度肯定是相同的,那么就将所有16个Pauli矩阵的直积全部构建出来。但是实际上应该是有32个,因为如果我们考虑的是spinfull的系统,那么此时$\mathcal{M}_i^2=-1$,此时还需要考虑16个Pauli矩阵的直积再乘以一个虚数$i$,那么就先将这32个Pauli矩阵作为操作元,分别作用到哈密顿量的每一项上面。 比如 (m_0-t_x\cos k_x-t_y\cos k_y)\rightarrow (m_0-t_x\cos (-k_x)-t_y\cos(k_y))\rightarrow...
根据对称性计算体系电四极矩
这里整理一下如何通过Wannier band basis的高对称点对称性本征值来计算体系的电四极矩。想使用这个方法的主要原因是在计算Nested Wilson loop得到电四极矩的时候,如果占据态能带存在简并,这个时候直接利用公式计算会得到不稳定的结果,暂时也没找到解决的办法,所以换个方法来计算电四极矩,而且发现利用对称性指标计算效率更高。{:.info} 模型这里研究我最熟悉的模型,将BHZ模型和$d$波超导体结合起来,这早期实现高阶拓扑超导体的方案之一,其模型为 \begin{align} H(\mathbf{k})&=(m_0-t_x\cos k_x-t_y\cos k_y)\sigma_z\tau_z+A_x\sin k_x\sigma_xs_z+A_y\sin k_y\sigma_y\tau_z\\ & +\Delta_0(\cos k_x-\cos k_y)s_y\tau_y-\mu\tau_z \end{align}这个是一个体态电四极矩贡献的高阶拓扑相(这里我就不解释为什么了,感兴趣可以和我讨论)。它具有$x$和$y$方向的Mirror对称性 \begin{align} &\mathcal{M}_x=is_y\sigma_x\tau_y\\ &\mathcal{M}_y=is_x\sigma_y\tau_x\\ \end{align}哈密顿量在Mirror对称操作下满足 \begin{align} &\mathcal{M}_xH(k_x,k_y)\mathcal{M}_x^{-1}=H(-k_x,k_y)\\ &\mathcal{M}_yH(k_x,k_y)\mathcal{M}_y^{-1}=H(k_x,-k_y)\\ \end{align}除此之外系统还存在inverison对称性 \mathcal{P}H(\mathbf{k})\mathcal{P}^{-1}=H(\mathbf{k})\qquad \mathcal{P}=\sigma_z当体系存在Mirror对称性和空间反演对称性之后,其Wannier sector的极化满足(可以参考Electric multipole moments, topological multipole moment pumping, and chiral hinge states in...
高对称路径能带图
通常为了看是否发生拓扑相变需要关注参数演化的时候能带是否发生了闭合,而且也只需要关注布里渊区高对称路径上的能带演化即可,这里就整理了自己的一个小程序,方便自己在研究问题的时候直接拿来就使用。{:.info} 2D suqare lattice写程序的想法就是直接给出动量空间中的哈密顿量,通过对角化的方式得到本征值,将这一过程沿着高对称路径进行即可。123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108from cmath import piimport numpy as npimport matplotlib.pyplot as pltfrom matplotlib import rcParamsimport osconfig = {"font.size": 40,"mathtext.fontset":'stix',"font.serif": ['SimSun'],}rcParams.update(config) # Latex 字体设置#-------------------------------------------------------------def Pauli(): s0 = np.array([[1, 0], [0, 1]]) sx = np.array([[0, 1], [1, 0]]) sy = np.array([[0, -1j], [1j, 0]]) sz = np.array([[1, 0], [0, -1]]) return s0, sx, sy, sz# --------------------------------------------------------------def hamset(kx,...