VASP 专题

VASP三维费米面实操

用真实Cu原胞13³、21³输出重建完整k网格,直接生成三维等能面、速度着色图和可下载的三角网格。

更新于 2026-10-31约 6 分钟阅读按任务与环境选择适用配置
阅读本篇目录

费米面是三维倒空间中的等能面。已有费米面截面与费米速度展示q₃=0平面;本文用同一组Cu实算输出继续生成三维图,并提供一条短命令完成提取、网格化和绘图。

1. 下载后直接重画#

下载Cu三维费米面实操包。将文件保存为fermi3d.zip并上传自己的集群目录:

unzip fermi3d.zip -d fermi3d
cd fermi3d
bash run.sh
ls figures

这一步仅分析随包提供的实际VASP输出,使用1CPU,不重新运行VASP。依次完成:ASE读取原生不可约k点、本征值和费米能 → spglib对称重建全网格 → scikit-image提取E₆(k)=E_F三维曲面 → 转换到真实Å⁻¹坐标 → Matplotlib绘图。

Cu13³与21³网格的三维费米面

颜色是均匀网格中心差分得到的速度大小,再插值到曲面顶点、按三角面平均用于显示。它用于观察本例有限网格的变化,不是带散射模型的电导图,也不是严格费米面面积加权的输运分布。

2. 程序怎样使用原生k点#

本例为非磁性、无SOC的FCC Cu原胞,1个Cu原子;原始计算采用ISYM=2。VASP利用对称性减少实际计算的k点;工具先读取实际不可约点,再用结构对称操作及时间反演重建完整周期网格,核对重建点数与VASP权重。

原生网格 VASP不可约点 重建完整点 曲面顶点 三角面
13³ 84 2197 870 1524
21³ 286 9261 2454 4404

“重建完整点”不是又启动了2197或9261个VASP作业;它是两次已有均匀网格计算对应的完整k采样。本例仅第6带跨过各自的费米能。

提取曲面时,会在每一方向追加一层重复的周期边界平面。因此13³数据形成14³的数组、21³数据形成22³的数组;新增边界值来自周期重复,不是新增DFT采样。

3. 从不同方向理解三维图#

同一21³费米面从两个方向观察

灰框为一个原胞倒格平行六面体。图中kx、ky、kz已按实际倒格矩阵转换为Å⁻¹笛卡尔坐标;它没有被裁成第一布里渊区的Wigner–Seitz多面体。

13³显示的q范围为每个方向−6/13至7/13,21³为−10/21至11/21,各跨一个周期。边界切开的曲面可能在相邻周期内继续连接,不能仅按图中分开的片段数推断独立闭合口袋或载流子种类。

同一数据的q₃等于0平面截面

这张图是平面等值线,与三维曲面用途不同。q₁、q₂是原胞倒格矢的系数,无量纲;不能把它们直接标成Å⁻¹。

4. 结果文件怎么查#

cat analysis/GRIDS.json
cat analysis/MESHES.json
ls analysis/*.ply
文件 内容
GRID-13.npz、GRID-21.npz 带重复边界的E₆−E_F、网格速度、倒格矩阵及q起点
FERMI-MESH-*.npz 三维顶点、三角面、速度和等能面插值残差
cu-fermi-13.ply、cu-fermi-21.ply ASCII三角网格,顶点坐标单位为Å⁻¹,不是原子实空间坐标
figures/中的PNG 两种网格对照、21³双视角与q₃=0截面

读取21³网格和曲面可执行:

module purge
module load dpgen/0.14.0
python - <<'PYCODE'
import numpy as np
mesh = np.load('analysis/FERMI-MESH-21.npz')
print('顶点数:', mesh['vertices_k_invA'].shape[0])
print('三角面数:', mesh['faces'].shape[0])
print('最大能级插值残差/eV:', abs(mesh['energy_level_residual_eV']).max())
PYCODE

这里仅使用该环境内已有的科学Python库,不运行DP-GEN任务。输出顶点数2454、三角面数4404;最大等能面插值残差约8.24×10⁻⁷eV。这个残差描述数值网格化是否贴近插值能级,不代表DFT本身有同等的材料精度。

5. 换成自己的VASP计算#

原生21³计算的真实POSCAR:

Cu
 1.0000000000000000
     0.0000000000000000    1.8175111720126604    1.8175111720126604
     1.8175111720126604    0.0000000000000000    1.8175111720126604
     1.8175111720126604    1.8175111720126604    0.0000000000000000
 Cu 
   1
Direct
  0.0000000000000000  0.0000000000000000 -0.0000000000000000

完整INCAR:

SYSTEM = cu-primitive-mesh21
ENCUT = 550
PREC = Accurate
EDIFF = 1E-6
EDIFFG = -0.02
IBRION = -1
NSW = 0
ISIF = 2
ISMEAR = 0
SIGMA = 0.05
LREAL = .FALSE.
LASPH = .TRUE.
LWAVE = .FALSE.
LCHARG = .FALSE.
NELM = 150
ALGO = Normal
ISYM = 2
LORBIT = 11
NEDOS = 2001
NBANDS = 16

KPOINTS:

Gamma mesh
0
Gamma
21 21 21
0 0 0

准备与元素顺序一致且你有权使用的PAW PBE6.4 Cu POTCAR,再经Slurm计算:

mkdir my-cu21
cp inputs/cu-primitive-mesh21/{POSCAR,INCAR,KPOINTS} my-cu21/
cd my-cu21
yskit

在yskit复制适合自己账户、P100与VASP6.6.1的提交脚本,核对赝势和分区后:

sbatch 实际脚本名.sh
squeue -u "$USER"
grep 'EDIFF is reached' OUTCAR
tail -n 5 OSZICAR

本工具固定演示非磁性Cu、13/21两种网格和穿过费米能的第6带。换材料、改变网格、SOC、自旋或磁序时,应同步调整CASES和提取逻辑,并重新检查对称性、带编号、能量参照及收敛;不能混合不同计算的OUTCAR、vasprun.xml与结构。

如果改走VASPKIT费米面流程,可按VASPKIT费米面教程使用261生成其要求的网格、完成相应VASP计算,再用262/263导出。它有明确的网格元数据和输出文件前提;不能仅修改旧KPOINTS首行,把不可约网格输出冒作另一种完整采样。本包采用ASE+spglib显式重建,保留原输入不变。

环境与适用范围#

原生数据来自鸢算科技集群VASP6.6.1 P100实算,NVHPC25.3/CUDA12.8/MKL2023.2,PBE PAW6.4 Cu;ENCUT550eV、EDIFF1e-6,固定晶胞与原子,不重新做结构优化。后处理提取使用ASE3.29.0和spglib;三维网格与绘图调用现有Python3.12.14、NumPy2.5.3、SciPy1.18.1、scikit-image0.26.0、Matplotlib3.11.2。

13³与21³仅展示有限网格下的三维提取。更细网格、展宽和带插值都可能改变颈部、细小口袋、速度和面积;本页没有据此报告收敛费米面面积、载流子浓度、迁移率或电导。DOS与能带路径还应分别使用适合的网格,参照能带与有效质量及态密度。

资料包不提供POTCAR、WAVECAR或原生VASP程序。方法参考:VASP k点积分、scikit-image三维等能面、SciPy规则网格插值。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