《(2.3.14)--知识点_13_Matlab编程_主子程序实现晶体结构.pdf》由会员分享,可在线阅读,更多相关《(2.3.14)--知识点_13_Matlab编程_主子程序实现晶体结构.pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Matlab编程-主子函数实现晶体结构主函数和子函数abs(1)=1;sqrt(2)=1.414;%内嵌数学函数plot(data(:,1),data(:,2),o);%内嵌画图函数一个较大的程序一般应分为若干个程序模块,每一个模块用来实现一个特定的功能。所有的高级语言中都有子程序这个概念,用子程序实现模块的功能。Matlab中,子程序的作用是由函数完成的。一个程序可由一个主函数和若干个其他子函数构成。主/子函数协同工作:由主函数调用其他子函数,其他函数也可以相互调用。同一个子函数可以被一个或多个函数调用任意多次。Matlab 编程 采用主/子函数建立晶体结构Type0=FCC;element
2、0=Cu ;%FCC-Cua0=3.615;c0=0.0;mass=63.55;Type1=BCC;element1=Mo ;%BCC-Moa1=3.147;c1=0.0;mass=95.94;Type2=HCP;element2=Mg ;%HCP-Mga2=3.184;c2=3.184*1.628;mass=24.31;%使用子函数建立晶格data0,nt0=lattice_function(Type0,a0,c0);%FCC-Cu data1,nt1=lattice_function(Type1,a1,c1);%BCC-Modata2,nt2=lattice_function(Type2,
3、a2,c2);%HCP-Mg在主函数中,调用子函数 lattice_function()主函数调用子函数的命令data0,nt0=lattice_function(Type0,a0,c0);%FCC-Cu 输入到子函数的参数值子函数返回(输出回)主函数的参数值采用子函数名调用子函数定义function data,nt=lattice_function(Type,a,c)if(Type=FCC)ux=a;uy=a;uz=a;atom1=0.0*a,0.0*a,0.0*a;atom2=0.5*a,0.5*a,0.0*a;atom3=0.5*a,0.0*a,0.5*a;atom4=0.0*a,0.5
4、*a,0.5*a;elseif(Type=BCC)ux=a;uy=a;uz=a;atom1=0.0*a,0.0*a,0.0*a;atom2=0.5*a,0.5*a,0.5*a;elseif(Type=HCP)ux=a;uy=sqrt(3.0)*a;uz=c;atom1=0.0*a,0.0*a,0.0*c;atom2=0.5*a,sqrt(3.0)*0.5*a,0.0*c;atom3=0.0*a,2.0/3.0*sqrt(3.0)*0.5*a,0.5*c;atom4=-0.5*a,-1.0/3.0*sqrt(3.0)*0.5*a,0.5*c;end子函数定义ID=0;for i=-10:1:10
5、for j=-10:1:10for k=-10:1:10ID=ID+1;data(ID,1:3)=atom1+ux*i,uy*j,uz*k;ID=ID+1;data(ID,1:3)=atom2+ux*i,uy*j,uz*k;if(Type=FCC|Type=HCP)%|或操作ID=ID+1;data(ID,1:3)=atom3+ux*i,uy*j,uz*k;ID=ID+1;data(ID,1:3)=atom4+ux*i,uy*j,uz*k;endendendendnt=ID;function data,nt=lattice_function(Type,a,c)%优化晶格建立算法子函数调用和定义
6、之间的参数关系data0,nt0=lattice_function(Type0,a0,c0);%FCC-Cu function data,nt=lattice_function(Type,a,c)子函数调用子函数定义Type0=FCC;element0=Cu ;a0=3.615;c0=0.0;mass=63.55;主函数if(Type=HCP)ux=a;uy=sqrt(3.0)*a;uz=c;ID=ID+1;data(ID,1:3)=atom1+ux*i,uy*j,uz*k;nt=ID;子函数主函数用子函数返回变量进行操作data0,nt0=lattice_function(Type0,a0,
7、c0);%FCC-Cu data1,nt1=lattice_function(Type1,a1,c1);%BCC-Modata2,nt2=lattice_function(Type2,a2,c2);%HCP-Mg%指定元素类型,原子坐标,原子数目element=element0;data=data0;nt=nt0;%采用matlab绘图窗口,绘制晶格点阵图像plot3(data(1:nt,1),data(1:nt,2),data(1:nt,3),o,.MarkerFaceColor,g,MarkerSize,10);axis square;主/子函数所在的文件同一文件%Main-functio
8、nType0=FCC;element0=Cu ;%FCC-Cu.data0,nt0=lattice_function(Type0,a0,c0);.%Sub-function,主函数在前,子函数定义在后function data,nt=lattice_function(Type,a,c).end同一文件:Main_and_sub_function.m主/子函数所在的文件两个文件%main-functionType0=FCC;element0=Cu ;.data0,nt0=lattice_function(Type0,a0,c0);.主文件:Main_function.m子函数文件:Lattice_function.m%sub_function lattice_function.mfunction data,nt=lattice_function(Type,a,c)ID=0;.end子函数的文件名必须和子函数名一致