工业软件研发的“难”是共识,但是到底有多难,难在哪里,具体表现在什么地方,很少有讲清楚的。
在笔者看来,工业软件研发真正的“难”是:人家研发投入打磨三四十年,而你只想三四年就“赶上”!
另外关于工业软件“难”的描述,也对应之前关于“卡脖子”技术的定义:
技术门槛高,起步投入资金多;
研发耗时费力,需要长期积累,3年起步,成熟5-10年非常正常;
花钱买不到,买到只能用,无法转成自己的东西;
保密,专利核心技术点多。简单讲就是即使投入研发也不一定做的出来;
在行业内具有垄断性,无可替代
工业软件领域的很多技术都是比较透明公开的,只是深入研究打磨的时候很耗费成本。所以很多时候,我们看到讲工业软件的“难”,罗列一大堆知识,都只是主观上的臆测,真正做起来的时候,卡在技术面上的少,点上的多。
以下是之前从笔者研发经历中列举出的一些“难点”,并不只是单纯的技术问题,而是考虑了业务等非技术因素:
1. 如何定位仿真和试验之间的误差:这是个系统问题,一般而言,仿真结果很难和试验完全匹配,原因是多方面的,很多时候仿真也不是追求完全和试验精准匹配,而是得出符合规律的结论
2. 如何提升超大模型的性能:一直以来,超大模型处理是任何一款软件容易出现瓶颈的内容,也是公众号介绍的重点,参见超大模型处理系列文章 工业软件研发中处理超大模型(9)--ChatGPT介绍的方法 和 一篇文章入门仿真软件性能优化
3. 软件架构设计:软件架构设计是软件产品的框架性内容,需要经验丰富的软件研发经验。参见CAE软件架构设计
4. 网格自适应加密相关:自适应网格加密和几何,网格,求解器紧密相关,不同领域的自适应加密重点不尽相同,也是需要长期积累的技术项。参见 深入理解数值计算网格(全篇)
5. 高效生成六面体:目前为止,商业CFD软件可以全自动生成六面体网格,而结构分析中很难全自动生成高质量的六面体网格。
6. 大规模线性方程组求解效率和准确性:大规模线性方程组的高效稳定求解仍然是世界性难题,也是公众号介绍的重点,参见 一篇文章入门大规模线性方程组求解
7. 高性能计算,分布式/并行计算:这块涉及到各种工具和第三方库的使用,是需要长期试验积累的技术项。
8. 几何清理和修复:现在仍然没有一个工具能够完全高效,自动化进行几何清理和修复。未来也是可以借助AI的内容。参见 深入剖析三维几何内核(全篇)
9. 根据业务网格全自动化生成:理想的网格是同时符合几何和物理场分布的网格,包括商业软件在内,一次性生成满足要求的网格目前仍然很难实现,依赖工程师经验。
10. NP问题求解:NP问题在很多优化设计领域仍然缺乏全局最优解
11. 优化算法实现和应用:优化算法的有效性严重依赖实际模型,缺乏统一通用的模板,同时也依赖工程师经验。一篇文章入门计算机辅助优化(Computer Aided Optimization)
12. 理解偏微分方程的解析解和数值解:这个就是基本功,没什么好讲的
13. CFD里湍流模型理解和应用:湍流模型众多,实际项目中选择合适的湍流模型非常依赖经验;湍流模型参数众多,研发中也是需要调参积累经验的工作项。
14. EDA软件虽然小众,但是却是整个半导体行业的基础,而且覆盖面相当广,要有一个全流程的知识体系也需要长期积累。参见 一篇文章了解EDA(全)
15. 多物理场中的耦合计算:目前大部分耦合计算为弱耦合和单向耦合,强耦合难有工业应用,但实际上强耦合求解才更符合物理规律。
16. 回归测试功能:工业软件需要建立庞大的回归测试用例,每次新加功能和调整,需要保证所有回归测试正确。
17. FEM/FVM/FDTD/MOM/LBM无网格等数值方法的理解:数值方法的理解是求解器开发的基础,但是复杂的物理和数学提高了求解器开发门槛,这块需要长期的学习应用和经验积累,没有捷径。
18. 工程中的边界条件理解和应用:边界条件处理是偏微分方程中的重中之重,在实际工程应用中决定了仿真的准确性。
19. 各种求解线性方程组库的功能,性能测试:这个需要根据业务选择合适的库,作为基础性功能也是需要长期测试积累的内容。
20. 第三方几何文件交互:全球主流CAD软件有几十家,目前只能借助于第三方商业组件完成交互。
28. H单元混合单元形函数。高阶单元中如果使用混合单元,进一步增加了刚度矩阵的生成难度