VASP 专题

从VASP到量子输运:钠链NEGF入门

用实算Wannier哈密顿量连接半无限引线,得到透射谱与固定势模型的电流电压曲线。

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

普通VASP周期性计算不会直接输出两端器件的I–V曲线。一个可理解的入门路线是:先由VASP得到电子结构,再用Wannier轨道构建哈密顿量,接上左右半无限引线,通过非平衡格林函数(NEGF)求透射率。

这篇使用鸢算科技集群实际计算的钠原子链作为电子结构输入,演示透明引线和局部势垒的差别。器件中心的势垒是后处理中人为设置的模型参数,不是额外做过DFT的杂质结构;电流使用固定哈密顿量,也没有自洽求解有限偏压下的电荷和静电势。因此它是理解工作流的参考,不是实际器件的定量预测。

1. 先准备周期性链的电子结构#

单原子Na沿z方向周期排列,间距3.4 Å;x/y方向晶胞长度12 Å。使用固定结构、非磁性PBE、PAW64 Na(1个价电子)、ENCUT=550 eV、EDIFF=1E-6、1×1×24 Gamma网格、8条能带,不含SOC。

VASP使用6.6.1-v100-wannier90,NVHPC 25.3/CUDA 12.8编译;独立Wannier90使用4.0.3,Intel oneAPI 2024.2 ifx编译。NEGF由附件Python程序完成,使用ASE 3.29.0环境的NumPy,后处理为CPU计算。

Na:s投影形成一个Wannier轨道。先计算自洽波函数和Wannier接口,再构建模型;随后用本次CHGCAR直接计算Γ–Z能带,对照插值。

这个单轨道模型只用于费米能附近。 在E−EF=−0.6至+0.6 eV窗口内,直接DFT与插值的RMSE为0.002105 eV,最大误差0.005533 eV。更高能量处还有其他轨道能带,不能强行将单轨道模型当成所有能带的表示,也不能在不重新验证的情况下扩大偏压范围。

2. 从周期模型组装引线与器件#

Wannier输出的HR文件给出不同晶胞之间的跃迁。程序读取HR的简并权重,合并横向平移,选择kx=ky=0的链方向子空间。

本例保留所有轴向跃迁,将12个原子组成一个“主层”,使主层之间只剩相邻层耦合。左右引线均为同一钠链的半无限重复;中间器件包含三个主层,共36个模型原子。

依次比较三个中心原子的在位能增量:0、0.5、1.0 eV。0表示无势垒;后两者表示模型散射势增强。它们不等于已经指定了某一种化学杂质。

程序通过递归消去半无限引线,得到表面格林函数及自能,再计算:

$$G^r(E)=[(E+i\eta)I-H_C-\Sigma_L-\Sigma_R]^{-1}$$

$$\Gamma_\alpha=i(\Sigma_\alpha-\Sigma_\alpha^\dagger),\qquad T(E)=\mathrm{Tr}[\Gamma_LG^r\Gamma_RG^a].$$

透射率T没有单位。本例非磁性单轨道链的开放通道数为1;两重自旋简并放在电导前因子中,不把T再乘2。η是格林函数的数值正则化参数,不是在模拟真实电子散射寿命。

3. 得到透射谱和I–V曲线#

计算范围E−EF=−0.5至+0.5 eV,共501个能量点;比较η=10⁻⁵和10⁻⁶ eV。电压范围−0.5至+0.5 V,左右化学势分别为EF+V/2和EF−V/2(以eV表示电子能量)。

零温、固定透射谱下:

$$I(V)=\frac{2e}{h}\int_{\mu_R}^{\mu_L}T(E),dE.$$

附件以eV积分时使用2e²/h=77.4809 μS的换算。η=10⁻⁶ eV的结果为:

中心在位势增量 / eV T(EF) V=0.5 V时电流 / μA
0.0 0.999929 38.7377
0.5 0.739099 28.7479
1.0 0.308404 12.0364

钠链透射谱与电流

两种η之间透射率的最大差为0.000992。无势垒时T(EF)接近1,是检查引线、耦合方向和自能实现的重要参考。程序同时检查哈密顿量厄米性、引线展宽矩阵的半正定性,以及本例的单通道透射上限。

4. 怎样运行附件#

在na-chain和na-band-check两个目录中准备合法Na POTCAR,然后回到附件根目录:

sbatch run.sh

顺序是自洽DFT → Wannier模型 → 直接能带检查 → NEGF及电流积分。运行完成后得到NA-TRANSPORT-DATA.json,其中保存能带比较、跃迁参数、透射谱、电流和η对照;附件中的RESULTS.json和图片是本次实算参考。

这个程序专为单轨道Na链例子编写。如果换成多轨道体系,应相应修改主层矩阵的组装、能带匹配和通道数检查;不能只换POSCAR就直接使用。

5. 走向实际器件还需要什么#

