2006-7-28
CaGe免费,开源,而且功能十分强大,它应当是目前生成富勒烯结构的首选程序。读完本文,您就可以使用CaGe轻松生成任何你想要的富勒烯结构。
关键词:富勒烯(Fullerene),结构(Structure),坐标(Coordinate),CaGe,fullgen,免费软件(FreeSoftware),开源(Open Source)
目前很难找到一种通用程序,能够生成给定碳原子数目n的所有可能的富勒烯Cn的结构坐标。Sebastian Lisken用C和Java开发了一套开源软件包,名叫CaGe(http://www.mathematik.uni-bielefeld.de/~CaGe/)。它主要用来生成各种类型的数学图,其中某些类型与有趣的分子结构密切相关,同时还能够通过不同方式显示这些图形,并能将这些图以多种格式输出成文件。借助于CaGe就能实现我们开头提出的目标-生成我们想要的富勒烯的结构。据程序的作者介绍,CaGe是目前生成富勒烯结构最快最好的软件。然而,目前的CaGe是在Unix图形界面下运行的,而且必须预装有Java(Windows版本可能以后会推出)。因此,对于无法使用图形界面的远程登陆的用户,或者没有安装Java的用户,就无法使用CaGe了。
经过一些摸索,我发现可以在无Java且无图形界面的情况下使用CaGe生成富勒烯的结构坐标。下面我就来详细介绍一下。
1. 安装方法
首先,从CaGe的网站上下载这个软件包CaGe.zip。登陆你的Unix系统(不必是root),然后新建一个文件夹,把CaGe.zip解压进来:
mkdir cage
cd cage
unzip ../CaGe.zip
然后在将其中的CaGe-C.zip解压,就生成了Generators和Native连个文件夹:
cd Generators
进入Generators目录后,就会看到一些*.c的源文件,我们需要将它们编译成可执行文件:
make
在编译好的一系列可执行文件中,我们需要的只有fullgen和embed。下面我就介绍一下如何用这两个程序生成我们想要的富勒烯结构。
2. 一个简单实例
例如,我们想得到C60富勒烯的结构。首先,我们用fullgen生成图代码文件:
./fullgen 60 ipr code 6 > codes
其中,60表示60个顶点数,ipr选项表示只生成满足分立五边形规则(IPR)的结构,“code 6”表示生成的图代码类型是“writegraph3d planar”。生成的图代码输出在名叫“codes”的文件中。
运行结果显示为:
Time for generating the patches: 0.0 seconds
Time for case 1 (Jordan-Curve Petrie Path): 0.0 seconds
Time for case 2 (Dumb-bell): 0.0 seconds
Time for case 3 (
MAPLIST: number of patches: 1783
BBLIST: number of items in list: 105 number of patches: 1122
Generated 1 maps on 60 vertices -- reduced to 1 non-isomorphic maps.
Total generation time: 0.0 seconds
end of program
可见,生成的满足IPR规则的C60的结构只有一种。
接着,我们用embed程序将图代码文件转成笛卡尔坐标:
./embed -v –d 3 < codes > coord
其中,选项-v表示显示运行细节,选项“-d
运行结果显示为:
used 167 iterations
average edge length = 0.395682
used 333 iterations
average edge length = 0.090532
used 27 iterations
average edge length = 1.000000
我们用cat查看一下coord文件,就会发现生成的C60富勒烯的直角坐标已保存在其中了:
>>writegraph3d<<
1 0.645 -3.404 -0.186 18 19 2
2 0.154 -3.139 -1.470 1 3 40
3 0.909 -2.371 -2.364 2 32 4
4 0.028 -1.566 -3.096 3 5 41
5 0.393 -0.259 -3.437 4 30 6
……
3. 更多实例
1) 不限制满足IPR
如果我们不限制满足IPR的结构,那么在运行fullgen时只需要去掉ipr选项就可以了:
./fullgen 60 code 6 > codes
运行结果显示为:
Time for generating the patches: 0.0 seconds
Time for case 1 (Jordan-Curve Petrie Path): 0.2 seconds
Time for case 2 (Dumb-bell): 0.1 seconds
Time for case 3 (
MAPLIST: number of patches: 6917
BBLIST: number of items in list: 1343 number of patches: 13628
Generated 46175 maps on 60 vertices -- reduced to 1812 non-isomorphic maps.
Total generation time: 0.6 seconds
end of program
可见,不考虑IPR的C60的结构竟有1812种!而生成所有这些结构只需不到1秒的时间!
2) 对称性
在运行fullgen时如果加上symstat选项,就可以显示出生成的所有结构的对称性(点群符号),例如:
./fullgen 36 symstat code 6 > codes
结果显示为:
Time for generating the patches: 0.0 seconds
Time for case 1 (Jordan-Curve Petrie Path): 0.0 seconds
Time for case 2 (Dumb-bell): 0.0 seconds
Time for case 3 (
MAPLIST: number of patches: 350
BBLIST: number of items in list: 46 number of patches: 279
Generated 160 maps on 36 vertices -- reduced to 15 non-isomorphic maps.
Symmetries:
C1 :
C2v: 1 D2d: 2 D3h: 1 D6h: 1
Total generation time: 0.0 seconds
end of program
可见C36富勒烯共有15种可能的结构,其中C1对称性的有2个,C2有4个,Cs有2个,D2有2个,C2v有1个,D2d有2个,D3h有1个,D6h有1个。
如果我们只想得到具有特定点群对称性的结构,就可以使用symm选项,后面加上点群名称即可。例如,我们可以生成所有具有C2对称性的C36富勒烯结构:
./fullgen 36 symm C2 code 6 > codes
打开codes文件我们就可以看到4种结构的图代码。
3) 设定顶点数的起止范围
比如,我们想知道在碳原子数目在100以内的所有满足IPR的富勒烯的有哪些,就可以使用如下命令:
./fullgen 100 ipr start 20 code 6 > codes
这里的“start 20”表示从20个顶点数开始构造,注意最小的富勒烯的顶点数是20。
结果显示为:
Time for generating the patches: 0.3 seconds
Time for case 1 (Jordan-Curve Petrie Path): 0.3 seconds
Time for case 2 (Dumb-bell): 5.0 seconds
Time for case 3 (
MAPLIST: number of patches: 43751
BBLIST: number of items in list: 7327 number of patches: 109530
Generated 0 maps on 20 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 22 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 24 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 26 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 28 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 30 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 32 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 34 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 36 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 38 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 40 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 42 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 44 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 46 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 48 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 50 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 52 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 54 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 56 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 58 vertices -- reduced to 0 non-isomorphic maps.
Generated 1 maps on 60 vertices -- reduced to 1 non-isomorphic maps.
Generated 0 maps on 62 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 64 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 66 vertices -- reduced to 0 non-isomorphic maps.
Generated 0 maps on 68 vertices -- reduced to 0 non-isomorphic maps.
Generated 2 maps on 70 vertices -- reduced to 1 non-isomorphic maps.
Generated 2 maps on 72 vertices -- reduced to 1 non-isomorphic maps.
Generated 3 maps on 74 vertices -- reduced to 1 non-isomorphic maps.
Generated 15 maps on 76 vertices -- reduced to 2 non-isomorphic maps.
Generated 40 maps on 78 vertices -- reduced to 5 non-isomorphic maps.
Generated 47 maps on 80 vertices -- reduced to 7 non-isomorphic maps.
Generated 124 maps on 82 vertices -- reduced to 9 non-isomorphic maps.
Generated 269 maps on 84 vertices -- reduced to 24 non-isomorphic maps.
Generated 412 maps on 86 vertices -- reduced to 19 non-isomorphic maps.
Generated 822 maps on 88 vertices -- reduced to 35 non-isomorphic maps.
Generated 1002 maps on 90 vertices -- reduced to 46 non-isomorphic maps.
Generated 2189 maps on 92 vertices -- reduced to 86 non-isomorphic maps.
Generated 4126 maps on 94 vertices -- reduced to 134 non-isomorphic maps.
Generated 5001 maps on 96 vertices -- reduced to 187 non-isomorphic maps.
Generated 7796 maps on 98 vertices -- reduced to 259 non-isomorphic maps.
Generated 14661 maps on 100 vertices -- reduced to 450 non-isomorphic maps.
Total generation time: 8.0 seconds
end of program
可见,碳原子数目在70以内的所有富勒烯中,只有C60和C70满足IPR规则。这就是为什么当初发现C60时人们只检测到了C60和C70的质谱信号。
4) 安静模式
在运行fullgen的命令行中加入quiet选项,就可以不输出额外信息:
./fullgen 70 ipr quiet code 6 > codes
总之,CaGe免费,开源,而且功能十分强大,它应当是目前生成富勒烯结构的首选程序。它还有很多有趣的功能,在此我就暂不介绍了,大家可以自行摸索。
评论