《(2.3.17)--知识点_14_Matlab编程_组合两种晶体结构.pdf》由会员分享,可在线阅读,更多相关《(2.3.17)--知识点_14_Matlab编程_组合两种晶体结构.pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Matlab编程-组合两种晶体结构双金属片或层状复合结构X-1,0,0Mg Y-0,1,0Z-0,0,1X-1,0,0Al Y-0,1,0Z-0,0,1由 Mg-Al 构成的双金属片结构ZXYMatlab编程-实现双金属片复合结构%定义Al,Mg的晶体结构参数Type0=FCC;element0=Al ;%FCC-Ala0=4.05;c0=0.0;mass=26.98;Type2=HCP;element2=Mg ;%HCP-Mga2=3.184;c2=3.184*1.628;mass=24.31;%采用子函数data0,nt0=lattice_function(Type0,a0,c0);%FC
2、C-Al data2,nt2=lattice_function(Type2,a2,c2);%HCP-MgMatlab编程-实现双金属片复合结构%采用 data 数组存储双层复合原子结构,nt 变量存储原子总数nt=0;for ID=1:1:max(nt0,nt2)%找出 nt0 和 nt2 原子总数最大值if(data2(ID,3)=0.0&ID=0上层的Mg结构nt=nt+1;data(nt,1:3)=data2(ID,1:3);endif(data0(ID,3)-0.1&ID=nt0)%Z0 下层的Al结构nt=nt+1;data(nt,1:3)=data0(ID,1:3);endendf
3、ileID=fopen(Bi_MgAl.pdb,w);num=0;formatSpec=%6s%5d%1s%4s%6s%4d%4s%8.3f%8.3f%8.3fn;for ID=1:1:ntif(abs(data(ID,1:3)=0.0)element=Mg ;elseif(data(ID,3)=0.0&ID=0 上层的Al(001)晶粒nt=nt+1;data(nt,1:3)=data0(ID,1:3);endif(data1(ID,3)-0.1&ID=nt1)%Z0 下层的Al(111)晶粒nt=nt+1;data(nt,1:3)=data1(ID,1:3);end end两个if并无必然
4、联系,所以不能用elseifMatlab编程-双晶结构子函数定义if(Trans=Y)%如果转置标识打开A=-1 1 0;-1 -1 2;1 1 1 ;%转置实现列向量操作B=1 0 0;0 1 0;0 0 1 ;C(:,1)=A(:,1)/norm(A(:,1);C(:,2)=A(:,2)/norm(A(:,2);C(:,3)=A(:,3)/norm(A(:,3);T=B*inv(C);for ID=1:1:ntx=T*data(ID,1:3);data(ID,1:3)=x;endend function data,nt=lattice_function(Type,a,c,Trans)dat
5、a0,nt0=lattice_function(Type0,a0,c0,Trans)Matlab编程 浏览双晶结构plot3(data(1:nt,1),data(1:nt,2),data(1:nt,3),o,.MarkerFaceColor,g,MarkerSize,10);for ID=1:1:ntif(abs(data(ID,1:3)=0.0)element=Mg ;elseif(data(ID,3)-0.1)element=Al ;endnum=num+1;fprintf(fileID,formatSpec,ATOM ,num,element,.,1,data(ID,1:3);endend