结构建模

结构建模常用工具

缺陷构型生成:GitHub - nanyanshouhu/Defect_generator


构型可视化工具

HCP 除 (001) 面的结构是六方,其他面的结构均为四方或正交


分析工具

1
cif2cell input.cif -p vasp --vasp-cartesian-positions
1
2
findsym_cifinput input.cif > input1.cif  # 让 findsym 读起来更方便
findsym input1.cif > output.cif # 寻找对称性并输出

构型文件格式

  • 注意事项:

    • CIF 格式有含对称性、不含对称性两种格式(前者晶体学信息更全),大部分程序将构型格式转换成 CIF 都是不含对称性的(空间群为 P1,写入所有原子)
    • xyz 格式构型文件通过 ase 读取,其 pbc 为 False(extxyz 格式的 pbc 为 True),保存成 xyz 格式时无晶格参数信息;posconv 转换成 xyz 文件格式会在每行的原子位置后面附加晶格参数信息,第二行有注释信息
    • vaspkit 可将 xsd 文件转换成 POSCAR
    • posconv 添加 xsd 转换成其他格式的代码(Fortran)
  • 常见构型文件格式文件名及其后缀:File input and output — ASE documentation

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
POSCAR            # VASP
CONTCAR # VASP
XDATCAR # VASP 轨迹文件
.vasp # VASP
.poscar # VASP;Material Project 下载的构型格式
dump.lammpstrj # LAMMPS 轨迹文件
.pdb # Protein Data Bank,可用 VMD 软件(跨平台)打开
.xsd # Material Studio
.cell # CASTEP
.cif # Crystallographic Information File
.xsf # XCrySDen
.stru # ABACUS
.cube # Gaussian
.cfg # AtomEye;configuration 的缩写
.car # DMol3;Material Studio 可读
.arc # DMol3;类似轨迹文件;Material Studio 可读
  • xyz 格式内容示例
1
2
3
4
5
6
7
8
9
10
11
2

Nb 0.000000000000000 0.000000000000000 0.000000000000000
Nb 1.660000000000000 1.660000000000000 1.660000000000000


# posconv xyz 格式内容示例
2
# BCC(001) cell with dimension 1 x 1 x 1 and a = 3.32
Nb 0.000000000000000 0.000000000000000 0.000000000000000 crystal_vector 1 3.320000000000000 0.000000000000000 0.000000000000000
Nb 1.660000000000000 1.660000000000000 1.660000000000000 crystal_vector 2 0.000000000000000 3.320000000000000 0.000000000000000
  • extxyz 格式内容示例(第二行有信息)
1
2
3
4
5
6
7
# 其他构型文件转换成 extxyz
32
Lattice="6.57 0.0 0.0 0.0 6.57 0.0 0.0 0.0 11.88" Properties=species:S:1:pos:R:3 pbc="T T T"
Nb 1.09062000 4.37562000 10.09800000
Nb 2.19438000 1.09062000 10.09800000

# OUTCAR 转换成 extxyz
  • LAMMPS data 文件格式内容示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# atom_style 为 atomic 时的内容
Nb5Si3_alpha.lammps-data (written by ASE)

32 atoms
2 atom types
0.0 6.5700000000000003 xlo xhi
0.0 6.5700000000000003 ylo yhi
0.0 11.880000000000001 zlo zhi


Atoms

1 2 1.0906200000000001 4.3756200000000005 10.098000000000001
2 2 2.1943800000000002 1.0906200000000001 10.098000000000001
  • LAMMPS dump 文件格式内容示例
1
2
3
4
5
6
7
8
9
10
11
12
13
ITEM: TIMESTEP                                    # 第 N 个时间步长时输出的构型
0
ITEM: NUMBER OF ATOMS # 构型原子数
3400
ITEM: BOX BOUNDS pp pp pp # x y z 轴起始、终止坐标
0.0000000000000000e+00 3.6150000000000006e+01
0.0000000000000000e+00 3.6150000000000006e+01
0.0000000000000000e+00 7.2300000000000011e+01
ITEM: ATOMS id type xs ys zs # 原子 ID、类型、分数坐标等;可通过 dump 命令自定义输出所需内容
1 1 0 0 0.3
2 1 0.05 0.05 0.3
5 1 0.1 0 0.3
...

结构建模


复杂结构

  • 方法 1:在文献中查找该结构的晶体学信息,若提到 prototype structure(原型结构),可在数据库(AFLOW、MP、Springer Materials、ICSD 等)中找到对应的 cif 文件(需留意 Wyckoff position 是否一致或接近,某些含有变量,不同的具体结构变量值会不同),再将晶格常数和原子种类进行替换,替换为要构建结构的信息

  • 方法 2: 手动构建,需以下晶体学信息,使用 PyXtal,ASE,pymatgen 或 Material Studio 构建

    • 晶体结构(crystal structure)
    • 点阵参数(lattice parameter)
    • 空间群(space group number)
    • 原子位置(Wyckoff letter & Wyckoff position)

