请选择 进入手机版 | 继续访问电脑版

计算化学公社

 找回密码
 现在注册!
查看: 672|回复: 0

[VMD] 使用VMD搭建无定型SiO2多孔介质

[复制链接]

161

帖子

1

威望

647

eV
积分
828

Level 4 (黑子)

发表于 2019-3-19 23:20:18 | 显示全部楼层 |阅读模式
本帖最后由 tjuptz 于 2019-5-13 22:28 编辑

前些天有同学问能不能帮忙建gyroid形的多空材料,用于吸附研究。一开始以为是在特殊区域内填充,所以想的是用packmol搭建。但是packmol不支持gyroid那种三角函数形式。后来想到这种无机材料用VMD在基体上挖空就好了。所以在学习社长的一些脚本基础上写了个脚本,定义了一个carve命令,通过这个命令,以及控制参数就可挖不同孔洞出来。脚本内容如下:
  1. #第一部分是作图设定
  2. color Display Background white
  3. display rendermode GLSL
  4. display depthcue off
  5. display projection Orthographic
  6. #第二部分是打开文件并设定显示风格
  7. mol new 1.pdb
  8. pbc box
  9. mol modstyle 0 top VDW 1.000000 12.000000
  10. #这个是用法提示
  11. puts "Use like 'carve 1.42 90 90 90'. The value after 'carve' is the threshold between 0 and 1.5 and size of model(90 default)!"
  12. puts "The model carved would be saved automatically as 2.pdb!"
  13. #实际选区。因为用到的1.pdb是MS产生的,几何中心不在原点,所以先挪到原点。切完再挪回去。原方程的周期是1,所以用边长abc进行归一化处理,这里手动输入,默认值为90(因为我用的就是90)
  14. proc carve {val {a 90} {b 90} {c 90}} {
  15. global M_PI
  16. set sel [atomselect top all]
  17. set vec [measure center $sel]
  18. $sel moveby [vecinvert $vec]
  19. set range "not abs{sin(2*$M_PI*x/$a)*cos(2*$M_PI*y/$b)+sin(2*$M_PI*y/$b)*cos(2*$M_PI*z/$c)+sin(2*$M_PI*z/$c)*cos(2*$M_PI*x/$a)}<=$val"
  20. mol modselect 0 top $range
  21. set model [atomselect top $range]
  22. $sel moveby $vec
  23. $model writepdb 2.pdb
  24. }
复制代码

切完除了窗口显示以外,会自动保存到VMD自动目录下为2.pdb。效果就和下面这个图差不多。太懒了,没截图,谷歌搜的一张。

gyroid

gyroid

carve.tcl (767 Bytes, 下载次数: 7)

评分

参与人数 3威望 +1 eV +5 收起 理由
嘟比妹妹 + 2 谢谢
Shine剪水 + 3
sobereva + 1

查看全部评分

您需要登录后才可以回帖 登录 | 现在注册!

本版积分规则

手机版|北京科音自然科学研究中心|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949-1号 )

GMT+8, 2019-11-17 19:15 , Processed in 0.194885 second(s), 28 queries .

快速回复 返回顶部 返回列表