sisl专题

sisl:生成 TranSiesta 电势修正

用真实碳链TBtrans文件生成外部Poisson修正,展示完整网格、单位、边界和粗网格插值误差。

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

stoolbox ts-fft用于为TranSiesta生成带指定电极边界的Poisson修正文件。本例沿用集群真实完成的零偏压碳链计算,实际运行工具、提取电势并画图,不把辅助场称为新的DFT自洽电势或输运结果。

1. 先下载并得到图片#

下载真实输入、六组原生网格与复算绘图脚本,约87 MiB,保存为 sisl-ts-fft-wave220.zip。

unzip sisl-ts-fft-wave220.zip -d sisl-poisson
cd sisl-poisson
bash view.sh
cat analysis-reference/metrics.csv

生成图片位于 figures-reference/;这一步只读取已有数据,不重新计算,不需要安装PyAMG。重复操作使用新解压目录,避免混用已有结果。

真实碳链结构、四种偏压条件与完整网格电势

2. 需要哪些真实输入#

ls inputs
cat inputs/MESH.txt
InitMesh: MESH = 300 x 90 x 90 = 2430000

device.TBT.nc来自此前真实的SIESTA5.4.2/TranSiesta/TBtrans零偏压计算,包含32个原子的位置、晶胞与电极分组。device.XV来自同次计算,用于恢复真实C元素。这个教学碳链沿a方向排列,晶胞为40.64×12×12 Å。

分组 原子编号,从0开始 作用
high 0–7 第一组电极
Device 8–23 器件区域
low 24–31 第二组电极

TBT文件不保存真实元素种类,sisl直接读入时可能使用H占位符;画结构应结合对应XV恢复C标签,不能据占位符判断体系元素。本例工具显式指定1.5 Å球半径,求解使用真实坐标和电极分组,不根据占位元素自动选择半径。

3. 一条提交命令完成重算#

sbatch job.slurm

提交脚本按CPU整节点56核编写,内部最多并行4个单线程子任务。自动完成四组直接完整网格计算、两组插值对照、CSV提取与画图。

脚本加载 sisl/0.16.4;可选依赖PyAMG5.4.1只安装在本目录的 python-deps/,不修改公共环境。首次重算需要从PyPI获取依赖。实际环境为Python3.11.16、NumPy2.3.5、SciPy1.16.3;PyAMG使用官方二进制wheel。

任务结束后:

cat analysis/metrics.csv
ls figures
ls cases/plus010_full

主要输出是各目录中的 potential.TSV.nc,以及统一汇总的CSV和图片。新算结果在 analysis/、figures/,已有参考结果的图和表使用 *-reference目录。

4. 原生工具命令怎样写#

提交脚本已包含实际调用;如果要在已分配资源中手动运行,完整网格命令如下:

module load sisl/0.16.4
export PYTHONPATH="$PWD/python-deps"
stoolbox ts-fft --geometry inputs/device.TBT.nc \
  --shape 300 90 90 \
  --boundary-condition-a d d \
  --boundary-condition-b p p \
  --boundary-condition-c p p \
  --elec-V high 0.1 --elec-V low -0.1 \
  --radius 1.5 --dtype f64 --tolerance 1e-10 \
  --out potential.TSV.nc

--shape要对应实际计算的网格,不是任选的画图分辨率。电极名称要和TBT中的名称一致;本例是high/low,不应直接换成别的教程里的Left/Right。

d d表示a方向两端Dirichlet边界;b/c方向采用周期边界。--radius决定哪些网格点落在固定电极电势区域,不是直接读取的原子半径。自己的体系若采用不同边界,应据实际物理模型重新设置。工具背景见sisl官方Poisson说明。

5. 四组完整网格计算得到什么#

目录 high / low,eV数值 求解与输出网格
plus010_full +0.1 / −0.1 300×90×90
plus020_full +0.2 / −0.2 300×90×90
minus010_full −0.1 / +0.1 300×90×90
zero_full 0 / 0 300×90×90

电极电势数值加倍后,全网格与原结果两倍的最大偏差约 3.19E-14 eV;交换偏压符号后,与原结果负值的最大偏差约 1.58E-14 eV;零偏压结果为0。完整网格电势范围与所设边界一致,浮点尾差约1E-12 eV。

head analysis-reference/centerline.csv
cat analysis-reference/metrics.csv

中心线CSV对应y=z=6 Å的实际网格线。它是辅助修正场,不是沿轨迹采样得到的统计平均,也不代表重新完成了电子结构自洽。

6. 为什么本例不默认用粗网格加速#

工具允许增加 --shape-solver 60 18 18,先在小网格求解,再插值到实际输出网格。本例保留了两种真实对照:

求解网格 插值后的最大电势,eV 相对直接完整网格的最大差异,eV
60×18×18 +0.10819 0.08684
120×36×36 +0.10820 0.06381

两组都超过了所设+0.1边界。原始结果完整保留,metrics.csv中的 maximum_principle_pass=False明确标记它们的范围问题;不要将它们当作本例已通过范围检查的主要输入。

原始完整网格与两组插值结果的真实差异

本版CLI调用二阶插值,Grid默认使用wrap方式。本例采用直接完整网格求解,未裁剪或截幅来掩盖越界;线性求解容差与插值误差也应分别检查,不能只因容差很小就认为网格转换可靠。该结论来自当前版本与本例,不作为所有版本或所有几何的普遍误差估计。

7. TSV文件的单位与轴顺序#

原始NetCDF中的 V、Vmin、Vmax单位是 Ry,原生变量顺序为 V(c,b,a)。sisl读回时转换为eV,数组顺序为(a,b,c)。直接用netCDF4读数时,不能把Ry数值原样当成eV,或把第一维当作a方向。

此外,本版TSV读取器会将读回Grid的边界标记设为周期,不能据此反推原计算边界;实际条件应由各目录的 COMMAND.json保留。资料包只把其中的路径改成可复算的相对路径,数值选项与原运行一致。

8. 交给TranSiesta时做什么#

将对应 potential.TSV.nc复制到新的器件计算目录,在FDF中指定:

TS.Poisson potential.TSV.nc

文件的晶胞、网格和电势边界要与实际器件计算对应,使用支持NetCDF的构建。不要混用不同Poisson设置下的旧TSDE续算。本篇完成了外部修正文件生成、读回和数值对照,没有重新执行使用此文件的自洽输运;完整器件流程见TranSiesta实操。

9. 换成自己的结构#

先完成自己的零偏压器件及TBtrans计算,取同源TBT/XV文件;从实际输出读取InitMesh,核对电极名、传输方向和六个边界;再生成修正,检查范围、网格变化和单位,最后在一致的TranSiesta设置中使用。不要仅替换文件名就沿用本例300×90×90网格与high/low标签。

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

查看配图

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

100%查看原图 ↗