GPAW专题

GPAW私有LCAO基组生成与使用

从终端生成个人H、O基组,绘制径向函数,用水分子实际使用命名基组,并说明SZ、DZ、极化函数与独立目录的配置。

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

LCAO把电子波函数展开在原子轨道基函数上。基组小,通常算得快;基组不充分时,能量、键合和响应量也可能存在明显误差。本篇从“生成文件—查看曲线—在计算中使用”的流程开始。

1 先运行完整例子#

下载水分子LCAO操作包,保存为gpaw-lcao-workflows.zip。普通作业可在解压目录执行sbatch job.slurm。下面的顺序适用于已经分配好的CPU计算资源:

python3 -m zipfile -e gpaw-lcao-workflows.zip .
cd gpaw-lcao-workflows
bash setup.sh
bash run.sh
bash verify.sh
bash plot.sh

完整包包含基组生成、水二聚体的五组重叠误差计算、私有基组水分子和局域轨道后处理。1个MPI进程、1个线程,计算结果在results/,图片在plots/。另外两篇教程分别解释重叠误差修正和局域轨道模型。

2 在自己的目录生成基组#

模块gpaw/26.7.0-8173m已提供GPAW、PAW数据和常用基组。需要生成自己的版本时,在个人算例目录操作:

source env.sh
mkdir -p my-basis
cd my-basis
gpaw basis --search --name ys396 H.PBE O.PBE
gpaw-analyse-basis -f -s H.ys396.dzp.basis O.ys396.dzp.basis
ls -lh H.ys396.dzp.basis O.ys396.dzp.basis H.ys396.dzp.png O.ys396.dzp.png
cd ..

--search读取已安装的H、O PBE PAW数据,输出写入当前目录。--name ys396给文件加上自己的名称,默认类型为DZP。不要把这些文件复制到公共安装目录或覆盖默认基组。 gpaw-analyse-basis读取生成的基组并保存PNG,不需要图形桌面。

本例生成的H有5个原子轨道基函数,O有13个;因此H₂O共有23个。一个径向p函数展开成3个角向分量,d函数展开成5个,所以“径向函数数量”不等于计算的轨道数量。

实际生成的H、O DZP径向基函数

SZ是单ζ,DZ是双ζ;P表示增加极化函数。ζ描述同一价电子角动量通道的径向灵活性,极化函数提供额外角向自由度。增大基组后仍要实际检查目标性质,不能仅凭名字判断精度。

3 让计算器读取命名基组#

完整包实际使用results/private-basis/中的文件。下面是程序中的核心设置,setup_paths只对当前Python进程生效:

from pathlib import Path
from gpaw import GPAW, setup_paths

private = Path('results/private-basis').resolve()
setup_paths.insert(0, str(private))
calc = GPAW(
    legacy_gpaw=True, mode='lcao', basis='ys396.dzp',
    xc='PBE', h=0.22, nbands='nao', spinpol=False,
    occupations={'name': 'fixed-uniform'},
    convergence={'energy': 1e-6, 'density': 1e-5,
                 'eigenstates': 1e-7},
    maxiter=200, txt='water-private.txt')

PAW数据与LCAO基组是两种文件。这里生成的是基组,不是重新生成元素的PAW赝势。basis='ys396.dzp'使用带名称的文件;basis='dzp'使用已安装的常用基组。

nbands='nao'保留全部基组维度,便于后续轨道和模型分析;一般结构计算不一定需要这么多空带。

4 实际水分子结果#

两次计算使用同一固定结构、同一晶胞、PBE和0.22 Å网格。原子位置没有优化,不能把这些能量差当成水分子的反应能。

使用的基组 总能量/eV 基组维度
已安装DZP −12.81670173 23
本次生成ys396.dzp −12.81645884 23

两组相差约0.000243 eV。这个结果证明命名文件已进入实际计算;它并不证明所有元素的默认基组与重新生成的基组总是等价。

查看自己的结果和图片:

python3 -c "import json; v=json.load(open('results/VALIDATION.json')); print([(r['name'],r['basis'],r['energy_eV'],r['nao']) for r in v['results'] if r['name'] in ['A-own','A-private']])"
ls -lh results/private-basis/H.ys396.dzp.basis results/private-basis/O.ys396.dzp.basis
ls -lh plots/lcao-private-basis.png

5 换成自己的体系#

先为实际元素准备基组;在脚本中指定私有目录与名称,再检查网格、基组大小、真空层或k点。比较能量时使用相同PAW版本和计算约定。附件的verify.sh只用于原样复跑;换体系后不能继续要求结果等于水分子参考值。

本例采用GPAW26.7.0、Python3.11.16、GCC13.3、OpenMPI5.0.10rc2、MKL2023.2与Libxc7.0环境。通常使用模块加载,无需自行设置编译器。

原生功能与参数参考GPAW LCAO说明。

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

查看配图

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

100%查看原图 ↗