分类:
2009-04-23 21:23:08
此帖已被多个论坛、博客转载,但原创就为此帖。相信大家读后会有所受益!
今后如有转载,请注明作者及来源
前面有xinjiang“的帖子,我发现做表面的还不少。这里我也给大家介绍一点经验,简单点表面构建法前面介绍了,那么这里我介绍“用Material Studio构建稍微复杂的表面模型”。这里介绍的是构造一个根号3x2的pt(111)表面。
用MS Modeling制作slab模型结构图
1, 打开MS modeling,建立一个项目,如test;
2, 右击test项目,在下拉菜单中选择import,在弹出的菜单中选择Structures/metals/pure-metals/Pt;
3, 在主菜单中的Build选择surfaces/Cleave surface,
4, 在弹出的菜单中处理数据
(i)在surface box界面下
a)你所要做的表面,如[111]; 也就是将cleave plane [h k l]修改成 [1 1 1];
b) 修改深度,即将depth修改成你所需要的原子层数, 如4;
(ii)在options界面下
将Orientation standard选项改成U矢量沿x轴方向,V在xy平面
(iii)在surface Mesh的界面下
修改U,V矢量。
如保持U不变,将V矢量修改成 0.5 0.5 -1
5,点击cleave,产生一个[1 1 1]的表面模型,
6,在主菜单中的Build选择Crystals/Build Vaccum Slab
7,在弹出的菜单中修改相应的参量,比如将真空厚度修改成14angstrom, 点击build产生一个Slab模型;
8,在主菜单中的Build选择Symmetry/supercell,将单胞修改成你所需要的大小,如将A修改成2,点击Create supercell
这样产生了你所要的表面
在该表面,你可以非常简单的看出hcp与fcc的差别,以及top,bridge位置。
如果你需要产生vasp的poscar文件,那么你可以从ms模块导出这个文件为.car文件(它是卡迪尔坐标),简单进行处理下就变成vasp了。
比如我这里有个。car坐标:
Quote:
!BIOSYM archive 3
PBC=2D
Materials Studio Generated CAR File
!DATE Thu Nov 16 09:42:17 2006
PBC 11.5352 4.9949 90.0000(p 1)
Au1 0.000000000 2.679917131 -2.354607603 XXXX 1 xx Au 0.000
Au2 5.767587171 2.679917131 -2.354607603 XXXX 1 xx Au 0.000
Au3 2.883793586 2.679917131 -2.354607603 XXXX 1 xx Au 0.000
Au4 8.651380757 2.679917131 -2.354607603 XXXX 1 xx Au 0.000
Au5 1.441896793 0.182478626 -2.354607603 XXXX 1 xx Au 0.000
Au6 7.209483964 0.182478626 -2.354607603 XXXX 1 xx Au 0.000
Au7 4.325690379 0.182478626 -2.354607603 XXXX 1 xx Au 0.000
Au8 10.093277550 0.182478626 -2.354607603 XXXX 1 xx Au 0.000
Au9 1.441896793 1.847437629 0.000000000 XXXX 1 xx Au 0.000
Au10 7.209483964 1.847437629 0.000000000 XXXX 1 xx Au 0.000
Au11 4.325690379 1.847437629 0.000000000 XXXX 1 xx Au 0.000
Au12 10.093277550 1.847437629 0.000000000 XXXX 1 xx Au 0.000
Au13 0.000000000 4.344876134 -0.000000000 XXXX 1 xx Au 0.000
Au14 5.767587171 4.344876134 0.000000000 XXXX 1 xx Au 0.000
Au15 2.883793586 4.344876134 0.000000000 XXXX 1 xx Au 0.000
Au16 8.651380757 4.344876134 0.000000000 XXXX 1 xx Au 0.000
end
end
要转换成vasp,下面贴出我的程序是:CODE:那么产生的poscar文件:
parameter(nsum=16,nsun=0,n=16)
real x(n),y(n),z(n)
real lx(3),ly(3),lz(3)
real lattice
character p
character*18 selective
character*6 direct
lx=0.0
ly=0.0
lz=0.0
lattice=4.64
lx(1)= 11.8800/lattice
ly(2)= 6.5761/lattice
lz(3)= 15.8554/lattice
open(1,file="Au (1 1 1) (4).car")
do i=1,5
read(1,*)
enddo
do i=1,n
read(1,*)p,x(i),y(i),z(i)
enddo
do i=1,2
read(1,*)
enddo
close(1)
open(2,file="POSCAR")
write(2,*)"rutile.TiO2(110)"
write(2,15)lattice
15 format(f15.8)
write(2,16)lx
write(2,16)ly
write(2,16)lz
16 format(3f15.8)
write(2,17)nsum,nsun
17 format(2I5)
Selective="Selective dynamics"
direct="direct"
write(2,171)Selective
write(2,172)"direct"
171 format(A18)
172 format(A6)
do i=1,n
write(2,18)x(i)/lx(1)/lattice,y(i)/ly(2)/lattice,z(i)/lz(3)/lattice
18 format(3f15.8," T T T")
enddo
close(2)
end
Quote:
rutile.TiO2(110)
4.64000000
2.56034500 .00000000 .00000000
.00000000 1.41726300 .00000000
.00000000 .00000000 3.41711200
16 0
Selective dynamics
direct
.00000000 .40752380 -.14850510 T T T
.48548710 .40752380 -.14850510 T T T
.24274360 .40752380 -.14850510 T T T
.72823070 .40752380 -.14850510 T T T
.12137180 .02774876 -.14850510 T T T
.60685890 .02774876 -.14850510 T T T
.36411530 .02774876 -.14850510 T T T
.84960250 .02774876 -.14850510 T T T
.12137180 .28093210 .00000000 T T T
.60685890 .28093210 .00000000 T T T
.36411530 .28093210 .00000000 T T T
.84960250 .28093210 .00000000 T T T
.00000000 .66070720 .00000000 T T T
.48548710 .66070720 .00000000 T T T
.24274360 .66070720 .00000000 T T T
.72823070 .66070720 .00000000 T T T
如果觉得有用的话,大家就拍下砖啊,让更多的同志们能探讨和学习表面构建.支持下我的呕心原创 ^_^!
第二种构建poscar进阶方法,可构建高指数面,纳米线管等复杂结构
在ms模块中搭建好所需要的的结构,然后点一个模块比如castep下拉菜单中的“calcualtion”,出现一个菜单,在该菜单最下方出现三个选项,run,files,help,我们选择点击“files”,然后点击“save files”。这个时候你建立的结构就会默认保存在项目下。你到项目下打开你保存的文件。会看到一个*.cell文件,如果看不到,你就到工具栏下设置下显示隐藏的文件,*.cell是隐藏的文件。打开这个cell文件,你会看到前面是坐标文件,比如:CODE:cell文件第2行到第5行的数字显示的是晶格矢量,对应就是poscar前面的第3行到第6行的基矢量,不过这个时候poscar的第二行的晶格常熟要设置为1,因为cell文件的晶格矢量包含了晶格常数进去了。
%BLOCK LATTICE_CART
2.555294556406364 -1.475300000000001 0.000000000000000
0.000000000000000 2.950600000000000 0.000000000000000
0.000000000000000 0.000000000000000 4.678800000000000
%ENDBLOCK LATTICE_CART
%BLOCK POSITIONS_FRAC
Ti 0.3333333333333334 0.6666666666666667 0.2500000000000000
Ti -0.3333333333333334 -0.6666666666666667 0.7500000000000001
%ENDBLOCK POSITIONS_FRAC
%BLOCK KPOINTS_LIST
-0.5000000000000000 -0.5000000000000000 0.4166666666666666 0.010000000000000
-0.5000000000000000 -0.5000000000000000 0.2500000000000000 0.010000000000000
-0.5000000000000000 -0.5000000000000000 0.0833333333333333 0.010000000000000
-0.5000000000000000 0.4000000000000000 0.4166666666666666 0.040000000000000
-0.5000000000000000 0.4000000000000000 0.2500000000000000 0.040000000000000
-0.5000000000000000 0.4000000000000000 0.0833333333333333 0.040000000000000
cell文件第7行空格,第8行显示说是坐标了,而且是分数坐标,呵呵,很清楚了,在poscar的基矢量接着写下“direct”,表示是分数坐标,然后把cell文件第9行到第10行(这里是针对我给出的简单例子只有2个原子,多原子的类推就可以了)copy到poscar下就可以了。
一个poscar就完成了!就算很复杂的结构比如高指数表面,纳米线,纳米管,使用这种方法构建,非常简单!不过以上方法都是我个人摸索出来的,是否可行,有待大家评点!
对于很多纳米结构,比如纳米碳管,不管什么类型的管,现在高版本的ms都可以直接输出。特别很方便,大家也可以看看。
欢迎拍砖!