马蒂斯的开着的窗户:生成SWNT 的psf 文件

来源:百度文库 编辑:偶看新闻 时间:2024/05/02 00:13:01
最近问这个问题的比较多, 比如1,2,3,
我自己也在做一些这方面的东西, 在这里分享一下经验

这个体系可以按两种方式处理:
a) C管原子间有键相连,可以自己处理各类键/角关系,手写psf文件;也可以手写top文件,再用psfgen生成
b) C原子间无减相连,全部固定
我现在只用后一种方法. 柔性的SWNT 对性能有影响但不是本质, 可以省去制备psf 的环节
有人问, 刚性的SWNT 是否太偏离实际的模型? 我的体系比SWNT 更接近真实模型!!!

vmd 中的nanotube 可以生成SWNT, 但这个没有键连信息, 无法得到angle 和dihe
除了手写top 或psf, 还以通过原子间距判断时候有键, 若有则加上.
本脚本的临界值1.8 Ang, 我觉得这个可以. 搞过很多年富勒烯, 碳管应该也差不多.
psf 文件有了, par 文件大家自行制备

使用方法
source nanotube.tcl
其中定义了nanotube2 函数, 带2是为了避免和那个plugin 重名, 然后
nanotube2 []
前面三个一样和nanotube 一样, 最后一个为输出文件名, 可选. 若空则为nanotube

附上脚本, 欢迎测试,
有问题请联系bay (站内信或bay__gulf618 at sina dot com)
  1. # Tcl Script for Preparing pdb/psf of SWNT
  2. # Programed by bay on June 22, 2010
  3. # Usage: nanotube2 [] after source this script

  4. package require nanotube
  5. package require psfgen
  6. proc writetop {{op ""}} {
  7.   if {$op=="del"} {
  8.     file delete tmp.top
  9.   } else {
  10.     set fz [open "tmp.top" w]
  11.     puts $fz "* >>> Top File for C Cluster<<< "
  12.     puts $fz "0  1                            "
  13.     puts $fz "MASS    21 CA    12.01100 C \n  "
  14.     puts $fz "RESI CNT          0.00          "
  15.     puts $fz "GROUP                           "
  16.     puts $fz "ATOM C    CA      0.00 \n       "
  17.     puts $fz "PRES LINC         0.00          "
  18.     puts $fz "BOND 1C 2C \n                   "
  19.     puts $fz "END                             "
  20.     close $fz
  21.   }
  22. }

  23. proc nanotube2 {length n m {output nanotube}} {
  24.   nanotube -l $length -n $n -m $m
  25.   set sel1 [atomselect top all]
  26.   $sel1 set resid [$sel1 get index]
  27.   $sel1 writepdb tmp1.pdb

  28.   writetop
  29.   resetpsf
  30.   topology tmp.top
  31.   segment CCC {pdb tmp1.pdb}
  32.   set xyz [$sel1 get {x y z}]
  33.   foreach c1 [$sel1 get resid] {
  34.     foreach c2 [$sel1 get resid] {
  35.       set dist [vecdist [lindex $xyz $c1] [lindex $xyz $c2]]
  36.       if {$c1 < $c2 && $dist < 1.8} {
  37.         patch LINC CCC:$c1 CCC:$c2
  38.       }
  39.     }
  40.   }
  41.   coordpdb tmp1.pdb CCC
  42.   regenerate angles dihedrals
  43.   writepdb ${output}.pdb
  44.   writepsf ${output}.psf
  45.   
  46.   writetop del
  47. }
复制代码