
关键词:国产CAE,ABAQUS,工业软件,产品经理,有限元
1. 误打误撞又合情合理
未来的五年,你觉得你会在干什么?老实说,我心里是没有答案的。在百年未有之大变局的环境下,“确定性”是个稀缺品。
18年我刚从航空院校毕业那会,从未想到不到十年后的今天是这个样子。按照不知多少届师兄师姐的从业经验,我进入飞机设计单位以后,就踏踏实实的从助工到工再到高工一步步往前走,或者从科员到科室主任再到部级领导慢慢往上爬。在型号研发中发光发热,航空报国嘛,没什么新鲜,身边的人都这样过的。
之前的文章中提到,我当时铆着劲从0开始搞飞机结冰软件(我是如何开发飞机结冰软件的)。型号任务虽然重,但是出于对未来的美好设想,年轻人总是有使不完的劲。除了结冰软件,我一直没有丢掉自己专业的复合材料力学,花了很多时间研究本构模型,像疲劳寿命、冲击、网格算法、二次开发都是那会打下的基础。
也设想过干个5年以后换工作,但是当时的目标范围仍旧是专业相关的院所。房子反正是买不起的,且熬着吧。
就在一切按部就班,天天加班,日子毫无波澜的时候,时任美利坚总统唐纳德·特朗普向东方大国发起了贸易战。

每天加完班走的路
一时之间,风声鹤唳,包括芯片在内的所有高端工业都受到了影响。
在这个背景下,工业软件开始进入大众视野,大家开始审视自己学习工作中最重要的工具,内心不禁发问:如果没有这些软件,我的工作还怎么开展?
我也不禁发问,如果没有了CATIA,没有了HyperMesh,没有了ABAQUS,没有了Fluent,我能干什么?推导一些公式倒是也没问题,不过算法也是用MATLAB在跑。
当然,后来我们知道了,力学方向的工业软件大砍刀一直没砍下来,我们也接着奏乐接着舞了挺多年。
但是在当时背景下,开发国产CAE软件成为大家不得不重视的事情。我的能力更是很有限,一个结冰软件已经搞的我要死要活,我能做的一些小工作无非是对ABAQUS做一些二次开发。
再加上,我也不想离开心爱的飞机设计工作,也就没有想到要去搞工业软件。
直到20年。这实在是个神奇的年份,现在想想,好多事就是从那年开始变了。原先认为理所应当的逻辑,在那年以后突然就拐弯了。天南地北的试验、试飞、隔离、流程、报告,我开始审视自己的生活,难道就要这么过一辈子吗?

监狱一样的出差宾馆

几年了,苦点累点都没问题,主要这点微薄的收入也就勉强养活自己,想回报父母太难了,成家立业更是想都不敢想。那时候毕竟还是年轻,总觉得不公平,哪里都不对劲。费劲巴拉高考考了1000多名,本科踏踏实实学习,研究生拼死拼活做实验,工作了也是满腔热血的投入,依旧看不到希望(这只是当时的想法,现在看来,这种才是生活常态,人中龙凤尚且举步维艰,遑论我等平凡人)。

人教人教不会,事教人一遍就会。突然就不想干了,我是行动派,说不干立马就开始投简历。当时还没有低空经济这个概念,无人机口子的钱并不热。面了一堆,发现大部分也都是草台班子,工资又低,不觉得有什么前途。
刚好面到一家做工业软件的,我也没报啥希望,毕竟我也不是专门写软件的,当时能熟练掌握的语言也就是Matlab。
随橙想呢,我开发结冰软件的经历让对方很感兴趣,并坚信我一定能胜任软件的研发工作。

就这样我正式进入了CAE软件开发领域。
拜拜了,我的飞机设计。

2. 气氛烘到这了,开始写代码
工作一换,换回了读大学的城市。熟悉的感觉,熟悉的味道。
岗位还是要先适应一下,我的岗位是产品经理。熟悉了飞机研发那一套的我,对这个岗位是非常的陌生,它听起来太“商业了”。产品经理一般指的是互联网公司的岗位,负责产品设计,开发协调。
我上网一搜,搜到的都是大家怎么吐槽产品经理的。一般都说他是三头忽悠。对外忽悠客户,对内忽悠研发,对上忽悠老板。看起来,这份工作对我来说非常具有挑战性。

