马 军
(中国药科大学,江苏 南京 210093)
在工科普通物理的教学中,经典模型占据着及其重要的地位[1]。通过一个典型模型教会学生如何分析,如何求解;并从模型的演化过程中掌握其中有关的物理知识、概念和规律,最终达到举一反三的效果。但是有相当多的模型,其求解的数学过程比较复杂,有的甚至超出了大学一年级学生所学的数学内容,这就给教学带来了一定的困难。随着计算机的普及和计算机技术的发展,可以利用计算机对物理问题进行仿真,从而使学生对某一模型有形象直观的了解,这样有助于物理内容的教学。
SystemModeler是Wolfram公司出品的物理建模与仿真软件,并且能够与Mathematica完美的连接,以实现集建模、仿真和分析为一体的集成化工作流程。SystemModeler是基于组件的拖放进行设计的,因此用其建模时只需用拖放操作即可,并用连线工具把组件链接起来表示物理连接,非常的方便和直观。在现实世界中,系统很少局限在某一个单一的领域,而往往涉及到众多领域,比如机械、电子和热力学,甚至还可能有生物的生化过程,SystemModeler可以实现跨领域建模。
SystemModeler可包含来自任何领域的互相连接的组件的任何组合,这样在仿真时,可以更贴近现实情况,有助于发现一些重要的效应。SystemModeler内置了大量的标准模型库有:生化途径、电气、电磁、机械、信号模块等,这样对于一般的系统仿真可以用内置模块快速的完成。而且SystemModeler可以实现可视化的3D动画,比如机械组件可以在模拟结束时快速生成3D动画。对于标准库中没有的模型,由于SystemModeler完全支持Modelica标准建模语言,所以可以用其进行建模,并且新建的模型可以和标准库一样反复使用;另外还可以利用第三方开发的用于专门领域的Modelica库。
相对于其他的仿真软件,SystemModeler有她的优点。首先,相对于MapleSim和Simulink而言[2-4],SystemModeler在建模方式、内置模型库的数量、仿真求解的方式和可视化的实现等方面都更胜一筹;其次,在工作流程方面而言,SystemModeler执行的 Modelica语言,利用其基于组件建模的优势,对组件中的流程进行建模。这比与基于模块的建模方法相比更加方便和快捷;最后,SystemModeler可以充分的发挥出Modelica的优势,Modelica是一个专门为物理系统建模而设计的开放式标准语言[5-6]。它允许个人和团体有效协作,完成大型项目,并建立可重用的自定义组件和库。关于SystemModelica和Modelica的进一步介绍可以参考相关网站[7-9]。下面将通过两个例子来介绍SystemModeler的用法。
如图1所示的RLC串联电路,当开关拨到1或2位置时是电路充电或放电的暂态过程,要了解这个过程中的电流或者电容上的电压变化需要解如下的二阶线性非其次方程,其中q是电容上的电量。
图1 RLC串联电路
不解方程(1),定性的可以得到只要时间足够的长,电容两端的电压必然是ε,但是如果用SystemModeleler,则可以快速的模拟得到电路暂态过程的特点。打开SystemModeler软件,在软件界面左侧的Class窗口中,把所需要的组建从Library中拖到Component窗口中,然后利用连接线工具把各个组件连接起来;选择不同的组件,在Parameter选项卡中设置各自的参数,最后得到如图2所示的情况。点击工具栏上的Simulation Center按钮,打开Simulation Center,在Experi ment Browser窗口中有parameter选项卡可以设置每次实验时的参数,plot选项卡中可以选择对哪些参数进行绘图。我们可以先假定L=1H,C=1F,然后改变电阻R,来考察电容两端的电压随着时间是如何变化的,分别做四次实验电阻R分别取0Ω、2Ω、20Ω和0.2Ω,仿真时间设为50s,最终可以得到如图3所示的电容两端电压随时间的变化。从图3中可以看出,对于R=0Ω时,电路是无阻尼的自由震荡;R=0.2Ω时,是阻尼振荡。当然除了改变电阻外,我们可以改变电感L和电容C,可以做相应的实验,方法类似。
图2 RLC串联电路的仿真
图3 电容两端的电压
如果说上述RLC电路的模拟没有充分体现出SystemModeler的优势,下面这个机械系统的仿真可以体现其优势。如图4所示的实际机械系统,长度为L1和L2的细杆两端有两个质量分别为m1和m2的小球,两小球用原长为l劲度系数k的弹簧连接起来,两个单摆的距离为L=1m。其中细杆和弹簧不计质量的。
图4 耦合摆
根据实际的物理系统,从Mechanics库中选择所需要需得组件,建立仿真模型,如图5所示。其中bodyCylinder的转动惯量设为0;badyShape的质量设为1Kg和2Kg;阻尼器damp的阻尼常数设为1N·m·s/rad;弹簧的劲度系数为20N/m,原长为2m,弹簧质量为零。
图5 耦合摆的仿真模型
打开Simulation Center,在模拟开始前在variables选项卡中设置初始条件,如同4所示;settings选项卡中设置仿真的时间为15s。点击工具栏上的仿真按钮系统就开始仿真计算,仿真结果除了用plotting选项卡来作两个单摆的摆角随时间的变化外,还可把仿真数据导出为Excel或matlab等文件,再利用第三方软件作图。把耦合摆的仿真数据导出到Excel中,然后用origin软件作出图6。
如图6中所示,图6(A)和图6(C)是两个单摆角速度随时间的变化;而图6(B)和图6(D)是单摆的角位移随时间的变化,很明显单个摆不再是做简谐振动。这显然要比解这这个耦合摆的动力学方要方便很多。另外点击simulation Center工具栏上的动画按钮可以快速生成这个模型运动的动画,图7(A)和图7(B)所示的是在0秒和5.97秒的情况。如果想使模型更接近实际,可以加上转轴的摩擦、细杆的质量和弹簧的质量等。
图6 角位移和角速度
图7 耦合摆动画5.97秒视图
以上两个例子简要说明如何利用System-Modeler建模仿真,说明SystemModeler使用起来是方便和可靠的。利用SystemModeler还可以做灵敏度分析,以及其与mathematica结合使用,具体内容可以参考Wolfram网站。在此感谢Wolfram公司提供的SystemModeler的试用。
[1]李元杰,汤正新.现代数值计算,模拟技术与力学典型模型教学[J].大学物理,2002,21(10):35-39.
[2]何正大,许玫,杨访.用 MapleSim进行多领域混合建模仿真分析[J].电脑知识与技术,2009,36(5):1030-1030.
[3]吴波,杨秀德.RLC暂态电路的理论分析和数值模拟[J].物理与工程,2010(1):32-34.
[4]罗志娟,刘敏,易图林,等.基于 MATLAB的RC串联电路暂态过程仿真[J].大学物理实验,2012(4):33.
[5]曹学余,汤炳新,郭瑞国.利用Modelica实现磁悬浮球系统的建模与仿真[J].河海大学常州分校学报,2005,19(2):42-45.
[6]王瑗,杨文明,余建波,等.应用 Modelica语言对虚拟物理实验建模与仿真[J].实验室研究与探索,2010,10:82.
[7]Wolfram Research Co.Ltd.[EB/OL]www.wolfram.com.
[8]Modelica and the Modelica Association[EB/OL]www.modelica.org.
[9]郎丰饶.交通事故中汽车速度分析物理模型的研究[J].2011(4):42-43.