11-born-oppenheimer 问答笔记¶
Q1:ATOMIC_POSITIONS crystal 下 0.00 和 0.25 的单位是什么¶
原文:
简答¶
没有长度单位——它们是晶格向量的线性组合系数(分数坐标 / fractional coordinates / crystal coordinates)。
详细解释¶
ATOMIC_POSITIONS crystal 里 crystal 是坐标系标识,意思是"用晶格向量做基底"。对每个原子写三个数 \((f_1, f_2, f_3)\),对应的笛卡尔位置是:
其中 \(\vec{a}_1, \vec{a}_2, \vec{a}_3\) 是晶胞的三个基向量(由 ibrav + celldm 或 CELL_PARAMETERS 定义)。
拿 Si 的具体例子算一遍¶
ibrav=2, celldm(1)=10.20 bohr 的 FCC 晶格,三个原胞基向量(以 bohr 为单位):
其中 \(a = 10.20\) bohr。
| 原子 | crystal 坐标 | 笛卡尔位置(bohr) | 笛卡尔位置(Å) |
|---|---|---|---|
| Si₁ | (0, 0, 0) | \((0, 0, 0)\) | \((0, 0, 0)\) |
| Si₂ | (0.25, 0.25, 0.25) | \(0.25 (\vec{a}_1 + \vec{a}_2 + \vec{a}_3) = (a/4)(-1, 1, 1) \times 2 \div 2 = (a/4)\cdot\sqrt{3}\) 方向 | \(\approx (-1.35, 1.35, 1.35)\) |
具体:\(\vec{R}_{Si_2} = \frac{a}{8}(-1+0-1,\; 0+1+1,\; 1+1+0) = \frac{a}{8}(-2, 2, 2) = \frac{a}{4}(-1, 1, 1)\)
\(= (10.20/4)(-1, 1, 1)\) bohr \(= (-2.55, 2.55, 2.55)\) bohr \(\approx (-1.35, 1.35, 1.35)\) Å
这就是 diamond 结构的第二个原子相对第一个的偏移——沿 (-1,1,1) 方向、距离 \(a\sqrt{3}/4 \approx 4.42\) bohr ≈ 2.34 Å。
为什么 diamond 特别是 (0.25, 0.25, 0.25)¶
diamond 结构 = FCC 晶格 + 每个格点放 2 个原子,第二个偏移 (1/4, 1/4, 1/4)。这是 Si、Ge、C (diamond)、灰锡的共同特征。用 crystal 坐标写出来最简洁——它暴露了结构的拓扑,而不是具体尺寸。
为什么用 crystal 而不是 angstrom/bohr¶
- 变胞弛豫(vc-relax)稳健:晶胞 \(\vec{a}_i\) 会变,但 Si₂ 相对 Si₁ 的拓扑位置保持 (1/4, 1/4, 1/4) 不变。改用笛卡尔时晶胞一变原子相对位置就错了
- 数值干净:(0, 0, 0) 和 (0.25, 0.25, 0.25) 是精确分数,没舍入误差
- 和 Materials Project 等数据库一致:材料数据库都用 crystal 坐标给原子位置
Q2:alat 和 celldm 是什么?crystal 和 angstrom 的具体单位¶
原文:
alat 是什么¶
alat = "a lattice constant" 的缩写,表示晶格常数 \(a\),具体数值 = celldm(1)。
用途:作为 QE 里的"长度参考单位"。许多地方说"以 alat 为单位",意思就是乘以 celldm(1) 得到 bohr。
celldm 是什么¶
celldm = "cell dimensions" 的缩写,QE 用来定义晶胞形状的一组参数,共 6 个:
| 参数 | 含义 | 单位 |
|---|---|---|
celldm(1) |
晶格常数 \(a\) | bohr |
celldm(2) |
\(b/a\) 比例 | 无量纲 |
celldm(3) |
\(c/a\) 比例 | 无量纲 |
celldm(4) |
\(\cos(\beta\gamma)\) | 无量纲 |
celldm(5) |
\(\cos(\alpha\gamma)\) | 无量纲 |
celldm(6) |
\(\cos(\alpha\beta)\) | 无量纲 |
关键:celldm(1) 永远是 bohr(不是 Å)。很多人初学用错。
不同 ibrav 需要不同的 celldm¶
| ibrav | 晶系 | 需要的 celldm |
|---|---|---|
| 0 | 自定义 | 只 celldm(1)(作 alat 参考,可选) |
| 1 | 简立方 | celldm(1) |
| 2 | FCC | celldm(1) |
| 3 | BCC | celldm(1) |
| 4 | 六方 | celldm(1), celldm(3) = c/a |
| 5 | 三角 | celldm(1), celldm(4) |
| 6 | 正四方 | celldm(1), celldm(3) |
| 8 | 正交 | celldm(1), celldm(2), celldm(3) |
| 14 | 三斜 | 全部 6 个 |
(完整列表见 QE 的 INPUT_PW.html 文档)
Si 用 ibrav=2 + celldm(1)=10.20 的含义:面心立方,晶格常数 10.20 bohr ≈ 5.40 Å(接近实验值 5.43 Å)。
四种坐标系单位详解¶
| 标识 | 坐标含义 | 单位/参考 | 使用场景 |
|---|---|---|---|
crystal |
分数坐标 \((f_1, f_2, f_3)\),对应位置 \(\sum_i f_i \vec{a}_i\) | 无量纲 | 变胞弛豫首选;数据库标准 |
angstrom |
笛卡尔坐标 \((x, y, z)\) | Å(\(10^{-10}\) m) | 和实验/文献匹配时用 |
bohr |
笛卡尔坐标 \((x, y, z)\) | bohr(\(\approx 0.529\) Å) | 原子单位;QE 内部计算的"原生"单位 |
alat |
笛卡尔坐标 \((x, y, z)\) | 以 celldm(1) 为 1(= celldm(1) bohr) |
简洁表达相对尺度;用于简立方/FCC 时常写 (0.5, 0.5, 0) 这种 |
单位换算¶
- 1 bohr = 0.529177 Å(玻尔半径)
- 1 Å = 1.88973 bohr
- 1 Hartree = 27.2114 eV
- 1 Ry = 13.6057 eV
CELL_PARAMETERS 的坐标系¶
类似地,CELL_PARAMETERS 块的单位也可选:
或 CELL_PARAMETERS bohr / CELL_PARAMETERS alat(相对 celldm(1))。
几个常见陷阱¶
| 坑 | 症状 | 正解 |
|---|---|---|
celldm(1) 写成 Å 值 |
晶胞小一半,能量对不上 | celldm 单位永远是 bohr |
ibrav=0 时用 CELL_PARAMETERS 但没写单位 |
默认 alat,但 alat 由 celldm(1) 定义,用户忘给 celldm(1) → QE 警告 | 显式写 CELL_PARAMETERS angstrom/bohr |
vc-relax 用 ATOMIC_POSITIONS angstrom |
晶胞变化后原子没跟着缩放,物理错误 | 用 crystal |
ibrav=4(六方)只给 celldm(1) |
QE 用默认 c/a=1 可能不对 | 补齐 celldm(3)=c/a |
| 单位混写(crystal 坐标写成 0.5 但想表达 0.5 Å) | 能量/力完全离谱 | 重读文档 |
快速自检法¶
你可以在 QE 输出的开头看到它解析后的晶胞:
crystal axes: (cart. coord. in units of alat)
a(1) = ( -0.500000 0.000000 0.500000 )
a(2) = ( 0.000000 0.500000 0.500000 )
a(3) = ( -0.500000 0.500000 0.000000 )
alat = 10.200000 a.u.
看这几个数能不能对上你预期的晶胞形状,能对上说明输入单位没错。
追问:既然这是 QE 的输入,是 LLM 生成的还是查表?
在 TritonDFT agent 框架下,主路径是 LLM 自己生成,可选路径是先查 Materials Project(MP)API 再生成。具体取决于是否启用 --need-query-info 标志。
主路径:LLM 直接生成(benchmark 默认)¶
给 LLM 的 prompt 只有高层信息:
For formula=Si structure=diamond atoms_per_primitive_cell=2 space_group=Fd-3m,
perform a variable-cell relaxation (vc-relax) calculation. ...
LLM 需要把它扩展成完整 QE 输入文件,所有细节都要 LLM "想出来":
| 输入字段 | LLM 怎么决定 |
|---|---|
ibrav=2 |
看到 "diamond + Fd-3m + FCC" → 训练语料里知道 diamond 是 FCC → ibrav=2 |
celldm(1)=10.20 |
常识:Si 晶格常数 ≈ 5.43 Å ≈ 10.26 bohr → 填个接近的值做初猜 |
ATOMIC_POSITIONS crystalSi 0.00 0.00 0.00Si 0.25 0.25 0.25 |
晶体学知识:diamond 结构两个原子偏移 (1/4, 1/4, 1/4) |
pseudo_dir |
Prompt 里提到 "Use PBE pseudopotentials" → 选 PBE_standard 目录 |
ATOMIC_SPECIESSi 28.0855 si.upf |
从赝势库文件命名规则里猜 |
ecutwfc=40 |
经验值(对 Si 够用,对 Ge 不够) |
K_POINTS automatic6 6 6 0 0 0 |
经验值 |
conv_thr=1.0e-8 |
Prompt 或 task 模板指定 |
LLM 的这些知识来自训练语料——它见过大量 QE tutorials、论文输入文件、GitHub 开源代码,记住了"Si diamond 的典型设置长什么样"。
可选路径:先查 MP API¶
如果跑 benchmark 时加 --need-query-info,agent 的 Planner 会先生成一段 Python 代码调用 Materials Project API:
from mp_api.client import MPRester
with MPRester(API_KEY) as mpr:
docs = mpr.materials.search(
formula="Si",
spacegroup_symbol="Fd-3m",
fields=["material_id", "structure"],
)
structure = docs[0].structure
# structure.lattice.matrix 给出真实晶胞向量
# structure.frac_coords 给出原子分数坐标
然后把 structure.lattice.matrix、structure.frac_coords 塞进 QE 输入文件。
这个路径得到的初始结构更准确(直接用 MP 里其他人算过的高精度 DFT 结果),但依赖 API key 和网络。
两种路径对比¶
| 维度 | LLM 直接生成 | 先查 MP |
|---|---|---|
| 速度 | 快 | 慢(多一次 API 调用) |
| 依赖 | 只需 API 里 OPENAI_API_KEY 等 | 还要 MP_API_KEY + 网络 |
| 初始结构精度 | 可能有 1–5% 误差(LLM 靠记忆估) | 与 MP 数据库一致,精度高 |
| benchmark 意义 | 考查 LLM 的物理/化学推断能力(本质能力) | 考查 LLM 的 API 调用能力 |
benchmark 默认关闭 --need-query-info,因为核心要考的就是 LLM 能否从化学式/结构原型推出合理的晶胞——这是"理解 DFT"的基础能力。查表相当于"作弊"。
既然 LLM 自己猜,不准怎么办?¶
这正是 vc-relax 的角色——LLM 给个大致合理的初猜(比如 celldm(1)=10.20 bohr),QE 的 BFGS 外层会把它优化到精确值(最终 10.3344 bohr)。只要初猜没太离谱(偏差 10% 以内),vc-relax 都能收敛到对的结构。
但如果 LLM 猜得太糟(比如把 Si 写成 celldm(1)=20 bohr),BFGS 可能陷入错误局部极小。这就是为什么 benchmark 评分里有"结构正确性"一项——看 LLM 能不能提供足够好的初始结构让 QE 收敛到真实的 Fd-3m 晶格。
再次回到我们之前 Ge 出错的例子¶
agent 对 Ge 提供的初始结构合理(celldm(1) ≈ 10.69 bohr),错的不是初始结构,而是 ecutwfc=40 Ry 太小——基组不完备导致能量面失真,BFGS 优化到错误极小(晶格压缩 17%)。这就是"LLM 推断参数"的核心考查点:一个数值参数不当,整个计算就废。
所以 benchmark 里 LLM 的任务是两层推断: 1. 结构推断(本题涉及):ibrav、celldm、ATOMIC_POSITIONS 2. 数值参数推断:ecutwfc、k-mesh、conv_thr 等
两项都做对才能拿高分。
本轮 2 个问题速览¶
| # | 主题 | 关键 |
|---|---|---|
| Q1 | ATOMIC_POSITIONS crystal 下 0.00/0.25 的单位 |
无单位——晶格向量的线性组合系数;diamond 特征偏移 (1/4,1/4,1/4) |
| Q2 | alat / celldm / crystal / angstrom 各是什么 | celldm(1) 永远 bohr;四种坐标系选用场景(vc-relax 用 crystal,实验对照用 angstrom,内部计算 bohr) |