了解的朋友都知道,本号既不是流量自媒体,也不做一般的科普和工业软件使用教程。所有文章都是围绕工业软件研发底层技术而谈!
网格生成作为工业仿真软件的一项重要的基础性功能,必然也是研发的重点和难点。在前期介绍网格的基础上,本文就简单聊一聊网格相关功能的商业开发。
有朋友可能会有疑问,商业开发和一般的开发区别在哪里?
其实商业开发的难点主要在于解决实际工程问题:一方面基本的功能都要有,另一方面要能满足工程中各种稀奇古怪的需求,有些可能是反常识的工程问题。在一般功能的基础上,对网格生成的性能,稳定性,兼容性都有更高的要求。
比如我们常用的几何内核为ACIS和Parasolid,网格引擎需要能直接读入ACIS和Parasolid的数据,避免二次导入的数据损失;现在的模型越来越大,设计越来越复杂,网格要求有更精准的参数控制来处理大模型,满足性能要求,生成符合实际需求的网格;针对逆向工程和AI建模等新趋势,网格模块要能处理扫描出的大量无用数据和脏数据,有能力进行数据清洗等预处理工作;此外网格智能加密和稀疏,支持混合单元,网格拆分组合,网格修复,虚拟拓扑,并行网格划分等也一直是应用领域的刚需。
从功能需求看,网格的开发分为两部分:
网格引擎开发;
业务应用开发;
网格引擎提供底层网格划分技术,包括标准几何导入识别,实现网格划分算法,网格优化,生成结果网格数据,导出标准中间网格格式等等,是基础性功能研发。目前这块整体看开发资源相对较少,开源的比如getgen,tetgen,gmsh,CGAL都有提供,可以作为学习和参考的资料。 综合性的功能比较全面的商业组件选择余地小。
业务应用开发在网格引擎的基础上,实现业务的实际需求,比如自动设置合理材料,边界等信息,最终生成求解器需要的网格文件。这块直接和业务挂钩,是大部分网格开发的重点。
很多专业软件因为对网格的需求比较集中和明确,因此开发往往同时包括了网格引擎和应用业务开发。这也是未来仿真软件开发的趋势,即根据自己业务需求开发网格功能,掌握和开发底层网格生成算法!
本来打算在商业开发中讲讲网格引擎的设计和实现,以及业务应用开发。发现内容太多,泛泛讲没有深度,也没有太多指导意义,后续有空再聊。
从十多年的工业软件研发经历看,网格作为基础性功能,技术更新十分缓慢。更新主要集中在性能比如多进程,分布式计算,几何接口扩充,实际仿真业务需求等。可以预见,未来也不会有太多更新。相比求解器,几何内核,网格功能相对独立,且内容比较集中,没有太高的瓶颈和工作量,更多是算法上的实现和完善(注意:只是相比几何内核和求解器)
从国外大环境看,各大厂商也都在加紧布局工业软件的底层核心业务,换句话说,以后在全球都很难买到底层应用模块,甚至使用可能都会比较困难。
目前国内工业软件发展如火如荼,想在这块有所作为,网格功能要早早介入底层开发,进行长期技术上的积累。
相比之前的网格入门介绍,“深入理解数值计算机网格”系列介绍了更多工业仿真软件中的网格细节,但是相比网格功能算法的具体实现,实际应用,仍然只是皮毛。后续有空会更多介绍网格引擎的设计,算法实现,网格和业务的结合以及在工业实际中的应用。