9.1 转角结构

转角结构简介

构建转角结构原理

https://mp.weixin.qq.com/s/j6dARDTRI_4c6yiSijTvHQ

转移矩阵这一步看不懂可先从三步看构建超胞我们是是用转移矩阵的方法来分别转角两层结构的。
这里先记住两个转移矩阵:第一层转移矩阵:
第二层转移矩阵:整数 越大超胞越大,单层原子数= 单胞原子数 转移矩阵的行列式 :$N = n  det(T)$转角 满足:这里举个例子:对于石墨烯单胞原子数n=2,如果我们i取2,则转移矩阵的行列式=19,则单层原子数为

构建转角结构的方法和程序

Twist2D

Python code for twisting the 2D materials.

链接:https://github.com/kYangLi/Twist2D

使用:python demo.py #将twist2d.py放到同一文件夹

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
"""Twist2D Demo."""
#%%
# +------------+
# | Usage Demo |
# +------------+
from twist2d import *

# Create an object for t2d
twist_demo = Twist2D()

# Initialize the different twisted layers
# - super_a1_mult, super_a2_mult: supercell vector a1',a2' based on a1,a2
# - layer_dis: the layer distance of this layer to next layer, default 2A.
# - scs_x, scs_y: supercell shift in x,y direction in angstroms, default 0A.
# - prim_poscar: POSCAR for primitive cell of current layer, default 'POSCAR'.
m = 6
n = 7
#--> 1st layer
# The 1st layer is also the base layer, which all of other layers will
# try to add some strain to match the 1st layer's cell constants.
super_a1_mult = [m, n]
super_a2_mult = [-n, m+n]
twist_demo.add_layer(super_a1_mult, super_a2_mult, layer_dis=3, prim_poscar="POSCAR")
#--> 2nd layer
super_a1_mult = [n, m]
super_a2_mult = [-m, n+m]
twist_demo.add_layer(super_a1_mult, super_a2_mult, prim_poscar="POSCAR")
# #--> 3rd layer
# super_a1_mult = [n, m]
# super_a2_mult = [-m, n+m]
# twist_demo.add_layer(super_a1_mult, super_a2_mult, prim_poscar="POSCAR-BN")

# Twisting the layers
# - start_z: The lowest atom's fractional coordinates in z, default 0.1
# - super_a3_z: The length of the c vector in z direction, default 20A.
twist_demo.twist_layers(start_z=0.1)

# Write results to the file
twist_demo.write_res_to_poscar()

# (Optional) Calculate the twisted angles of each layer in degree
twisted_angles = twist_demo.calc_layers_twist_angles()
print(twisted_angles)

# PROGRAM END

#%%
# +-------------------+
# | Special condition |
# +-------------------+
from twist2d import *

# If you are twisting a bilayer graphene-like system,
# you can write more simply like this:

# Twist bilayer graphene-like structures
tbg_demo = TwistBGL()
tbg_demo.gen_TBGL(6, 7)
#tbg_demo.gen_TBG(m=6, n=7, prim_poscar='POSCAR', poscar_out="POSCAR.T2D.vasp", start_z=0.1, super_a3_z=20.0, layer_dis=2.0, scs_x=0.0, scs_y=0.0)

# (Optional) Calculate the twisted angles of each layer in degree
twisted_angles = tbg_demo.calc_layers_twist_angles()
print(twisted_angles)

#PROGRAM END

Twister

印度科学研究所Manish Jain教授课题组开发了相应的Twister程序。

To construct a super lattice:

  1. Select the angle you wish to use from the table.

  2. Use the corresponding twist angle (in radians), (m,n) and (p,q) in the input file: twist.inp (see Graphene/ and MoS2/ examples)

  3. Provide the basis atoms in crystal units in a file: basis_pos_crys (additionally provide another basis file for layer 2. See MoS2/Angle_63.48 for an example)

  4. Run twister:python path_to_Twister_1.0/src/twister.py

链接:http://www.physics.iisc.ac.in/~mjain/software/twister

转角异质结构建:

新建文件夹heterbilayer从其中一个例子中考入3个输入文件:basis_pos_crys  basis_pos_crys_layer2  get_ang.inp 

basis_pos_crys 和 basis_pos_crys_layer2是两层二维材料的晶体的原子坐标信息

get_ang.inp 为输入文件:自动搜索指定角度范围(theta_range)的扭转角,并输出精确扭转角、超晶格基矢和新的晶格参数

