CP2K专题

CP2K NEGF输运:氢链分区、透射与DOS

从28原子氢链完整输入,学习接触区、屏蔽区、散射区及透射与DOS的实际读取。

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

下载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。

真实零偏压透射与散射区DOS

本例原生接触SCF25步收敛,NEGF11次迭代,输出401个能量点。不要只确认程序退出0,还要看接触SCF与NEGF各自的收敛行。

5. 换成自己的材料#

先准备与接触周期相容的主层和器件,保持元素、基组、赝势与原子映射一致,再扩大接触/屏蔽区并检查数值变化。这个小模型采用的100Ry和最小基组是教学设置,不可当作任意材料的推荐收敛参数。

接着阅读有限偏压与积分精度。版本参考:CP2K2026.2 NEGF输入;完整模型来源:固定版本H28输入。

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

查看配图

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

100%查看原图 ↗