计算出六角密排晶格中各原子的空间相对位置,然后在Matlab中写程序画出六角密排晶格

计算出六角密排晶格中各原子的空间相对位置,然后在Matlab中写程序画出六角密排晶格,第1张

  理想六角密排晶格,其A层的任意三个相邻原子间排成正三角形(图中1、2、3号原子),设边长为a,易知原子半径r=a/2。同时,A、B层相邻的四个原子排成正四边形(图中1、2、3、4号原子),依次可以计算出各个位置的原子的坐标

  如图,首先设底层中心原子(2号原子)为坐标原点,以2、3号原子间连线为X轴,以两中心原子间连线为Z轴。则可以求出所有原子的笛卡尔坐标位置:

据此,matlab程序为:

————————————————————————————

a=1  %将a归一化。

x0=[0,a,a/2,-a/2,-a,-a/2,a/2,0,-a/2,a/2,0,a,a/2,-a/2,-a,-a/2,a/2]

y0=[0,0,sqrt(3)*a/2,sqrt(3)*a/2,0,-sqrt(3)*a/2,-sqrt(3)*a/2,sqrt(3)*a/3,-sqrt(3)*a/6,-sqrt(3)*a/6,0,0,sqrt(3)*a/2,sqrt(3)*a/2,0,-sqrt(3)*a/2,-sqrt(3)*a/2]

z0=[0,0,0,0,0,0,0,sqrt(6)*a/3,sqrt(6)*a/3,sqrt(6)*a/3,2*sqrt(6)*a/3,2*sqrt(6)*a/3,2*sqrt(6)*a/3,2*sqrt(6)*a/3,2*sqrt(6)*a/3,2*sqrt(6)*a/3,2*sqrt(6)*a/3]

%(注意,在matlab中运行时,要将x0,y0,z0后面的三个表达式拉到1排里。)

%下面这句可以用来初步查看坐标位置     

% plot3(x,y,z,'o')

%下面画原子图

r=a/2   %可自行调整半径  不同半径的画图效果差别蛮大的

rho=0:0.05*pi:2*pi

phi=-pi:0.05*pi:pi

for i=1:17

  x=x0(i)+r*(cos(phi))'*(cos(rho))

  y=y0(i)+r*(cos(phi))'*(sin(rho))

  z=z0(i)+r*(sin(phi))'*(ones(size(rho)))

  surf (x,y,z)

  shading interp   %使图形光滑,无边界阴影

  hold on

end

axis equal

————————————————————————

效果图如下:(可在matlab中三维旋转获得不同视觉效果)

程序不同。

固定某个晶格的优化通过修改VASP源代码constrellelaxF文件,实现一些VASP手册中没有提到的结构优化方式,比如固定特定晶格的优化,目前个人认为也能够实现固定特定晶格夹角的优化。

未来若实现了这一功能,会发布详细的讨论及说明。食品不怎么好学,出路不是很好,一般大本工作的话,都是下车间,慢慢干。如何实现固定特定晶格的优化。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8116813.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-13
下一篇2023-04-13

发表评论

登录后才能评论

评论列表(0条)

    保存