0%

使用multiwfn和vmd绘制偶极矩等箭头

参考链接

详细设置可以参考官方教程:思想家公社
Multiwfn和VMD安装和设置可以参考官方说明或者本站[快速上手]Multiwfn与VMD安装说明

VMD配置

将Multiwfn的examples\scripts目录下的drawarrow.tcl文件复制到VMD安装目录中,然后在VMD配置文件vmd.rc中引用,例如在配置文件中添加如下参数:

1
source {G:\VMD193\VMD\drawarrow.tcl}

drawarrow.tcl文件中第一行{rad 0.05}中的数字代表箭头直线部分的宽度,倒数第二行[expr $rad*2.5]中的数字代表箭头上方部分宽度和直线部分宽度的比值,两个参数可以按需修改。

偶极矩绘制

通过软件计算得到分子偶极矩,例如Gaussian在计算完成后会在log文件中显示

1
2
Dipole moment (field-independent basis, Debye):
X= 0.0000 Y= -0.0000 Z= -0.3706 Tot= 0.3706

使用multiwfn软件读取Gaussian任务的log文件或者fchk文件,生成xyz文件,然后通过vmd读取xyz文件,并在命令窗口输入下列命令生成偶极矩箭头:

1
2
draw color green
drawarrow all 0 0 -0.3706 10

其中color代表箭头颜色,drawarrow最后的数字代表箭头长度与实际偶极矩数值的比值,偶极矩数值较小时可以将该值设大。

drawarrow.tcl具体内容如下,如果只是单次使用,可在每次使用时复制到vmd命令窗口,而不需要添加到VMD配置文件中。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
proc drawarrow {atmrange fragdx fragdy fragdz {scl 1} {rad 0.05} {showgoc 1}} {
#Determine arrow center
set sel [atomselect top $atmrange]
set cen [measure center $sel]
set cenx [lindex $cen 0]
set ceny [lindex $cen 1]
set cenz [lindex $cen 2]
if {$showgoc==1} {puts "Geometry center: $cenx $ceny $cenz"}
#Scale vector
set fragdx [expr $fragdx*$scl]
set fragdy [expr $fragdy*$scl]
set fragdz [expr $fragdz*$scl]
#Draw arrow
set body 0.75
set begx [expr $cenx-$fragdx/2]
set begy [expr $ceny-$fragdy/2]
set begz [expr $cenz-$fragdz/2]
set endx [expr $cenx+$fragdx*$body-$fragdx/2]
set endy [expr $ceny+$fragdy*$body-$fragdy/2]
set endz [expr $cenz+$fragdz*$body-$fragdz/2]
draw cylinder "$begx $begy $begz" "$endx $endy $endz" radius $rad filled yes resolution 20
set endx2 [expr $cenx+$fragdx/2]
set endy2 [expr $ceny+$fragdy/2]
set endz2 [expr $cenz+$fragdz/2]
draw cone "$endx $endy $endz" "$endx2 $endy2 $endz2" radius [expr $rad*2.5] resolution 20
}