Critic2专题

Critic2 周期密度与傅里叶网格

检查真实NaCl电子总数,比较插值、FFT导数和守恒重采样。

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

下载本篇配套操作包,解压后进入包目录。包中有23个Critic2短例子、输入、原始结果与7张高清图。它复用Critic2第一次计算中的真实水二聚体波函数和集群已有NaCl密度,不重新进行DFT。

1. 先检查已有密度#

bash run.sh 8
grep -n 'SUM\|INTEGRAL\|MIN\|MAX\|MEAN\|COUNT' work/grid-statistics/out.cro
crystal ../../data/NaCl.cube
load ../../data/NaCl.cube
reference 1
sum 1
min 1
max 1
mean 1
count 1 0.01
count 1 0.1

NaCl密度来自集群已有VASP实算:PBE、550eV、EDIFF=1E−6、Γ中心7×7×7 k网格、64³ FFT。原胞含Cl与Na各一个,使用价电子密度;期望电子数为Cl7+Na1=8。这里的标量CUBE已经转换成e/bohr³,不是原始CHGCAR的体积缩放数值。

结果 实际值
密度积分 7.9999998231 e
网格最小值 −0.001445427383 e/bohr³
网格最大值 0.2590240048 e/bohr³
网格平均值 0.02560523699 e/bohr³
ρ>0.01的网格点数 95660
ρ>0.1的网格点数 19828

sum输出元素和与物理积分,两者不同;积分需要乘网格体积元。有限平面波网格的少量负值按实际结果保留,本例没有裁零或强制归一化。

2. 插值方式会改变任意点的取值#

bash run.sh 9
grep -n 'Field value' work/grid-settings/out.cro
crystal ../../data/NaCl.cube
load ../../data/NaCl.cube
reference 1
setfield 1 nearest
point 0.123 0.234 0.345
setfield 1 trilinear
point 0.123 0.234 0.345
setfield 1 trispline
point 0.123 0.234 0.345
setfield 1 tricubic
point 0.123 0.234 0.345
list

晶体输入中这个点采用分数坐标。最近点、三线性、三次样条、tricubic分别得到0.002542190774、0.002576243111、0.002572918295、0.002573028926 e/bohr³。它们是同一有限网格的不同重建方式,不是四次不同DFT。

3. 周期FFT导数#

bash run.sh 10
ls work/grid-fft
crystal ../../data/NaCl.cube
load ../../data/NaCl.cube
reference 1
load as fft lap 1
load as fft gx 1
load as fft gy 1
load as fft gz 1
reference 2
precisecube
cube grid file fft-lap.cube
reference 3
cube grid file fft-gx.cube
reference 4
cube grid file fft-gy.cube
reference 5
cube grid file fft-gz.cube

FFT操作要求网格覆盖完整周期晶胞。程序按照真实三斜晶胞的倒易矢量求导,不可直接假设三个网格方向就是直角坐标x、y、z。本例的四张导数网格均保持64³,周期导数的全胞积分接近0。

4. 需要缩减网格时#

本包采用配套周期傅里叶工具保留原始零频分量,再由Critic2读取。运行一个独立转换:

bash grid.sh 32
cat new-grid.json
head -n 8 new-grid.cube

默认读取 data/NaCl.cube,生成新的 new-grid.cube,已有输出时要求换新文件名。换成自己的完整周期CUBE时:

bash grid.sh 32 my-density.cube my-density-32.cube

该工具使用SciPy周期傅里叶重采样,处理偶数网格的Nyquist分量,不裁零、不根据目标电荷重新缩放。64³和32³的实际积分都是7.9999998231 e。包内编号11读取已生成的32³文件:

bash run.sh 11
grep -n 'INTEGRAL' work/grid-resample/out.cro
crystal ../../data/NaCl.cube
load ../../data/NaCl-resampled.cube
reference 1
precisecube
cube grid file resampled.cube
sum 1

原始64³和傅里叶32³的实际z=0密度切片,保持电子总数但细节分辨率不同。

原始64³和傅里叶32³的实际z=0密度切片,保持电子总数但细节分辨率不同。

本版本原生 LOAD AS RESAMPLE 不作为本例的密度缩减入口。换用任何重采样方法后,都要检查体积、单位、电子总数和所需物性;积分守恒本身不保证Bader电荷或核附近细节已经收敛。原子盆积分参考网格与积分检查。

提取数据与重新画图#

只想看配套结果,先在新解压目录执行:

bash analyze.sh
ls analysis-reference
ls figures-reference

该命令从 reference/work/ 提取数据,并生成全部7张图。若要重做后处理,在另一份新解压目录执行:

bash list.sh
bash run-all.sh
ls work analysis figures

顺序是准备真实密度 → 生成周期傅里叶网格 → 运行23个Critic2输入 → 提取表格 → 画图。结果写入 runtime-data/、work/、analysis/、figures/;已有结果目录时使用新解压目录,避免混用。只运行单个编号后,不要对不完整的 work/ 调用整包分析。

重算应使用账户分配的CPU资源。包内 run.slurm 按CPU分区整节点56核规则准备,可用 sbatch run.slurm 提交;教学流程实际单线程,申请56核不表示做过并行性能测试。CPU资源暂不可分配时,先使用已有结果提取与画图。

本例程序是 critic2/1.4,固定提交内部版本1.4.155;GCC/GFortran13.3、双精度/OpenMP,LAPACK3.12.1、Readline8.2、NLopt2.10.0、Libxc7.0.0及Libcint标签6.1.2。辅助脚本使用集群已有ASE3.29.0、NumPy、SciPy和Matplotlib环境,脚本已选定解释器。没有GUI、tblite或libxtb接口要求。

返回Critic2专题。写法依据:固定版本源码、官方命令参考、图形与采样手册、结构工具手册。在线手册面向发展版本,实际输入采用本集群固定版本已运行的写法。

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

查看配图

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

100%查看原图 ↗