24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 7235  |  回复: 13
【奖励】 本帖被评价12次,作者xianggui7895增加金币 10
本帖产生 1 个 模拟EPI ,点击这里进行查看
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

xianggui7895

银虫 (小有名气)


[资源] 【原创】VMD如何显示晶胞格子

VMD是一款非常强大的分子动力学后处理软件,而在使用中有个问题经常困扰新手,如何在周期性模型上加上晶胞格子使其看起来更“漂亮”一点呢?VMD默认是不画晶格的

但作为一个强大的软件,能实现这个功能是肯定的,现在就有两种方法可以在VMD软件中画出晶格,试试吧:

(1)VMD内置的pbctool工具箱,可直接在vmd控制台或者Tk控制台(Main menu->Extensions->Tk Console)中输入以下命令:

pbc set [list a b c alpha beta gamma]
pbc box -on

其中,a、b、c、alpha、beta、gamma是各个晶胞参数,如下图所示:



还可以设置box的线型、线宽和颜色,分别通过以下命令:



pbc box -style lines|dashed|

pbc box -width 2

pbc box -color red



更多选项可查阅:http://www.ks.uiuc.edu/Research/vmd/plugins/pbctools/



(2)tcl脚本:vmd_draw_unitcell。将下面内容保存在名为vmd_draw_unitcell.tcl的文件,放在vmd安装目录下(如:C:\Program Files\University of Illinois\VMD)



# vmd extension procedure:
# provide a 'draw unitcell' command
#
# $Id: vmd_draw_unitcell.tcl,v 1.2 2005/01/11 13:05:12 akohlmey Exp $
# Time-stamp:
#
# Copyright (c) 2003-2005 by

# add a unitcell graphic to a molecule via a draw subcommand.
#
# options:
# cell (vmd|auto|[list ]), default: "vmd"
#          "vmd" will use the internal values,
#          "auto" will build an orthogonal unitcell from the result of
#           'measure minmax' plus 1 angstrom added in each direction.
#         else a list of a,b,c,alpha,beta,gamma will be assumed.
# origin ([list ]|auto), default: {0.0 0.0 0.0}, "auto" with 'cell auto'
# style: (lines|dashed|rod) default: line
# width: default: 1.0
# resolution:        default: 8
#

