SIESTA专题

SIESTA:基组与网格怎么选

对同一Si2结构实际比较SZ/DZP和100–200 Ry网格,区分基组误差与积分网格变化。

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

局域基组大小和实空间网格精度是两个不同选择。本例保持同一Si2结构、同一PBE赝势、同一4×4×4 k网格,分别改变PAO.BasisSize与MeshCutoff。

1. 查看实际输入差异#

module load siesta/5.4.2-8173m-mpi sisl/0.16.4
python prepare.py
grep -E "PAO.BasisSize|PAO.EnergyShift|MeshCutoff" cases/*/input.fdf

五个固定结构条件为SZ100、SZ150、DZP100、DZP150、DZP200;轨道能量偏移均为100 meV。SZ与DZP改变轨道数量和灵活性,MeshCutoff改变实空间积分网格,不能把提高网格当成增大轨道基组。

2. 提交并提取#

sbatch job.slurm
squeue -u "$USER"
cat analysis/cases.csv

待作业完成后查看CSV。完整输入见入门教程,原子与晶胞均保持固定,所有SCF使用同一10^-6 eV自由能收敛要求。

3. 对照实际数值#

条件 基组 网格/Ry 总能/eV·atom^-1
sz100 SZ 100 -114.1540280
sz150 SZ 150 -114.1541275
dzp100 DZP 100 -114.9252710
dzp150 DZP 150 -114.9253310
dzp200 DZP 200 -114.9253275

实际基组与网格对照;右侧只比较同一DZP基组

DZP150到DZP200的能量差约0.0035 meV/原子,而SZ到DZP的变化约0.77 eV/原子。后者是基组改变,不能用前者的小网格差异宣称SZ已经足够。网格能量也不必严格单调。

4. 检查目标性质,再确定设置#

python - <<'PY'
import csv
with open("analysis/cases.csv") as f:
 for r in csv.DictReader(f):
  print(r["case"],r["energy_per_atom_eV"],r["max_force_eV_A"],r["max_static_stress_GPa"])
PY

能量、原子力和应力需要分别看。当前固定a=5.43 Å,即使网格改变的能量很小,DZP下应力仍约3.67 GPa,需要另做晶胞优化。研究计算还应继续检查k点、轨道能量偏移和基组形式,不能只看这两个网格之间的差。

下载Si2实算资料包,在新目录解压,执行sbatch job.slurm申请CPU资源。分区按56核整节点分配;本例小任务每条件2个MPI进程,最多四条件并发。参考数据同样采用2个MPI进程/条件。软件为SIESTA5.4.2 CPU MPI(oneAPI2024.2、IntelMPI2021.13、MKL LP64顺序库、AVX512/O2),后处理sisl0.16.4。包内无软件程序或赝势,准备步骤读取公共PseudoDojo0.4 PBE标量相对论Si PSML,并记录哈希。

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

查看配图

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

100%查看原图 ↗