Atomsk双晶与多晶初始结构
确定晶粒中心与取向,实际生成双晶/四晶粒模型,PTM识别与结构图。
阅读本篇目录
下载结构、实际数据、全部脚本与参考结果。解压后进入附件目录,依次执行本文步骤;reference/ 保存本次结果,复跑写入 work/,重建模型前会把旧work移到work-history。
1 从晶粒位置与取向生成模型#
本篇用确定的晶粒中心和晶体取向生成 Al 双晶及四晶粒模型,再用 OVITO PTM+Grain Segmentation识别晶粒。它们都是未弛豫的Voronoi初始几何;几何模型生成成功不意味着晶界能已经计算。

2 准备FCC种子#
bash run.sh models
cat work/models/bicrystal.txt
cat work/models/polycrystal.txt
atomsk --create fcc 4.05 Al Al-unit.xsf
双晶文件的完整内容:
box 81 81 32.4
node 20.25 40.5 16.2 [100] [010] [001]
node 60.75 40.5 16.2 [430] [-340] [001]
box后面是Å单位的盒长;node给出晶粒中心坐标及三条晶向。第二晶粒由[430]、[-340]、[001]定义,绕z的取向差约36.87°。本例不把它自动命名为某个已经验证的对称Σ5晶界。
atomsk --polycrystal Al-unit.xsf bicrystal.txt bicrystal.cfg -remove-doubles 1.4
3 四晶粒的完整输入#
box 81 81 32.4
node 20.25 20.25 16.2 [100] [010] [001]
node 60.75 20.25 16.2 [430] [-340] [001]
node 20.25 60.75 16.2 [4-30] [340] [001]
node 60.75 60.75 16.2 [210] [-120] [001]
atomsk --polycrystal Al-unit.xsf polycrystal.txt polycrystal.cfg -remove-doubles 1.4
-remove-doubles 1.4 清理距离过近的重复原子,阈值单位Å;它不是能量最小化,也不能保证所有界面原子都已处于合理受力状态。生成后检查晶胞、原子数与近邻距离,再选择势函数进行弛豫。
4 用PTM取向识别晶粒#
bash run.sh analysis
bash run.sh render
ls work/ovito/*grains.xyz
from ovito.io import import_file
from ovito.modifiers import (PolyhedralTemplateMatchingModifier,
GrainSegmentationModifier)
p = import_file('polycrystal.cfg')
p.modifiers.append(PolyhedralTemplateMatchingModifier(output_orientation=True))
p.modifiers.append(GrainSegmentationModifier())
d = p.compute()
print(d.attributes['GrainSegmentation.grain_count'])
print(d.particles['Grain'])
Grain Segmentation依赖前一步PTM输出取向,不能省略。算法给出的晶粒ID是分类编号,跨两个独立文件时不保证ID相同;比较晶粒演化应按取向、位置或明确的跟踪规则匹配。

5 本次实际数量#
| 模型 | 总原子 | 识别晶粒 | 各晶粒原子数(按算法ID) |
|---|---|---|---|
| 双晶 | 12800 | 2 | 6463、6337 |
| 四晶粒 | 12688 | 4 | 3232、3121、3160、3175 |
双晶PTM判为OTHER的界面原子有1280个,四晶粒有2664个;后续晶粒算法可把界面原子归到相邻晶粒。不能把OTHER数量直接解释为某种化学缺陷浓度。
参考:Atomsk多晶模式、OVITO晶粒分割。
需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。