本系列文章研究成熟的有限元理论基础及在商用有限元软件的实现方式。有限元的理论发展了几十年已经相当成熟,商用有限元软件同样也是采用这些成熟的有限元理论,只是在实际应用过程中,商用CAE软件在传统的理论基础上会做相应的修正以解决工程中遇到的不同问题,且各家软件的修正方法都不一样,每个主流商用软件手册中都会注明各个单元的理论采用了哪种理论公式,但都只是提一下用什么方法修正,很多没有具体的实现公式。商用软件对外就是一个黑盒子,除了开发人员,使用人员只能在黑盒子外猜测内部实现方式。
一方面我们查阅各个主流商用软件的理论手册并通过进行大量的资料查阅猜测内部修正方法,另一方面我们自己编程实现结构有限元求解器,通过自研求解器和商软的结果比较来验证我们的猜测,如同管中窥豹一般来研究的修正方法,从而猜测商用有限元软件的内部计算方法。我们关注CAE中的结构有限元,所以主要选择了商用结构有限元软件中文档相对较完备的Abaqus来研究内部实现方式,同时对某些问题也会涉及其它的Nastran/Ansys等商软。为了理解方便有很多问题在数学上其实并不严谨,同时由于水平有限可能有许多的理论错误,欢迎交流讨论,也期待有更多的合作机会。
iSolver介绍视频:
http://www.jishulink.com/college/video/c12884
==自主CAE开发实战经验第二阶段总结==
有限元基础理论和Abaqus内部实现方式研究系列的文章已经完成了20篇,我们每十篇将写一篇自主CAE的总结,网上分析自主CAE的得失的文章已经很多了,我们站的角度不同,不是从国家战略的层面上来呼吁自主CAE的重要性,这边的总结仅仅结合结构有限元求解器iSolver的开发具体谈谈实现自主CAE过程中的切身经验和体会。上一次的总结文章有兴趣的可以看下面的链接:
本文主要是第二阶段的开发经验总结,iSolver上一阶段主要是技术功能的开发研究,而第二阶段在开发新功能的同时,在推广和工程化应用的过程中有了更深的体会。
自主CAE软件,无论是理论水平还是软件开发能力,国内比我们做的好的比比皆是,有些不愿意公开宣传,有些在满头练内功。我们更希望和大家交流,得到大家的反馈,深入的讨论具体怎么实现自主CAE的方案和实践。也许我们这一代永远替换不了商软CAE,但至少我们可以一起策划未来怎么替代,替代过程中有哪些雷区我们可以先尝试一下,节约后来者的研究时间,并且可以留下个样板房,大家可以从中看到自主CAE不是那么遥不可及,还可以像愚公移山一样留给下一代人去解决。iSolver的目标也是希望做一个求解器的开发平台,大家可以在这个平台上更加快捷和深入的学习有限元知识,对国内做自主CAE的人也可以降低编程难度,当效率提高了,才可能省下时间来专心研究算法和后面的商业化推广,很多时候开发自主CAE的同行并不缺少技术和推广的能力,也能找到些自由支配的时间,但可惜很多时候被开发效率和协同而白白浪费了,而且很难积累。自主CAE需要的是百花齐放百家争鸣,现在用户对国内的CAE基本不相信,无论你是做什么行业什么专业的,当大家都花时间在潜心研究自主CAE时,才可能把自主CAE真正做到实处,给客户信心,新的自主CAE也更容易被客户接受。
现在的国外CAE一套动辄数百万,这个定价明显虚高,小企业根本承担不起,很大程度是垄断造成的,只有中国国内有了可替代的方案,国外的CAE软件的价格才会主动降下来,这对我们每个企业来说可以省掉一大笔经费。而且国外CAE还有各种限制措施,国防关键工程不能用,license节点数目受限,内部计算方式不公开,这些都需要国内自主CAE成长起来才有谈判资格。
很多做技术的人都看不起商业化,那是不是可能因为恰恰是我们商业化做的不好或者根本无力做商业化推广呢?我们以前一直从事技术方面的开发工作,以前觉得技术是最重要的,但在自主CAE商业化推广摸索一段时间后,才发现技术是最次要的,商业化推广更重要,当你商业化做的好的话技术是可以用商业搞定的,看看最近几年大厂商在不断的合并就知道了。
在以前,商业化肯定只能是靠金钱才能堆出来,但现在网络资源很多,传播途径和范围也可能现象级的,同时有些成本都可以忽略,这也给了大家更多的机会方便的宣传自己的产品,使得自主CAE的宣传有可能和商软在同一个舞台了,就像现在的技术邻一样。
几乎所有的工程师都会梦想提出一套方案解决所有问题,并为之付诸半生的努力奋斗,最终毫无意外地折戟沉沙。需求是无限的,软件能力是有限的,明确的定位和务实的发展计划是自主CAE软件一开始就需要考虑的。国内许多高校和研究机构曾经研发出了优秀的CAE软件,却没有能够坚持下来,除了受国外商软的冲击外,很大一部分源于自身的定位迷失和不合理的发展计划,在某些项目中成功实施后,胆大的全线铺开大踏步前进,死在追求“通用”的路上;胆小的犹犹豫豫原地徘徊,迷失在寻找“通用”的路上。“通用”似乎是一个有魔力的词,是所有软件都绕不开的坑。直至目前为止,国内的大多数研究机构和高校仍然沉迷于通用数据格式、通用数据接口、通用功能等字眼,却不知若干年前有一种词叫“中性”。取舍是这个阶段最重要的能力和品质,对需求进行取舍,在取舍的过程中把握住行业的动向,看清楚自身的能力和特点,明确自身定位,制定切实可行的发展计划。
应用有两种:
第一种是深度:做个超大工程证明自主CAE的求解能力,千万网格量级以上,多少p以上级别的超算资源,而且还要连续算个几天几夜以上,这种高档饭店的应用一个完整的例子就能测出程序的计算速度和内存,优化你的程序结构。优点是展示度好,领导们重视,缺点是一个项目做完,很难推广到另一个项目,再重来一遍,从另一方面来说,这也是优点,一次做完了,后面哪还有项目。
第二种是广度:就是大众化的谁都可以拿来直接算算的小问题,这种问题一般几万个网格就够了,普通pc机上都可以运行,时间差不多5分钟也就运行完了。如果你的目标是产品开发,那么对程序开发起到更大作用的是这种路边大排档的应用,这种应用才能给自主CAE快速的反馈,形成批量的改进意见,指引我们产品的开发方向,然后产品版本不断的迭代。
现在国内自主CAE基本都是第一种大工程的应用,第二种普通的应用难做、没展示效果,而且也没法考核。所以现在的课题等基本都是以XX大型项目为示范验证,导致很多做自主CAE为了完成项目更是只能花大把时间去做前面点上的应用,而没有精力去做后者面上的应用。
第二种普通的应用难做,我们觉得相对技术来说,另两个问题更突出:
(1) 用户对商软的深度依赖。也许有一天国外断供,打开软件发现无法启动然后又要完成以前的任务时,可能才能意识到自己对商软是何等的依赖。
(2) 用户对国内自主CAE软件的不信任。不仅是结果的正确性,还有软件的用户体验和发展前景等,转换平台是要花费成本的,不光是时间,还有对未来的投资。
而现在应用国外商软占垄断地位的情况下,如何在普通的应用上推广自主CAE呢?我们觉得必须和商软结合,接口按商软标准开发,和商软对接转换数据,甚至在商软平台上做二次开发和集成,做那些只是修修补补、搞个界面看起来毫无技术含量的定制,在商软的世界中摸爬滚打,一个项目也许你99%的工作都献给了商软,但至少还有1%的经验留给了自己,那么等你做到100个仿真二次开发和商软集成的项目时,你也可以第一线理解商软的应用场景,理解客户的业务流程,从而基本了解自主CAE往后怎么应用了。这也是商软的核心,只是大部分人都认为二次开发就是搞个界面最没有技术含量,领导不重视,也没经费,更不能发文章。黑猫白猫,抓到老鼠就是好猫,对客户来说,只要能满足我的业务需求就行,至于底下是不是商软还是自主的,不重要,等到了你能编出上层的业务界面后,那么底层才有机会用自主CAE来替代商软。
国内做有限元理论和算法研究出色的不在少数,在有限元的技术方面国内并不缺少,况且有限元软件总是滞后于最新的有限元理论技术的。但技术好和将技术转化为代码形成产品是两回事,可能是两批人,两个公司,两个领域。整合这些有限元技术,让软件在不断吸收外部技术的同时还能往前发展,需要的是一个技术积累的平台。这个平台我们认为应该具备两个最基本的特点:
1) 可扩展。
这个平台首先要求是架构完善,可扩展性很强,已经考虑了对未来的技术方面的积累,新功能在平台中能找到位置。这个需要花费大量的时间去调研,甚至在你编第一行代码前,如果你做的CAE软件有对标软件的话,那么就对标商软的架构研究是一个好途径,商软是个黑盒子,但很多情况在外面的表现也可以猜到内部是怎么实现的,然后再找开源代码或者编写小程序去证明一下。同时开源代码的架构也是不错的研究对象(如果是研究开源的算法,还是要谨慎的,商软一般都会修正)。
2) 易维护。
这个平台的快速迭代和维护应该也是在你的团队能力之内的。在国内,除开个别国家单位,自主CAE在实现商业化应用前都是纯投入,而且没有个几年时间基本不会出成果,上面的领导和一起作战的兄弟们都需要养家糊口完成经济指标,只能挤时间开发,那么平台的可维护性就极其重要。在外人看来,只要技术上可行,时间不是问题,可以加人、可以加班。要是协同和加班能搞定的都是小问题,平台有些技术上的缺陷很可能是人数越多开发越慢,团队所有人7X24小时还完不成的。现在很多都基于开源代码开发,这个要分情况的,如果你不准备修改开源代码,那么没问题,集成个初步版本看到效果是很快的,后面开源软件升级时还能一块升级。但如果你后面还需要维护和功能的添加,那就很考验团队消化能力了,不是自己编的代码理解是要花大量时间的,在整个可能超过10年的CAE开发过程中,基于开源代码花费的时间不一定比从零开发少,而且,还没有知识产权,有时还不如自己开发,就当是一场马拉松,不在乎起跑,只在乎终点。
平台的优劣直接决定了积木垒起来的高度,决定你的技术转换为软件代码所能达到的高度。平台没做好,现有的代码就如同建立在流沙上的房子一般,总有一天会被冲垮,甚至是现有代码越多,反而为了兼容以前的代码更是难以发展,只能带着脚链前行,前面的坑还没填好,后面又在坑上建房子了。
在研究商软实现方式的过程中,很多次发现商软都比我们预想的复杂,譬如壳单元的刚度矩阵,我们以为研究清楚了Abaqus中S4R、Nastran的Quad4等的修正方式,然后编程在iSolver中实现,结果却发现商软后面有更多的修正,再譬如虽然我们现在做的是求解器,但我们知道后面还有“前后处理”更麻烦,远比我们做求解器花的时间更多。商软后台的有限元大师和软件架构工程师们就像一个个绝世的高手,编写了绝妙的解决工程问题的算法,在一个我们现在都无法测量高度的山峰上等待着别人去探寻,同时设置了无数的小山坡消耗你的体力。高手们可以腾云驾雾,但我等资质平庸之辈只能老老实实一个一个山坡努力的往上爬,希望有朝一日领略到最后的山峰有多高,多雄伟。
我们并不是什么理论大牛,可能理论水平还没有读文章的你高,这么多年来一直在发展进步仅仅是我们有一个还算完善的有限元开发平台iSolver。这个平台还有很多不足之处,但起码满足了前面我们所说的两个特点:
(1) 可扩展。整体按增量迭代法的流程实现,功能点的扩展都以子程序的形式单独添加,子程序的接口按Abaqus标准开发,框架和子程序完全独立,可由不同的人维护。
(2) 易维护。我们从零开始整套代码自己编程实现,对内部的技术细节都非常清楚,新功能点开发和老功能的更改可以在相对较短时间内完成。
因此,我们可以在这个平台上不断编程研究有限元理论和商软的算法修正,也能将这种研究后的代码转换为程序放到这个平台中,功能不断的积累,后面研究新理论时可以站在以前的理论基础上前进,形成良性循环。同时,有些我们实现不了的部分也可以请专业性更强的单位协作开发。
iSolver不仅是个求解器,同时也是个学习有限元和深入了解商软内部实现的平台。光看理论书很多公式都不够直观,而光操作商软无论你花多少时间,总有个天花板在那,只有真正的自己编程才可能将书本理论、商软操作和内部实现三者融会贯通。而iSolver相对商软的二次开发编程来说,学习效率和成本也会降低很多,可以让学习者更多的关注算法本身,而不用花费太多无意义的时间在调试代码上。我们在往后开发iSolver的过程中,也依然会在这个平台上一步步的尝试,如果有了新的功能,也会像现在一样开发相应的接口,配合视频和文章,让后来者在这个平台上深入理解有限元的基础理论和商软的内部实现。
如果有兴趣,你可以现在就下载iSolver尝试一下,照着我们视频中的例子做做看,纸上得来终觉浅,须知此事要躬行。在学习的同时你也可以开发属于自己的材料、单元子程序,并形成自己的算法库,在iSolver平台上不断积累,iSolver子程序的接口完全按照Abaqus的标准实现,而Abaqus的子程序接口在近几年内已经基本不再变化了,同样的,虽然iSolver在不断发展,但iSolver子程序接口将维持不变,所有在iSolver上编写的算法子程序都只要维护自己的算法部分就行,而不是维护整个有限元求解的整个过程。
也希望你像我们一样有一天突然觉得,原来自主的CAE也不是难于上青天,或许我也可以编程试试,一旦你开始自己编程,那么恭喜你,你将进入另一个世界。也祝愿你有一天也不需要使用iSolver,而是在自己的平台上摸索发展,国内的CAE的发展需要更多的自主平台。
(1)自主结构有限元开发框架iSolver下载地址:
http://www.jishulink.com/content/post/337351
1) 1Mb的Abaqus插件程序
2) 1分钟的安装过程
3) 和Abaqus完全一致的使用方式
4) 编程效率远超Fortran的Matlab子程序开发
(2)邀请你一起学习有限元基础理论和编写单元程序:
https://www.jishulink.com/college/video/c14948
深入浅出有限元:基础理论->Abaqus操作->matlab编程
3)邀请你一起学习有限元材料理论和编写材料程序:
https://www.jishulink.com/college/video/c13034
Abaqus用户子程序UMat详解与开发工具
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删