当时公司要开发一套管道应力分析软件,专门用于电力、石油、天然气等管网系统的应力安全评估,对标的是美国CAESARII管道应力分析软件。

和同事交流发现,其实也没有那么可怕,我这个岗位就是干“杂活的”。了解精品软件,研究它的特点,然后设计我们自己的软件架构和交互逻辑。再带着大家按节点干活。
实际上,这个时候在国内,工业软件要怎么干,也没人说得清,自己摸索呗。研究国外软件是我的专长,搞结冰软件的时候,我把NASA软件能了解的东西都深入研究了一番。搞ABAQUS二次开发,把ABAQUS的软件逻辑和特点都掌握了。
在这个过程中给我启发最大的,不是软件的设计开发,而是我开始了解到工业软件的行业性。搞航空航天久了,以为CAE软件无非就是ABAQUS、ANSYS、NASTRAN。当然,这些软件当年的起步都和航空航天需求脱不开关系,这也造就了他们在这个领域的绝对主导地位。
然而大量的民用行业,对仿真的精度需求没有那么高,他们最需要的是好用,算的快。所谓的好用就是完全贴合他们行业特点,比如如何快速建立管道并赋予保温层等等有管道特点的参数,不需要画网格,他们不关心网格。更关键的是,仿真要根据行业标准快速完成安全评估,软件里面如果没有嵌入行业标准约等于没有用。
这些工作如果用通用软件来做就费劲了,复杂的管网在建模、网格那块前处理就需要花费大量时间,对设计人员来说太复杂太耗时。
我负责的研发团队,当时缺了不少人手。我手里只有能做界面交互和三维视口的工程师,没有做前后处理算法和求解器的人。
缺人就缺人吧。一顿研究以后,我设计好了软件界面。这个时候我对前端还不是很熟悉,想当然的期待前端能赶紧做个样子货出来。后面求解器的人一到,就像给飞机装发动机一样,它很快就飞了嘛。
很快工程师告诉我,他们做不了太多工作,因为后端的人没有,他们不知道数据格式怎么设置成后端需要的样子,做了以后万一后面要改,他们还要重新做工作。
我第一反应是很生气,这特么就是玩不下去了呗,总不能天天坐着不干活吧,欺负我不懂忽悠我是吧。我可不是娇滴滴的...,我可是搞飞机搞力学的,有的是技术和手段。

不就写代码吗,我也写,不让用MATLAB,我就学Python,拢共就花了半天时间弄清楚了基本语法。第二天我就开始写前后处理。
首先我要做的是,打通美国CAESARII软件和我们软件的数据接口,让用户能把他们建好的模型导入到我们的软件。尽管我有ABAQUS inp的二次开发经验,也算熟悉这类问题。可是真做起来,才发现事情远不止这么简单。
主要是管道的类型太多了,不同类型的管道它的参数是不一样的。这就导致CAESARII软件的数据格式存储很怪异,它好像每次为了适应新的管道类型,就在原数据格式基础上打补丁。
我需要梳理清楚不同管道、不同材料参数、不同边界条件的格式,然后再动手写解析代码,这个过程花了大量的时间。刚好那会隔离在家一两个月,我有充足的时间整理和编写代码。为了防止自己在家太久了没状态,我每天早上起来像平时上班那样穿戴整齐,衬衫皮鞋。

另一方面,我根据自己了解到的数据格式,和前端一同确定了数据交互格式,就这样推着项目往下走。
3. 产品经理的日常
软件搞着搞着,我发现搞中间处理模块(我管它叫接口)是工业软件最大的工作。通过接口,可以打通建模到视口,前端到预处理,预处理到求解器,求解器到行标校核,再到选型等等工作。没有它,软件就串不起来。在这个过程里面,我了解到工业软件几个最基本上的东西:前端交互、三维视口、求解器、前处理、后处理。
在与大家的日常沟通中,我半学半不学的从他们身上学了不少开发知识。果然,写代码只有0次和无数次。在长期缺少求解器人员的时间,我又开始写起了求解器。管道应力软件用到的是三维梁单元求解器,当然要针对不同的管道类型开发专门适配的特殊梁单元,也就是从这个时候开始,我开始走进求解器的开发。除了梁单元,我还探索了非线性实体单元。
慢慢的,产品经理的生活开始步入正轨。白天,掐着点到公司上班,冲上咖啡,敲代码。敲一会,再给处成兄弟的同事一个眼神示意,一起去楼道修炼吞云吐雾。

