SeeK-path非原胞与二维能带路径实操
核对原晶胞倒空间坐标,为单层MoS2生成20点的面内KPOINTS。
阅读本篇目录
下载本篇输入、完整脚本、数据与高清图。解压后在新目录运行,reference保存鸢算科技实际运行的参考结果。
1 分数坐标必须和晶胞配套#
同一个倒空间点,在不同晶胞倒格矢下的分数坐标通常不同。如果已有非标准胞或超胞计算,需要保持原来的POSCAR,可使用get_explicit_k_path_orig_cell取得输入晶胞基矢下的路径。本例使用SeeK-path 2.2.2和spglib 2.7.0。
2 先运行两个结构示例#
module purge
module load pymatgen/2026.9.24
mkdir work
cp structure_checks.py work/
cd work
python structure_checks.py
进入seekpath-original-cell查看:
cd seekpath-original-cell
cat si-supercell-primitive-from-input.csv
head si-supercell-kpoints-original.csv
cat mos2-layer-path.json
cat KPOINTS-mos2-plane
*-kpoints-original.csv前3列为输入晶胞倒格矢下的分数坐标,后3列为Å⁻¹笛卡尔坐标。Si为16原子超胞,得到6段、98个路径点;路径是相关原胞的标准路径在超胞倒格矢下的表达,不是超胞第一布里渊区自己的高对称路径,也没有进行能带展开。

3 检查变换关系#
import numpy as np
import seekpath
from ase.io import read
a = read('si-supercell.vasp')
cell = (a.cell.array, a.get_scaled_positions(), a.numbers)
v = seekpath.get_explicit_k_path_orig_cell(cell, reference_distance=0.05)
b = 2*np.pi*np.linalg.inv(a.cell.array).T
assert np.allclose(v['explicit_kpoints_rel'] @ b, v['explicit_kpoints_abs'])
本例坐标核对误差为0。文件*-primitive-from-input.csv中的矩阵T按行向量约定满足 A_primitive = T @ A_input;这是完整脚本显式计算的矩阵,不把它冒充其他接口中同名矩阵。换成旋转或畸变晶胞时,应同时检查标准化旋转与实际坐标,使用接口返回的原晶胞路径更直接。
4 单层MoS₂只取面内路径#
示例为3原子2H单层MoS₂,a=3.18 Å,S–S厚度3.19 Å,两侧各12 Å真空。这是演示模型,正式计算应先优化结构并检查真空厚度。
SeeK-path把含真空的周期晶胞仍按三维结构处理,本次完整结果包含9段、122个点;直接使用会带上面外方向。二维能带示例从中选择kz=0的 Γ–M、M–K、K–Γ 三段。

配套KPOINTS完整内容:
MoS2 in-plane path in original reciprocal basis
20
Line-mode
Reciprocal
0.000000000000 0.000000000000 0.000000000000 ! GAMMA
0.500000000000 -0.000000000000 0.000000000000 ! M
0.500000000000 -0.000000000000 0.000000000000 ! M
0.333333333333 0.333333333333 0.000000000000 ! K
0.333333333333 0.333333333333 0.000000000000 ! K
0.000000000000 0.000000000000 0.000000000000 ! GAMMA
5 接入VASP#
mkdir -p ../mos2-band
cp mos2-layer.vasp ../mos2-band/POSCAR
cp KPOINTS-mos2-plane ../mos2-band/KPOINTS
这里先准备路径与结构;尚需按选用泛函准备POTCAR,并完成自洽电子计算,然后进行非自洽能带计算。20是VASP line-mode每段的点数,包含该段两端;三段按段组织时各有20点,共60行采样,其中相邻端点可能重复。不要把它与脚本的reference_distance=0.05混为一谈,后者控制SeeK-path显式采样间距。
若实际优化后晶胞发生变化,应使用优化后的结构重新生成路径。需要降低GPU显存时,可继续使用分段能带工作流;这里只验证结构与路径,没有额外做MoS₂能带DFT。
参考:SeeK-path原晶胞接口说明。