工业软件为什么这么难?
发布时间:2022-06-10
工业软件中几乎最难啃的三座大山,就是CAD、CAE和EDA,大山中间还穿插了许多小的丘陵,如CAM、拓扑优化、工程数据库等。工业软件这三座大山,是人类基础学科和工程知识的集大成者。
尽管它支撑了整个工业的体系,但它的市场份额却小的可怜,不拿显微镜,是找不到它的存在。然而它自身的构成,分别是令人望而生畏的数学、物理、计算机和工程经验。没有一种产值如此微不足道的工业产品,却需要有如此漫长的生命轨迹。从大学的数学方程式开始出发,经过漫长的物理机理的冶炼、计算机科学与技术的萃取,最后还必须经过工程知识的淬火,才能成为一个成熟可用的工业软件产品。
图1:工业软件的技术图谱
四大技术图谱就像四座护法金刚,形成了深不可测的技术鸿沟。这对于任何一个工业软件企业,十年发展的沉淀,那还只是开始。这条路,太漫长了。
数学基础需要扎实
工业软件首先要有良好的数学基础。计算机辅助设计软件CAD这个学科的渊起和发展,主要是数学的一个分支微分几何突破之后,进化出了一个新学科——计算几何,孔斯、弗格森、贝塞尔等为CAD,CAE,EDA等软件所依赖的3D几何造型提供了强有力的理论基础,在此基础上发展起来的NURBS相关曲线曲面理论和算法是目前大部分商用软件所使用几何引擎的关键技术。
而仿真分析软件CAE无论对于数据的前处理和后处理,还是各种求解器,对数学也有很高的要求。
前处理不仅仅是数据导入、模型修复和显示,很大一块是网格剖分的能力,这部分的技术门槛不低。算是CAE领域后起之秀Altair作为有几十产品的上市公司,至今前处理软件HyperMesh还是最重要的旗舰产品,贡献了公司最多的收入,也是在CAE领域站稳脚的基石。后处理在大规模的数据处理和直观、动态、炫酷可视化展示方面也有很多需要研发的内容,尤其是在B/S架构下,如何通过Web页面快速高质量加载巨大的CAE计算结果,会是一个巨大的挑战。
工业强度的网格生成算法不仅有很深的理论问题,也有很大的程序开发工作量。德国的斯杭博士在德国开发Tetgen,从2000年左右开始一直只做这样的一件事情,坚持了20年,才有了和商业四面体引擎ghs3d竞争的能力。同样法国Distene公司开发的MeshGems系列网格剖分系统被广泛用于商业CAE软件,最早来源于INRIA(法国国家信息与自动化研究所),十几个研发人员也专注开发了近20年。
工业软件这条路上,尽是寂寞的黑夜中的探索。
在NASA公布的CFD VISION2030战略咨询报告中,网格生成是单列的五项关键领域之一,并被认为是达成2030愿景的主要瓶颈。就在这样一个高难度的领域,国内很多软件都是裸奔,依靠Gmsh之类开源算法无法满足客户定制改进的要求,很难做到工业应用主流中去。
优化也是普遍性的数值方法,包括优化理论、代理模型等,是求解复杂工程问题的基础,更不用说对各种路径规划所涉及的矩阵理论、泛函分析、动态规划、图论等等,无不是多约束条件下的多目标自动解空间寻优,背后都是数学王国建构的基础之基。
各种CAE、EDA软件中需要多种计算数学理论和算法,包括线性方程组、非线性方程组求解、偏微分方程求解、特征值特征向量求解、大规模稀疏矩阵求解等都需要非常深厚的数学基础。如果不能熟练运用各种数学工具,对物理场的建模也就无从谈起。
物理场面临着多种挑战
头疼的数学之后,接着是头疼的物理。这是仿真软件、EDA软件需要突破的地方。工业技术的源头,是对材料及其物理特性的开发与利用。因此,对多物理场及相互耦合的描述与建模是各种仿真分析软件的核心。
而工业软件由于要解决的是真实的大千世界,所有看得见、看不见的物理场,都在按照各自的机理自由游荡。工业软件必须要跨越十分宽广的学科光谱,跨越了钱学森科学技术体系的基础科学、技术科学、工程科学、工程技术,而且也会包含大量的经验、诀窍等“前科学”知识。具体而言,任何CAE软件在市场上存身的根本都是其解决结构、流体、热、电&磁、光、声、材料、分子动力学等物理场问题的能力,每种物理场都包含丰富的分支学科。
仿真分析软件CAE的求解器由物理算法组成,每个专业领域都有一堆问题求解算法,不同领域如电磁、结构、流体的求解器处理机制,完全不同,基本没法通用;另外一方面,跟FEA有限元方法有关,采用的单元类型不同,问题求解算法也不同。因此,虽然也有第三方的求解器,但无法像三维CAD软件领域那样形成通过出售几何建模引擎和几何约束求解引擎获利的商业模式。
以结构为例,为解决结构设计的问题,有可能会涉及到理论力学,分析力学,材料力学,结构力学,弹性力学,塑性力学,振动力学,疲劳力学,断裂力学等一系列学科。在这个基础上,主流的CAE软件都支持结构优化功能。相对于传统的CAE的仅限于评估设计是否满足要求,结构优化软件在创成式设计等先进技术支持下可自动生成更好的结构轻,性能优、装配件少的更优设计。
图2:物理场之上的工业模型
(来源DARPA)
由于现实世界的发展要求,产品的智能化提高导致的复杂度提高,往往产品本身涉及多场多域问题。物理场有太多的组合,相互之间又干扰不清。这些复杂的问题,既要深刻理解学科自身的物理特性,并对这些学科物理特性所沉淀的学科方程,如电磁的麦克斯韦方程、流体力学的伯努利方程、纳维-斯托克斯方程等等,深刻理解之外,还要对实际工程应用领域的多物理场交织耦合环境能够快速解耦,让不同学科不同特质的特征参数迭代过程中能够互为方程组求解的输入输出,以便对多场多域的工程问题进行优化。
随着现在需要处理的模型规模越来越大,模型本身也越来越复杂,现有国际上大型商业CAD、CAE、EDA中使用的几何建模引擎和几何约束求解商业化组件产品(包括InterOp、CGM、ACIS、CDS、Parasolid、D-Cubed等)厂商达索系统、西门子等也在不断跟进最新的计算机技术。比如最近也在采用多线程技术不断改进之前的算法,用于大幅提升模型导入、模型修复、缝合、实体建模、布尔运算、面片化以及约束求解的效率。
轮到了计算机科学
正如当年围绕机床的“数控技术”,很快就演变为“计算机数控技术”和“计算机辅助设计”一样,工业软件的诞生和早期发展受到计算机与多媒体硬件进步的推动,之后又随软件技术、互联网、计算模式的浪潮起伏。工业软件是软件,但它是硬件设备高度融合。二者无法分类,也不能相互修饰,就像两口子的结婚照,少了任何一张面孔都是不可想象的。工业软件,不可能忽视计算机科学与技术的问题。
这其中涉及到计算机硬件技术自身的迭代进步,从大型主机(Mainframe),到工程工作站,再到PC,最后来到云计算,甚至到未来的量子计算与普适计算,每当先进的计算技术出现,与之相匹配的工业软件,就会以鲜明的时代特征,出现在工业界的面前。
软件工程,是为了应对大型软件编码可靠性和质量管理问题的一门学科,而应时而生。它是支持协同开发、保障软件生命力的重要因素。软件工程是驱动软件全生命周期工程活动的基础学科。软件工程重点是算法分析、计算机安全、软件质量控制、软件测试与维护。这其中也涉及到系统架构设计、面向对象程序设计、数据库,计算机图形学与可视化、操作系统、编译原理、数据结构、HPC/GPU 并行计算等各种学科。
除了用户打交道最多的软件界面之外,工业软件需要涉及一个良好的软件架构和过程管理、统一数据标准、接口标准、方便几何建模引擎、约束求解器、前后处理、CAE求解器等优势资源集成。加速软件更新迭代,软件自动化验证,工程经验的积累,软件跨平台(集群,超算)部署,多种服务模式支持,二次开发脚本支持等,以至于后续大规模仿真数据的挖掘、分析等。
工业软件模型之间的兼容性问题,目前主要是通过遵循STEP标准解决的。在美国和欧洲,都有推动STEP标准开发及应用的非盈利组织,特别是近期包括波音、空客、GE、洛克希德-马丁等航空巨头推进的LOTAR(长期归档和检索)项目也是以STEP作为基础。各种CAD、CAE、EDA格式之间相互转换造成的信息丢失和精度丢失每年都会造成高达数十亿美元的损失,而如何有效复用这些模型数据也长期困扰着各个行业,特别是不少国内厂商在设计模型过程中没有遵循严格的标准,“制造”了不少问题数据,这些模型数据传递到下游行业也造成了很多问题,有些模型甚至基本不可复用。
工程知识是最后的淬火
如何将工业技术与知识写进软件,是业界最关注的议题。
麦克斯韦Maxwell能解决电和光的物理方程描述,但却解决不了一家电气制造商的设计制造问题。基础技术很重要,但不能解决工程问题。工业软件经过工程知识的淬火,才能与工业应用场景结合。
工业软件可以分为“基-通-专”的层次。第一层是类似CATIA、UG这样的基础通用平台。基础通用平台是最难的,它裹挟了多年的知识沉淀和用户使用习惯,因此门槛很高。在此之上,第二层是行业相对通用的知识,包括行业设计标准规范、试验测试数据、人机工程学等;而再上面一层是针对特定产品的专用知识,由于面非常窄,个性化非常明显,则往往更加小众,知识密度更大。
工程界的建模与分析问题,混合了很多不同维度的问题,既有基础学科的交叉如数学、如物理;又有不同的工程经验的混合。
图3:建模(鸣谢达索系统吴敏提供此图)
因此工业界,其实基本不需要听阿里系、腾讯系所谈到的“建模”。他们会谈到建模,但在那里,那是一种社会科学、软科学,事关消费、交易,是商业而不是工业,完全无法解决工厂里的物理世界。他们用了同样的名词,却在做着不同的事情。
一个简单的示例可以区分两者的核心区别,互联网公司的用户画像建模,它们的这种模型,用大数据抽取年龄、收入、地域、阶层、职业、学历等等,然后关联到购物交易嗜好行为。而工业界一谈到用户画像建模,其实是完全不同的概念。首先它是一个计算机完全描述的对象模型,其多态使用场景随后也精确表征,而这种用户画像模型,如果用在设计阶段,就是人机工程分析、使用行为分析;如果用在生产现场,就是一个资源,有其资质、劳动能力等级、关键设备持证,安全区域等级等等所描述;如果是一个终端用户,则不同大陆百分位身高、驾驶习惯、驾驶舒适感包络、地域色泽嗜好等等是这种模型的特质,因为这样的三维模型可以直接载入虚拟产品中进行各种场景的模拟优化和体验,而与偏向购物交易促销的互联网用户画像模型相差十万八千里。
图4:模型分析(鸣谢达索系统吴敏提供此图)
制造现场涉及大量的工艺过程,这种Know-how的转移,是一个非常复杂的知识扩散现象。各种工艺如铸造、焊接、冲压、锻造、切削、热处理等,各有各的现场诀窍。许多暗默知识,只可意会不可言传,师傅的言传身授往往是最好的方法。而工业软件,正是向这种知识转化进行宣战。大量的制造经验,要想变成算法、编码,固化到软件,那都是一个漫长的过程。工业软件的价值,因此得以凝聚。
实际上,工程知识的汇聚,也会形成用户的使用习惯。一旦用户形成深度依赖,后来者软件的替代将成为非常艰难的攻城术。在芯片领域,电子设计自动化软件EDA则深度地嵌入到芯片设计公司和晶圆代工公司,三者相互连接在一起,不可分离。很多EDA软件,根本得不到代工工厂的工艺数据,而这是EDA发展历程中最为重要的养分。没用了用户的反馈,软件因此而 “饿的面黄肌瘦”。
工业软件是人类制造知识的最好结晶体
工业软件是架构在数学科学、物理科学、计算机技术和工业技术之上的宏大建筑,一座复合型知识的宫殿。
工业软件最奇妙的地方,它一旦集成了前人的技术,它就很少会流失。这跟任何一种设备类的不同,一个老工程师不在了,现场工艺就可能断掉。但工业软件则是一层一层,既有来自软件厂商数学、物理奇才的心血,更有来自数百万工业用户的使用反馈——这形成了一座坚实的护城河。唯有如此,它综合了如此不同的精华,工业软件才成为人类知识的集大成者。
这是真正的工业之花。一花虽小,世界皆在。