下了班,自己在家就简单喝点。兄弟、同学喊吃饭,就出去喝点。期间还一度迷上了组装手表,每天回家捣鼓到半夜。



周报,我定好格式,大家每人填一下,然后我给Boss汇报。客户那边有啥需求我都去应付一下,产品宣传各种图我来弄,文案我来写。果然变成了三头忽悠的状态。
4. 从必然王国到自由王国
就这么过了快两年,这个软件在我手里从无到有,从0到迭代3个版本。却始终面临一个尴尬的问题,没人真的下单。谈的的人不少,下单的却很少。
问题出在哪呢?不光我负责的这个软件,其他软件也是一个样子。不光我们公司,其他公司也是。
问题还是出在特朗普。制裁的大棒一直没有真正砍到工业软件,大部分的工业软件还是该用就用。老拜登上台以后,搞脱钩那一套,所有的东西都是慢慢推进。一时间,似乎工业软件国产化替代不是件很着急的事情了。
国外的软件用着挺好的,干嘛要换。纵观ABAQUS、NASTRAN、ANSYS的发展,契机都是项目牵引,且当时这类软件处于空白,大家没得选。用着用着,软件才慢慢发展起来。
如果把他们放到现在我们同样的境遇中,也是很难发展的起来的。没人愿意用,就很难发展。
作为一个还有些学术追求的人,开发CAE软件带来了很爽的体验。按照以前的经历,难的东西可以发好论文,有了好论文,可以评职称。即便换了公司,软件不会跟我走,但是论文的署名还是我。
但是到CAE软件这里就不是这么回事了,有限元的基本理论已经很成熟,国外都有这么多成熟的商业软件了,想在国外期刊发出高水平的论文就很难。
我也尝试投稿过国内“算法”、“软件”类的期刊,得到的回复不是“与期刊研究方向不符”、就是“没有创新点”。得嘞,国内这些期刊也是指望不上。
一方面公司这块软件一直没有收益,另一方面开发软件积累的技术也没有办法变成自己的学术资历。我开始思考,如果继续这样走下去,能否长远。
这个时候我已经彻底喜欢上了CAE软件开发,以前我们用国外的高端软件才能做模拟计算,现在我们自己写的软件也能实现这些功能。以前是必然王国,人家软件有啥功能我们用啥。如果想自己增加点功能,还要花费很大力气学习软件接口,搞二次开发。搞完还觉得自己很高端,都能二次开发了。而现在,我们自己开发了软件,原本需要很费劲的二次开发功能,在自己的软件里轻轻松松的就能加上去,这是自由王国。
一旦尝试了自由的滋味,就很难忘得掉,或许我该换一种方式来搞软件了。
经过思量,我得出一个结论:只要有一个不是很忙的和科研相关的稳定工作,我才可以利用业余时间自己开发有限元软件。
在这个思想的指导下,我又回到了科研院所工作。但就软件开发来说,我从一个团队回到了一个人的状态。
我需要解决的首要问题就是全栈自研。求解器和前后处理模块我都可以自己写,最麻烦的是前端和三维视口。
刚好这个时候,ChatGpt横空出世。尽管那个时候,它还远远不像今天这么强大。但是有了ChatGpt的帮助,和以前同事的技术支持,我慢慢掌握了三维模型解析、模型渲染、模型交互。
前端相对来说要好学一些,QT所谓的信号-槽机制还是很容易上手的。大约一年左右的时间以后,我基本能独立开发CAE软件了。

5. 有限元软件与副产品
有了基本的技术以后,刚好单位这个需要开发各种软件,有仿真的,有测控的。静界有限元与您共研工业软件技术
我以前积累的梁单元技术,用在了转子轴系标高设计上。通过有限元加迭代算法,可以快速给出每个转子的安装标高。要是在以前,我肯定要费劲心思去通过ABAQUS搞二次开发。

前端和三维视口则用在了测控软件上,可以把试验采集数据实时映射到三维模型上。