表面

  • 切复杂结构/高指数面的表面时,可优先使用 Material Studio 的 Build surface 功能,清晰直观,且能快速得到具体的坐标轴(用于 atomsk)

  • 不同方法生成常见低指数面的表面模型的区别

    • FCC:(100)、(110) 面正交/立方,(111) 面六方
    • BCC:(100) 面正交/立方,(110)、(111) 面六方
    • atomsk 构建时,需要求坐标轴正交,因此生成的表面模型总是正交胞
    • ASE 中的部分表面模型总是正交胞,部分可指定为非正交或正交胞
    • latgen 可指定生成的表面模型为非正交或正交胞
    • pymatgen 生成的表面模型总不是正交胞(没有前三个工具好用)
  • BCC、FCC、HCP 常见指数面的表面模型示意图

  • 添加真空层

    • vaspkit 添加真空层,先加真空层数值,再将原子层移至 z 方向中间(1 * vac)
    • ASE 中的 center() 函数添加真空层是分别往两边加(2 * vac)
    • atomsk 添加的真空层是在上半部分(1 * vac)
  • 表面模型中 z 方向晶格常数数值计算(n 为 layer 数目,d 为层间距,vac 为真空层厚度)

    • ASE:(n-1) * d + vac
    • atomsk:n * d + vac
    • latgen:n * d + vac(可指定为 n 或 n-1)
  • BCC、FCC、Diamond、HCP 常见表面/位向的具体坐标轴

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
# BCC、FCC、Diamond

# BCC 单胞 2 个原子,FCC 4 个;均为 2 个原子层
# Diamond 单胞 8 个原子;4 个原子层
"[010]" "[001]" "[100]" # (100) 面;立方

# BCC 单胞 4 个原子,FCC 2 个;均为 2 个原子层
# Diamond 单胞 4 个原子;4 个原子层
"[01-1]" "[011]" "[100]" # (100) 面;正交

# BCC 单胞 4 个原子,FCC 2 个;均为 2 个原子层
# Diamond 单胞 4 个原子;2 个原子层
"[1-10]" "[001]" "[110]" # (110) 面;正交

# BCC、FCC 单胞均为 6 个原子;均为 3 个原子层
# Diamond 单胞 6 个原子; 6 个原子层
"[11-2]" "[-110]" "[111]" # (111) 面;正交

# (111) 面;六方;[01-1] * 2 + [1-10] 转正交
"[01-1]" "[1-10]" "[111]"


# HCP
"[-12-10]" "[0001]" "[-1010]" # (100) 面

"[0001]" "[1-100]" "[-1-120]" # (110) 面

"[0001]" "[11-20]" "[1-100]" # (-110) 面

# (101) 面、(112) 面,latgen 与 atomsk 生成的结构有很大不同,不确定
  • 使用 VESTA 构建不同位向(本质还是找到晶向的具体坐标轴值):VASP 高级教程[8]使用 VESTA 切表面 surface slab

  • LAMMPS 内置命令构建不同位向出现的问题:好文:从源代码看 lammps 的建模 BUG

    • LAMMPS 的建模源代码里面没有提供对于特殊晶体取向的判断以修正最小周期长度,而 atomsk 提供了
    • 某些特殊的晶向指数, 在计算其最小的单位边长时, 是需要除以 2 的;BCC:1/2[111]、1/2[531];FCC:1/2[110]、1/2[112]

界面/异质结


非晶


晶界

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
# 指定旋转轴、sigma、晶面 生成晶界
from aimsgb import Grain, GrainBoundary

initial_structure = Grain.from_file("POSCAR_Fe")
gb = GrainBoundary(
axis=[0, 0, 1],
sigma=5,
plane=[1, 2, 0],
initial_struct=initial_structure,
)

structure = Grain.stack_grains(
grain_a=gb.grain_a,
grain_b=gb.grain_b,
direction=gb.direction,
)


# 寻找所有可用的晶界信息
from aimsgb import GBInformation

# 参数: 旋转轴和最大 sigma 值
# 返回值: 所有可能的 sigma 及对应的旋转角、晶面和 CSL 矩阵

gb_dict = GBInformation(axis=[1, 1, 0], max_sigma=10)

print(gb_dict)

print(gb_dict.get_gb_info()[3])

# output
"""
Grain boundary information for rotation axis: 110
Show the sigma values up to 10 (Note: * means twist GB, Theta is the rotation angle)
| Sigma | Theta | GB plane | CSL matrix |
|---------+---------+------------+--------------|
| 3 | 70.53 | (-1 1 1) | -1 1 1 |
| | | (1 -1 2) | 1 -1 1 |
| | | (1 1 0)* | 1 2 0 |
| 9 | 38.94 | (-1 1 -4) | -1 -2 1 |
| | | (-2 2 1) | 1 2 1 |
| | | (1 1 0)* | -4 1 0 |
"""

(Coincidence Site Lattice, CSL) 重合位置点阵理论

