结构建模¶
约 2777 个字 240 行代码 预计阅读时间 12 分钟
结构建模常用工具¶
- pymatgen
- ASE
- Atomsk
- latgen
- PyXtal
-
Material Studio(Win + Linux)
-
其他:
-
计算材料数据库
-
金属建模
构型可视化工具¶
- OVITO
- VESTA
- VMD
-
用于晶体、分子结构可视化的 Jupyter 组件:GitHub - nglviewer/nglview: Jupyter widget to interactively view molecular structures and trajectories
-
结构可视化
-
VMD 可计算 RDF、统计键长、可视化磁化密度(magnetization denisty)
结构分析工具¶
-
crysinfo 程序(孔老师):6a 选项查看 Wyckoff letter
-
含缺陷超胞生成、前/后处理和分析:Doped code 介绍
-
Crystal Toolkit 可视化分析工具:
-
AFLOW 线上工具:AFlow - Automatic - FLOW for Materials Discovery;功能
- 构型文件转换
- 对称性
- 结构对比
- Coordination corrected enthalpies (CCE)
- K 点
- Partial OCCupation (POCC)
- 间隙
- XRD
-
cifcell:将 CIF 构型格式文件转换成其他计算程序格式(较实用)
- findsym:生成有对称性的 cif 文件(ISOTROPY 中的工具之一)
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
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 格式内容示例(第二行为空或含注释)
# 第二行内容为空
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 行:必须有
Lattice
、Properties
参数;常见参数有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 对应的列
# 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 文件格式内容示例
# 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 文件格式内容示例
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
...
结构建模¶
-
元素周期表里元素的晶体结构:Periodic table (crystal structure) - Wikipedia
-
Springer Materials:https://materials.springer.com/
-
MP 等材料数据库中的结构文件有时对称性不一定正确,查看该数据库中已计算的性质是否与文献中的接近,以及最好进行静态计算检验一下
常见简单结构¶
-
简单结构包括: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 不同)
# 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 原胞基矢
# 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
石墨、石墨烯¶
-
石墨:六方结构;a=2.46 Å,c=6.7 Å
# 参考文献
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
- 石墨烯:二维六方结构结构;石墨单层
# 参考文献
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
碳纳米管¶
-
- 先构建纳米带,再使其卷曲形成纳米管
复杂结构¶
-
方法 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)
-
遇到的 Strukturbericht Designation 结构
- The A15 Structure
- The NaCl (B1) Structure
- The CsCl (B2) Structure
- The Zincblende (B3) Structure
- The Wurtzite (B4) Structure
- The NiAs (B8_1) Structure
- The AuCd (B19) Structure
- The Fluorite (C1) Structure
- The Cu_2Mg Cubic Laves Structure (C15)
- The hexagonal omega (C32) Structure
- The AlFe_3 (D0_3) Structure
- The D0_19 (Ni_3 Sn) Structure
- The Al_3 Ti (D0_22) Structure
- The CuAu (L1_0) Structure
- The Cu_3Au (L1_2) Structure
- The CuTi_3 (L6_0) Structure
- Cr5B3:AFLOW Prototype: A3B5_tI32_140_ah_cl
- Mn5Si3:AFLOW Prototype: A5B3_hP16_193_dg_g
-
其他:
表面¶
-
切复杂结构/高指数面的表面时,可优先使用 Material Studio 的 'Build -- Surfaces -- Cleave Surface' 功能,清晰直观,且能快速得到具体的坐标轴(用于 atomsk)
-
不同方法生成常见低指数面的表面模型的区别
- FCC:(100)、(110) 面正交/立方,(111) 面六方
- BCC:(100) 面正交/立方,(110)、(111) 面六方
- HCP 除 (001) 面的结构是六方,其他面的结构均为四方或正交
- atomsk 构建时,需要求坐标轴正交,因此生成的表面模型总是正交胞
- ASE 中的部分表面模型总是正交胞,部分可指定为非正交或正交胞
- latgen 可指定生成的表面模型为非正交或正交胞
- pymatgen 生成的表面模型总不是正交胞(没有前三个工具好用)
-
BCC、FCC、HCP 常见指数面的表面模型示意图
- BCC/FCC (100)、(110) 面一个最小完整单元有 2 个原子层,(111) 面有 3 个原子层(正常是六方)
- 1.3: Surface Structures- fcc Metals - Chemistry LibreTexts
- 1.4: Surface Structures- hcp Metals - Chemistry LibreTexts
- 1.5: Surface Structures- bcc metals - Chemistry LibreTexts
-
添加真空层
- 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
- BCC 结构 3 奇的晶向对应方向的盒子长度需除以 2
# 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 个原子层
"[1-10]" "[11-2]" "[111]" # (111) 面;正交
# (111) 面;六方;[01-1] * 2 + [1-10] 转正交
"[01-1]" "[1-10]" "[111]"
# HCP
# 单胞 4 个原子;4 个原子层;层间距不相等
# 单胞边长 a c √3a
"[-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]
界面/异质结¶
-
使用 Material Studio 的 'Build -- Build Layers' 功能
-
[建模与可视化] 求助Si和α-Al2O3材料界面计算的界面搭建问题 - 第一性原理 (First Principle) - 计算化学公社
-
GitHub - rzk1/heterojunction: Create surfaces and heterojunctions from two crystal structures
-
生成界面模型(Fortran 代码):Hepplestone / Artemis · GitLab
-
在 latgen、VASPKIT 和 MS 中,称为 build layer
-
VASPKIT 804 选项,会根据用户输入的错配度要求生成满足条件的系列界面构型 POSCAR 文件,并输出 log 信息
非晶¶
-
非晶相关结构分析:
晶界¶
-
aimsgb 程序:aimsgb documentation、aimsgb - GitHub
-
GitHub - ab5424/agility: Repository for the Atomistic Grain Boundary and Interface Utility.
-
GitHub - oekosheri/GB_code: A grain boundary generation code
-
含晶界构建
-
aimsgb 程序使用
# 指定旋转轴、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 晶界面垂直于旋转轴
根据特定晶界构建
寻找晶界
位错¶
-
各向同性下的位错构建
-
各向异性下的位错构建:Atomsk - Tutorial - Dislocations in Anisotropic Medium
其他¶
Ti2AlNb O 相:三元有序 orthorhombic;空间群:Cmcm, oC16
BCC 的第 N 近邻距离:solid state chemistry - Calculate the third and fourth nearest neighbours in bcc - Chemistry Stack Exchange
- 原子半径没有统一值?
晶胞正交化、等长化:晶胞正方化 - Jerkwin
钙钛矿、半导体、绝缘体的点缺陷比金属或金属间化合物的点缺陷要复杂很多
C60 POSCAR 文件:C60.POSCAR.vasp
HCP 结构位错类型:a 型、a+c 型
钙钛矿晶体结构:八面体扭转理论
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