1 ORCA+Multiwfn在wsl中的安装
ORCA的安装参考量子化学程序ORCA的安装方法 - 思想家公社的门口:量子化学·分子模拟·二次元 (sobereva.com)
Multiwfn的安装 参考保姆级安装Linux版Multiwfn教程_multiwfn安装过程-CSDN博客
2 计算C3G的RESP电荷
2.1从pubchem上下载C3G的结构
puchem ID号为197081,下载格式为sdf,此时我们使用openbabel工具将其转换为pdb格式.
sudo obabel -isdf C3G.sdf -O C3G.pdb
2.2运行脚本,计算RESP电荷
从Multiwfn安装目录下的example/RESP下复制脚本到当前目录,比如RESP2_ORCA.sh,该脚本包括几何优化步骤。接下来,修改脚本中的nprocs和maxcore参数,同时设置ORCA和orca_2mkl两个参数的路径。比如:
nprocs=10
maxcore=2000
ORCA="/home/xxx/software/orca_6_0_0_shared_openmpi416_avx2/orca"
orca_2mkl="/home/xxx/software/orca_6_0_0_shared_openmpi416_avx2/orca_2mkl"
3 报错及解决
3.1报错及描述
已按照sob老师的安装步骤下载了orca和openmpi,同时配置了环境。但还是显示mpirun not found,而且输入mpiexec -V,也会显示正确的openmpi版本,输入which mpirun也会显示正确的路径。单核版本可以运行,而多核不能运行。
3.2解决
找不到mpirun,但环境里已经配置了变量。于是,我将该环境写在了RESP2_ORCA.sh脚本中,重启wsl之后,便可以进行多核操作了。
而且我还发现如果使用当前用户,而不是用root用户时,也会报错,报错内容是权限受阻。于是我加上了sudo,但加上了sudo以后,又有新的错误。
我按照提示,在脚本中加入了两行便可以运行了
export OMPI_ALLOW_RUN_AS_ROOT=1
export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1
但是运行到最后发现如下报错:
查看该博客forrtl: severe(174):SIGSEGV,segmentation fault occurred 问题解决 (ulimit -s 设置堆栈最大值)_forrtl: severe (174): sigsegv, segmentation fault -CSDN博客
发现,这是由于运行程序较大,而Linux系统初始的堆栈大小(stack size)太小的缘故。我们只要将其调大,一般把stack size设置成没有限制,这样就没有错误了!
这里我使用的是临时的方法,即在脚本中加入一行代码即可:
ulimit -s unlimited
结果如图:有两个文件,格式为chg的是RESP电荷。但是没有最终的结果,也就是C3G.chg文件。
查看输出,最后有报错信息,bad sustitution,
首先,bad substitution的字面意思是“替换错误”。查看博客得到,从 ubuntu 6.10 开始,ubuntu 就将先前默认的bash shell 更换成了dash shell;其表现为 /bin/sh 链接到了/bin/dash而不是传统的/bin/bash。
参考该文将/bin/sh 指向bash。syntax error: bad substitution是什么问题-CSDN博客
最后发现,运行成功了,得到了C3G的RESP电荷。