VASP技巧:如何固定晶胞方向与部分原子坐标?表面重构这样判断!
做表面计算或二维材料优化时,我们常遇到一个让人头疼的问题:只想让原子在某个方向弛豫,其他方向固定不动;或者只想优化表层原子,底层原子锁死。这些需求在VASP中怎么实现?今天这篇文章帮你一次性理清楚。
一、只优化特定晶轴?你需要一个OPTCELL文件
默认情况下,VASP会同时优化所有晶格矢量(a、b、c)。但如果你研究的是表面体系或二维材料,通常希望固定真空层所在的方向(比如c轴),只优化面内基矢(a和b)。
解决方案: 使用 OPTCELL 文件。
不过要注意,这个功能需要在编译VASP时开启。具体编译方法可以参考计算化学公社的经典帖子[1]。
编译完成后,你只需要在计算目录下新建一个名为 OPTCELL 的文件,内容格式如下:
bash
cat OPTCELL1 0 01 1 00 0 0
解读一下:
第一行 1 0 0 → a基矢参与优化
第二行 1 1 0 → b基矢参与优化
第三行 0 0 0 → c基矢固定不变
这样,你的晶胞就会在保持c方向长度不变的前提下,优化a和b。
二、让部分原子“原地不动”?修改POSCAR即可
除了固定晶胞方向,另一个高频需求是:固定底层原子,只让表层原子弛豫。比如在构建slab模型时,通常需要固定底部几层原子以模拟体相环境。
操作方法非常简单,只需两步:
第1步:在POSCAR中插入关键词
在原子种类数量那一行的下一行(即第8行)添加:
text
Selective dynamics
第2步:在原子坐标后添加自由度标志
每个原子坐标后面跟上三个字母(T 或 F),分别控制 x、y、z 三个方向的运动权限:
| 标志 | 含义 |
| T T T | 三个方向全部放开,自由弛豫 |
| F F F | 三个方向全部固定,原子不动 |
| T T F | 允许在x和y方向移动,但z方向固定 |
举个实际例子,如果你想固定底层原子,只让表层原子在面内(xy)弛豫,而z方向保持不变,就写成:
text
0.000 0.000 0.000 F F F0.500 0.500 0.000 T T F
三、表面重构怎么判断?一个小技巧帮你确认
做表面计算时,我们往往关心一个问题:这个表面会不会发生重构? 重构意味着原子会自发调整位置以降低表面能,这会影响后续吸附、催化等性质的计算。
判断思路如下:
第一步: 构建一个超胞模型(比如2×2或3×3)。
第二步: 人为给表层原子施加一个微小的初始位移——对于(001)面,就是稍微改变顶层原子的x、y坐标。
第三步: 进行结构优化,注意固定z方向,仅允许x和y弛豫。
第四步: 比较优化前后的能量和原子位置。
如果优化后:
✅ 总能量比初始构型更低
✅ 原子坐标没有回到最初的高对称位置
那么恭喜你,表面重构确实发生了!
四、写在最后
本文梳理了VASP计算中两个非常实用的操作技巧:
通过OPTCELL文件控制晶胞方向的优化权限
通过POSCAR中的Selective dynamics关键词控制原子自由度
并在此基础上,介绍了一种判断表面重构的常用思路。
希望这些内容能帮你少踩一些坑,更高效地完成计算任务。
评论
做个白日梦

干货推荐

分子轨道理论简介与计算示例
天玑智研
769 6

计算机材料设计Materials-Studio教程12
活着
44 2

如何用ABAQUS输出局部坐标系上的投影力值?
小刀
90 9

免疫荧光染色全流程
7330a6d4
34 1

lammps中文教程12
春风得意马蹄疾
87 2

vasp声子谱计算(DFPT)
王磊
774 4
