Critic2 QTREE 原子积分
用同一NaCl密度比较四面体细分与原网格积分,分清参考密度、价电子数和原子电荷。
阅读本篇目录
QTREE把晶体中可由对称性还原的空间分成四面体,通过梯度路径判断各区域属于哪个原子,再做积分。它适合小晶体和解析密度;网格密度的日常原子电荷分析通常先用YT/BADER。本篇以实际NaCl CUBE做算法对照,重点是输入和输出怎么读。
1. 准备同一结构、两份密度#
下载配套资料包:
unzip critic2-basins-wave142-*.zip -d critic2-basins
cd critic2-basins
bash run.sh list
critic2/1.4内部1.4.155,GCC/GFortran13.3、OpenMP、LAPACK/BLAS;单CPU,不需要GPU。NaCl-96-reference.cube决定分区,NaCl-96-valence.cube是要积分的价电子密度,两者晶胞和96³采样一致。参考密度含芯区网格采样误差,原始积分为 28.86782185,不能因为Na和Cl核电荷之和是28,就把它缩放成28。
2. 先做低级别四面体细分#
bash run.sh 4
crystal ../../data/NaCl-96-valence.cube
load ../../data/NaCl-96-reference.cube
load ../../data/NaCl-96-valence.cube
reference 1
integrable 2
auto
cpreport cps.json
qtree 4 minl 2
QTREE 4中的4是四面体递归细分级别,不是密度网格大小。MINL控制较低级别时继续细分的条件。增加级别会提高计算量,应比较输出数值,而不是只看是否正常结束。
本构建的这个默认输入只输出Volume和参考场Pop。 尽管注册了 INTEGRABLE 2,它并没有在该默认表里输出额外价电子积分。
3. 显式输出价电子积分#
bash run.sh 8
完整实际输入:
crystal ../../data/NaCl-96-valence.cube
load ../../data/NaCl-96-reference.cube
load ../../data/NaCl-96-valence.cube
reference 1
integrable 2
auto
cpreport cps.json
qtree 6 minl 3 prop_mode 3
关键是 PROP_MODE 3,要求输出全部注册的可积分量。本例表头依次为 Volume、Pop、Lap、$2;其中 $2 才是第二场的价电子数。读取终端输出:
tail -n 35 work/qtree6-all/out.cro
4. 与原密度网格YT比较#
bash run.sh 9
bash analyze.sh
| 方法 | Na体积 / bohr³ | Na价电子数 |
|---|---|---|
| QTREE 4 | 66.552851 | 本次默认未输出 |
| QTREE 5 | 66.002217 | 本次默认未输出 |
| QTREE 6,PROP_MODE 3 | 65.871114 | 0.164466558 |
| YT,96³原网格 | 66.034028 | 0.165776720 |
QTREE6的价电子总数为 7.99978003,YT总数为8。小差别来自不同积分离散化,原始数值保留,不强制归一化。两种方法比较不能替代原始DFT密度网格的收敛检查。

5. 最后再算电荷#
使用本例Na/Cl价电子数1/7:
q_Na = 1 - N_Na(valence)
q_Cl = 7 - N_Cl(valence)
QTREE6给出Na约 +0.835533 e,Cl约 -0.835313 e;YT为Na约 +0.834223 e、Cl约 -0.834223 e。不要用价电子Zval去减含芯电子的 Pop。网格插值的拉普拉斯可能有明显噪声,也不能把一个小Lap数值单独当作收敛证明。
输出包含原生积分表、独立检查表、不同细分对照图。继续使用自己的数据时,保持参考密度和被积分密度的晶胞、原点与网格一致;日常网格电荷可直接参考原子电荷教程。官方积分说明列有QTREE的其他选项。
只分析随包数据时,数值检查表在 analysis-reference/CHECKS.json,PNG/SVG图片在 figures-reference/;完整重算时分别写入 analysis/ 和 figures/。