结构建模
结构建模
结构建模常用工具
Material Studio(Win + Linux)
其他:
计算材料数据库
金属建模
构型可视化工具
用于晶体、分子结构可视化的 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 构型格式文件转换成其他计算程序格式(较实用)
1 | cif2cell input.cif -p vasp --vasp-cartesian-positions |
- findsym:生成有对称性的 cif 文件(ISOTROPY 中的工具之一)
1 | findsym_cifinput input.cif > input1.cif # 让 findsym 读起来更方便 |
构型文件格式
注意事项:
- 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 | POSCAR # VASP |
- xyz 格式内容示例(第二行为空或含注释)
1 | # 第二行内容为空 |
- 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 对应的列
1 | # extxyz 基本格式示例 |
- LAMMPS data 文件格式内容示例
1 | # atom_style 为 atomic 时的内容 |
- LAMMPS dump 文件格式内容示例
1 | ITEM: TIMESTEP # 第 N 个时间步长时输出的构型 |
结构建模
元素周期表里元素的晶体结构: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 不同)
1 | # HCP 常用原子位置分数坐标写法(ASE、latgen、atomsk) |
- BCC、FCC、HCP、Diamond 原胞基矢
1 | # BCC 原胞基矢 |
石墨、石墨烯
石墨:六方结构;a=2.46 Å,c=6.7 Å
1 | # 参考文献 |
- 石墨烯:二维六方结构结构;石墨单层
1 | # 参考文献 |
碳纳米管
-
- 先构建纳米带,再使其卷曲形成纳米管
复杂结构
方法 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
1 | # BCC、FCC、Diamond(也适用于 B2) |
使用 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 程序使用
1 | # 指定旋转轴、sigma、晶面 生成晶界 |
(Coincidence Site Lattice, CSL) 重合位置点阵理论
对称倾侧(斜)晶界 (Symmetrical Tilting Grain Boundaries, STGB)
tilted grain boundaries 晶界面平行于旋转轴
twisted grain boundary 晶界面垂直于旋转轴
1 | m, n # 整数 |
根据特定晶界构建
寻找晶界
其他
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 型
钙钛矿晶体结构:八面体扭转理论
1 | 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 |
晶胞转换(介绍了几种工具;内容一般):晶胞之间相互转换 - ZSaying