真实接触需要一致的电极与散射区几何、足够长的电极屏蔽区域、正确的轨道和能量对齐;横向周期体系还需要k点积分。有限偏压通常还要联合求解电荷密度和静电势,并检查电流守恒、偏压步长与器件长度。

本例没有这些自洽器件步骤,也没有声子散射、温度展宽或真实杂质势。它回答的是“怎样把一个经过能带检查的VASP模型接成两端量子输运问题”。

跟着输入文件操作#

下载本页附件后,先解压到单独目录。下面的目录名与附件一致。

unzip vasp-properties-batch32-*.zip -d vasp-example-32
cd vasp-example-32
cat README.txt

以下展开的是 calculations/na-chain 这一步的真实示例输入。多结构扫描、位移法和多阶段响应仍按正文顺序准备全部任务;改变材料时,结构、元素顺序和方法参数要一起修改。

cd calculations/na-chain
ls INCAR POSCAR KPOINTS
nano INCAR
INCAR:展开查看完整示例
SYSTEM = Fixed linear Na chain transport reference
ENCUT = 550
PREC = Accurate
EDIFF = 1E-6
IBRION = -1
NSW = 0
ISMEAR = 0
SIGMA = 0.05
LREAL = .FALSE.
LASPH = .TRUE.
ISYM = -1
NELM = 160
ALGO = Normal
NBANDS = 8
NUM_WANN = 1
LWANNIER90 = .TRUE.
LWAVE = .TRUE.
LCHARG = .TRUE.
POSCAR:展开查看完整示例
Na
 1.0000000000000000
    12.0000000000000000    0.0000000000000000    0.0000000000000000
     0.0000000000000000   12.0000000000000000    0.0000000000000000
     0.0000000000000000    0.0000000000000000    3.3999999999999999
 Na 
   1
Direct
  0.5000000000000000  0.5000000000000000  0.0000000000000000
KPOINTS:展开查看完整示例
Gamma chain mesh
0
Gamma
1 1 24
0 0 0

关键参数对照:

参数 本例值 使用时注意
IBRION -1 决定离子处理方式:−1为静态,0为分子动力学,2常用于优化;5/6等有限位移任务见正文。
NBANDS 8 控制计算能带数;光谱、响应和Wannier窗口通常需要额外空带。
LWANNIER90 .TRUE. 设为.TRUE.时输出Wannier接口;后续仍需独立运行Wannier90并检查插值。
LCHARG .TRUE. 控制是否写出CHGCAR;后续固定密度计算需要前一步保存该文件。
EDIFF 1E-6 电子自洽收敛阈值,单位eV;本组通常为1E−6。

POSCAR的元素顺序决定POTCAR拼接顺序。Direct表示分数坐标,Cartesian表示笛卡尔坐标;有Selective dynamics时,F/T还限制相应原子的移动。KPOINTS第二行为0通常使用自动网格;显式列表、Line-mode路径和均匀网格用途不同,不能互换来做同一种积分。

这个输入由附件根目录的总脚本组织。按正文为各阶段准备POTCAR后,返回附件根目录提交整个流程:

cd ../..
sbatch run.sh
squeue -u "$USER"
run.sh:整个流程的执行顺序
#!/bin/bash
#SBATCH --job-name=na-transport
#SBATCH --partition=gpu-8v100-16g-hs
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --gres=gpu:v100-16g:1
#SBATCH --time=02:00:00
#SBATCH --output=transport-%j.log
set -eo pipefail
source /etc/profile
study_dir="$SLURM_SUBMIT_DIR"
export OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1 OMPI_MCA_coll_hcoll_enable=0 NO_STOP_MESSAGE=1
ulimit -s unlimited
module purge
module load vasp/6.6.1-v100-wannier90
cd "$study_dir/calculations/na-chain"
mpirun --bind-to none -np 1 vasp_std > stdout.log 2>&1
module purge
module load ase/3.29.0
python "$study_dir/prepare_wannier.py"
module purge
module load wannier90/4.0.3-serial
wannier90.x wannier90 > wannier.stdout 2>&1
module purge
module load ase/3.29.0
python "$study_dir/prepare_bandcheck.py"
cd "$study_dir/calculations/na-band-check"
module purge
module load vasp/6.6.1-v100
mpirun --bind-to none -np 1 vasp_std > stdout.log 2>&1
module purge
module load ase/3.29.0
python "$study_dir/extract_transport.py"

作业结束后,在实际VASP输出目录查看最后几步:

tail -n 12 OSZICAR
grep "EDIFF is reached" OUTCAR | tail -n 3
grep "reached required accuracy" OUTCAR
ls -lh CONTCAR

静态计算不要求出现离子优化完成提示;优化任务还要检查最终自由原子力。性质专用输出和后处理仍按正文执行。附件中的参考图与RESULTS文件不会随着你的新任务自动更新。

需要选择后处理软件时,可对照实算教程中的辅助工具表。

下载与参考#

下载输入、结果与提取脚本(ZIP)

Wannier90钠链量子输运教程

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

查看配图

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

100%查看原图 ↗