本发明涉及分子动力学仿真技术领域,尤其涉及一种构建螺型位错原子结构的方法。
背景技术:
晶体宏观上的塑性变形实质是位错在外力作用下运动的结果。晶体的生长、形变强化、滞弹性、断裂、相变、晶体的电磁性能、晶体的光学性质、超导性以及其他许多物理、化学性质都与位错有重要的关联。因此,位错的研究无论对于科学研究还是实际应用都有着重要意义。实验上研究位错的方法有浸蚀法、缀饰法、透射电子显微分析法、x射线衍射分析法、场离子显微分析法等。这些实验技术被广泛地应用于分析研究位错的密度、分布和组态以及它们的运动和交互作用等。但是在原子尺度上的研究(比如位错芯的研究),分子动力学模拟具有重要的地位。各种位错原子结构的直接构建有利于分子动力学对位错行为更为精准的研究。本发明公开了一种构建螺型位错原子结构的方法,解决了分子动力学及其它计算机仿真研究中螺型位错原子结构直接建模的问题,本发明公开的方法可方便快捷地在晶体模型内部任何位置直接构建任意方位、任意组态的螺型位错原子结构,而且可在一个晶体模型内创建多个不同位向和组态的螺型位错原子结构。
技术实现要素:
本发明所要解决的技术问题,就是提供一种方便快捷地构建螺型位错原子结构的方法,本方法在给定包含晶体模型的原子结构信息的文件的前提下,使用编程语言提取晶体模型的原子结构信息,根据拟构建螺型位错原子结构的要求自动计算出包含该要求的螺型位错原子结构的晶体模型的原子坐标,然后按分子动力学软件能识别的文件格式输出文件。
本发明采用的技术解决方案如下:
设拟构建的螺型位错原子结构的burgers矢量为[uvw]a,位错线经过p(xpypzp),滑移面为(hkl),a为晶格常数。
步骤一:准备包含晶体模型原子结构信息的文件。
步骤二:使用编程语言提取上述文件中的原子结构信息,将坐标系原点移动到点p(xpypzp)处。旋转坐标系,使x轴在位错的滑移方向[uvw]上,y轴垂直于位错滑移面(hkl),然后计算晶体模型内所有原子在新坐标系中的坐标值。
步骤三:设位错周围晶格扭曲较明显的区域在y和z方向的范围为直径为2r0的圆。为构建螺型位错原子结构,晶体模型内的原子要进行相应的位移,本方法根据位错周围原子分布的特点,提出下列计算位移的公式。设x方向的位移为q,y方向和z方向不发生位移,计算公式如下:
d=a(u2+v2+w2)1/2,
r=(x2+y2)1/2,
当r=0时,θ=0,
当r≠0且z≥0时,θ=acos(y/r),
当r≠0且z<0时,θ=2π-acos(y/r),
当r≤r0时,q=dθ(r/r0)/(2π),
当r>r0时,q=dθ/(2π)。
步骤四:根据上面计算得到的每个原子的位移值q,计算晶体模型内所有原子位移后的坐标值,由此在指定的位置构建出相应位向的螺型位错原子结构。
步骤五:按照步骤二的逆向移动坐标系,使坐标系恢复成原来的位向。
步骤六:按分子动力学软件能识别的格式输出数据到文件。
以上内容即为本发明公开的螺型位错原子结构的建模方法的主要内容。
本发明所公开的构建螺型位错原子结构的方法,可方便快捷地在晶体内部任何位置直接构建任意方位、任意组态的螺型位错原子结构,而且可在一个晶体内直接创建多个不同位向和组态的螺型位错原子结构,有利于分子动力学及其它计算机仿真技术对螺型位错行为更为精准的研究。
附图说明
图1是本发明实施实例中创建的不含螺型位错原子结构的b2型nial金属间化合物40×40×40超胞的原子结构图。
图2是本发明实施实例中超胞内已构建螺型位错原子结构的ovito软件显示的位错识别图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细说明,但本发明的实施方式不限于此,在不脱离本发明上述思想的情况下,根据本领域普通技术知识和惯用手段,做出各种替换和变更,均应包括在本发明的范围内。
实施例:
本实例公开了一种构建螺型位错原子结构的方法。本实例在一个b2型nial金属间化合物40×40×40超胞内构建经过超胞中心点(59.64,59.64,59.64)的螺型位错(110)[1-11]1/2a和经过点(0,0,10)的螺型位错(-110)[110]a。
(1)构建经过超胞中心点(59.64,59.64,59.64)的螺型位错(110)[1-11]1/2a:
步骤一:采用materialsstudio创建40×40×40超胞,如图1所示,然后以car的格式输出数据文件。
步骤二:提取上述文件中的原子结构信息,将坐标原点移到超胞的中心点(59.64,59.64,59.64)(原坐标系的原点在超胞的一角,x轴在晶向[100],y轴在晶向[010],z轴在晶向[001]),旋转坐标系,使x轴沿着晶向[1-11],y轴沿着晶向[110],计算晶体模型内所有原子在新坐标系中的坐标值。
步骤三:设定螺型位错原子结构周围晶格扭曲较明显的区域在y和z方向的范围为直径为2r0=16a的圆,a为晶格常数,计算晶体超胞内所有原子在x方向的位移q,y方向和z方向不发生位移,主要程序代码如下:
for(i=0;i<total_no_atoms;i++){
a=2.882;pi=3.1415926;
u=1;v=-1;w=1;h=1;k=1;l=0;
xita=0;q=0;r0=8*a;
d=a/2*sqrt(u*u+v*v+w*w);
x1=atoms[i].x[0];
y1=atoms[i].x[1];
z1=atoms[i].x[2];
r=sqrt(y1*y1+z1*z1);
if((r>0)&&(z1>=0))xita=acos(y1/r);
if((r>0)&&(z1<0))xita=2*pi-acos(y1/r);
if(r<=r0)q=d/(2*pi)*xita*(r/r0);
if(r>r0)q=d/(2*pi)*xita;}。
步骤四:根据上面计算得到的每个原子的位移值q,计算晶体超胞内所有原子位移后的坐标值,程序代码如下:
for(i=0;i<total_no_atoms;i++){
atoms[i].x[0]+=q;}。
步骤五:按照步骤二的逆向移动坐标系,使坐标系恢复成原来的位向。
步骤六:按分子动力学软件能识别的格式输出数据到文件。
(2)构建经过点(0,0,10)的螺型位错(-110)[110]a:
步骤一:使用上述(1)的输出文件。
步骤二:提取上述文件中的原子结构信息,将坐标原点移到点(0,0,10),旋转坐标系,使x轴沿着晶向[110],y轴沿着晶向[-110],计算晶体模型内所有原子在新坐标系中的坐标值。
步骤三:设定螺型位错原子结构周围晶格较扭曲明显的区域在y和z方向的范围为直径为2r0=16a的圆,a为晶格常数,计算晶体超胞内所有原子在x方向的位移q,y方向和z方向不发生位移,主要程序代码如下:
for(i=0;i<total_no_atoms;i++){
a=2.882;pi=3.1415926;
u=1;v=1;w=0;h=-1;k=1;l=0;
xita=0;q=0;r0=8*a;
d=a/2*sqrt(u*u+v*v+w*w);
x1=atoms[i].x[0];
y1=atoms[i].x[1];
z1=atoms[i].x[2];
r=sqrt(y1*y1+z1*z1);
if((r>0)&&(z1>=0))xita=acos(y1/r);
if((r>0)&&(z1<0))xita=2*pi-acos(y1/r);
if(r<=r0)q=d/(2*pi)*xita*(r/r0);
if(r>r0)q=d/(2*pi)*xita;}。
步骤四:根据上面计算得到的每个原子的位移值q,计算晶体超胞内所有原子位移后的坐标值,由此构建出相应位向的螺型位错原子结构,程序代码如下:
for(i=0;i<total_no_atoms;i++){
atoms[i].x[0]+=q;}。
步骤五:按照步骤二的逆向移动坐标系,使坐标系恢复成原来的位向。
步骤六:按分子动力学软件能识别的格式输出数据到文件。
由此,在一个b2型nial金属间化合物40×40×40超胞内构建了经过超胞中心(59.64,59.64,59.64)的螺型位错(110)[1-11]1/2a和经过点(0,0,10)的螺型位错(-110)[110]a的原子结构。图2为使用ovito软件显示的位错识别图。