浅谈建模和模拟

唐本豪 物理科学学院

在PT比赛中,无论是需要利用模拟来验证自己的理论,抑或是需要自己搭建和改装实验装置,想必大家多少都要接触到3D模型的制作。今天,我想就我自己去年一年的学习经验来和大家聊一聊如何快速入门3D建模与攻克遇到的问题。

我该选择怎么样的软件?

既然是入门,首先我想给大家说明一下的就是3D软件的选取,也方便各位在浩如烟海的3D软件选择中找到方向,一般来说建议初学者使用COMSOL进行有限元模拟,AutoCAD或者SoildWorks进行模型制作,依不同需求可使用ADAMS、EDEMS或者ZeMAX解决实际问题,除非技术很强了,不要轻易尝试ANSYS:

软件名称 对应的特色 备注
SoildWorks 模型制作:适合制作用于3D打印的模型,也可制作复杂的由公式驱动的模型和动画,也可以组装机械和实验器材,比如我们去年用这个改装实验室的仪器以符合我们的实验要求,又比如可以设计机械制作今年题目中的飞牌机
模拟部分:CFD模块与力学模块都不错(毕竟本行其一是做产品可靠性分析的),模拟输出的流场与力学动画都很精致
-
AutoCAD 模型制作:适合制作用于激光切割的二维图纸,3D部分功能较SW有些削弱
模拟部分:它不行
利用学校邮箱可以白嫖功能阉割很少的教育版
PTC 模型制作:适合用于3D打印的模型
模拟部分:它也不行...虽然似乎可以做动力学,但是实际上没什么可以调整的参数
ProE和它就是同一个软件!
3DS MAX 模型制作:适合制作3D动画,便于PPT展示中更加生动形象。展现理论和实验器材中中相关物品的空间关系
模拟部分:想什么呢!你指望一个做游戏场景的软件做模拟?!
-
COMSOL 模型制作:自带的一般,完全需要依靠坐标来建模,也不支持非贝塞尔函数的非线性曲线绘制,不直观,只适合简单模型,但可以与SW,AutoCAD,PTC联动,直接实时更新这些软件中的建模结果
模拟部分:相当优秀的有限元多物理场模拟软件,有很多的案例方便大家模仿学习,基本可以解决大部分的PT模拟问题,可以设置自定义公式,科学性很高,能做的设置很多,能输出的东西也很多,可惜设立计算域和让其收敛比较需要技术
·学校软件之家的版本太老,计算效率低
·默认只用一半的CPU核心数,不加设置会浪费算力
·经常有教你怎么使用的workshop,参加了还会免费送3个月的使用
ANSYS 模型制作:自带一个十分直观且功能很强的3D建模,也可以和AutoCAD,SW,PTC甚至3DSMAX联动
模拟部分:几乎每个有限元模块都是行业领先的水平,例如做CFD的Fluent以及其电磁学模块都是业界首屈一指的,2017之后支持多物理场,如果你有机会亲自用一下,会发现它比起COMSOL真的不知道高到哪里去了,但是上手难度很大!自定义公式还有输出都需要很强的模拟与C++功底,除非简单的模拟或者已有的案例,不建议一开始就用这个,学习成本太高
每年的1月到2月底可以在官网白嫖教育版,但是可惜的是电磁模块被阉割掉了
ADAMS 这是一个力学计算软件,自己没有GUI,可以与ANSYS联动进行复杂的多体动力学计算还有柔性计算。(Automatic Digital Assisted Mechanics System) -
EDEMS 与之前的不同,这是一个离散元模拟软件,可以做实物粒子之间碰撞堆积等的模拟,如果需要离散元模拟,只有它一家了,不过离散元分析非常耗算力和时间 写邮件给他们表明来意,有机会获得短期的许可
ZeMAX 老牌的光学模拟软件,真的很强 -
Altium Designer 电路、PCB板的设计和模拟软件,在这个领域上可以说首屈一指 -

这些都是具有GUI的一些软件,涵盖了基本常见的制图和模拟软件,有人可能要问了,MATLAB之类的软件为社么我没提到?虽然Python、MATLAB等语言中也有包可以做,但是个人认为在新手阶段编程更适合做数值计算,模拟上除非是能解析出来的结果或者可以简单地被ode工具解出的微分方程组,利用的hoomd等包学习难度太高,对电脑配置要求也很大。
在这里,我一定要先指出,例如南京金华科公司的仿真物理实验室、KDE的STEP抑或是Interactive Physics都是玩具!他们是用来做高中物理教学课件的,请不要使用这样的软件做模拟,谢谢!

我该怎么学习建模和模拟?

