CP2K NEGF输运:氢链分区、透射与DOS
从28原子氢链完整输入,学习接触区、屏蔽区、散射区及透射与DOS的实际读取。
阅读本篇目录
下载CP2K输运与密度嵌入完整输入、真实输出和绘图程序,保存为example.zip:
python3 -m zipfile -e example.zip .
cd cp2k-negf-embedding-examples
bash results.sh
bash plot.sh
前两条整理文件;results.sh读参考数据,plot.sh从真实CSV和密度网格画图,不启动电子计算。完整输入在inputs/,原生数值在reference-results/,11份CSV在data/。本组采用CP2K2026.2和官方小模型,供实际操作参考,不作为收敛后的材料性质或性能基准。
1. 先明确这个模型计算什么#
NEGF将器件与左右半无限接触连接,计算散射区的电子态和透射。本例有28个H原子,沿z轴等间隔1.5Å排列,初始超胞为6×6×42Å。它是认识输入与输出的短氢链模型,不代表稳定氢相或某个实际器件。
采用LDA/PADE、SZV-GTH-PADE基组、GTH-PADE-q1赝势、100Ry网格和10K电子温度。接触与器件的参数应保持一致;换成真实材料时,必须重新检查基组、网格、横向尺寸、接触主层长度和屏蔽区。

