大家好,我是兵哥,相信很多同学在B站等平台看过我的一些视频,在这里和大家分享一下我学习有限元的经历和感想。
回想起来接触有限元已经有十多年的时间了。最初知道有限元是在本科课程中,有一门名叫有限元的课,但是当时我并没有完全听懂。主要是因为自己当时对弹性力学理论的认识就不够深刻,所以不能体会到这种方法建立的思想。和我一样没听懂的同学应该是大多数。看得出当时老师特意放慢了速度,非常想把内容给大家讲明白。但是在一次次重复后,台下依然是疑惑的目光和尴尬的冷场,大家好像能从老师无奈的脸上看到三条黑线滑下来……
不过那类课程比较偏重理论,并没有教大家有限元软件的具体操作。后来,在全班同学copy了学霸的程序,自己经过一番魔改完成了课程报告后,有限元的学习就算草草了结。当然,作为一个力学专业的学生,注定和有限元“尘缘未了”。
在大四的毕业设计中,我开始使用ANSYS有限元软件。其实,有限元并不是个新理论,它的基本方法从上世纪60年代就已经问世了。但真正让有限元走进工程实践的是这些大型通用软件的出现。原本有限元是一种“低阶”近似,靠网格密度去获得精度的“笨方法”,自己手动编程还是比较吃力的,尤其是在计算机不发达的时代,占用的算力比较可观。60年代人类登月时用的计算机恐怕在今天比大家使用的智能手机的运算能力还要逊色很多。但时至今日,大型软件已经让工程师的工作量大大减轻了,很多复杂的工作都已经模块化嵌入软件中,工程师只要导入几何模型划分网格,设定边界条件,做一些求解设置就可以比较轻松地完成一些基本的计算工作。
在使用ANSYS经典界面的过程中,最初感觉是非常崩溃的。首先,安装软件就是一个非常繁琐的过程,有时候可能花一个星期都不一定能用。其次,它的经典界面观感非常“复古”,简直直接劝退啊!在用户交互操作(所谓GUI)的过程显得非常不智能,而且很多功能竟然智能靠在那个框框里输入古老的命令方式去使用,而没有对应的界面按钮。不过后来学习了APDL编程后就觉得用起来还是非常方便的,用命令流编程几乎可以把原本复杂的操作瞬间搞定,那种“指哪打哪”的爽快体验完全可以让你获得无与伦比的快乐。因此,ANSYS经典界面我一直用到博士阶段。后来ANSYS公司开始推出workbench,这种新的界面很大程度上改善了GUI的面貌,让这个软件更加“现代化”了。收购了FLUENT以后,也让它成为了“流固通吃”的巨无霸软件。
不过当年我使用软件也只是做一些科研理论模型的验证,并没有接触太多的复杂几何模型和大规模的工程计算。博士毕业后,在新的课题任务要求下,我还是学习使用ABAQUS软件。一直知道这是一款以非线性计算见长的,同样历史悠久的软件。不过ABAQUS的GUI界面就显得“高大上”很多,对初学者也比较友好。它会给你一种错觉:一上手就感觉自己已经掌握了。模块里鼠标点一点就能完成一些基本操作,让使用者“自我感觉良好”。一旦深入进去会发现,它的难度陡然上升。尤其是需要做二次开发编程的时候,ABAQUS的前后处理使用的是PYTHON语言,而内核计算使用的是FORTRAN语言,这给我带来了一定的困扰。如果想“玩转”这款软件需要同时掌握两种编程语言。在学习过程中,我无数次怀念ANSYS的APDL语言,这才真正体会到APDL是多么的方便。从去年开始接触ABAQUS的基本操作,一直到自学python二次开发,子程序二次开发,逐渐感到我们在市面上找到的各种资料真是“良莠不齐”,网上的很多说法经不起实践检验,造成“一看就会,一用就废”的情况成为了学习二次开发的常态,有时候一个简单的问题可能会卡住很久不知道如何解决。我在购买了几乎所有市面上有的关于二次开发的纸质书,同时参考帮助文档和论坛资料等的基础上,终于有所感悟,在不断踩坑又不断跳出的过程中又逐渐找回了二次开发的畅快之感!
对于这两款市场份额最大的有限元软件,我个人的学习体会是。学习有限元软件就像一个求师问道的人去一座山上找寻武林秘籍和宗师。ANSYS就好像那宗师住的房子在这山顶上,你需要自己爬上高高的山崖才能踏进师傅的院子,但院子里非常平坦,进入以后就好像一个大广场上漫步一样;ABAQUS就像师傅的院门开在平地上,你推开院门进入院子以后,发现院子里有一座山,而真正的秘籍在那高山顶上。入门以后还要沿着崎岖的山路不断攀爬,才能到达光辉的顶峰。
在学习有限元软件的过程中, 我也深刻感觉到有限元软件二次开发自学者的艰辛。同时,我自己的记忆力也比十年前有所下降,学过的东西可能过几天又记不清当时的思考过程了。所以我就把自己学习到的内容和操作过程录制下来,一方面可以帮助其他自学的同学一起学习,避免大家再去重新踩一遍我踩过的坑;另一方面也可以作为自己的备忘录,在需要的时候可以随时温习。在录制过程中,我也感受到“费曼学习法”确实是一种高效的学习方式,自己梳理并讲解一遍可以让自己理解得更透彻,印象更深刻。我把这些自学过程的总结视频发到了B站和知乎等平台,没想到受到了很多自学者的肯定和关注,建立的交流群也在短时间内拥有了三百多人的规模。大家对有限元软件学习的需求之旺盛,和被各种资料误导之深,都是我意料之外的。和大家一起学习讨论,不断解决问题的过程也是更加有趣和富有挑战的。
转眼十年过去了。但是学无止境,我接触有限元时间虽长,但仍然在学习的过程中,还有非常多的不懂的地方。理论学习需要不断反思,技术精进需要不断实践。在思考与实践的反复迭代过程中提高自己的理论认识和技术水平才是有限元的正确打开方式!