并行支持:-n 5 表示使用5个MPI进程加速计算。运行get_angle.py

输出文件:结果默认保存到文档

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
range_nm:  # 建立超胞的尺寸范围,尽量大点
-10 11
celldm_a:
2.512 2.512 25.0  #第1原子层的晶格常数
a1:
0.5 0.8660254 0.0 #单胞1矢量a
a2:
-0.5 0.8660254 0.0 #单胞1矢量b
a3:
0.0 0.0 1.0 #单胞1矢量c
Number_basis_atoms_a: #单胞1原子数
2
celldm_b:
3.301 3.301 25.0 #第2原子层的晶格常数
b1:
0.5 0.8660254 0.0 #单胞2矢量a
b2:
-0.5 0.8660254 0.0 #单胞2矢量b
b3:
0.0 0.0 1.0       #单胞2矢量c
Number_basis_atoms_b: #单胞2原子数
3


theta_range:
19.05 19.15 0.01 #角度搜索参数(°):上限 下限 步长;根据对称性:0-30°和30-60°结果相同initial mismatch threshold (Angstrom):不开启深度搜索的失配阈值。
0.02512  #这个值很关键,太小了通常搜索不到,个人建议单胞晶格常数的1%


final mismatch threshold (Angstrom):#开启深度搜索后的最终失配阈值。
0.00001
strain_tensor_vector:  #如果设置为TRUE,则单位向量会受到应变;如果设置为FALSE,则晶格参数会受到应变
'False'  # 只能是'False' 或者 True,大小写都不能错
strain_per: #应变变化所允许的最大百分比范围
1.0
strain_layer: #'Top','Bottom'or'Both'
'Top'  # Top就是拉伸第2层,Bottom,就是拉伸第一层,具体拉伸那一层看你研究的对象
DeepSearch:
'False'
fix_ang:
'True'
f_ang:
60
plot:
'N'

编辑输入文件 twist.inp,包含以下关键参数:

从 get_angle.py 输出的 共格扭转角、超晶格矢量 和 晶格参数。

原子基矢位置文件:basis_pos_crys(底层)和 basis_pos_crys_layer2(顶层)。

运行命令生成原子坐标

关于twist.inp的设置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
a1_l:
1.000000000 0.000000000 0.000000000
a2_l:
0.500000000 0.866025400 0.000000000 
a3_l:
0.0 0.0 1.0

celldm1_l, celldm2_l, celldm3_l: (Angstrom)
3.164000000 3.164000000 25.000000000

a1_u:
1.000000000 0.000000000 0.000000000
a2_u:
0.500000000 0.866025400 0.000000000
a3_u:
0.0 0.0 1.0

celldm1_u, celldm2_u, celldm3_u: (Angstrom)
2.895032860 2.895032860 25.000000000

angle: (radians)
0.132454782
layer2_from_file:
True basis_pos_crys_layer2
translate_z: (Angstrom)
6.2

Superlattice1: (m,n)
-6.000000000 0.000000000  #.out文件中的第5行

Superlattice2: (p,q)
-6.000000000 6.000000000  #.out文件中的第6行

Plot_lattice:False

晶格参数默认以Å为单位,角度为弧度。

CellMatch

CellMatch代码的目的是给定所选材料的两个单胞来生成这种共同的超胞。CellMatch代码在给定的组合空间内进行搜索,并根据施加在其中一个成分上的应变对结果进行排序,而另一个成分则经历零应变。

链接:https://data.mendeley.com/datasets/drx9wzhn75/1

online工具1

https://materialsweb.org/lattice_matching/app

  1. Upload two POSCARs for your monolayer materials
  2. Enter the maximum acceptable area of the resultant unit cell
  3. Enter the maximum acceptable strain in the resultant unit cell
  4. Hit submit

You can download the result POSCAR files using the Download POSCAR button. Keep in mind that POSCAR 1 will be the top part of the heterostructure and POSCAR 2 will be the bottom part of the heterostructure. The structures will be the same regardless unless either of the monolayers is asymmetric.

online工具2

http://www.latticemixer.com

视频教程:https://www.youtube.com/watch?v=OKRRmAPyX7w&t=370s

vaspkit

vaspkit pro版本的825功能:Build Hexagonal Moire Superlattices

小角度转角构建及哈密顿