proc vmd_draw_unitcell {molid args} {

    # parse arguments
    foreach {flag arg} $args {
        switch $flag {
            cell       { set cell       "$arg" }
            origin     { set origin     "$arg" }
            style      { set style      "$arg" }
            width      { set width      "$arg" }
            resolution { set resolution "$arg" }
            default   { puts "unknown option: $flag"; return }
        }
    }

    if [info exists cell] {
        if {![info exists origin] && $cell == "auto"} { set origin auto }
    } else {
        set cell vmd
    }

    if ![info exists origin]      { set origin     {0.0 0.0 0.0} }
    if ![info exists style]       { set style       lines        }
    if ![info exists width]       { set width       1            }
    if ![info exists resolution] { set resolution 8            }
    # FIXME: add some checks on the arguments here.

    # handle auto keywords
    if {$cell == "auto" || $origin == "auto" } {
        set sel [atomselect $molid {all}]
        set minmax [measure minmax $sel]
        $sel delete
        unset sel

        if {$origin == "auto" } {set origin [vecsub [lindex $minmax 0] {1 1 1}]}
        if {$cell == "auto"} {
            set cell [vecadd [vecsub [lindex $minmax 1] [lindex $minmax 0]] {2 2 2}]
            lappend cell 90.0 90.0 90.0
        }
    }

    if {$cell == "vmd" } {set cell [molinfo $molid get {a b c alpha beta gamma}]}
    global M_PI
    set sa [expr sin([lindex $cell 3]/180.0*$M_PI)]
    set ca [expr cos([lindex $cell 3]/180.0*$M_PI)]
    set cb [expr cos([lindex $cell 4]/180.0*$M_PI)]
    set cg [expr cos([lindex $cell 5]/180.0*$M_PI)]
    set sg [expr sin([lindex $cell 5]/180.0*$M_PI)]

    # set up cell vectors according to the VMD unitcell conventions.
    # the a-vector is collinear with the x-axis and
    # the b-vector is in the xy-plane.
    set a [vecscale [lindex $cell 0] {1 0 0}]
    set b [vecscale [lindex $cell 1] "$ca $sa 0"]
    set c [vecscale [lindex $cell 2] "$cb [expr ($ca - $cb*$cg)/$sg] [expr sqrt((1.0 + 2.0*$ca*$cb*$cg - $ca*$ca - $cb*$cb - $cg*$cg)/(1.0 - $cg*$cg))]"]

    # set up cell vertices
    set vert(0) $origin
    set vert(1) [vecadd $origin $a]
    set vert(2) [vecadd $origin $b]
    set vert(3) [vecadd $origin $a $b]
    set vert(4) [vecadd $origin $c]
    set vert(5) [vecadd $origin $a $c]
    set vert(6) [vecadd $origin $b $c]
    set vert(7) [vecadd $origin $a $b $c]
    unset sa ca cb cg sg

    set gid ""
    switch $style {
        rod {
            # set size and radius of spheres and cylinders
            set srad [expr $width * 0.003 * [veclength [vecadd $a $b $c]]]
            set crad [expr 0.99 * $srad]

            # draw spheres into the vertices ...
            for {set i 0} {$i < 8} {incr i} {
                lappend gid [graphics $molid sphere $vert($i) radius $srad resolution $resolution]
            }
            # ... and connect them with cylinders
            foreach {i j} {0 1 0 2 0 4 1 5 2 3 4 6 1 3 2 6 4 5 7 3 7 5 7 6} {
                lappend gid [graphics $molid cylinder $vert($i) $vert($j) radius $crad resolution $resolution]
            }
        }

        lines {
            set width [expr int($width + 0.5)]
            foreach {i j} {0 1 0 2 0 4 1 5 2 3 4 6 1 3 2 6 4 5 7 3 7 5 7 6} {
                lappend gid [graphics $molid line $vert($i) $vert($j) width $width style solid]
            }
        }

        dashed {
            set width [expr int($width + 0.5)]
            foreach {i j} {0 1 0 2 0 4 1 5 2 3 4 6 1 3 2 6 4 5 7 3 7 5 7 6} {
                lappend gid [graphics $molid line $vert($i) $vert($j) width $width style dashed]
            }
        }
        default { puts "unknown unitcell style: $style" ; return }
    }
    # return list of graphics indices so that they can be saved and deleted later.
    return $gid
}

############################################################
# Local Variables:
# mode: tcl
# time-stamp-format: "%u %02d.%02m.%y %02H:%02M:%02S %s"
# End:
############################################################



用记事本打开vmd安装目录下的vmd.rc文件,在最后添加一行:



source C:\\Program\ Files\ (x86)\\University\ of\ Illinois\\VMD\\vmd_draw_unitcell.tcl



然后在vmd控制台或这tk控制台即可输入一下命令显示晶胞格子:



draw unitcell cell [list a b c alpha beta gamma]



注意:a b c alpha beta gamma需要全部注明。



详细说明请看下面一段英文表述:



# cell (vmd|auto|[list ]), default: "vmd"
#          "vmd" will use the internal values,
#          "auto" will build an orthogonal unitcell from the result of
#           'measure minmax' plus 1 angstrom added in each direction.
#         else a list of a,b,c,alpha,beta,gamma will be assumed.
# origin ([list ]|auto), default: {0.0 0.0 0.0}, "auto" with 'cell auto'
# style: (lines|dashed|rod) default: line
# width: default: 1.0
# resolution:        default: 8

[ Last edited by xianggui7895 on 2010-12-13 at 21:57 ]
回复此楼

» 收录本帖的淘帖专辑推荐

好东西啊 科研人生 精华

» 猜你喜欢

