Gaussian cube数据运算
用同一真实水分子网格演示cubman十项标量操作,解释逐点归一化、乘积、差值与坐标表。
阅读本篇目录
本篇使用鸢算科技集群实际 Gaussian 16 C.01 AVX CPU 工具和我们实际计算的水、乙醇参考结果。Gaussian 为厂商预编译版本,使用个人初始化环境;分析脚本使用现有 ASE 3.29、NumPy、SciPy 与 Matplotlib 环境。
下载完整终端脚本、实际数值、结构、cube与绘图程序,在新解压目录先查看结果:
bash run.sh
这一步无需 Gaussian,输出 analysis/ 和 figures/,拒绝覆盖旧结果。results/ 有实际数值摘录和生成的网格,没有 Gaussian 软件、二进制检查点、完整FCHK、MO系数或密度矩阵。
原生重跑时,先 yskit gaussian-init 初始化自己的 Gaussian 环境,再在已分配 CPU 的作业中执行 bash run.sh compute。它先重建自己的水单点、乙醇优化/频率检查点,再运行工具。每个参考输入1线程、1GB主机内存;采用整节点模板时按实际分配调整输入。不要在客户登录终端启动正式任务。提交方法见Gaussian输入与检查点。
1. 先确认两个cube能否直接运算#
相同形状还不够,还应有相同的原点、步进向量、格点次序与原子位置。不同几何或不同网格的文件不能直接按行相减,需要先明确物理参照并映射到同一网格。
本例所有参与算术的cube都从同一水分子FCHK、相同 -2 设置生成;脚本逐项核对网格。原生数据在 results/,自己重跑的文件在 work/tools/。
2. 相加与相减#
进入自己的 work/tools/,用可读的输入流回答交互提示:
cubman <<'EOF'
Add
alpha.cube
Y
beta.cube
Y
my-alpha-beta.cube
Y
EOF
Y 表示读写格式化文本cube。闭壳层的 alpha+beta 与相应总密度逐点一致,末位可因cube文本精度出现差异。
完整密度减去省略芯层的密度,可查看芯层贡献:
cubman <<'EOF'
SUbtract
full-density-coarse.cube
Y
density-coarse.cube
Y
my-core.cube
Y
EOF
这是同一全电子结果的分量差,不是成键电荷差。研究成键电荷差还需统一分子/片段的几何、方法、基组和参照,不能随便找两个分子cube相减。
3. 缩放、平方与逐点乘积#
cubman <<'EOF'
SCale
full-alpha.cube
Y
my-full-alpha-times2.cube
Y
2.0
EOF
本例 2×FAlpha 对应完整闭壳层总密度。SQuare 生成输入标量的逐点平方;SProd 需要两个输入和一个输出文件,生成逐点乘积cube,而不是只打印一个积分数:
cubman <<'EOF'
SProd
alpha.cube
Y
beta.cube
Y
my-product.cube
Y
EOF
乘积或平方后的单位也会改变,不能继续当原电子密度解释。

4. Properties与Difference#
cubman <<'EOF'
Properties
density-coarse.cube
Y
EOF
本例打印 SumA=8.1706421347,与脚本独立的体素积分一致。这个数对应粗网格的价电子密度,不能当成10电子总数。
Difference 比较两个输入并打印差的统计量,SUbtract 才是这里用于写出差值cube的操作:
cubman <<'EOF'
Difference
density-coarse.cube
Y
alpha-plus-beta.cube
Y
EOF
原生最小值字段有时会保留0和-9999占位坐标;不要把占位坐标当成分子中真实位置。配套脚本逐值读取数组计算实际极值与积分。
5. Normalize不是总电子数归一化#
对本例处处为正的标量密度,原生 Normalize 会把每个格点归一为+1。整个体素和约为1103.367,不是1,也不是电子数10。
因此它不能用来“修正”不够精细的电子数积分。希望得到正确电荷积分,应改进原始网格与空间范围,不对密度做无物理依据的总量修补。
6. ToXYZ输出的是网格表#
cubman <<'EOF'
ToXYZ
density-coarse.cube
Y
my-grid.xyz
EOF
head my-grid.xyz
这里每行是 x y z value,坐标为Bohr,31³网格有29791行;它不是3原子水分子的XYZ结构。newzmat -oxyz 的元素+坐标文本和这里的网格表也应分开。
本包实际展示 Add、Copy、Difference、Properties、SUbtract、SCale、SQuare、SProd、Normalize、ToXYZ 十项标量用法。原生菜单还列有 VProd、Magnitude、SElect,其向量/选择用途另行展开,不把未演示的分支当成已经覆盖。