
理想六角密排晶格,其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手册中没有提到的结构优化方式,比如固定特定晶格的优化,目前个人认为也能够实现固定特定晶格夹角的优化。
未来若实现了这一功能,会发布详细的讨论及说明。食品不怎么好学,出路不是很好,一般大本工作的话,都是下车间,慢慢干。如何实现固定特定晶格的优化。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)