从案例入手!
从案例入手!
从案例入手!
一定要杜绝两个心理:1.上来就莽,觉得我很快能学会 2.我要系统的学习。这两个都是不正确的,建模和模拟,尤其是模拟中的收敛问题,真的是一门学问,你不能指望花很少时间就成为大神,事实上,你可能更容易在使用之中被各种各样的报错搞到心态爆炸。也别指望花很多时间去利用官方课程学习,只是理论的学习实操还是差得很远的,反而会浪费很多时间学习不必要的知识,大家大学学习都很紧张,经不起这么多低效的学习。如果想要快速做好模拟,一定要找相关的档案,比如去年我们有一个喇叭优化声音的问题,COMSOL官方就提供了一个一模一样的案例,只需要改改参数,结果的计算方式,改改边界方程使其与自己的理论相同,如果是找不到完全一样的呢?你可以找类似的加以修改,比如去年一个研究电磁场中陀螺仪运动的,COMSOL并没有直接提供这样的案例,但我们可以找到一个类似的叫做“电磁制动”的案例,利用这个案例修改至少说可以帮助你学习如何建立边值条件,这对于初学的人帮助很大。当然不能说拿到模拟就只会改案例,毕竟还是存在那种完全没有相关文档的模拟需求,这就需要你每次找到相关案例的同时,一定要看着案例自带的教程自己操作一遍而不是直接修改现成的文档,这样才能在做中学,学中练,也能更好地解决遇到的错误。

那如果我遇到错误了,我该怎么办?


一定要学会利用网络,这些软件没有一个是新软件,都至少有十年左右的用户沉积,你遇到的大部分问题我想都可以在网上找到相应的用户论坛,一定有人在这么多年的使用中遇到你这样的问题!一定不要简单的复制错误信息,要针对问题搜处理方法,不然你很难找到真正自己问题的解答。实在解决不了,如果是之前靠白嫖获得的软件,可以联系软件开发商,如果是盗版的,可以在相关社区留言,或是就找找有相关经验的学长学姐解决一下吧,千万不要相信淘宝上那种几十块钱给你代做模拟的,他们收费贵,技术也不一定好,而且从他们做好的文档当中,你能学到的很少。
建模方面,我建议可以看一下我传在群里的IYPT公选课时用的PPT,里面有简单的入门,方便你熟悉大部分的建模软件的基础操作。当然,那个文档中包含的内容是远远不够的,需要你进一步的学习。

我们为什么做模拟?

不要看这个问题很简单,事实上很多人到比赛结束都没想清楚这个问题,所以院赛场上有很多实验不够模拟来凑或是理论不够模拟来凑的情况,这不是做模拟! 模拟是用来解决以下问题的:

  1. 我理论已经列出了相关的方程,可能是因为方程组太过于复杂,也可能是因为是高阶的微分方程,没有解析解,因此我们建立模型进行模拟,得出最终的结果,例如相图、趋势、关系。
  2. 有些实验条件过于苛刻,或者改变某些变量不太可能,可以利用模拟
  3. 利用模拟可以更好地说明我的理论,譬如流线图、场强分布图。
  4. 用来导出理论的数据,与真实实验拟合。
  5. 利用动画或是模型更好的展示结果

请再次注意,模拟不是你的理论,也不是你的实验!只能是数值计算工具或者是用于说明的工具!尤其请注意不要做与理论不符的模拟,这种问题常出现在你想用模拟器中默认的一些参量和式子来解决一些问题,这种来做难以得到现象的预实验模拟尚可,但是默认的公式还有参数真的符合你的理论吗?去年院赛就有很多人,利用流场中默认的公式模拟,COMSOL流场中有几个模型是自带NS方程的,但是这些人的理论中却用着什么伯努利方程,这两个方程的前期假设就不同,一个是可压缩,一个是不可压缩,你用一个与理论中假设完全不对的模拟来佐证你的理论,这样真的可行吗?因此做模拟一定不能稀里糊涂,请确保模拟中设置的公式你都明白且与你的理论贴合,不然,请不要使用模拟,凑数或者愣是想做得高大上得行为不可取。希望今年不要大面积有这样得现象,请再次注意:模拟是用来补充和辅助说明问题的,请不要当成是理论或是实验,也请确保一致性和有效性!

注意事项

  1. 请不要局限思想,利用3D建模技术制作实验器材: 请不要被现有的东西拘束思想,比如不要认为3D软件只能做模拟,大家可以依靠自己的3D建模水平来改装实验器材,这我想也就是3D软件存在的最初的原因,随着3D打印技术的提高,建个模型,切割或是打印出来,就可以制作买不到或者是学校不能提供的实验器材了!请不要被实验器材局限了思想,都利用3D建模了,就是要开放思维,设计出新东西!
  2. 误差还有收敛的调节一定要慎重,这之中的误差来去是很大的
  3. 请注意及时保存,这种软件很吃配置,容易崩溃(不要问我怎么知道的)
  4. 尽量避免离散元还有多体动力学的模拟计算,这种计算的复杂度都是按天或周计算的,大家赔不起这么久的时间,并且对于笔记本来说,长时间CPU计算对笔记本本身损伤很大,如果一定要做,建议先写邮件向相关经验的老师寻求建议,是简化计算呢,还是借工作站或是租借网上在线的服务器计算。

最后,作为学长,我祝愿大家都能顺利的学号3D建模和模拟技术,早日做出自己的第一个模拟,或是做出第一个利用3D建模技术制造的实验仪器,也愿你每个模拟都能收敛!PT加油!