Gaussian 向量网格与分量选择
终端演示SElect、Magnitude、Normalize、SProd与VProd,明确分量、点乘叉乘和单位。
阅读本篇目录
本篇使用鸢算科技集群实际 Gaussian 16 C.01 AVX CPU 版和水分子 B3LYP/6-31G(d)、UltraFine 单点结果。Gaussian 为厂商预编译版本;配套分析使用 ASE 3.29 环境中的 NumPy 和 Matplotlib。这里的电子密度导数不是原子所受的力,也不是分子动力学中的速度。
下载输入、真实数值网格、终端脚本和高清绘图程序,解压进入目录:
bash run.sh
先生成 analysis/ 与 figures/ 查看已有真实结果,无需Gaussian。要从自己的检查点计算,先 yskit gaussian-init,再在已分配CPU的作业中执行:
bash run.sh compute
流程依次是水分子单点、formchk、网格和向量运算、数值分析与三张图。每个输入1线程、1GB内存;不要在客户登录终端启动正式计算。已有输出时请另解压一份,脚本拒绝覆盖;提交方法见Gaussian输入与检查点。
1. 先分清四分量文件和三维向量#
先按密度导数教程生成 gradient.cube。本例每个格点依次有:
1: rho
2: d(rho)/dx
3: d(rho)/dy
4: d(rho)/dz
前三个数并不是完整的空间向量。密度和导数的量纲不同,也不能直接把4个值一起求模当作物理梯度。先用 SElect 选择实际x/y/z导数分量:
cubman <<'EOF'
SElect
gradient.cube
Y
gradient-vector.cube
Y
3
2 3 4
EOF
这里3表示输出3个值,最后一行按顺序指定三个分量索引。索引写在同一行,以空格分隔;不是把原子编号写进去。两个Y分别表示输入、输出为格式化文本。
只提取密度分量则是:
cubman <<'EOF'
SElect
gradient.cube
Y
selected-density.cube
Y
1
1
EOF

三幅图分别来自选择后的x/y/z分量,正负号表示密度沿坐标方向如何变化。色标为便于阅读截在±1,原始数据未截断。
2. 求梯度模与单位方向#
cubman <<'EOF'
Magnitude
gradient-vector.cube
Y
magnitude.cube
Y
EOF
cubman <<'EOF'
Normalize
gradient-vector.cube
Y
normalized-vector.cube
Y
EOF
Magnitude 输出每个格点的三维欧氏模;本例与独立 cubegen NormGradient=SCF 和三个分量平方和开根号一致,文本五位科学计数精度带来末位舍入差异。31³粗网格最大模约2190.822 e/Bohr⁴,近核导数尖峰不能用来替代收敛的空间分析。
Normalize 把每个非零三维向量除以自己的模,只保留方向,不保证整个空间积分为1。它与标量教程中正标量变成+1是同一种逐点操作。它不是波函数归一化、电子数归一化或原子电荷计算。
3. 点乘与叉乘#
先复制一份三分量文件,便于两个输入分别打开:
cubman <<'EOF'
Copy
gradient-vector.cube
Y
gradient-copy.cube
Y
EOF
点乘:
cubman <<'EOF'
SProd
gradient-vector.cube
Y
gradient-copy.cube
Y
dot.cube
Y
EOF
输出为每个格点的 gx²+gy²+gz²,一个数值;不是只打印一个空间积分结果。
叉乘:
cubman <<'EOF'
VProd
gradient-vector.cube
Y
gradient-copy.cube
Y
self-cross.cube
Y
EOF
本例相同向量的叉乘逐点为零。要检查非零叉乘,下载脚本另用 SElect 把同一场的分量重排成 (gy,gz,gx),然后与原场叉乘;结果与逐点三维叉乘公式一致。**分量重排仅为运算演示,不代表另一种物理场或一次新的电子结构计算。**输出有三个分量,不能用标量网格程序直接读。
两个输入必须具有相同的原点、体素步进向量、网格点数和原子表;每个分量的物理含义与单位也需要匹配。应使用不同文件名保存两个输入,避免同一原始文件在两个输入单元重复打开。
4. 从输入到最终结果#
bash run.sh compute
cat analysis/RESULTS.json
在已分配CPU的作业中,上述命令从自己的水分子单点开始,依次生成完整FCHK、导数网格、分量选择、模/单位向量、点乘/叉乘,再输出数值对照和三张高清图。results/ 与默认 bash run.sh 则使用下载包中已有数据;两条路线的分析读取对应的实际输出目录。
配套程序同时核对分量、同网格条件、逐点模、单位向量、零/非零叉乘和点乘;analysis/finite-difference.csv 另外给出密度导数的有限差分数据。不要把“命令执行完了”直接当成物理含义正确。
至此可结合标量网格运算学习本次C.01菜单中的13类操作:Add、Copy、Difference、Properties、SUbtract、SCale、SQuare、SProd、VProd、Magnitude、Normalize、SElect、ToXYZ。这里仅覆盖这些实际展示的标量/向量分支,文件格式和Gaussian其余关键词还需按各自任务选择。
参考:Gaussian编写的cubman手册存档是2013年的标量命令说明;本文向量分支按实际C.01提示、输入和数值结果展开。