SIESTA:基组与网格怎么选
对同一Si2结构实际比较SZ/DZP和100–200 Ry网格,区分基组误差与积分网格变化。
阅读本篇目录
局域基组大小和实空间网格精度是两个不同选择。本例保持同一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 |

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,并记录哈希。
需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。