对称倾侧(斜)晶界 (Symmetrical Tilting Grain Boundaries, STGB)

tilted grain boundaries 晶界面平行于旋转轴

twisted grain boundary 晶界面垂直于旋转轴

1
2
3
4
m, n          # 整数
[u v w] # 晶粒旋转轴对应的晶向指数
# CSL 值
α # 奇数

根据特定晶界构建

寻找晶界


碳纳米管

其他:


石墨烯

注:

  • 对于六方结构,其中的原子位置坐标随基矢的选择会有些许不同,但本质一样都是一样的;
  • 基矢以逆时针为正方向;
  • C 的 ENMAX 为 400(所有元素中最大,所以 pymatgen 中 ENCUT 的默认设置为 520)。

graphene-structure.png

CASTRO NETO A H, GUINEA F, PERES N M R, 等, 2009. The electronic properties of graphene[J/OL]. Reviews of Modern Physics, 81(1): 109-162. DOI:10.1103/RevModPhys.81.109.

石墨烯 POSCAR 文件

1
2
3
4
5
6
7
8
9
10
graphene hexagonal
1.0
2.4680000000000000 0.0000000000000000 0.0000000000000000
-1.2340000000000000 2.1373506965399902 0.0000000000000000
0.0000000000000000 0.0000000000000000 15.0000000000000000
C
2
direct
0.0000000000000000 0.0000000000000000 0.0000000000000000 C
0.3333333333333349 0.6666666666666697 0.0000000000000000 C

石墨

  • 六方结构;z 轴方向长度约为 6.7 埃

image.png

https://doi.org/10.1016/B978-0-12-385469-8.00002-2.

image.png

10.1073/pnas.2134173100.

石墨 POSCAR 文件

1
2
3
4
5
6
7
8
9
10
11
12
graphite
1.0
2.4638000000000000 0.0000000000000000 0.0000000000000000
-1.2319000000000000 2.1337133898440999 0.0000000000000000
0.0000000000000000 0.0000000000000000 6.6959999999999997
C
4
direct
0.0000000000000000 0.0000000000000000 0.0000000000000000 C
0.3333333333333334 0.6666666666666667 0.0000000000000000 C
0.0000000000000000 0.0000000000000000 0.5000000000000000 C
0.6666666666666666 0.3333333333333334 0.5000000000000000 C

晶体学相关

  • 了解 aflow prototype 中的 primitive vectors 的公式及其含义,及如何实现 unit 与 primitive 互相转变的

  • D019 结构(Ti3Al)原子位点,mp 与 latgen 两者有区别(和 hcp 类似的问题)

D019 Ti3Al 结构:https://next-gen.materialsproject.org/materials/mp-1823?chemsys=Ti-Al&crystal_system=Hexagonal


α2 相晶体学信息:晶体结构:D019;空间群:P63/mmc
有序 B2/β 相晶体学信息:空间群:Pm-3m(3 的上面有横线) CsCl 原型结构
O 相晶体学信息:晶体结构:三元有序 orthorhombic;空间群:Cmcm, oC16


其他

BCC 的第 N 近邻距离:solid state chemistry - Calculate the third and fourth nearest neighbours in bcc - Chemistry Stack Exchange

BCC金属中的间隙原子及建模

金刚石结构 Si 原胞原子位点位置(latgen、ASE):(0.0 0.0 0.0)、(0.25 0.25 0.25);pymatgen 对应的原胞位置是 (0.0 0.0 0.0)、(0.75 0.75 0.75)

  • 原子半径没有统一值?

晶胞正交化、等长化:晶胞正方化 - Jerkwin

钙钛矿、半导体、绝缘体的点缺陷比金属或金属间化合物的点缺陷要复杂很多

C60 POSCAR 文件:C60.POSCAR.vasp

HCP 结构位错类型:a 型、a+c 型

钙钛矿晶体结构:八面体扭转理论

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
A Handbook of Lattice Spacings and Structures of Metals and Alloys Volume 4 in International Series of Monographs on Metal Physics and Physical Metallurgy Book • 1958

https://doi.org/10.1016/C2013-0-08243-6

CHAPTER VI
CRYSTALLOGRAPHIC DATA ON "STRUKTURBERICHT" TYPES

CHAPTER VII
TABULATED LATTICE SPACINGS AND DATA OF THE ELEMENTS

CHAPTER VIII
TABULATED LATTICE SPACINGS AND DATA OF INTERMEDIATE PHASES IN ALLOY SYSTEMS

CHAPTER IX
ALPHABETICAL INDEX OF WORK ON BORIDES, CARBIDES, HYDRIDES, NITRIDES, AND
BINARY OXIDES

晶胞转换(介绍了几种工具;内容一般):晶胞之间相互转换 - ZSaying


A15 A3B 型

B1 NaCl 型

D019 hcp 结构
D022 正交结构

Pearson 符号
3 个符号表示
晶系 +(P I R F SABC I)+ 数字(原子数)

225 FCC 结构

原型结构(最早发现的晶体)