|
|
本帖最后由 Graphite 于 2024-5-22 09:32 编辑
在使用packmol时,如果我们定义了一些比较特殊的限制条件,例如inside box + outside sphere,会比较难以预估空间的体积、空间内能填入多少分子。
另外,由于分子是有体积的,我们按照立体几何计算得到的解析体积,实际上也不等同于真实能填入原子的体积。
比如以下情况,左图要将一些分子填入蓝色区域,但实际上红色圈中并不能容纳分子。右图的体积当定义比较特殊时,则比较难计算。
这个小程序用单纯的打格点方法计算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
pcalc
(120.62 KB, 下载次数 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分钟的区别
|
评分 Rate
-
查看全部评分 View all ratings
|