笔者同时在计算化学公社更新了同样内容的帖子《Fedora/Debian Linux 安装 GIMIC 2.0 时踩过的坑以及解决办法》一文,已被计算化学公社社长卢天收录为计算化学公社精华帖以及 2023 年 5 月计算化学网文 hightlight。
地址为:http://bbs.keinsci.com/forum.php?mod=viewthread&tid=37403&fromuid=47478
系统环境以及准备
本文的所有计算操作都是在 Fedora Linux 下的 Gaussian 16 完成的,使用 Windows 系统下的可视化程序 Paraview 进行绘图。下面介绍需要使用到的程序:
- GIMIC 2.0:必须是 Sob 老师博客中的那个版本,不能是最新版本。
- Openbabel 3.1.1:前往 Openbabel Github 主页安装,也可以通过 bash 命令安装:
apt-get\dnf\yum install openbabel
。 - Paraview:通过 Paraview 官网进行安装。
安装 GIMIC 2.0
Sob 老师在《考察分子磁感生电流的程序 GIMIC 2.0 的使用》一文中提供了 GIMIC 2.0 的安装包,下载即可。之后按照 Sob 老师博文中的教程一步一步来,我这里是使用的 Fedora Linux,root 用户,与 Sob 老师的不同。首先安装 cmake 和 conda:
1 | dnf install cmake |
然后运行下面的命令创建一个名为 myconda 的环境,并且初始化 conda:
1 | conda create --name myconda |
在 ~/.bashrc
文件的末尾加入一行 conda activate myconda
使得每次进入终端后自动激活 myconda 环境。 在终端中键入:
1 | source ~/.bashrc |
这个命令相当于退出终端,然后重新进入终端的操作,输入以下命令安装 GIMIC 2.0 运行时依赖的一些 Python 库:
1 | conda install cython numpy pyparsing |
在这里需要注意,如果是直接使用 dnf install conda
命令安装的 anaconda,默认是安装的 anaconda 3,anaconda 3 执行上述命令安装的 Python 是 3.11.3 版本的,而 Sob 老师博文中提供的 GIMIC 2.0 包需要的是 2.7 版本的 Python。如果直接 ./setup --omp
会出现找不到 Python 路径的情况。因此还需要使用 conda 更改 Python 的版本:
1 | conda install python=2.7 |
之后,将 GIMIC 压缩包解压,这里假设我解压到了 /home/kimariyb/gimic
,使用 cd
命令进入 gimic 目录,运行:
1 | ./setup --omp |
编译过程中可能会有 warning,但是不影响编译,编译完成后,在 ~/.bashrc
里末尾加入:
1 | export PATH=$PATH:/home/kimariyb/gimic/build/bin |
之后 source
一下 ~/.bashrc
,程序就可以用了。
使用方法
具体的使用方法参考 Sob 老师的原文(《考察分子磁感生电流的程序 GIMIC 2.0 的使用》)第三节,在这里不再赘述。按照原文的方法生成 XDENS 和 MOL 文件后,还需要产生 vti 文件,这里贴出 Sob 老师使用的 gimic.inp 文件,用来生成 vti 文件:
1 | calc=cdens # 任务类型。cdens代表产生格点数据,integral代表计算截面积分值 |
将 MOL 和 XDENS 文件放在上一级目录下,把 gimic.inp 放在当前目录下,然后直接运行 gimic
命令就开始进行运算,如果按照我上述的方法,大概率是不会报错的。
需要注意的是,对于不同体系,inp 文件中的 origin
属性和 lengths
属性的值都不相同。如果设置的过小,而体系又比较大的话,盒子就会特别小。为了方便的解决盒子大小和体系大小匹配合适的问题,Sob 老师开发的 Multiwfn 可以方便的查看到底需要设置多大的 origin
属性和 lengths
属性。只需要将 fch/fchk 文件输入 Multiwfn 中,之后再选择 5、100、1 就可以看见下图所示的内容:
需要使用的只有红圈里的内容,
origin
的值对应为红圈里第一行,lengths
的值对应红圈里第二行减去第一行的值
为了能让 ParaView 正确地显示出分子结构,绘图之前还需要产生分子的 cml 格式的文件。之前我们已经安装过了 Openbabel 3.1.1,但是由于原文的 Openbabel 是老版本,新版本的命令和老版本不同,因此原文中 xyz2cml.sh
直接运行会报错。这里我将修改过的 xyz2cml.sh
贴上(原文件地址):
1 | obabel -ixyz mol.xyz -ocml -O mol.cml |
绘制磁感生电流
Sob 老师在他的博文中放置了一个 24 min 的视频,可供参考。但是不可能每次都去看视频,所以我选择使用文字加图片的方式记录下来。
绘制动态磁感生电流
首先是绘制动态的磁感生电流,在 Paraview 里打开 mol-bohr.cml 和 jvec.vti 文件。选中 jvec.vti,将 Representation 改为 Stream Lines。之后点开小齿轮,往下拉,在 Stream Lines 属性界面中做出以下修改:
1 | Alpha = 0.3 |
把背景改为黑色,效果如图所示(当然在 Paraview 里是动图):
绘制感生电流的模的平面着色流线图
绘制感生电流的模的平面着色流线图就没有这么简单了,首先在 Paraview 里打开 mol-bohr.cml 和 jvec.vti 文件。在 jvec.vti 下新建一个 Slice,将 Representation 改为 Surface LIC,Coloring 改为 vectors。在 Color Map Editor 中更改颜色:
之后分别修改(需要点编程功底才能看懂,最起码得知道类和属性):
1 | Lighting.Ambient = 0.1 |
最后将背景改为黑色,得到的效果如图所示:
当然 GIMIC 能做的远不止于此,还可以绘制更多的磁感生电流图。本文主要参考 Sobereva 博客《考察分子磁感生电流的程序 GIMIC 2.0 的使用》的操作。其他图的绘制,请自行浏览博文,观看 Sob 老师的视频。