| 区域 | 原子序号 | 本例含义 |
|---|---|---|
| L2、L1 | 1–4、5–8 | 左接触的两个相邻主层 |
| L0 | 9–12 | 左屏蔽区 |
| S | 13–16 | 散射区 |
| R0 | 17–20 | 右屏蔽区 |
| R1、R2 | 21–24、25–28 | 右接触的两个相邻主层 |
LIST使用从1开始的原子编号;MOLNAME对应COORD末尾的区域标签。左侧示范LIST,右侧示范MOLNAME,两种写法都来自实际运行输入。它们不是CPU编号。
2. 查看完整输入#
cat inputs/H28-zero/input.inp
下列保留全部实际参数与原子坐标,只去掉解释性注释和空行:
@SET Project H28
@SET V_bias_volt 0
@SET Temperature 10.0
@SET Fermi_level -0.22306314
@SET V_shift 0.00011054
@SET basis_set_path BASIS_SET
@SET potential_path GTH_POTENTIALS
@SET xc_functional pade
@SET cutoff 100
@SET added_mos -1
@SET max_scf 50
@SET eps_scf 1e-8
@SET lx 6.0
@SET ly 6.0
&GLOBAL
EXTENDED_FFT_LENGTHS .true.
PREFERRED_DIAG_LIBRARY SL
PRINT_LEVEL LOW #SILENT #LOW #MEDIUM #HIGH #DEBUG
PROJECT ${Project}
RUN_TYPE NEGF
&END GLOBAL
&NEGF
ENERGY_LBOUND -2.0
EPS_DENSITY 1e-5
INTEGRATION_METHOD simpson
MAX_SCF 100
NPROC_POINT 1
V_SHIFT ${V_shift}
V_SHIFT_MAX_ITERS 100
&CONTACT
ELECTRIC_POTENTIAL [eV] ${V_bias_volt}/2
FERMI_LEVEL ${Fermi_level}
REFINE_FERMI_LEVEL
TEMPERATURE [K] ${Temperature}
&BULK_REGION
LIST 1..8
&CELL
LIST 1..4
&END CELL
&CELL
LIST 5..8
&END CELL
&END BULK_REGION
&SCREENING_REGION
LIST 9..12
&END SCREENING_REGION
&END CONTACT
&CONTACT
ELECTRIC_POTENTIAL [eV] -${V_bias_volt}/2
FERMI_LEVEL ${Fermi_level}
REFINE_FERMI_LEVEL
TEMPERATURE [K] ${Temperature}
&BULK_REGION
MOLNAME R1 R2
&CELL
MOLNAME R1
&END CELL
&CELL
MOLNAME R2
&END CELL
&END BULK_REGION
&SCREENING_REGION
MOLNAME R0
&END SCREENING_REGION
&END CONTACT
&MIXING
ALPHA 0.2
METHOD broyden_mixing
NBUFFER 8
&END MIXING
&PRINT
&DOS
FILENAME device
FROM_ENERGY [eV] -15
N_GRIDPOINTS 401
TILL_ENERGY [eV] 15
&END DOS
&PROGRAM_RUN_INFO low
PRINT_LEVEL debug
&END PROGRAM_RUN_INFO
&TRANSMISSION
FILENAME transm
FROM_ENERGY [eV] -15
N_GRIDPOINTS 401
TILL_ENERGY [eV] 15
&END TRANSMISSION
&END PRINT
&SCATTERING_REGION
MOLNAME S
&END SCATTERING_REGION
&END NEGF
&FORCE_EVAL
METHOD Quickstep
&DFT
BASIS_SET_FILE_NAME ${basis_set_path}
POTENTIAL_FILE_NAME ${potential_path}
&MGRID
CUTOFF ${cutoff}
&END MGRID
&POISSON
PERIODIC xyz
&END POISSON
&PRINT
&DOS
NLUMO -1
&PDOS
COMPONENTS T
&END PDOS
&END DOS
&END PRINT
&SCF
ADDED_MOS ${added_mos}
EPS_SCF ${eps_scf}
MAX_SCF ${max_scf}
SCF_GUESS ATOMIC
&MIXING
ALPHA 0.3
METHOD broyden_mixing
NBUFFER 8
&END MIXING
&PRINT
&RESTART
FILENAME RESTART
&END RESTART
&END PRINT
&SMEAR
ELECTRONIC_TEMPERATURE [K] ${Temperature}
METHOD fermi_dirac
&END SMEAR
&END SCF
&XC
&XC_FUNCTIONAL ${xc_functional}
&END XC_FUNCTIONAL
&END XC
&END DFT
&SUBSYS
&CELL
ABC ${lx} ${ly} 42.
PERIODIC xyz
&END CELL
&COORD
H 0.00000000 0.00000000 0.00000000 L2
H 0.00000000 0.00000000 1.50000000 L2
H 0.00000000 0.00000000 3.00000000 L2
H 0.00000000 0.00000000 4.50000000 L2
H 0.00000000 0.00000000 6.00000000 L1
H 0.00000000 0.00000000 7.50000000 L1
H 0.00000000 0.00000000 9.00000000 L1
H 0.00000000 0.00000000 10.50000000 L1
H 0.00000000 0.00000000 12.00000000 L0
H 0.00000000 0.00000000 13.50000000 L0
H 0.00000000 0.00000000 15.00000000 L0
H 0.00000000 0.00000000 16.50000000 L0
H 0.00000000 0.00000000 18.00000000 S
H 0.00000000 0.00000000 19.50000000 S
H 0.00000000 0.00000000 21.00000000 S
H 0.00000000 0.00000000 22.50000000 S
H 0.00000000 0.00000000 24.00000000 R0
H 0.00000000 0.00000000 25.50000000 R0
H 0.00000000 0.00000000 27.00000000 R0
H 0.00000000 0.00000000 28.50000000 R0
H 0.00000000 0.00000000 30.00000000 R1
H 0.00000000 0.00000000 31.50000000 R1
H 0.00000000 0.00000000 33.00000000 R1
H 0.00000000 0.00000000 34.50000000 R1
H 0.00000000 0.00000000 36.00000000 R2
H 0.00000000 0.00000000 37.50000000 R2
H 0.00000000 0.00000000 39.00000000 R2
H 0.00000000 0.00000000 40.50000000 R2
&END COORD
&KIND H
BASIS_SET SZV-GTH-PADE
POTENTIAL GTH-PADE-q1
&END KIND
&END SUBSYS
&END FORCE_EVAL
RUN_TYPE NEGF是这里的原生NEGF入口;FORCE_EVAL/DFT/TRANSPORT的外部OMEN联用途径、SMEAGOL接口是其他入口,不能只换一个标题就视为同样计算。本例不需要另启动OMEN或SMEAGOL。
3. 提交自己的计算#
本组NEGF参考由CPU构建、1MPI×1线程执行。CPU模块为cp2k/2026.2-8173m,Intel icx/ifx2024.2、IntelMPI2021.13、MKL2024.2。CPU分区可用时:
sbatch job-negf.slurm
脚本会依次计算零偏压、±0.1V,以及两组加密积分条件。每组复制到独立的work/算例名/目录,不读旧波函数。CPU脚本按本平台整节点政策申请56核,这些最小模型的参考执行采用单个MPI;不要据此选择生产任务的MPI规模。当前CPU资源不可用时,可先用包内真实输出学习读取与绘图,不在共享登录节点直接运行。
可查看脚本和实际命令:
cat job-negf.slurm
cat run.py
已有正常完成且输入未改的目录会保留;遇到未完成目录先检查,不直接覆盖原始输出。
4. 读透射与DOS#
head -n 8 reference-results/H28-zero/H28-transm-0-1.transm
head -n 8 reference-results/H28-zero/H28-device-0-1.dos
grep -E 'SCF run converged|NEGF run converged|Electric current' reference-results/H28-zero/output.log
两份谱的能量列都是Hartree,不是eV。本包乘以27.211386245988转换能量,画图时减去两接触电化学势的平均值;DOS从每Hartree换为每eV还需除以同一换算因子,不能只改横坐标标签。透射采用原文件注明的G₀=2e²/h约定,不再次人为乘2。

本例原生接触SCF25步收敛,NEGF11次迭代,输出401个能量点。不要只确认程序退出0,还要看接触SCF与NEGF各自的收敛行。
5. 换成自己的材料#
先准备与接触周期相容的主层和器件,保持元素、基组、赝势与原子映射一致,再扩大接触/屏蔽区并检查数值变化。这个小模型采用的100Ry和最小基组是教学设置,不可当作任意材料的推荐收敛参数。
接着阅读有限偏压与积分精度。版本参考:CP2K2026.2 NEGF输入;完整模型来源:固定版本H28输入。