就这样,我硬生生的从一个机械设计岗干成了软件开发岗。
当然,我没有忘了我学这些技术到底是为啥,我是要自己开发一个有限元软件。已有经验已经表明,搞通用软件肯定是死路一条,基础功能没人会买单。
搞行业软件,可能也是死路一条,因为国外软件现在卖的也不贵,大家还是倾向用国外软件。
好像两头都是死路,既然如此,索性搞一个自己能用到的软件。
我自己是搞复合材料力学出身的,做强度、疲劳等仿真的时候,都是基于ABAQUS的UMAT/VUMAT完成。但是UMAT/VUMAT这些子程序与ABAQUS 铺层模块互斥,而实体单元在处理复杂铺层的时候要么不好键网格,要么不好设置局部坐标系,要么就是网格量过大。
于是我萌生了开发一个复合材料壳有限元软件的想法,把我之前写的一些损伤、失效、疲劳、固化变形的本构放进去,计算效率远远高于实体单元,这样就具有了实际工程价值。(我为什么研发一个工程壳有限元软件)
壳是膜单元和板单元合并成的。相比于实体单元,壳是一种更高级的单元。“高级”体现在抽象能力:能用更低的维度、更小的代价,精确捕捉弯曲、翘曲等关键行为。壳单元“天生就知道”如何高效、准确地计算弯曲。它把复杂的厚度效应,提炼成了旋转自由度等概念。这相当于一个专用求解器,比实体单元更聪明,但是开发难度也更高。
在开发的时候,和实体单元比,壳和梁单元都有一个问题,就是局部坐标系和整体坐标系的转换。在做刚度矩阵的时候,需要从局部到整体。在计算应变的时候,又要先把整体坐标系的位移转换到局部。更关键的是,由于铺层角度的存在,又增加了一个变换。
有了前面的积累,这个时候我开发软件就从容多了,先给软件的1.0做了定位和画像:
1) 具备模型解析、网格离散、铺层定义、材料定义、边界条件定义、三维视口交互、复合材料壳求解器、云图渲染、动画等基本功能。
2)具备渐进失效的非线性模拟能力。
3)网格离散的通用性决定了需要使用三角形单元。但三角形单元的壳,其刚度矩阵比四边形更复杂,三角形壳单元使用面积坐标,其导数与几何形状的关联更复杂。为了得到精确的刚度矩阵,通常需要Hammer积分(3~7个积分点),且雅可比矩阵的表达式更为繁琐。
为此,软件开发的第一步不是写代码,而是推导刚度矩阵。

接下来就是按部就班的写代码,做调试,做验证。


我很庆幸做软件开发之前,我ABAQUS已经用的很好了,型号项目、力学试验、本构模型都做了很多。这让我知道如何设计算例,如何与商用软件对比,如何让交互方便开发人员使用。
我之前在CAE公司的时候,另一个开发通用有限元软件的负责人,号称海归力学大博士。但是不会用专业软件画网格,复杂点工程模型的网格见都没见过,简单讲就是完全不了解实际工业场景。ABAQUS用的也是入门级,复杂的本构模型也没搞过。就这带着一帮人开发FEM软件,无异于闭眼走夜路,能搞好就是撞见鬼了。
目前1.0版本已经做了出来,还额外实现了复杂铺层、变厚度的建模与模拟。


应力

失效分布
6. 一种生活方式
最近看到一个说法,就是男人为什么会喜欢开车,正经的那种。
因为他一旦坐在驾驶位,这个时候他不是谁的父亲,不是谁的下属,不是谁的丈夫。他就是一个单纯Driver,一个两吨重的精密机械完全在他的掌控之中,想走就走想停就停,想快就快想慢就慢。生活中大部分的事情,他是掌控不了的。唯独这个车,不会跟他顶一句嘴,绝对的服从。

我在有限元软件的开发中,获得的体验是类似的。不需要去为了实现某个特殊功能,而死磕商用软件二次开发,不需要为了某些难以处理的模型而想破脑袋。
需要什么功能,我可以自己写,一旦写出来,就像驯服了一头猛兽,从此它就是一个标准模块,随时听我的指挥。
以前导师说他没有爱好,就爱做项目和喝酒。我当时嗤之以鼻。现在,日渐中登的我本身也没多少爱好,戒烟以后,无非就是喝喝酒,做做项目,写写代码。大部分的事情都不以我们的意志为转移,烦不了那么多,开心就好。
欢迎大家关注静界有限元自研的有限元求解器、复合材料有限元软件、飞机结冰软件。
QQ:2440864277;
微信:jingjieyouxianyuan;
淘宝同名:静界有限元
京东购物:静界FEM工作室
夜雨聆风