ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

QSTEM+DrProbe实战:从Fe3O4模型到第一张STEM模拟图

QSTEM+DrProbe实战:从Fe3O4模型到第一张STEM模拟图 先说个背景。我当初第一次用 QSTEM 做 Fe3O4 的 HAADF 模拟图时光是把输入文件跑通就花了一个下午后来发现坑全在单位换算和格式细节上。现在回头看这类工具其实不难上手难的是没人把“从模型准备到 DrProbe 出图”的全流程一次讲清楚。这篇文章就把完整流程捋一遍正好拿 Fe3O4 当第一个实例帮你在最短时间内见到自己的第一张 STEM 模拟图。QSTEM 和 DrProbe 这一对组合在透射电镜模拟圈子里算老牌工具了。QSTEM 负责做多片层multislice计算把电子束穿过晶体的过程模拟出来DrProbe 把 QSTEM 的原始输出的散射数据变成你习惯看的 HAADF、ABF 那种图像。适合谁看做过电镜实验、想用模拟辅助理解实验图像的人或者刚接触计算成像、想验证结构模型的研究生都可以照这篇文章走一遍。1. 先搞明白QSTEM 和 DrProbe 到底在干什么1.1 QSTEM 的 multislice 原理其实就是“切片面包”很多教材把 multislice 讲得很吓人但用生活类比就一句话把晶体沿电子束入射方向切成极薄的一层又一层电子波函数一层一层穿过去。每一层对电子的作用可以分解成两步——先是在这一层内部被原子势场“改相位”然后在层与层之间的真空中继续自由传播。如此往复直到穿出样品底部得到出口电子波函数。QSTEM 干的正是这事。它在每个扫描位置都重复一遍这个“逐层穿越”的过程然后把不同角度的散射电子记录下来。所以从本质上看QSTEM 不是直接画图而是计算出电子束与晶体相互作用后的物理结果。所谓 STEM 模拟就是把一个聚焦得非常细的电子探针在样品表面逐点扫描。探针每落到一个位置就相当于做了一次完整的 multislice 计算最后把每个探测器的强度按扫描位置拼起来就是一张 STEM 图。1.2 DrProbe 的角色把散射强度变成你认识的样子QSTEM 输出的原始数据往往是一堆代表“某个扫描位置、某个散射角度上电子强度”的数字直接看无法得到直观的图像。这里就需要 DrProbe 出场。DrProbe 可以理解成一个“虚拟探测器加工厂”。你在里面画一个环形探测器设定内角和外角它就把落在该角度范围内的散射电子全部积分起来作为这个扫描像素的灰度值。HAADF高角环形暗场就是内角很大、只收高角度散射的探测器ABF环形明场则用较小的内角可以同时看到轻元素和重元素。所以QSTEM 和 DrProbe 的分工非常明确前者解决“电子在晶体里怎么走”的物理问题后者解决“探测器怎么收信号”的成像问题。1.3 为什么第一个实例选 Fe3O4Fe3O4磁铁矿是我反复推荐的入门样品原因有三个。第一它的晶格常数很大约 8.4 Å投影到[001]方向后的原子柱间距相对宽松扫描步长不需要设得极细计算量友好。第二它同时含有重元素 Fe 和轻元素 OHAADF 图里 Fe 原子柱明显、O 几乎隐身ABF 图里 Fe 和 O 都能看到对比效果非常典型适合用来理解不同探测器的成像差异。第三Fe3O4 的晶体结构数据很容易从公开数据库拿到省去了自己搭模型的麻烦。2. 开工前的准备软件、模型和文件格式2.1 软件环境怎么搭QSTEM 的完整名称是 OpenQSTEM源代码在 GitHub 上可以找到。如果你用 Windows最简单的方式是找社区编译好的可执行版本省去自己编译的折腾。如果你是 Linux 用户通常需要装 gfortran 和 make然后按源码里的 README 编译。DrProbe 则相对友好一些官方直接提供带图形界面的安装包装完就能跑。安装过程中最大的坑是路径。两个软件都别装在带中文和空格的目录里否则读文件时容易出诡异问题。我一般放在类似D:\tools\qstem这样的纯英文路径下省心很多。2.2 Fe3O4 晶体模型从哪里来Fe3O4 的晶体结构属于反尖晶石型空间群 Fd-3m晶格常数 a b c ≈ 8.396 Åα β γ 90°。一个晶胞里Fe 有两种晶体学位点四面体位的 Fe 在 8a 位置八面体位的 Fe 在 16d 位置O 在 32e 位置。获取模型最可靠的方法是直接去公开数据库下载 CIF 文件比如 Materials Project、Crystallography Open DatabaseCOD或者 ICSD。下载后用 VESTA 打开检查原子坐标和晶格常数是否合理然后就能提取出建模需要的信息。这里要提醒一句CIF 里的原子坐标多数是分数坐标也就是以晶格常数为单位归一化后的位置。而 QSTEM 的输入文件里原子位置既可以给分数坐标也可以给笛卡尔坐标两者混用时最容易出错。建议一开始就统一用分数坐标也就是晶格常数用实际值位置写成 [0,1) 之间的小数这样后续扩展超胞时也方便核对。2.3 QSTEM 输入文件的逻辑结构QSTEM 的输入文件是纯文本格式各版本语法略有差异但核心逻辑一致。一个 STEM 模拟输入文件至少包含这么几块title // 任务标题随便起个名字 crystal // 晶胞定义 lattice 8.396 8.396 8.396 90.0 90.0 90.0 // 晶格常数和角度 atom Fe 0.125 0.125 0.125 0.25 // 元素、分数坐标、占据率 atom Fe 0.500 0.500 0.500 0.50 atom O 0.255 0.255 0.255 1.00 multislice // 切片和超胞设置 supercell 1 1 1 // 扩展倍数 slicing 1.0 // 切片厚度单位埃 stem // STEM 扫描参数 voltage 200.0 // 加速电压单位 kV convergence 20.0 // 会聚半角单位 mrad detector_in 50.0 // 探测器内角 detector_out 180.0 // 探测器外角 scan_step 0.1 // 扫描步长单位埃上面的写法只是一个逻辑示意具体关键字要以你安装版本的帮助文档为准。我建议新手先把这个简化模板跑通再一点点加高级参数这样排错范围小得多。3. 实操从 Fe3O4 模型到第一张 STEM 模拟图3.1 建立晶胞和原子坐标打开一个文本编辑器新建模拟输入文件。第一步是定义晶胞。Fe3O4 的立方晶胞参数直接填进去后再把原子坐标按分数坐标写进去。这里需要特别注意 Fe 两个位点的占据率四面体 8a 位点每个等效位置都被 Fe 占满占据率写作 0.25因为 8a 有 8 个等效位置一个位置对一个晶胞的贡献是 1/8但 QSTEM 中通常直接写该位置的占据概率建议用occ1.0表示全占具体按软件帮助来八面体 16d 位点则是 Fe2 和 Fe3 混合占据结构解析上经常等效处理为 0.5 占据。再多说一句不同数据库下载的 CIF 中O 的 x 参数可能在 0.254 到 0.256 之间波动这是正常现象。第一轮模拟直接用数据库原值即可别为了“看起来更准”去手动微调等跑通流程后再考虑结构精修的问题。3.2 生成超胞并设置切片晶体模拟默认用周期性边界条件相当于无穷大晶体。但实际计算时横向尺寸太小会有明显的人工周期性效应图像里可能会出现不该有的莫尔条纹。我会习惯性把晶胞至少扩展到 2×2×1。Fe3O4 晶胞本身约 8.4 Å扩成 2×2 后横向尺寸约 16.8 Å足以容纳好几个原子柱第一轮验证完全够用。切片厚度是精度和速度的折中。切片越薄层间多次散射近似越准确但计算量越大。对 Fe3O4 这种晶胞沿[001]方向每隔约 1 Å 切一片8.4 Å 的晶胞切成 8 到 10 片已经能满足大部分模拟需求。切忌把切片厚度设成 5 Å 以上那样相位屏近似会明显失真得到的图像对比度会有假。3.3 设好电子束和探测器参数模拟的第一步先用 200 kV 加速电压。200 kV 的电子波长经过相对论修正后约 0.0251 Å是模拟里常见的入口参数。如果你平时用球差校正电镜Cs 可以设得很小比如 0.001 mm 级别如果用的是常规电镜Cs 按镜筒说明书里的标称值填。会聚半角我用 20 mrad这是一个比较通用的起点值。HAADF 探测器内角 50 mrad、外角 180 mrad是模拟和实验都常见的配置。如果你更在意轻元素信号后面再用 ABF 探测器内角改成 10~20 mrad、外角 40~50 mrad重新用 DrProbe 生成一张图就行不用重跑 QSTEM 计算。这里有个非常容易踩的坑单位。QSTEM 有些老的输入模板里角度按弧度写长度按埃写DrProbe 的界面里又是毫弧度、纳米混用。我的习惯是先把所有参数统一换算好再填进去绝不直接在软件里改单位。尤其是“内角到底是半角还是全角”不同版本可能不同跑之前务必确认这一点否则图像会莫名其妙地全黑或全白。3.4 确定扫描步长和区域扫描步长决定图像的空间采样密度直接影响到你能否分清相邻原子柱。Fe3O4[001]投影下最密的方向上 Fe 和 O 的原子柱间距大概在 1 到 2 Å 左右。按奈奎斯特采样原则步长至少要比最小柱间距的一半更小所以我建议从 0.1 Å 起步。如果计算量允许甚至可以压到 0.05 Å画面会细腻很多。但要注意扫描范围越大、步长越细计算量指数上升。第一次跑通流程强烈建议先只模拟一个晶胞范围比如 16.8 Å × 16.8 Å步长 0.1 Å这样扫描点约 168×168 个再配合一个不算厚的样品几分钟内就能出结果。等流程完全跑通再把范围扩大、厚度增加。样品厚度上第一轮我建议选 10 nm 左右。太薄图像对比度不够明显太厚通道效应和非弹性散射近似问题都会冒出来不利于新手理解结果。10 nm 对 Fe3O4 来说大约十几个晶胞厚度已经能看出清晰的原子柱衬度了。3.5 运行 QSTEM 并检查输出输入文件准备好后在命令行里运行 QSTEM 主程序把输入文件路径作为参数传进去。正常运行时屏幕上会滚动显示出每一层 slice 的计算进度像不是特别快的进度条。如果程序秒退大概率是输入文件路径错误、格式不对或者某个关键字拼写错了。跑完后检查输出目录。QSTEM 会输出一个或多个数据文件里面存着每个扫描位置和散射角度的强度分布。别急着打开看先确认文件大小合理。如果文件只有几个字节说明计算基本没做成功回头检查参数。3.6 在 DrProbe 里生成 HAADF 图像打开 DrProbe加载 QSTEM 输出的原始数据文件。界面左边会显示文件里的数据结构一般能看到每个扫描点的散射强度分布。此时你看到的是“衍射空间”的信息还不是一张实空间的图。接下来在 DrProbe 里新建一个环形探测器把内角和外观填成你希望模拟的探测器几何。比如 HAADF 就填内角 50、外角 180。点击计算之后DrProbe 会把所有落在该角度范围内的电子强度积分起来并按扫描坐标拼成一张灰度图。第一次出图十有八九是纯黑或纯白别急着删数据。这是显示范围的问题——模拟图像素值的动态范围可能非常大默认显示层级看不到原子柱。把灰度显示范围改成按百分位拉伸比如显示 1% 到 99% 的分位数原子柱的衬度就出来了。这一步做对了你的第一张 STEM 模拟图基本就算到手了。4. 影响图像质量的参数细节和避坑清单4.1 收敛角与探测器角度的搭配会聚半角决定了入射电子束在样品上的焦斑大小和角分布。收敛角越大探针越细但衍射盘重叠越多相干性也更复杂。模拟时收敛角要和实验条件匹配否则图像衬度会差很多。HAADF内角通常取 50~80 mrad外角 150~200 mrad。内角越小对样品厚度的敏感性越高内角越大图像越接近纯 Z 衬度。ABF内角 10~20 mrad外角 40~50 mrad。这种配置下轻重元素都能成像适合看 Fe3O4 里的氧原子柱。BF明场内角 0外角 10~20 mrad。对缺陷、应变场敏感但不适合直接做原子柱识别。我不止一次看到新手把 HAADF 内角设成 10 mrad结果得到的图像衬度混乱既不像 HAADF 也不像 ABF。原因很简单低角度区域包含了大量相干散射和衍射衬度已经不是高角非相干散射主导了。4.2 源尺寸不设置模拟图会和实验“不像”初学者最容易忽略的参数是源尺寸source size。真实电镜的电子源不是理想的点光源而是有一定展宽所以实验图像中原子柱会有一点模糊。QSTEM 和 DrProbe 如果不做源尺寸卷积默认按理想点源处理模拟出的图像会锐利得“假”和实验图对不上。我的做法是跑完理想点源的模拟图后在 DrProbe 里设置一个 0.5~1 Å 的高斯源尺寸再做一次卷积。这个范围对应现代球差校正电镜的典型源尺寸出来的图和实验观感非常接近。如果你拿不准可以先从 0 试到 2 Å对比一下衬度变化很快就能理解源尺寸对分辨率的影响。4.3 defocus 和球差系数模拟里别过分追求“完美”模拟中很容易产生一个冲动——把所有像差都设成零觉得这样最“理想”。但实际电镜不可能完全没有像差模拟完全无像差的结果反而会和实验脱节。比如 Cs 设成 0图像的离焦行为会和实验明显不同。实践中我建议先按常规电镜参数设200 kV 时 Cs 约 1.0 mmdefocus 约 -50 nm轻微欠焦模拟一张“常规像差”的基线图再设一组球差校正参数Cs 约 0.001 mm、defocus 接近 0 甚至微调模拟一张“校正像差”的图。两者对比你能直观感受到像差对原子柱衬度的影响这对理解实验非常有帮助。Fe3O4 这种氧化物我测试下来 HAADF 对 defocus 的敏感性不算高但 ABF 对 defocus 相当敏感微小的欠焦就会让氧原子柱的衬度从暗变亮。所以模拟 ABF 前最好先做一个小范围 defocus 序列扫描选衬度最合理的一张作为结果。4.4 关于厚度和通道效应很多人第一次拿到模拟图觉得亮度应该和原子序数 Z 成正比。实际上HAADF 图像强度在薄样品区近似正比于 Z 的 1.7~2 次方但样品一旦变厚通道效应会让电子束沿原子柱方向不断“聚焦-散焦”强度随厚度出现振荡不再单调。所以在模拟 Fe3O4 时如果厚度超过 20~30 nm就必须正视通道效应。我做过一个对比同样的 Fe3O4 模型10 nm 厚度下 Fe 原子柱亮度和厚度近似线性增长到 40 nm 以上时部分原子柱亮度反而开始下降规律变得复杂。如果你是要拿模拟图去定标实验厚度建议至少算 3 个厚度点比如 5 nm、10 nm、20 nm再做插值不要指望一个厚度算到底。5. 常见报错和结果异常排查5.1 程序秒退或输出文件为空最常见原因有三类路径含有中文或空格、输入文件关键字拼错、原子坐标格式不对。排查方法是先跑一遍软件自带的 example 文件如果自带的能跑通说明环境没问题问题一定出在你的输入文件上。然后再把你写的输入文件和 example 逐字段对照重点看单位、坐标写法是否一致。5.2 图像全黑或全白这几乎不是物理问题而是显示或探测器的问题。先用百分位拉伸显示范围看看有没有结构。如果还是全黑检查探测器内角是不是比外角还大或者内外角设置是否覆盖了有效散射范围。还有一种可能你加载的原始数据不是 STEM 扫描数据而是单点衍射数据DrProbe 里看数据结构时要仔细确认。5.3 模拟图的周期和晶胞对不上如果图像里有明显的周期结构但周期长度和你预想的不一致大概率是超胞扩展倍数或扫描范围写错了。Fe3O4 晶胞 8.396 Å扩成 2×2 后周期应该是 16.792 Å。扫描范围如果不是该值的整数倍图像边缘就会出现截断伪影让人误以为周期异常。5.4 HAADF 里看不到氧原子柱这个不是 bug是物理。HAADF 用高角散射信号强度对原子序数高度敏感O 的 Z 只有 8散射太弱淹没在背景里很正常。想看氧原子柱改用 ABF 探测器重新生成一张图即可。ABF 图像中氧柱通常呈现暗点Fe 柱呈现亮点两者衬度方向相反这是非常经典的判据。现象可能原因处理方法程序秒退路径或格式问题先跑自带 example再逐字段对照输出文件很小计算失败检查 atom 坐标和 multislice 参数图像全黑显示范围或探测器角度问题百分位拉伸检查内外角图像全白探测器设置过宽缩小外角或增大内角周期不对超胞或扫描范围错误核对晶格常数和扫描尺寸HAADF 看不到 O轻元素散射弱改用 ABF 探测器6. 个人经验和小结跑了这么多轮 Fe3O4 模拟我最大的体会是模拟不是“参数一次到位”的过程而是一个不断和实验对照、修正的循环。第一次出图只要能看到周期排列的原子柱就算成功了一大半剩下的事情无非是微调源尺寸、探测器角度和厚度让模拟图慢慢逼近实验结果。还有一个小技巧每一次参数修改都记录在输入文件的注释里尤其是 accelerator voltage、Cs、detector 角度这些关键量。模拟跑到后面经常会出现“这张图是在哪组参数下跑的”这种问题没有记录就只能重跑。QSTEM 的文本输入文件其实非常适合写注释利用好这一点会帮你在项目后续省下大量时间。如果你已经成功拿到第一张 Fe3O4 的 HAADF 模拟图下一步可以试试换 [110] 晶带轴看原子排布变化或者做一个 5~40 nm 的厚度系列观察通道效应的演化再进一步用 ABF 同时观察氧原子柱。每多做一步对成像物理和结构分析的理解都会深一层。
返回列表