计算化学公社

标题: Multiwfn的格点数据平移功能介绍 [打印本页]

作者
Author:
sobereva    时间: 2025-11-20 01:01
标题: Multiwfn的格点数据平移功能介绍
Multiwfn的格点数据平移功能介绍
Introduction to grid data translation function in Multiwfn

文/Sobereva@北京科音  2025-Nov-19


1 前言

很多人在对周期性体系绘制三维函数(如电子密度差)的等值面时,容易遇到一个情况是发现感兴趣的等值面在晶胞的边缘,导致等值面被截断,无法观看完整。虽然VMD程序在显示格点数据等值面的时候可以要求把周期镜像显示出来,从而试图让位于晶胞边缘的等值面看起来完整,但等值面在晶胞边界的位置会不连贯,有个突变,因而还是不好看。还有一个解决方法是先用《Multiwfn中非常实用的几何操作和坐标变换功能介绍》(http://sobereva.com/610)里提供的功能令晶胞进行平移使得感兴趣的区域在盒子中央,然后再重新计算格点数据,但这个过程不仅麻烦而且还花费重算一次的时间。

为了完美地解决以上问题,在2025-Nov-19更新的Multiwfn中增加了一个新功能,可以令格点数据连带着原子坐标在盒子的第1、2、3个轴上分别平移特定百分比,从而将感兴趣的等值面移到便于观察的地方,整个过程瞬间完成。下面就通过两个实际例子演示一下。Multiwfn可以在官网http://sobereva.com/multiwfn免费下载,不了解Multiwfn者建议看《Multiwfn FAQ》(http://sobereva.com/452)。记录格点数据最常用的格式是cube,不了解的话建议看《Gaussian型cube文件简介及读、写方法和简单应用》(http://sobereva.com/125)。


2 实例

北京科音CP2K第一性原理计算培训班(http://www.keinsci.com/KFP)里我讲CP2K做水合电子的AIMD模拟的幻灯片中,给了三个时刻的自旋密度等值面的图片,如下所示。由图可见从2000 fs时开始形成水合电子,到了2100 fs时水合电子已经完全形成。然而2100 fs时的等值面在盒子最边上,看起来很不舒服。这个问题靠前述的Multiwfn的格点数据平移功能即可解决。

(, 下载次数 Times of downloads: 4)

2100 fs时刻CP2K产生的这个体系的自旋密度的cube文件MD-SPIN_DENSITY-1_2100.cube在http://sobereva.com/attach/754/file.rar中。我们先看一下等值面图,用VMD、VESTA、Multiwfn等观看都可以。此例用Multiwfn载入cube文件后,进入主功能0,把等值面数值设为0.001,并且点击show data range复选框要求显示格点数据盒子边框后就可以看到下图

(, 下载次数 Times of downloads: 4)

显然,为了让等值面位于盒子中央便于观看,应该对体系在第1个轴(当前对应X轴)的负方向平移30%左右;在第2个轴(当前对应Y轴)的正方向平移约50%;在第3个轴(当前对应Z轴)上用不着平移。

关闭图形窗口回到Multiwfn主菜单,依次输入
13  //处理内存中的格点数据的功能
19  //平移格点数据
-0.3  //在第1个轴负方向平移30%
0.5  //在第2个轴正方向平移50%
[回车]  //不在第3个轴方向上平移

此时屏幕上看到如下提示,显示了在各个方向上平移了多少个格点,以及平移矢量。注意这里都是按正值显示(由于周期性,前面输入-0.3等同于输入了0.7)。
Translate along the 1st axis by   62 grids
Translate along the 2nd axis by   45 grids
Translate along the 3rd axis by    0 grids
Translation vector:    8.630404    6.264003    0.000000 Angstrom

当前程序检测到在平移后有些原子露在了盒子外面,问你是否把它们卷到盒子里,这里输入y要求卷入。

现在格点数据就处理好了。可以选择选项0把格点数据导出为新的.cub文件,也可以直接选选项-2观看等值面,现在看到的图如下。可见等值面已完全在盒子中央了,非常容易考察水合电子的形态。

(, 下载次数 Times of downloads: 4)


3 注意事项

此功能对任何函数的格点数据都可以用。格点数据可以是从cube、CHGCAR等Multiwfn支持的记录格点数据的文件中读取的,也可以是Multiwfn的主功能5等功能基于波函数文件直接计算出来并存在内存中的。

本文介绍的功能对于盒子是非正交的情况也可以照常用,平移的方向对应于实际三个轴的方向,只不过Multiwfn目前无法正确显示这种情况的等值面,应当用VMD、VESTA等程序显示。

前面的例子中,格点数据对应的盒子(即均匀分布的格点所处的范围)和做周期性第一性原理计算对应的盒子(对晶体体系来说也相当于晶胞)是完全一致的。如果格点数据的盒子范围和周期性计算用的盒子范围不对应,比如计算格点数据的区域只是整个体系中的一小块,那么使用本文的功能就没任何意义。

如果你的体系本来就没周期性,本文的功能虽然也能使用,但并没有任何实际意义。

如果本文的功能给你的研究带来了便利,发表文章时请引用Multiwfn启动时提示的原文。


作者
Author:
Uus/pMeC6H4-/キ    时间: 2025-11-20 01:59
这个功能应该也能处理http://sobereva.com/539http://sobereva.com/617讲的主功能300子功能1以原子范德华半径定义的自由区域,以及http://sobereva.com/408讲的主功能200子功能14以准分子密度定义的(周期性体系内的)分子孔洞吧,想必会非常实用。如果539和617的自由区域还能做特定值的等值面的体积和表面积统计(像http://bbs.keinsci.com/thread-34060-1-1.html提到的那样),408的域边界还能用Gaussian展宽之类的切换函数平滑化(好像我问过来着),那就真的完美了。

在内存里除原子坐标和格点数据外还有基函数/GTF信息时,这个功能会把基函数/GTF的中心(包括在没有原子核的地方另外添加的)一同平移吗?

作者
Author:
sobereva    时间: 2025-11-20 03:10
Uus/pMeC6H4-/キ 发表于 2025-11-20 01:59
这个功能应该也能处理http://sobereva.com/539http://sobereva.com/617讲的主功能300子功能1以原子范德华 ...

Multiwfn里凡是牵扯到格点数据的功能,只要格点数据能中途导出/导入,都可以用此文的功能处理

当前功能只处理格点数据和原子坐标,并不能对周期性和波函数有关的信息进行恰当的平移+卷入盒子操作
作者
Author:
Uus/pMeC6H4-/キ    时间: 2025-11-20 13:43
sobereva 发表于 2025-11-20 03:10
Multiwfn里凡是牵扯到格点数据的功能,只要格点数据能中途导出/导入,都可以用此文的功能处理

当前功 ...

波函数信息不能一起平移是很不方便的。拿http://sobereva.com/651文件包里的h2o-MOS-1_0.molden尝试观察平移前后的HOMO(4号轨道,取isovalue为0.01 a.u.)和ELF(主功能5计算,取isovalue为0.50 a.u.)的格点数据,果然有问题。首先按651所说添上h2o.inp里的盒子信息并从h2o.out里载入轨道能量:
  1. cp
  2. 7
  3. 2
  4. h2o.out
  5. 3
复制代码
此时从主菜单出发做两种连续操作:
分支一
  1. 0 // 打开图形窗口;点4切到HOMO,用Save picture保存图像homo_original.png;最后点return关闭图形窗口返回主菜单
  2. 13 // 以下几步按本文所说平移HOMO格点数据和原子坐标
  3. 19
  4. 0.5
  5. 0.5
  6. 0.5
  7. -2 // 打开图形窗口;用Save picture保存图像homo_shifted_immediate.png;最后点return关闭图形窗口
  8. -1 // 返回主菜单
  9. 0 // 回主功能0查看轨道,打开图形窗口;点4切到HOMO,用Save picture保存图像homo_after_homo_shift.png;最后点return关闭图形窗口返回主菜单
  10. 5 // 以下几步计算ELF
  11. 9
  12. 3
  13. -1 // 打开图形窗口,用Save picture保存图像elf_after_homo_shift.png;最后点return关闭图形窗口
  14. 2 // 导出ELF.cub文件
  15. 0 // 返回主菜单
复制代码
分支二
  1. 5 // 以下几步计算ELF
  2. 9
  3. 3
  4. -1 // 打开图形窗口,用Save picture保存图像elf_original.png;最后点return关闭图形窗口
  5. 0 // 返回主菜单
  6. 13 // 以下几步按本文所说平移ELF格点数据和原子坐标
  7. 19
  8. 0.5
  9. 0.5
  10. 0.5
  11. -2 // 打开图形窗口;用Save picture保存图像elf_shifted_immediate.png;最后点return关闭图形窗口
  12. -1 // 返回主菜单
  13. 0 // 回主功能0查看轨道,打开图形窗口;点4切到HOMO,用Save picture保存图像homo_after_elf_shift.png;最后点return关闭图形窗口返回主菜单
  14. 5 // 以下几步计算ELF
  15. 9
  16. 3
  17. -1 // 打开图形窗口,用Save picture保存图像elf_after_elf_shift.png;最后点return关闭图形窗口
  18. 0 // 返回主菜单
复制代码

上述操作产生的所有图片如下所示,命令行的所有输出内容也放在附件里了。
(, 下载次数 Times of downloads: 5)

(, 下载次数 Times of downloads: 2)
初始的原子坐标在盒子边角上,故后缀_original的HOMO和ELF等值面也跨盒子边界了;在各自做格点数据平移操作后,后缀_shifted_immediate的HOMO和ELF等值面和原子位置确实符合预期地在盒子中央;然而再重新从波函数信息算的HOMO和ELF,不能在相同isovalue下显示相同结果。此外分支一导出的的ELF.cub在VMD里查看,发现格点数据最大值不到0.01 a.u.,且等值面形状存在异常的截面。

解决方法倒也有几种,预期用户体验各不相同:上策当然是让内存里的基函数/GTF中心与原子坐标、格点数据自动一同平移以免影响其他分析,中策是完成操作后自动清除内存的原子坐标、基函数/GTF信息、格点数据并自动重新载入波函数文件、自动对原子坐标和基函数/GTF中心做相同的平移再做后续操作,下策则是要求分割流程为多次启动程序、多次计算格点数据并输入相同平移量来走通本来可以一次完成的流水线。此外无论如何处理,已知的局限性最好在文档里讲清楚。
作者
Author:
sobereva    时间: 2025-11-21 03:57
Uus/pMeC6H4-/キ 发表于 2025-11-20 13:43
波函数信息不能一起平移是很不方便的。拿http://sobereva.com/651文件包里的h2o-MOS-1_0.molden尝试观察 ...

Multiwfn里GTF的坐标等同于所属原子的坐标。孤立体系和周期性体系的情况不一样

当前功能仅仅用来处理格点数据,本身就是格点数据处理的主功能里的,不官方提供其它用处,不是功能的局限性。

平移原子坐标本身另有功能
Multiwfn中非常实用的几何操作和坐标变换功能介绍
http://sobereva.com/610http://bbs.keinsci.com/thread-24674-1-1.html






欢迎光临 计算化学公社 (http://bbs.keinsci.com/) Powered by Discuz! X3.3