» 本主题相关商家推荐: (我也要在这里推广)

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

oscar_hao

金虫 (初入文坛)


★★★ 三星级,支持鼓励

对于周期性边界条件的晶格,如何在VMD中显示多个晶格?这个能实现吗?谢谢

[ 发自手机版 http://muchong.com/3g ]
13楼2015-07-21 08:57:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 14 个回答

meixinqing

金虫 (著名写手)


★★★★★ 五星级,优秀推荐

正在研究vmd命令行的操作,感谢lz的好贴!
2楼2010-12-14 19:42:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bjwang

铁杆木虫 (正式写手)


★★★★★ 五星级,优秀推荐

楼主强好人,好强人!
9楼2011-07-17 12:07:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
简单回复
leigp6楼
2011-04-11 14:54   回复  
五星好评  顶
SZUKkboy10楼
2011-11-18 17:34   回复  
五星好评  
☆ 无星级 ★ 一星级 ★★★ 三星级 ★★★★★ 五星级
普通表情 高级回复 (可上传附件)
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 297求调剂 +11 田洪有 2026-03-26 11/550 2026-03-29 13:14 by peike
[考研] 环境工程 085701,267求调剂 +3 minht 2026-03-29 3/150 2026-03-29 13:09 by mumin1990
[考研] 一志愿武汉理工,总分321,英一数二,求老师收留。 +10 nnnnnnn5 2026-03-25 10/500 2026-03-29 11:42 by longlotian
[考研] 一志愿北化求调剂 +4 Jsman 2026-03-22 4/200 2026-03-29 10:50 by 唐沐儿
[考研] 一志愿双一流机械285分求调剂 +3 幸运的三木 2026-03-29 4/200 2026-03-29 10:46 by 想上岸了呜呜
[考研] 311(085601)求调剂 +4 liziyeyeye 2026-03-28 4/200 2026-03-28 18:50 by 535743368
[考研] 320分,材料与化工专业,求调剂 +9 一定上岸aaa 2026-03-27 13/650 2026-03-28 15:00 by 神马都不懂
[考研] 0703本科郑州大学求调剂 +3 nhj_ 2026-03-25 3/150 2026-03-28 13:24 by Iveryant
[考研] 266分,求材料冶金能源化工等调剂 +7 哇呼哼呼哼 2026-03-27 9/450 2026-03-28 12:22 by zllcz
[考研] 085701环境工程求调剂 +9 多久上课 2026-03-27 9/450 2026-03-28 03:58 by fmesaito
[考研] 材料292调剂 +12 橘颂思美人 2026-03-23 12/600 2026-03-27 15:44 by caszguilin
[考研] 287求调剂 +10 land xuxu 2026-03-26 10/500 2026-03-27 15:33 by 帕尔马拉特
[考研] 316求调剂 +5 Pigcasso 2026-03-24 5/250 2026-03-27 12:10 by zhshch
[考研] 一志愿211,335分,0856,求调剂院校和导师 +4 倾____萧 2026-03-27 5/250 2026-03-27 11:52 by zhshch
[考研] 考研调剂 +10 呼呼?~+123456 2026-03-24 10/500 2026-03-27 11:46 by wangjy2002
[考研] 材料求调剂 +5 .m.. 2026-03-25 5/250 2026-03-27 11:08 by 不吃魚的貓
[考研] 求调剂,一志愿 南京航空航天大学大学 ,080500材料科学与工程学硕 +4 @taotao 2026-03-26 5/250 2026-03-27 08:10 by hypershenger
[考研] 263求调剂 +6 yqdszhdap- 2026-03-22 10/500 2026-03-26 13:11 by 公瑾逍遥
[考研] 材料与化工328分调剂 +6 。,。,。,。i 2026-03-23 6/300 2026-03-25 22:30 by 418490947
[考研] 生物学学硕求调剂 +7 小羊睡着了? 2026-03-23 10/500 2026-03-25 02:24 by 清风拂扬。 m
信息提示
请填处理意见