RASPA 设置攻略 – 程序运行
RASPA 设置攻略 – 程序运行

RASPA 设置攻略 – 程序运行

@tkaray CC-BY-NC 4.0 RASPA 相关内容遵循原作者授权协议.

上一篇文章中介绍了 RASPA 的安装过程, 这方面的中文文章有不少, 但是目前关于如何让 RASPA 正常运行的分享貌似还没有. 这一次来聊聊如何使用 RASPA 进行计算, 让软件可以针对自己的结构跑出结果. 由于作者水平有限, 文中必有错漏之处, 而且不保证获得的结果的准确性, 请在阅读后多多尝试, 同时参考原版手册和其他资料.

Part 0. 目前能够参考的资料

  1. GitHub Repo. Link: https://github.com/iRASPA/RASPA2
  2. RASPA Manual. Link: https://iraspa.org/raspa
  3. B 站的 RASPA Workshop 存档. BV1Hr4y1V7o7
  4. 2.0.45 版本的 RASPA 源代码. https://github.com/iRASPA/RASPA2/archive/refs/tags/v2.0.45.zip 单独拿出来是因为新版本删除了一些示例文件 (力场、分子等), 可参考的内容变少了. 把这一版本的代码下载下来, 参悟其中的设置吧. 此外, 还有几个 PPT 可以参考 (不太方便放), 需要的话可以私聊我.

Part 1. 使用 RASPA 的示例文件

个人建议是至少看一遍源代码中 Tutorial 的 AdsorptionN2InMIL-47 部分, 都跑一遍看看效果 (对应手册第八章). 其他的也可以跑跑看, 只需要运行 run 即可. run 文件的内容如下:

#! /bin/sh -f
export RASPA_DIR=${HOME}/RASPA/simulations/
export DYLD_LIBRARY_PATH=${RASPA_DIR}/lib
export LD_LIBRARY_PATH=${RASPA_DIR}/lib
$RASPA_DIR/bin/simulate $1

为了能够让程序直接转起来, 如果使用了 Anaconda 安装, 需要按照上一篇文章中的设置软链接. 同时, 该程序默认并未使用 MPI, 为了运行速度够快, 我们还需要开启多核并行.

Part 2. RASPA 多核运行方法

建议使用 OpenMPI. 建议不要使用 apt / dnf 方法安装 (可能不方便切换), 而是选择源代码编译. 编译过程可以参考 Sobereva 老师的 ORCA 安装方法(http://sobereva.com/451) 中相关部分, 另外如果之后也用 ORCA 5+, 需要保证 OpenMPI 编译前 gfortran 已被安装 (否则这个 OpenMPI 只能给 RASPA 用). 在编译完成并设置好环境变量后, 可以把 run 文件中的代码改成

mpirun -np 物理核心数目 $RASPA_DIR/bin/simulate $1

如果已经把 RASPA 的环境变量都写进了 .bashrc, 也可以不借助 run 文件, 而是直接在 terminal 中全路径运行 simulate 进行模拟.

mpirun -np 物理核心数目 $RASPA_DIR/bin/simulate

如果成功把这些示例弄完了, 就进入下一环节: 尝试自己的吸附模拟.

Part 3. RASPA 骨架与小分子结构设置

对于一个最小的可运行文件配置, 骨架结构文件, 小分子结构文件和力场参数文件三者必不可少. 在设置结构与力场过程中, simulation.input 和其他文件的匹配至关重要 (否则程序就会爆炸). 因此, 我们需要同时在 simulation.input 文件与 $RASPA_DIR/share/raspa 文件夹中保持一致. 该文件夹中共包含四部分, 分别代表:

  • forcefield 存储原子的 L-J 势, 每个文件夹名字代表其名称;
  • framework 存储骨架结构键, 键角, 二面角的伸缩扭转等参数 (非必须);
  • molecules 存储吸附的小分子结构信息, 每个文件夹名字代表其种类;
  • structure 根据骨架类型存储的骨架结构文件, 一般可以和 simulation.input 一起提供, 不用管这个文件夹.

本节先说骨架结构和小分子结构, 骨架结构对应 simulation.input 的 Framework 部分, 一般使用 CIF 文件, 如果使用其他类型的文件, 可能需要设置 InputFileType 词条. 参考示例中的写法, 在 simulation.input 中结构名称应当写在 FrameworkName 部分, 且去除后缀名.

有时候 CIF 文件的对称性无法被正确识别, 此时可以使用一些软件 (比如 MS) 将其转换为 P1 对称性再计算.

此外, 原子电荷可以使用 CP2K 计算 (参考 http://sobereva.com/587), 并将电荷添加到 _atom_site_charge 条目中. 此时需要将 UseChargesFromCIFFile 设置为 yes.

小分子结构需要提供许多参数, 如果下载了之前的代码, 也就有了最初可用的参数了. MOF 文章中很多都在用 TraPPE, 参考着相关文献做吧. 小分子对应 Component 部分, MoleculeName 写去除后缀的文件名, MoleculeDefinition 写文件夹名字. CreateNumberOfMolecules 为最初的分子数, 其他的看情况修改. 注意正式使用时这里也应该引文献.

Part 4. RASPA 结构与小分子力场设置

RASPA 的 forcefield 是最头痛的地方, 一般报错都因为这里设置存在问题. 最基础的设置只需要修改 force_field_mixing_rules.def 文件中的内容, 根据文献设定力场参数. 注意 number of defined interactions 一定要与后面的条目数相同, 否则会少读取内容. 对于 MOF 材料来说一些高通量筛选文章的 SI 会提供其使用的参数, 同时 TraPPE 可以直接在其网站查到. 缝缝补补总是能把这些凑齐的.

如果报错内容为

‘force_field.def’ file not found and therefore not used

可以不用理. 如果提示原子无定义并退出, 则需要在 forcefield 中补充 molecules 和 CIF 中未定义的原子参数 (复现不出来这条错误的英文了). 力场信息对应 simulation.input 文件中的 Forcefield 条目, 需要将文件夹名与该条目匹配. 不同设置项对应的文件夹名称可能是相同的, 最初因为这一点折腾了很久也找不到为何报错.

Part 5. 其他内容

ExternalTemperature 和 ExternalPressure 可输入的并不是单一的值而是数组, 因此可以一次性在一个文件中提交许多个压力, 这样可以一次性算很多点.

Forcefield 的 CutOff 和普通的分子动力学模拟类似, 不能大于整个三维结构中最短边的一半, 如果体系较小, 就需要设置超胞.

还有一些不太好归类的内容, 如果后续想到更多会在这部分补充. 复杂一些的报错我也见得较少, 可能需要查 manual 或到官方论坛咨询. 只要有大量可参考的输入文件和已报道文献, 总能把想要做的模拟跑出来的. 加油吧~

一条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注