Weyl半金属中朗道能级求解
这里整理了在Weyl半金属中加入磁场之后,哈密顿量的朗道能级如何求解,只是利用了最常用的解方程的方法.自由电子气中加入磁场会产生朗道量子化能级,同样的对于其他体系也会有这样的情况发生,这里就整理一下最近给别人回答问题的时候,计算了Weyl半金属加入磁场之后的朗道能级求解.{:.info} 这里想要求解的内容来自于参考文献1,我暂时不清楚文章中利用算符变换来求解得到朗道能级的方法,我是从解方程的角度直接求解的. 求解首先加入磁场之后哈密顿量要进行变换 H_\chi({\bf k})=\chi v_F(\hbar{\bf k}+e{\bf A})/cdot \sigma磁场${\bf B}=(B,0,0)$, 且${\bf B} = \nabla\times{\bf A}$, 这里将矢势${\bf A}=(0,0,By)$, 则哈密顿量为 H_\chi({\bf k})=\chi v_F\left[\hbar k_x\sigma_x+\hbar k_y\sigma_y+\hbar(k_z-\frac{eB}{\hbar}y)\sigma_z\right]\label{e1}此时来求解(\ref{e1})对应的本征方程 H_\chi({\bf k})\psi=E\psi这里我不去求解关于$H$的本征方程, 而是将$H$再作用一次, 求解$H^2\psi=E^2\psi$的本征方程.{:.warning} \begin{equation}\begin{aligned}H_\chi^2({\bf k})&=\chi^2v_F^2\left[\hbar^2k_x^2+\hbar^2k_y^2+\hbar^2(k_z-\frac{eB}{\hbar}y)^2\right]\\ H_\chi^2({\bf...
Topological invariants for the Fermi surface of a time-reversal-invariant superconductor
这篇博客主要是想整理一下一篇文献的内容,依据文章内容,可以仅仅通过费米面的拓扑性质和其上的超导电子配对符号,来直接判定这个超导系统是否为拓扑超导,而且结论可以适用于不同的维度,其中的公式表达也是非常漂亮,故而整理精华,也加深一下自己的理解。这个判据主要是来对时间反演不变的超导系统进行诊断,对于超导的哈密顿量而言,其还会具有粒子空穴对称性,在这两个对称性的保证下就会使得哈密顿量可以有一些不一样的性质。{:.info} 这里就不翻译文章的内容了,只是将判据整理出来,再把符号含义解释一下。 3D判据对于3D的拓扑超导体,可以利用一个整数的拓扑不变量来描述 N_w=\frac{1}{24\pi^2}\int d^3k\epsilon^{ijk}\text{Tr}\left[Q^\dagger_{\bf k}\partial_i Q_{\bf k}Q^\dagger_{\bf k}\partial_j Q_{\bf k}Q^\dagger_{\bf k}\partial_k Q_{\bf k}\right]\delta_{nk}\equiv\langle n,{\bf k}\rvert\mathcal{T}\Delta^\dagger_{\bf k}\rvert n,{\bf k}]\rangle这一项代表的是在某个能带上,电子配对的大小。文章中讨论的都是弱配对极限,也就是说电子配对仅仅是在费米面很小的范围内进行,所以自然就是忽略了费米面之间的电子配对,而通常情况下,费米面都是由一条独立的能带贡献的,所以这里也就仅仅考虑了带内的电子配对。 根据文章中的讨论,最后可以将这个$N_w$化简为 N_w=\frac{1}{2}\sum_s\text{sgn}(\delta_s)C_{1s}\begin{equation}\begin{aligned}C_{1s}&=\frac{1}{2\pi}\int_{\text{FS}_s}d\Omega^{ij}\left[\partial_ia_{sj}({\bf k})-\partial_ja_{si}({\bf k})\right]\\ a_{si}&-i\langle s{\bf k}\rvert\partial/\partial k_i\rvert s{\bf...
VASP+Wannier90编译计算紧束缚能带
最近在学习利用Wannier90结合VASP来做计算,这里先整理一下如何把VASP与Wannier90进行接口,在利用Vaspwiki上的一个例子来测试一下编译好的VASP如何得到紧束缚模型的一些数据.这里所有的过程都是参照一文搞定VASP+wannier90构建紧束缚模型这篇文章中提供的方法进行的. 这里要强调的事情是, 这个方法只是VASP5.4.4与Wannier90-2.1这个版本进行接口编译的方法, 对其他的版本可能并不适用. Wannier90安装 tar -zxvf wannier90-2.1.0.tar.gz #首先,解压安装包cd wannier90-2.1.0/ # 其次,进入文件夹cp config/make.inc.ifort make.inc # 然后,准备编译文件(这里老王用的是ifort,注意要检查ifort和mpiifort执行命令)make # 接着,编译 完成后,编译库,得到libwannier.a文件 make lib 这个得到的链接文件,在之后VASP进行编译的时候需要使用,编译完成后如下图所示 因为2.1版本是可以与VASP结合的最新版本(注: VASP最新6.2版本已经支持wannier90 3.0版本)。但是2.1版本默认安装与VASP接口并不好,主要是借助肖承诚博士写了一个Fortran的接口(https://github.com/Chengcheng-Xiao/VASP2WAN90_v2_fix),需要注意的是这个接口是针对VASP 5.4.4版本的。1.2版本与VASP的接口是好的,所以1.2版本默认安装就好。表1对比了两个版本的不同,1.2版本的主要缺点就在于不能构建向上自旋和向下自旋的能带,也就是没有自旋轨道耦合作用的铁磁和反铁磁体系。(至少老王没有想到好办法可以实现){.warning} VASP编译首先拷贝VASP2WAN90_v2_fix接口文件中的mlwf.patch 到VASP代码Src目录上一级目录下 然后执行如下命令 patch -p0 < mlwf.patch 接着在VASP makefile.include 文件中加入下面两行,注意路径 从路径下面复制编译执行文件,我这里选择的时intel编译器 cp...
Fortran 常用函数及操作
因为自己在学习中最常使用的是Fortran,有时候要用到mkl库中的一些函数,但是这些函数的调用参数有很多,所以将自己常用的一些记录下来,以后忘了可以快速的查阅。 1. cheevd复厄密矩阵对角化 厄密矩阵本征值与本征矢的求解 2.getrf,getri 矩阵求逆 getrf 对一个矩阵进行LU分解 getri 计算由LU分解后矩阵的逆 123456789101112131415161718192021222324252627282930313233program mainuse lapack95 !调用函数库,确保使用的函数存在!如果时用的是intel fortran,则在编译的时候注释上一行,加入-mkl编译选项即可。implicit noneinteger, parameter :: n = 3integer :: i, j, temp(n)real(kind=8) :: a(n,n), aa(n,n)call random_seed()call random_number(a)aa = awrite(*,'(1x,a)') "a = "do i = 1, n write(*,'(*(f12.6,3x))') a(i,:)end do!使用库函数求逆call getrf( a, temp )!先进性LU分解call getri( a, temp )!然后进行矩阵求逆write(*,'(1x,a)') 'inv(a) = 'do i = 1, n write(*,'(*(f12.6,3x))') a(i,:)end dowrite(*,'(1x,a)') "checking..."aa = matmul(aa,a) !// 原矩阵与其逆矩阵的结果为单位矩阵do i = 1, n write(*,'(*(f12.6,3x))') aa(i,:)end doend program main 结果如下 123456789101112a = 0.959299 0.268247 0.274620 ...
Python绘图模板整理
日常科研绘图python绘图模板收集{:.info} 棒棒糖图123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100from cProfile import labelfrom turtle import colorimport numpy as npimport matplotlib.pyplot as pltfrom matplotlib import rcParamsimport osconfig = {"font.size": 30,"mathtext.fontset":'stix',"font.serif": ['SimSun'],}rcParams.update(config) # Latex 字体设置#---------------------------------------------------------def scatter1(cont): #da1 = "m" + str(cont) + "-pro-ox" + ".dat" #da2 = "m" + str(cont) + "-pro-oy" + ".dat" da1 = "rho-mu-ix.dat" picname = "rho-ix-" + str(cont) + ".png" os.chdir(os.getcwd())# 确定用户执行路径 x0 = [] y0 = [] with open(da1) as file: da = file.readlines() for f1...
Material Studio寻找元胞布里渊区(BZ)高对称点
最近在学习计算一些材料的能带,其中最主要的是要找到需要计算的k空间点,这里就想记录一下如何利用Material studio来通过晶体结构文件来找到BZ中的高对称点. 晶体结构文件下载我通常是从Material Project中来下载晶体结构文件.cif的,这里以$Bi_2Se_3$为例,点击下图箭头所示的位置既可以下载不同需求的晶体结构文件. MS查找材料BZ高对称点将晶体结构文件拖到MS中后,调整显示样式,可以如下图所示 点击菜单栏寻找BZ高对称点 这就是怎么利用MS来寻找晶体结构高对称点的方法,这对后面进行能带计算时比较有用的. 公众号相关内容均会在公众号进行同步,若对该Blog感兴趣,欢迎关注微信公众号。{:.info} Email yxliphy@gmail.com