Skip to content

11. VASP inputs & paper recipes — 上游连接 DFT

mat 不跑 DFT,但它把"结构 → DFT 输入"这一段做到极简。

出 VASP 输入

bash
mat /vasp-inputs create profile=mp-relax-pbe

输出(在 current run dir 下):

runs/001-run/vasp-inputs/
├── INCAR
├── KPOINTS
├── POSCAR              ← 当前结构
└── POTCAR.spec         ← 元素 → POTCAR 路径映射(不打包 POTCAR 本体)

内置 profile

profile用途
mp-relax-pbeMaterials Project 风格 PBE 结构弛豫
mp-static-pbe单点能量
scanSCAN meta-GGA
hse06HSE06 杂化泛函(贵)
2d-relax2D 材料定制(含 LDIPOL、DIPOL 设置)
surface-relaxslab 弛豫(选部分原子约束)

覆盖单个参数

bash
# overrides= 暂不支持,请直接编辑生成出来的 INCAR。
mat /vasp-inputs create profile=mp-relax-pbe

overrides=KEY:VAL,KEY:VAL,... 形式,覆盖 profile 默认。

指定输出目录

bash
mat /vasp-inputs create profile=mp-relax-pbe out=/scratch/job001/

列可用 profile

bash
mat /vasp-inputs create --help

论文 recipe

为可复现,mat 支持把"建结构 + 扰动 + 出 DFT 输入"打包成一个 YAML,叫 recipe

Recipe 结构

yaml
# my-paper.recipe.yaml
name: 2008-prl-pt111-o2
description: O2 dissociation on Pt(111), Nørskov 2008
steps:
  - id: step01-substrate
    op: build.slab
    args:
      metal: Pt
      miller: [1, 1, 1]
      layers: 4
      vacuum: 15

  - id: step02-find-sites
    op: adsorb.sites
    args:
      structure: ${step01.out}
      positions: [ontop, bridge, hollow]

  - id: step03-add-OO
    op: adsorb.add
    args:
      structure: ${step01.out}
      molecule: O2
      site: hollow
      height: 1.8

  - id: step04-vasp-input
    op: vasp.input
    args:
      structure: ${step03.out}
      profile: mp-relax-pbe

  - id: step05-render
    op: render.structure
    args:
      structure: ${step03.out}

跑 recipe

bash
mat reproduce my-paper.recipe.yaml

输出:

✓ run 2008-prl-pt111-o2  →  pass
  run_dir  runs/NNN-2008-prl-pt111-o2
  steps    5/5 pass
  ✓ step01-substrate     build.slab
  ✓ step02-find-sites    adsorb.sites
  ✓ step03-add-OO        adsorb.add
  ✓ step04-vasp-input    vasp.input
  ✓ step05-render        render.structure

每一步都自带 PNG + summary。

列已知 recipe

bash
mat /recipes list dir=material_runtime/examples/recipes/

仓库自带 99 篇典型论文的 recipe,全部位于 material_runtime/examples/recipes/

断点续跑

bash
mat reproduce my-paper.recipe.yaml --continue

跳过已完成步骤,从失败点继续。

只跑某几步

bash
mat reproduce my-paper.recipe.yaml             # --steps 暂未实现

Provenance(可复现日志)

每个 run dir 顶层有:

runs/NNN-name/
├── recipe.yaml             ← recipe 副本
├── provenance.json         ← 每步的 args/inputs/outputs/timestamps/git-sha
├── step01-substrate/
│   ├── slab.vasp
│   ├── slab.png
│   └── slab.summary.md
├── step02-find-sites/
│   └── sites.json
├── ...
└── .mat-context.json

任何人接手这个目录,跑 mat /runs/NNN-name get 就能看 provenance 摘要。

上接 DFT 计算

mat 出完输入后,下游交给:

bash
cd runs/001-run/vasp-inputs/
# 补 POTCAR 文件(用 pymatgen 或自己的脚本,根据 POTCAR.spec)
mpirun -np 32 vasp_std

或者用 atomate2 / aiida-vasp / FireWorks 等工作流引擎接走。

CONTCAR → mat 回流

DFT 弛豫完后想检查结果:

bash
mat get vasp-inputs/CONTCAR             # 看弛豫后晶格
mat motifs vasp-inputs/CONTCAR          # 看 motif 有没有崩
mat /lattice get vasp-inputs/CONTCAR    # 看真空层够不够

或直接在 CONTCAR 上继续扰动:

bash
mat perturb vacancy=S:1 vasp-inputs/CONTCAR -q

CONTCAR 自动变成新的 current structure。

一个端到端论文复现示例

仓库自带的 2008-prl-pt111-o2.recipe.yaml 可直接跑:

bash
mat reproduce material_runtime/examples/recipes/2008-prl-pt111-o2.recipe.yaml
ls runs/
# 进去看 step03-add-OO/*.png 可以直接看到 O2 在 hollow site 的吸附构型

下一步: Reference → 全部命令、资源、flag 速查

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