sisl专题

sisl:结构与Hamiltonian文件读写

用自建石墨烯模型处理晶胞和超胞,读回XYZ、FDF、NetCDF和TSHS,区分模型文件与DFT计算。

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

sisl用于几何、矩阵与电子结构数据处理,常与SIESTA/TBtrans配合。本文从自建几何和模型Hamiltonian开始,再接到能带与态密度。

1. 建立几何和超胞#

module load sisl/0.16.4
python - <<'PY'
import sisl
g=sisl.geom.graphene(bond=1.42,atoms=sisl.Atom(6,R=1.5),vacuum=20)
g.write("graphene.xyz")
g.write("graphene.fdf")
s=g.tile(3,0).tile(2,1)
s.write("graphene-3x2.xyz")
print(g.na,s.na)
PY

原胞2个C,3×2超胞12个C,体积是原胞6倍。bond是C–C键长1.42 Å,不是六角晶格常数;R=1.5为本例轨道邻域声明。每个C仅保留一个模型轨道。

实际3×2结构与一维链解析能带对照

2. 读回结构#

python - <<'PY'
import sisl
for f in ["graphene.xyz","graphene.fdf","graphene-3x2.xyz"]:
 g=sisl.get_sile(f).read_geometry()
 print(f,g.na,g.cell,g.xyz)
PY

这里的FDF是几何片段,不能直接当作完整SIESTA生产输入;实际计算还需要基组、赝势、k点与自洽参数。

3. 保存并读回模型Hamiltonian#

python - <<'PY'
import sisl
g=sisl.geom.graphene(bond=1.42,atoms=sisl.Atom(6,R=1.5),vacuum=20)
H=sisl.Hamiltonian(g)
H.construct([[0.1,1.43],[0.0,-2.7]])
for f in ["graphene.nc","graphene.TSHS"]:
 H.write(f)
 h=sisl.get_sile(f).read_hamiltonian()
 print(f,h.eigh([0,0,0]))
PY

两个格式读回后的整条路径能带与原模型一致,Γ点为±8.1 eV。TSHS文件存在不代表已经做了TranSIESTA或TBtrans计算;这里写的是显式给定参数的矩阵模型。

下载可复跑脚本,新目录解压后执行bash run.sh。使用独立sisl/0.16.4模块,Python3.11、NumPy/SciPy/netCDF4与Matplotlib,不需要加载SIESTA MPI工具链。results/是原生输出,analysis/为CSV,figures/为三张图。本组是明确构造的紧束缚模型,没有运行SIESTA自洽计算、DFT或TBtrans输运。

继续处理真实程序输出#

新增原生TBtrans透射与DOS、固定Hamiltonian电流,以及SIESTA实际输出读取。分别使用原生TBtrans链模型与本次Si2真实DFT输出,说明自旋因子、文件精度和单位,不把固定势积分当自洽偏压。

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

查看配图

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

100%查看原图 ↗