闲谈
本文记录IRVSP和VASP2KP的安装。IRVSP可以计算所有230个空间群的电子态不可约表示,并与VASP接口,具体可见
https://github.com/zjwang11/IRVSP
VASP2KP可以构建哈密顿量和Zeeman耦合,并从VASP计算中自动计算参数和Landé g-因子,具体可见
https://github.com/zjwang11/VASP2KP
www.vasp2kp.com
http://www.topmat.org/
在安装软件之后,我们以BiSe为例按照下图流程进行相关计算。
除此之外,BiSe相关的内容可见《ABACUS+PYATB计算Bi2Se3的能带和拓扑性质》《ABACUS+Wannier90+WannierTools计算Bi2Se3的能带和拓扑性质》《更新:ABACUS+Wannier90+WannierTools计算Bi2Se3的能带和拓扑性质》等。
IRVSP
安装
软件安装用代码块展示,注意其中的注释!!!
# 使用 git clone 命令下载仓库
git clone https://github.com/zjwang11/IRVSP.git
# 下载完成,进行如下
cd IRVSP/
tar -zxvf src_irvsp_v2.tar.gz
cd src_irvsp_v2_release/
# 编译安装
./configure.sh
source ~/.bashrc
make
注意注意注意:
我原先直接安装,没有看VASP版本,结果报错
后边重新编译VASP(For VASP6.x, please modify the line "CALL SET_SPINROT_WRAPPER(LATT_CUR%B(1,1),-1)" in mkpoints.F to "CALL SET_SPINROT_WRAPPER(LATT_CUR%B(1,1),IU6)" and recompile VASP before using IRVSP.)得到解决!
例子
1.准备原始的POSCAR
Bi2Se3
1.0
-2.069 -3.583614 0.000000
2.069 -3.583614 0.000000
0.000 2.389075 9.546667
Bi Se
2 3
Direct
0.3990 0.3990 0.6970
0.6010 0.6010 0.3030
0 0 0.5
0.2060 0.2060 0.1180
0.7940 0.7940 0.8820
2.用phonopy处理原始的POSCAR得到PPOSCAR和BPOSCAR
通过命令
phonopy --symmetry --tolerance 0.01 -c POSCAR
得到PPOSCAR为
generated by phonopy
1.0
2.0690003806787955 1.1945379267383402 9.5466670000000526
-2.0690003806787951 1.1945379267383402 9.5466670000000526
-0.0000000000000001 -2.3890758534766805 9.5466670000000526
Bi Se
2 3
Direct
0.3990000000000000 0.3990000000000000 0.3990000000000000
0.6010000000000000 0.6010000000000000 0.6010000000000000
0.9999999999999998 0.0000000000000002 0.0000000000000000
0.2060000000000000 0.2060000000000000 0.2060000000000000
0.7939999999999999 0.7940000000000000 0.7940000000000000
3.标准化POSCAR
打开https://tm.iphy.ac.cn/UnconvMat.html
网站,将PPOSCAR复制到
得到
将红框中的POSCAR_std作为新的POSCAR进行VASP计算。
4.用VASP做自洽计算和能带计算(非自洽计算)
标准化之后的POSCAR为
SG 166 0.000 0.000 0.000 :Generated by pos2aBR for irvsp!
1.0
2.0690003806787955 1.1945379267383402 9.5466670000000526
-2.0690003806787951 1.1945379267383402 9.5466670000000526
-0.0000000000000001 -2.3890758534766805 9.5466670000000526
Bi Se
2 3
Direct
0.3990000000000000 0.3990000000000000 0.3990000000000000
0.6010000000000000 0.6010000000000000 0.6010000000000000
0.9999999999999998 0.0000000000000002 0.0000000000000000
0.2060000000000000 0.2060000000000000 0.2060000000000000
0.7939999999999997 0.7939999999999998 0.7939999999999999
自洽计算
INCAR
Global Parameters
ISTART = 0 (Read existing wavefunction, if there)
ISPIN = 1 (Non-Spin polarised DFT)
# ICHARG = 11 (Non-self-consistent: GGA/LDA band structures)
LREAL = .FALSE. (Projection operators: automatic)
# ENCUT = 400 (Cut-off energy for plane wave basis set, in eV)
# PREC = Accurate (Precision level: Normal or Accurate, set Accurate when perform structure lattice relaxation calculation)
LWAVE = .TRUE. (Write WAVECAR or not)
LCHARG = .TRUE. (Write CHGCAR or not)
ADDGRID= .TRUE. (Increase grid, helps GGA convergence)
# LVTOT = .TRUE. (Write total electrostatic potential into LOCPOT or not)
# LVHAR = .TRUE. (Write ionic + Hartree electrostatic potential into LOCPOT or not)
# NELECT = (No. of electrons: charged cells, be careful)
# LPLANE = .TRUE. (Real space distribution, supercells)
# NWRITE = 2 (Medium-level output)
# KPAR = 2 (Divides k-grid into separate groups)
# NGXF = 300 (FFT grid mesh density for nice charge/potential plots)
# NGYF = 300 (FFT grid mesh density for nice charge/potential plots)
# NGZF = 300 (FFT grid mesh density for nice charge/potential plots)
Electronic Relaxation
ISMEAR = 0 (Gaussian smearing, metals:1)
SIGMA = 0.05 (Smearing value in eV, metals:0.2)
NELM = 90 (Max electronic SCF steps)
NELMIN = 6 (Min electronic SCF steps)
EDIFF = 1E-08 (SCF energy convergence, in eV)
# GGA = PS (PBEsol exchange-correlation)
Ionic Relaxation
NSW = 0 (Max ionic steps)
IBRION = -1 (Algorithm: 0-MD, 1-Quasi-New, 2-CG)
ISIF = 2 (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
EDIFFG = -2E-02 (Ionic convergence, eV/AA)
# ISYM = 2 (Symmetry: 0=none, 2=GGA, 3=hybrids)
SAXIS = 0 0 1
MAGMOM = 600*0
NCORE = 8
LORBIT = 11
LSORBIT = .TRUE.
KPOINTS
K-Spacing Value to Generate K-Mesh: 0.030
0
Gamma
9 9 9
0.0 0.0 0.0
能带计算
INCAR
Global Parameters
ISTART = 1 (Read existing wavefunction, if there)
ISPIN = 1 (Non-Spin polarised DFT)
ICHARG = 11 (Non-self-consistent: GGA/LDA band structures)
LREAL = .FALSE. (Projection operators: automatic)
# ENCUT = 400 (Cut-off energy for plane wave basis set, in eV)
# PREC = Accurate (Precision level: Normal or Accurate, set Accurate when perform structure lattice relaxation calculation)
LWAVE = .TRUE. (Write WAVECAR or not)
LCHARG = .FALSE. (Write CHGCAR or not)
ADDGRID= .TRUE. (Increase grid, helps GGA convergence)
# LVTOT = .TRUE. (Write total electrostatic potential into LOCPOT or not)
# LVHAR = .TRUE. (Write ionic + Hartree electrostatic potential into LOCPOT or not)
# NELECT = (No. of electrons: charged cells, be careful)
# LPLANE = .TRUE. (Real space distribution, supercells)
# NWRITE = 2 (Medium-level output)
# KPAR = 2 (Divides k-grid into separate groups)
# NGXF = 300 (FFT grid mesh density for nice charge/potential plots)
# NGYF = 300 (FFT grid mesh density for nice charge/potential plots)
# NGZF = 300 (FFT grid mesh density for nice charge/potential plots)
Electronic Relaxation
ISMEAR = 0 (Gaussian smearing, metals:1)
SIGMA = 0.05 (Smearing value in eV, metals:0.2)
NELM = 90 (Max electronic SCF steps)
NELMIN = 6 (Min electronic SCF steps)
EDIFF = 1E-08 (SCF energy convergence, in eV)
# GGA = PS (PBEsol exchange-correlation)
Ionic Relaxation
NSW = 0 (Max ionic steps)
IBRION = -1 (Algorithm: 0-MD, 1-Quasi-New, 2-CG)
ISIF = 2 (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
EDIFFG = -2E-02 (Ionic convergence, eV/AA)
# ISYM = 2 (Symmetry: 0=none, 2=GGA, 3=hybrids)
SAXIS = 0 0 1
MAGMOM = 600*0
NCORE = 8
LORBIT = 11
LSORBIT = .TRUE.
KPOINTS
K-Path Generated by VASPKIT.
50
Line-Mode
Reciprocal
0.5000000000 0.0000000000 0.5000000000 F
0.0000000000 0.0000000000 0.0000000000 GAMMA
0.0000000000 0.0000000000 0.0000000000 GAMMA
0.5000000000 0.0000000000 0.0000000000 L
能带计算之后,我们得到
我们看到价带和导带都是二重简并的,对应的能带指标分别为47-48和49-50,这个在后续IRVSP计算时候要设置。
5.IRVSP计算
用IRVSP计算表示,命令为
irvsp -sg 166 -nb 47 50 > outir
计算完成之后,在outir中找到点为
knum = 50 kname=
k = 0.000000 0.000000 0.000000
The k-point name is GM
12 symmetry operations (module lattice translations) in space group 166
We do NOT classify the elements into classes.
Tables can be found on website: http://www.cryst.ehu.es/.
1 GM : kname 0.00 0.00 0.00 : given in the conventional basis
1 : the existence of antiunitary symmetries. 1-exist; 0-no
Reality 1 2 3 4 5 6 7 8 9 10 11 12
1 GM1+ 1.00+0.00i 1.00+0.00i 1.00+0.00i 1.00+0.00i 1.00+0.00i 1.00+0.00i 1.00+0.00i 1.00+0.00i 1.00+0.00i 1.00+0.00i 1.00+0.00i 1.00+0.00i
1 GM1- 1.00+0.00i 1.00+0.00i 1.00+0.00i 1.00+0.00i 1.00+0.00i 1.00+0.00i -1.00+0.00i -1.00+0.00i -1.00+0.00i -1.00+0.00i -1.00+0.00i -1.00+0.00i
1 GM2+ 1.00+0.00i 1.00+0.00i 1.00+0.00i -1.00+0.00i -1.00+0.00i -1.00+0.00i 1.00+0.00i 1.00+0.00i 1.00+0.00i -1.00+0.00i -1.00+0.00i -1.00+0.00i
1 GM2- 1.00+0.00i 1.00+0.00i 1.00+0.00i -1.00+0.00i -1.00+0.00i -1.00+0.00i -1.00+0.00i -1.00+0.00i -1.00+0.00i 1.00+0.00i 1.00+0.00i 1.00+0.00i
1 GM3+ 2.00+0.00i -1.00+0.00i -1.00+0.00i 0.00+0.00i 0.00+0.00i 0.00+0.00i 2.00+0.00i -1.00+0.00i -1.00+0.00i 0.00+0.00i 0.00+0.00i 0.00+0.00i
1 GM3- 2.00+0.00i -1.00+0.00i -1.00+0.00i 0.00+0.00i 0.00+0.00i 0.00+0.00i -2.00+0.00i 1.00+0.00i 1.00+0.00i 0.00+0.00i 0.00+0.00i 0.00+0.00i
----------------------------------------------------------------------------------------------------------------------------------------------------
0 GM4 1.00+0.00i -1.00+0.00i -1.00+0.00i 0.00-1.00i 0.00+1.00i 0.00-1.00i 1.00+0.00i -1.00+0.00i -1.00+0.00i 0.00-1.00i 0.00+1.00i 0.00-1.00i
0 GM5 1.00+0.00i -1.00+0.00i -1.00+0.00i 0.00+1.00i 0.00-1.00i 0.00+1.00i 1.00+0.00i -1.00+0.00i -1.00+0.00i 0.00+1.00i 0.00-1.00i 0.00+1.00i
0 GM6 1.00+0.00i -1.00+0.00i -1.00+0.00i 0.00-1.00i 0.00+1.00i 0.00-1.00i -1.00+0.00i 1.00+0.00i 1.00+0.00i 0.00+1.00i 0.00-1.00i 0.00+1.00i
0 GM7 1.00+0.00i -1.00+0.00i -1.00+0.00i 0.00+1.00i 0.00-1.00i 0.00+1.00i -1.00+0.00i 1.00+0.00i 1.00+0.00i 0.00-1.00i 0.00+1.00i 0.00-1.00i
-1 GM8 2.00+0.00i 1.00+0.00i 1.00+0.00i 0.00+0.00i 0.00+0.00i 0.00+0.00i 2.00+0.00i 1.00+0.00i 1.00+0.00i 0.00+0.00i 0.00+0.00i 0.00+0.00i
-1 GM9 2.00+0.00i 1.00+0.00i 1.00+0.00i 0.00+0.00i 0.00+0.00i 0.00+0.00i -2.00+0.00i -1.00+0.00i -1.00+0.00i 0.00+0.00i 0.00+0.00i 0.00+0.00i
elemt ,symmetry ops, exp(-i*k*taui), main axes
E 1 (+1.00 0.00i) ( 1.000, 0.000, 0.000)
C3 2 (+1.00 0.00i) ( 0.000, 0.000, 1.000)
C3 3 (+1.00 0.00i) ( 0.000, 0.000, 1.000)
C2 4 (+1.00 0.00i) ( 0.502, 0.865, 0.000)
C2 5 (+1.00 0.00i) ( 1.000, 0.000, 0.000)
C2 6 (+1.00 0.00i) ( 0.502,-0.865, 0.000)
I 7 (+1.00 0.00i) ( 1.000, 0.000, 0.000)
IC3 8 (+1.00 0.00i) ( 0.000, 0.000, 1.000)
IC3 9 (+1.00 0.00i) ( 0.000, 0.000, 1.000)
IC2 10 (+1.00 0.00i) ( 0.502, 0.865, 0.000)
IC2 11 (+1.00 0.00i) ( 1.000, 0.000, 0.000)
IC2 12 (+1.00 0.00i) ( 0.502,-0.865, 0.000)
bnd ndg eigval E 2 3 4 5 6 7 8 9 10 11 12
47 2 4.665477 2.00+0.00i 1.00+0.00i 1.00+0.00i 0.00+0.00i 0.00+0.00i 0.00+0.00i 2.00+0.00i 1.00+0.00i 1.00+0.00i 0.00+0.00i 0.00+0.00i 0.00+0.00i =GM8
49 2 5.114564 2.00+0.00i 1.00+0.00i 1.00+0.00i 0.00+0.00i 0.00+0.00i 0.00+0.00i -2.00+0.00i -1.00+0.00i -1.00+0.00i 0.00+0.00i 0.00+0.00i 0.00+0.00i =GM9
通过使用IRVSP方法,我们得到BiSe的最低的导带属于GM9(二重简并),而最高的价带则属于GM8(二重简并)。
VASP2KP
安装
软件安装用代码块展示,注意其中的注释!!!
###### 安装 VASP2KP
# 创建环境
conda create --name vasp2kp -c conda-forge python=3
# To activate this environment, use
#
# $ conda activate vasp2kp
#
# To deactivate an active environment, use
#
# $ conda deactivate
# 安装 kdotp-generator
pip install kdotp-generator
# 安装 VASP2KP
pip install VASP2KP
###### 编译 vasp2mat
# 使用 git clone 命令下载仓库
git clone https://github.com/zjwang11/VASP2KP.git
# 下载 vasp2mat.6.4-patch-1.0.1.sh, 并将文件夹 vasp.6.4 放入同一文件夹中
# 也就是说 vasp2mat.6.4-patch-1.0.1.sh 文件和 vasp.6.4 文件夹在同一级别的目录
# 正常编译 vasp.6.4,然后运行 vasp2mat.6.4-patch-1.0.1.sh
bash vasp2mat.6.4-patch-1.0.1.sh
# 安装完成,提示
# Finishing installing vasp2mat!
# The path of vasp2mat: /data/work/huangxl/software/vasp2kp/vasp2mat/vasp2mat.6.4/bin/vasp2mat
安装VASP2KP参考了《VASP2KP 的安装及编译》一文。
安装VASP可见《新服务器软件安装与设置》和《VASP及其相关软件安装与测试》,安装完VASP,有一些报错及其解决如下
###### 报错
# 在 vasp.6.4/bin 下运行 ./vasp_std 报错为
# ./vasp_std: /home/huangxl/anaconda3/lib/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by ./vasp_std)
# 检查
strings /home/huangxl/anaconda3/lib/libstdc++.so.6 | grep GLIBCXX
# 得到
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29
GLIBCXX_3.4.30
# 没有发现 GLIBCXX_3.4.32
# 检查
strings /usr/lib/libstdc++.so.6.0.32 | grep GLIBCXX
# 得到
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_3.4.26
GLIBCXX_3.4.27
GLIBCXX_3.4.28
GLIBCXX_3.4.29
GLIBCXX_3.4.30
GLIBCXX_3.4.31
GLIBCXX_3.4.32
# 发现有 GLIBCXX_3.4.32
###### 解决
echo 'export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
# 这会强制程序优先使用系统的 /usr/lib/libstdc++.so.6(包含 GLIBCXX_3.4.32)
注意:要将mat2kp中第一行的#!/Users/shengzhang/anaconda3/bin/python
改成自己的环境目录!对于我的环境目录,改为#!/home/huangxl/anaconda3/envs/vasp2kp/bin/python
(通过conda env list
可以给出所有环境及其路径)。
例子
基本计算
对于VASP2KP计算,前边的计算类似于IRVSP计算,流程为
对于第三步,我们需要计算k点(一个点)的能带的波函数和这个点的能量本征值。这样可以算这个点的IRVSP,也可以算vasp2mat。我们这里设置NBANDS = 600
,是由于计算需要很多条带进行Lowdin partition的微扰。
KPOINTS设置为
Bi2Se3
1
Reciprocal lattice
0 0 0 1
VASP计算完成之后,通过IRVSP计算其表示(这个在之前做过了,不再展示)。
由于后面要用相应的生成元去建立表示矩阵,找生成元可以通过https://www.cryst.ehu.es/
网站进行。BiSe是166号空间群,操作如下
得到
再看一下表示,由于开了SOC,所以我们选择166号空间群的第二类磁群,如下
然后可以看到点的所有群操作和不可约表示矩阵。回看一下我们之前的生成元,在这里找相应的结果为
vasp2mat
下面计算在VASP波函数作为基函数的情况下表示矩阵的形式。新建文件夹,将上边VASP四个基本输入文件和WAVECAR拷贝过来。INCAR设置不读电荷密度,读波函数,不要输出波函数,具体为
ISTART = 1 (Read existing wavefunction, if there)
ISPIN = 1 (Non-Spin polarised DFT)
ICHARG = 1 (Non-self-consistent: GGA/LDA band structures)
LREAL = .FALSE. (Projection operators: automatic)
# ENCUT = 400 (Cut-off energy for plane wave basis set, in eV)
# PREC = Accurate (Precision level: Normal or Accurate, set Accurate when perform structure lattice relaxation calculation)
LWAVE = .FALSE. (Write WAVECAR or not)
LCHARG = .FALSE. (Write CHGCAR or not)
ADDGRID= .TRUE. (Increase grid, helps GGA convergence)
# LVTOT = .TRUE. (Write total electrostatic potential into LOCPOT or not)
# LVHAR = .TRUE. (Write ionic + Hartree electrostatic potential into LOCPOT or not)
# NELECT = (No. of electrons: charged cells, be careful)
# LPLANE = .TRUE. (Real space distribution, supercells)
# NWRITE = 2 (Medium-level output)
# KPAR = 2 (Divides k-grid into separate groups)
# NGXF = 300 (FFT grid mesh density for nice charge/potential plots)
# NGYF = 300 (FFT grid mesh density for nice charge/potential plots)
# NGZF = 300 (FFT grid mesh density for nice charge/potential plots)
Electronic Relaxation
ISMEAR = 0 (Gaussian smearing, metals:1)
SIGMA = 0.05 (Smearing value in eV, metals:0.2)
NELM = 90 (Max electronic SCF steps)
NELMIN = 6 (Min electronic SCF steps)
EDIFF = 1E-08 (SCF energy convergence, in eV)
# GGA = PS (PBEsol exchange-correlation)
Ionic Relaxation
NSW = 0 (Max ionic steps)
IBRION = -1 (Algorithm: 0-MD, 1-Quasi-New, 2-CG)
ISIF = 2 (Stress/relaxation: 2-Ions, 3-Shape/Ions/V, 4-Shape/Ions)
EDIFFG = -2E-02 (Ionic convergence, eV/AA)
# ISYM = 2 (Symmetry: 0=none, 2=GGA, 3=hybrids)
SAXIS = 0 0 1
MAGMOM = 600*0
NCORE = 8
LORBIT = 11
LSORBIT = .TRUE.
NBANDS = 600
INCAR.mat.Pi(动量矩阵)设置为
&vmat_para
! soc------------------------------------------
cfactor=1.0
socfactor=1.0
nosoc_inH = .false.
! operator-------------------------------------
vmat = 11
vmat_name = 'Pi'
vmat_k = 1
bstart=1, bend=600
print_only_diagnal = .false.
/
INCAR.mat.sig(自旋矩阵)设置为
&vmat_para
! soc------------------------------------------
cfactor=1.0
socfactor=1.0
nosoc_inH = .false.
! operator-------------------------------------
vmat = 10
vmat_name = 'sig'
vmat_k = 1
bstart=47, bend=50
print_only_diagnal = .false.
/
注意vmat = 10
,能带范围设置为实际考虑的能带范围。
除了动量矩阵和自旋矩阵,还需要操作矩阵(表示矩阵)。我们从上一步计算的OUTCAR中搜索irot
,得到
Space group operators:
irot det(A) alpha n_x n_y n_z tau_x tau_y tau_z
1 1.000000 0.000001 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000
2 -1.000000 0.000001 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000
3 1.000000 180.000000 -0.500000 0.866025 0.000000 0.000000 0.000000 0.000000
4 -1.000000 180.000000 -0.500000 0.866025 0.000000 0.000000 0.000000 0.000000
5 1.000000 120.000000 -0.000000 -0.000000 -1.000000 0.000000 0.000000 0.000000
6 -1.000000 120.000000 -0.000000 -0.000000 -1.000000 0.000000 0.000000 0.000000
7 1.000000 180.000000 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000
8 -1.000000 180.000000 1.000000 0.000000 0.000000 0.000000 0.000000 0.000000
9 1.000000 120.000000 -0.000000 -0.000000 1.000000 0.000000 0.000000 0.000000
10 -1.000000 120.000000 -0.000000 -0.000000 1.000000 0.000000 0.000000 0.000000
11 1.000000 180.000000 0.500000 0.866025 -0.000000 0.000000 0.000000 0.000000
12 -1.000000 180.000000 0.500000 0.866025 -0.000000 0.000000 0.000000 0.000000
INCAR.mat.C3z设置为
&vmat_para
! soc------------------------------------------
cfactor=1.0
socfactor=1.0
nosoc_inH = .false.
! operator-------------------------------------
vmat = 12
vmat_name = 'C3z' !/ 'C2x' / 'P' / 'T'
vmat_k = 1
bstart=47, bend=50
print_only_diagnal = .false.
! rotation-------------------------------------
rot_n(:) = 0 0 1 !/ 1 0 0 / 0 0 1 / 0 0 1
rot_alpha = 120 !/ 180 / 0 / 0
rot_det = 1 !/ 1 / -1 / 1
rot_tau(:) = 0 0 0
rot_spin2pi = .false.
time_rev = .false. !/ .false. / .false. / .true.
/
对于INCAR.mat.C2x、INCAR.mat.P和INCAR.mat.T根据后边注释更改即可。这样我们写出了六个INCAR.mat.xxx文件,将这六个文件依次复制为INCAR.mat文件,用vasp2mat跑六次。
mat2kp
新建文件夹,将上边得到的表示矩阵和EIGENVAL拷贝过来。准备mat2kp的输入文件mat2kp.in为
Symmetry = {
'C3z' : {
'rotation_matrix':
Matrix([[-Rational(1,2), -sqrt(3)/2,0],[sqrt(3)/2, -Rational(1,2), 0],[0, 0, 1]]),
'repr_matrix':
Matrix([[Rational(1,2)-I*sqrt(3)/2,0,0,0],[0,Rational(1,2)+I*sqrt(3)/2,0,0],
[0,0,Rational(1,2)-I*sqrt(3)/2,0],[0,0,0,Rational(1,2)+I*sqrt(3)/2]]),
'repr_has_cc': False},
'C2x' : {
'rotation_matrix': Matrix([[1, 0, 0],[0, -1, 0],[0, 0, -1]]),
'repr_matrix':
Matrix([[0,-Rational(1,2)-I*sqrt(3)/2,0,0],[Rational(1,2)-I*sqrt(3)/2,0,0,0],
[0,0,0,-Rational(1,2)-I*sqrt(3)/2],[0,0,Rational(1,2)-I*sqrt(3)/2,0]]),
'repr_has_cc': False},
'P' : {
'rotation_matrix': Matrix([[-1,0,0],[0, -1, 0],[0, 0, -1]]),
'repr_matrix':
Matrix([[1,0,0,0],[0,1,0,0],[0,0,-1,0],[0,0,0,-1]]),
'repr_has_cc': False},
'T' : {
'rotation_matrix': eye(3),# Identity Matrix
'repr_matrix': Matrix([[0,1,0,0],[-1,0,0,0],[0,0,0,-1],[0,0,1,0]]),
'repr_has_cc': True}
}
# optional parameters
vaspMAT = './'# the path: to read eigenvalues, Pi, s, and R matrices in this folder.
order = 2# Order of the kp model : 2 (default) or 3.
print_flag = 2# Where to output results: 1 (screen) or 2 (files, default).
kpmodel = 1# Whether to compute Hkp: 0 or 1 (default).
gfactor = 1# Whether to compute HZ: 0 or 1 (default).
log = 1# Whether to output log files: 0 or 1 (default).
完成之后,直接运行