||
八面体和截角八面体构型在纳米金属团簇的结构中比较常见, 在展示或计算时我们都需要构建这些结构$.$
原理:正方体切除6顶点得正八面体, 正八面体切除6顶点得截角八面体
具体方法:长度以原子个数计, 以简单立方晶胞为例, 面心立方、体心立方晶胞同理
根据需要大小构建相应的超晶胞, 设其边长为Nedg
以 {±Nedg±Nedg±Nedg} 6个面依次切取超晶胞, 只保留面内的部分, 得正八面体团簇
以 X=±Ntop,Y=±Ntop,Z=±Ntop 6个面上下左右前后依次截取所得正八面体, 得截角八面体, Ntop为切除四面体的边长
截角八面体有6个四边形面和8个六边形面, 设Nrec和Nhex分别为四边形边长和六边形边长, 它们与正方体边长和切除四面体边长的关系如下:
利用这些关系我们便可以得到任意边长的截角八面体了.
正八面体(边长7)
截角八面体(边长3)
截角八面体(面心立方, 边长3)
截角八面体(体心立方, 边长3)
基于JavaScript的在线工具(2014-12-15更新)虽然我发了这篇博文, 但还是经常有人向我询问怎么创建, 为了尽量避免浪费时间, 我现在将其做成一个在线小工具, 只要你选好参数, 就可以得到相应的团簇坐标. 建议使用谷歌的Chrome浏览器, 因为我没有在其他浏览器上进行测试.
如果你需要创建八面体或截角八面体团簇, 请移步这里. 若发现问题, 敬请告示.
代码# Language: bash################################################################################# A script to generate Octahedron/Truncated Octahedron of SC/BCC/FCC# Jicun LI Jerkwin@gmail.com# 2013-08-17: Demo# 2014-12-15: fix bug################################################################################awk 'BEGIN { YesBCC=0; YesFCC=0Nrec=3; Nhex=3; YesCut=1# Nhex=N-2*Ntop; Nrec=Ntop+1Ntop=Nrec-1Nedg=Nhex+2*Ntopa=1; b=1; c=1; Reps=1-1/Nedg+1E-3Ntot=0for(i=-Nedg; i<=Nedg; i++){for(j=-Nedg; j<=Nedg; j++){for(k=-Nedg; k<=Nedg; k++){Ntot=Ntot+1x=i*a; y=j*b; z=k*cS[Ntot]="C"; X[Ntot]=x; Y[Ntot]=y; Z[Ntot]=zif(YesBCC){Ntot=Ntot+1S[Ntot]="BCC";X[Ntot]=x+0.5*a; Y[Ntot]=y+0.5*b; Z[Ntot]=z+0.5*c}elseif(YesFCC){Ntot=Ntot+1S[Ntot]="FCC";X[Ntot]=x+0.5*a; Y[Ntot]=y+0.5*b; Z[Ntot]=zNtot=Ntot+1S[Ntot]="FCC";X[Ntot]=x+0.5*a; Y[Ntot]=y; Z[Ntot]=z+0.5*cNtot=Ntot+1S[Ntot]="FCC";X[Ntot]=x; Y[Ntot]=y+0.5*b; Z[Ntot]=z+0.5*c}}}}Natm=0Ncut=Nedg-Ntop-0.5001;Na=Nedg; Nb=Nedg; Nc=Nedg;Ra=1/(Na*a); Rb=1/(Nb*b); Rc=1/(Nc*c)for(i=1; i<=Ntot; i++){x=X[i]; y=Y[i]; z=Z[i]if( x*Ra+y*Rb+z*Rc<Reps && x*Ra-y*Rb+z*Rc<Reps &&-x*Ra+y*Rb+z*Rc<Reps &&-x*Ra-y*Rb+z*Rc<Reps && x*Ra+y*Rb-z*Rc<Reps && x*Ra-y*Rb-z*Rc<Reps &&-x*Ra+y*Rb-z*Rc<Reps &&-x*Ra-y*Rb-z*Rc<Reps ){if(YesCut){if(-Ncut*a<x && x<Ncut*a &&-Ncut*b<y && y<Ncut*b &&-Ncut*c<z && z<Ncut*c){Natm=Natm+1; YesIn[i]=1}}else{Natm=Natm+1; YesIn[i]=1}}}print Natmprint "BCC= " YesBCC,"FCC= " YesFCC,"Nhex= " Nhex,"Nrec= " Nrecfor(i=1; i<=Ntot; i++){if(YesIn[i]) printf "%5s %8.3f %8.3f %8.3fn", S[i], X[i], Y[i], Z[i]}} '参考
图片表格公式代码完整版请参看八面体与截角八面体团簇的构建及代码实现Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-5-15 10:09
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社