计算化学公社

标题: 计算packmol输入文件有效空间体积的小工具 [打印本页]

作者
Author:
Graphite    时间: 2024-5-21 12:36
标题: 计算packmol输入文件有效空间体积的小工具
本帖最后由 Graphite 于 2024-5-22 09:32 编辑

在使用packmol时,如果我们定义了一些比较特殊的限制条件,例如inside box + outside sphere,会比较难以预估空间的体积、空间内能填入多少分子。

另外,由于分子是有体积的,我们按照立体几何计算得到的解析体积,实际上也不等同于真实能填入原子的体积。

比如以下情况,左图要将一些分子填入蓝色区域,但实际上红色圈中并不能容纳分子。右图的体积当定义比较特殊时,则比较难计算。
(, 下载次数 Times of downloads: 17)


这个小程序用单纯的打格点方法计算packmol定义的空间体积,。如红圈范围内的体积不会被考虑在内。工具是用C++ 20写的,只有linux版。10年以上老爷机小概率用不了。
对于体积小的情况,试探半径约等于大部分原子半径(1.0-1.5 A),体积很大的情况,则最多生成400万格点(体积很大的情况其实格点大了误差也不大)。
支持以下条件:
Inside Box
Outside Box
Inside Cube
Outside Cube
Inside Sphere
Outside Sphere
Above Plane
Below Plane
Inside Cylinder
Outside Cylinder
Inside Ellipsoid
Outside Ellipsoid

用法:./packmol_calc -f packmol_file
(, 下载次数 Times of downloads: 8)

示例:
./pcalc -f after-model.inp

Note: Be careful when multiple types of molecules puts into same space.
Note: 1.0 g/mL = 0.602 atomic_mass/A^3
Structure 1 Effective Volume: 2.27994e+06
Structure 2 Effective Volume: 2.27994e+06
Structure 3 Effective Volume: 2.27994e+06
Structure 4 Effective Volume: 2.27994e+06
Structure 5 Effective Volume: 2.64151e+06

另:
这破玩意用C++写竟然需要900行代码,写了两天...虽然纯粹的格点计算+指令集优化+-O3优化,动辄瞬间上亿格点很爽,但是用Python最多两个小时写完
真就是开发两小时计算1秒钟,和开发五分钟计算1分钟的区别






















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