Skip to content

7. Perturb — 缺陷、掺杂、错位、层间

mat perturb 是统一的复合编辑入口,一条命令能链式叠多种小扰动。设计目标:让"做缺陷研究"像"写一个简短公式"一样自然。

全部扰动类型

类别例子含义
层间shift=shift=top:0.1,0把顶层沿 a 横移 0.1 Å
rotate=rotate=top:5顶层旋转 5°
interlayer=interlayer=7.0设层间距 7.0 Å
缺陷vacancy=vacancy=S:1随机抠 1 个 S
vacancy=index:7vacancy=index:7精确抠 7 号
substitute=substitute=5:Se5 号位 S→Se
displace=displace=12:0,0,0.212 号沿 z 移 0.2 Å
晶格strain=strain=2%mat strain
vacuum=vacuum=20mat vacuum
recenter=recenter=zmat recenter
绝对位set=set=0=z:7.50 号 z 设为 7.5
add=add=O:2.5,1.4,9.0加 O 原子在 (2.5,1.4,9.0)
remove=remove=7,12删 7,12 号

执行顺序(固定的,避免歧义)

不管你写的键顺序如何,CLI 内部按这个固定顺序施作:

1. lattice  (strain → vacuum → recenter)
2. layer    (shift → rotate → interlayer)
3. site     (vacancy → substitute → displace)
4. absolute (set → add → remove)

这样 "先施 2% 应变,再抠 S 空位" 和 "先抠 S 空位,再施 2% 应变" 写法不同也结果一致——拒绝隐藏的顺序依赖 bug。

单个操作

例 1:硫空位

bash
mat perturb vacancy=S:1 -q

vacancy

含义:从所有 S 原子里随机抽 1 个,删掉。S:k = 随机 k 个;想精确指定用 vacancy=index:i,j,...

例 2:S → Se 掺杂

bash
mat perturb substitute=1:Se -q

substitute

<index>:<element> —— 1 号原子换成 Se。

例 3:位移单个原子(声子 / 弛豫扰动)

bash
mat perturb displace=12:0,0,0.2 -q

12 号原子沿 z 移动 0.2 Å。<index>:dx,dy,dz(Å,笛卡尔)。

例 4:双层错位

bash
mat perturb shift=top:0.1,0 -q             # 顶层沿 a 移 0.1 Å
mat perturb rotate=top:5 -q                # 顶层转 5°(moiré 起点)
mat perturb interlayer=7.0 -q              # 设层间距

复合:一条命令做多步

bash
mat perturb strain=2% vacancy=S:1 force=true -q

strain=2% 后真空层会缩短到 ~6 Å,2D 安全检查触发;要么 force=true 跳过,要么先 mat vacuum 20 把真空层加大再施应变。

= 先 2% 应变,再抠 1 S。

bash
mat perturb shift=top:0.1,0 rotate=top:3 interlayer=6.8 vacancy=S:1 -q

= 错位 + 微旋 + 调层间距 + 加空位,一条命令把"做缺陷异质结"全做完。

复杂选择语法(layer 操作)

shift= / rotate= 的 layer 选择器:

写法含义
topz 最大的那一层
bottomz 最小的那一层
z>5.0所有 z > 5.0 的原子
z<3.0,z>8.0两段
0,3,7-12index 集合(支持范围)

例:

bash
mat perturb shift=z>7.0:0.1,0              # z>7Å 的原子整体移 0.1 Å
mat perturb rotate=0,3,7-12:5              # 选定 index 集合旋转 5°

资源接口

mat perturb 是顶层快捷,背后等价于:

顶层资源
mat perturb shift=top:0.1,0mat /bilayers update shift=top:0.1,0
mat perturb vacancy=S:1mat /defects create vacancy=S:1
mat perturb set=0=z:7.5mat /sites update set=0=z:7.5
mat perturb add=O:2.5,1.4,9.0mat /sites create species=O pos=2.5,1.4,9.0

写 recipe 或 batch 脚本时用资源形式更清楚;交互式用顶层更短。

随机种子(复现)

随机扰动(如 vacancy=S:k)默认用确定性种子,同样输入 → 同样输出。要换种子:

bash
mat perturb vacancy=S:1 seed=42
mat perturb vacancy=S:1 seed=43           # 不同的 S 被选中

不传 seed 时种子是 "结构 hash + op 字符串",自然可复现。

一个端到端缺陷研究

bash
mat init -q
mat build mos2 -q
mat motifs                                # ✓ MoS6_octahedral
mat /structures update supercell=3,3,1 -q # 3x3 supercell
mat perturb vacancy=S:1 -q                # 1 个 S 空位
mat motifs                                # 看周围 motif 怎么变了
mat /vasp-inputs create profile=mp-relax-pbe

每步自带 PNG,agent 看着图核对。


下一步: Resource layer → RESTful 路径覆盖长尾

复杂示例: Complex gallery 里 C2 / C3 / C9 / C10 演示了缺陷簇、复合缺陷、点掺杂和阶梯表面的具体命令。

AGPL-3.0-or-later · 商用请联系 aiden.novak.ai@gmail.com