Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1072809
  • 博文数量: 264
  • 博客积分: 7225
  • 博客等级: 少将
  • 技术积分: 5096
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-17 08:53
文章分类

全部博文(264)

文章存档

2011年(33)

2010年(52)

2009年(152)

2008年(27)

我的朋友

分类:

2009-04-23 21:23:08

转载自小木虫:
作者 
用Material Studio构建复杂模型及转换成poscar的2种方法
★ ★ ★ ★ ★
spur(金币+5,VIP+0):表面计算的经典佳作!


此帖已被多个论坛、博客转载,但原创就为此帖。相信大家读后会有所受益!
今后如有转载,请注明作者及来源


前面有xinjiang的帖子,我发现做表面的还不少。这里我也给大家介绍一点经验,简单点表面构建法前面介绍了,那么这里我介绍“用Material Studio构建稍微复杂的表面模型”。这里介绍的是构造一个根号3x2pt(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:  
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
那么产生的poscar文件:

  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:  
%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文件第2行到第5行的数字显示的是晶格矢量,对应就是poscar前面的第3行到第6行的基矢量,不过这个时候poscar的第二行的晶格常熟要设置为1,因为cell文件的晶格矢量包含了晶格常数进去了。
cell文件第7行空格,第8行显示说是坐标了,而且是分数坐标,呵呵,很清楚了,在poscar的基矢量接着写下“direct”,表示是分数坐标,然后把cell文件第9行到第10行(这里是针对我给出的简单例子只有2个原子,多原子的类推就可以了)copy到poscar下就可以了。

一个poscar就完成了!就算很复杂的结构比如高指数表面,纳米线,纳米管,使用这种方法构建,非常简单!不过以上方法都是我个人摸索出来的,是否可行,有待大家评点!
对于很多纳米结构,比如纳米碳管,不管什么类型的管,现在高版本的ms都可以直接输出。特别很方便,大家也可以看看。

欢迎拍砖!


阅读(3400) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-06-30 20:55:54

在构建纳米管时,怎么保证所建模型在周期方向上的正确性