您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 综合/其它 > COMSOL与MATLAB联合仿真的实现方法
龙源期刊网联合仿真的实现方法作者:赵晓磊齐秋菊郭春超来源:《中国新技术新产品》2014年第24期摘要:本文在分析COMSOL与MATLAB这两款软件特点的基础上,研究了COMSOL与MATLAB联合仿真的方法,通过COMSOL与MATLAB之间的相互调用,实现了MATLAB与COMSOL的数据传递,并结合实例介绍了联合仿真的方案,通过这两款软件的联合仿真,提高了仿真效率。关键词:联合仿真;COMSOL;MATLAB中图分类号:TP31文献标识码:ACOMSOLMultiphysics是一款大型的高级数值仿真软件。广泛应用于各个领域的科学研究以及工程计算,被称为“第一款真正的任意多物理场直接耦合分析软件”。在模拟科学和工程领域的各种物理过程中,COMSOL以高效的计算性能和杰出的多场双向直接耦合分析能力实现了高度精确的数值仿真。COMSOL是以有限元法(FEM)为基础,通过求解偏微分方程来实现真实物理现象的仿真。目前已经在声学、生物科学、化学反应、电磁学、流体动力学、燃料电池、地球科学、热传导、光学等领域得到了广泛的应用。尽管COMSOL在仿真方面能力强大,但是由于软件没有可以输入程序的功能,使COMSOL对于进行大量重复性工作时,如果全由人工进行,工作量非常大。而COMSOL其实是起源于MATLAB的Toolbox,最初命名为Toolbox1.0。因此这两款软件之间相互兼容,可以联合起来进行仿真。这样,利用MATLAB进行编程,实现COMSOL的建模、计算、后处理等工作。1COMSOL与MATLAB联合仿真的实现方案1.1COMSOL与MATLAB联合仿真环境的连接方式本文采用的软件是Matlab2011b和COMSOL4.3,系统为Win7,64bit。安装顺序为先安装MATLAB,然后安装COMSOL到MATLAB的子文件夹下,并勾选linktoMATLAB选项。安装完毕后,桌面上会出现快捷方式COMSOL4.3withMATLAB,图标如图1所示。打开COMSOLwithMATLAB会打开MATLAB界面,然后手工打开COMSOL。这两个软件就通过一个共同的服务器联系在一起了。1.2COMSOL和MATLAB相互调用的方法龙源期刊网(1)MATLAB调用COMSOL模型文件:对于COMSOL中已经建好的某个模型,将其保存为MATLAB可调用的.M格式文件,然后在MATLAB的工作路径里找到这个文件并打开即可;(2)COMSOL调用MATLAB模型文件:对于MATLAB中通过M语言已经编好的M模型文件,运行(Run),在COMSOL的File下找到“从服务器导入模型”即可。①双击COMSOL4.3withMATLAB②双击COMSOL此时,MATLAB和COMSOL的界面都出现了③在MATLAB中运行需要导入到COMSOL的m文件④COMSOL中,file菜单下,clientserve下,Import此时,用对话框中的默认设置即可,如图2所示,确定后,刚才的m文件就导入完成了,后续操作可以在COMSOL中操作2COMSOL与MATLAB联合仿真的应用实例2.1COMSOL调用MATLAB实例下面通过一个实例,在一个方形中,画一系列的圆,并选择这些圆的边界,通过该实例具体说明COMSOL调用MATLAB的方法及步骤。(1)建立模型启动COMSOLwithMATLAB后,在MATLAB界面的命令行中导入模型类importcom.comsol.model.*importcom.comsol.model.util.*(2)创建模型对象命令model=ModelUtil.create(‘Model’);model.modelNode.create(‘mod1’);(3)创建几何模型结点model.geom.create(‘geom1’,2);(4)设定几何模型的参数龙源期刊网(‘geom1’).feature.create(‘sq1’,‘Square’);model.geom(‘geom1’).feature(‘sq1’).set(‘size’,num2str(sq_length));sq_length=1;cl_num=10;cl_radius=0.03*sq_length;cl_x=linspace(0.1*sq_length,0.9*sq_length,10);cl_y=(0.2*sin(4*pi*cl_x)+0.5)*sq_length;本例中在一个边长为1的正方形中添加一系列的圆形,并将圆形的个数、圆的半径以及坐标位置进行设定,在这里,将圆的个数设置为10,圆的半径为0.03,圆心的坐标位置通过函数linspace(x1,x2,n)进行设定。(5)选择几何模型的边界通过for循环程序依次选择圆的边界cl_selection_name=cell(1,cl_num);fori=1:cl_numcl_name=[‘c’,num2str(i)];cl_selection_name{i}=[‘geom1_’,cl_name,’_dom’];model.geom(‘geom1’).feature.create(cl_name,‘Circle’);model.geom(‘geom1’).feature(cl_name).set(‘createselection’,‘on’);model.geom(‘geom1’).feature(cl_name).set(‘r’,num2str(cl_radius));model.geom(‘geom1’).feature(cl_name).setIndex(‘pos’,num2str(cl_x(i)),0);model.geom(‘geom1’).feature(cl_name).setIndex(‘pos’,num2str(cl_y(i)),1);龙源期刊网(‘geom1’).runAll;model.selection.create(‘uni1’,‘Union’);model.selection(‘uni1’).set(‘input’,cl_selection_name);model.selection.create(‘adj1’,‘Adjacent’);model.selection(‘adj1’).set(‘input’,{‘uni1’});mphviewselection(model,‘adj1’);mphsave(model,’cricle_boundary’);在MATLAB脚本中编辑上述代码,运行结果图3所示。当要对本模型进行的计算及其他后处理操作时,只需要将该MATLAB脚本文件导入到COMSOL界面中,方法为:打开COMSOL,在COMSOL中,file菜单下,clientserver下,import此时,用对话框中的默认设置即可,确定后,刚才的m文件就导入完成了,导入到COMSOL中界面如图4所示:后续操作可以在COMSOL中操作,从而实现了COMSOL与MATLAB的联合仿真。2.2MATLAB调用COMSOL实例在COMSOL中通过GUI方式建立的求解模型直接保存为***.mph之后,可以另存为直接在MATLAB中可以调用的M-file文件model.m,M-file的运行要借助COMSOL的计算核心,是在不打开COMSOL程序界面的情况下后台运行计算,并输出结果,这使得在MATLAB程序中调用COMSOL成为可能。下面对COMSOL案例库中点圆的状态方程这一实例,目标是实现点圆的源项的取值从1到5,分别求解计算结果。通过这一案例具体说明MATLAB调用COMSOL的方法。(1)首先打开point_source.mph,将其保存为M文件,命名为demo.m(2)启动COMSOLwithMATLAB在MATLAB命令行中输入命令editdemo,这样就打开了该案例的脚本文件如图5所示:在该脚本中可以看到在COMSOL中的每一步操作都转换成了MATLAB中代码,包括模型的建立、模型参数的设定、物理场的设定,以及网格化和求解。龙源期刊网(3)修改脚本在本案例中,是要修改它的源项f值,因此首先找到脚本中源项f值这一语句model.Physics(‘lpeq’).feature(‘ptsrcl’).set(‘f’,1)这里的f=1,由于本案例是要求f的值从1到5的计算结果,因此在脚本文件中添加一个for循环语句,使f的值从1变到5时依次做5次的循环计算。(4)程序如下fori=1:5str=sprintf(‘model.physics(‘’lpeq’’).feature(‘’ptsrcl’’).set(“f”,”%u”);’,i)eval(str);model.sol(‘sol1’).runAll;str=sprintf(‘model.save(‘’c:\\Users\\Martin\\Desktop\\test%d’’)’,i);%保存文件eval(str);end(5)保存并运行脚本文件程序运行结束后会在电脑桌面上生成5个.*mph文件,文件名分别为test1.mph,test2.mph,test3.mph,test4.mph,test5.mph。上面的例子是COMSOL与MATLAB联合仿真的一个简单应用,在实际的数值计算,以及工程应用中,可以很好的利用COMSOL与MATLAB的联合仿真技术,从而简化应用程序的开发工作量。结语COMSOL又是通用大型任意多物理场直接耦合分析软件,MATLAB能提供强大的数学计算功能和丰富的工具箱,本文充分利用了二者的优势,实现了MATLAB与COMSOL的数据传递和调用,通过COMSOL与MATLAB的有效结合,大大简化了对数据的处理步骤,提高了仿真效率,发挥了COMSOLwithMATLAB的强大优势。龙源期刊网参考文献[1]ZimmermanWBJ.MultiphysicsModelingWithFiniteElementMethods.SeriesOnStability[J].VibrationAndControlOfSystems,2006(14).[2]冯忠奎,等.基于MATLAB与COMSOL联合仿真的电磁优化设计[J].电磁分析与应用,2012(01).[3]MultiphysicsC.Comsol.Inc.,Burlington,MA,,1994.[4]TrottDW,MatthiasKG.FiniteelementconvergencestudiesusingCOMSOL4.0aandLiveLinkforMATLAB.TechnicalReportHPCF–2010–8,UMBCHighPerformanceComputingFacility,UniversityofMaryland,BaltimoreCounty,2010.
本文标题:COMSOL与MATLAB联合仿真的实现方法
链接地址:https://www.777doc.com/doc-3888164 .html