结构建模

结构建模常用工具


构型可视化工具


结构分析工具

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
12
# 第二行内容为空
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 行:必须有 LatticeProperties 参数;常见参数有 pbc
      • Properties=property_name:data_type:number_of_columns 规定原子信息数组每一列的信息
      • 常用 property_name:species、pos、Z、mass、charge;virial、stress(须为 3x3=9 个分量)
      • data_type:分为 S、I、R、L 分别对应 string、integer、real、logical
    • 第 3+ 行:与 Properties 对应的列
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
...

结构建模


常见简单结构

  • 简单结构包括:BCC、FCC、HCP、Diamond

  • HCP 结构单胞原子位置有两种形式:

    • 一个原子在原点,另一个在胞内:latgen 和 ASE,(0.0 0.0 0.0)、(2/3 1/3 0.5)
    • 两个原子均在胞内:pymatgen 和 PyXtal,(1/3 2/3 1/4)、(2/3 1/3 3/4)
    • 两种形式无本质区别,两者可通过周期性平移进行互相转化
    • Hexagonal close packing - hcp: Interactive 3D Structure 有这两种形式的可视化
  • 金刚石结构:

    • 原胞原子位置:
      • 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)
      • PyXtal:(0.0 0.0 0.0)、(0.75 0.75 0.75)
    • 三种形式无本质区别,两者可通过周期性平移进行互相转化
  • HCP、Diamond 常用原子位置分数坐标写法(与 wyckoff positions 不同)

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
# HCP 常用原子位置分数坐标写法(ASE、latgen、atomsk)
Mg2
1.0
2.870000 0.000000 0.000000
-1.435000 2.485493 0.000000
0.000000 0.000000 3.500000
Mg
2
Direct
0.000000 0.000000 0.000000 Mg
0.666667 0.333333 0.500000 Mg


# 金刚石结构常用原子位置分数坐标写法(ASE、latgen、atomsk)
Sn8
1.0
6.660000 0.000000 0.000000
0.000000 6.660000 0.000000
0.000000 0.000000 6.660000
Sn
8
direct
0.00 0.00 0.00
0.50 0.50 0.00
0.00 0.50 0.50
0.50 0.00 0.50
0.25 0.25 0.25
0.75 0.75 0.25
0.75 0.25 0.75
0.25 0.75 0.75
  • BCC、FCC、HCP、Diamond 原胞基矢
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# BCC 原胞基矢
-0.5 0.5 0.5
0.5 -0.5 0.5
0.5 0.5 -0.5

# FCC/Diamond 原胞基矢
0.0 0.5 0.5
0.5 0.0 0.5
0.5 0.5 0.0

# HCP 原胞基矢
0.5a -sqrt(3)/2a 0
0.5a sqrt(3)/2a 0
0 0 c

# Diamond 原胞基矢
0.0 0.5 0.5
0.5 0.0 0.5
0.5 0.5 0.0

石墨、石墨烯

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#  参考文献
https://doi.org/10.1016/B978-0-12-385469-8.00002-2
https://doi.org/10.1073/pnas.2134173100

# 石墨 POSCAR 文件
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
  • 石墨烯:二维六方结构结构;石墨单层
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 参考文献
CASTRO NETO A H, GUINEA F, PERES N M R, 等, 2009. The electronic properties of graphene\[J]. Reviews of Modern Physics, 81(1): 109-162.

石墨烯 POSCAR 文件
graphene
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

碳纳米管


复杂结构


表面

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

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

    • FCC:(100)、(110) 面正交/立方,(111) 面六方
    • BCC:(100) 面正交/立方,(110)、(111) 面六方
    • HCP 除 (001) 面的结构是六方,其他面的结构均为四方或正交
    • 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)
  • 特殊的表面可能会发生重构现象(Si)

  • BCC、FCC、Diamond、HCP 常见表面/位向的具体坐标轴

    • FCC 结构 2 奇 1 偶的晶向对应的边长数值需除以 2
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(也适用于 B2)

# 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 值
α # 奇数

根据特定晶界构建

寻找晶界


其他

Ti2AlNb O 相:三元有序 orthorhombic;空间群:Cmcm, oC16

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

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

  • 原子半径没有统一值?

晶胞正交化、等长化:晶胞正方化 - 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