求解器是工业仿真软件的核心模块,没有之一。
求解器开发的特点是:
注重专业业务逻辑,存在大量的独立数值计算算法
数据量大,难以调试和维护,也容易造成性能瓶颈
和上层数据接口简单,通常只需输入数据以及配置文件;
底层经常调用第三方工具,容易造成数据依赖,比如线性方程组求解库
作为核心,对性能,精度,可靠性要求很高,也就是经常说的“快准稳”
业务层面功能扩展需求明确,比如支持新的边界条件和荷载类型,和第三方求解器耦合等
需要支持大规模并行计算
在使用过程中,需要经常被上层应用调用
需要支持多平台,Linux运行效率普遍高于windows
OpenFOAM在层次化和模块化方面做得比较好,把求解器按类型特点直接做成了多个可执行程序,但是这种设计对于上层应用来讲也存在弊端,当多个求解器需要联合使用,或者不同求解器底层数据存在耦合以及需要加新内容时,就需要重新进行封装。
软件模式是将模式的一般概念应用于软件开发领域,即软件开发的总体指导思路或参照样板。软件模式并非仅限于设计模式,还包括 架构模式、分析模式和过程模式等,实际上,在软件生存期的每一 个阶段都存在着一些被认同的模式。
设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。
简单说:设计模式是在某些场景下,针对某类问题的某种通用的解决方案
从工业仿真软件整体设计角度看,求解器开发是天然需要封装,隔离,扩展,模块化和层次化的,而设计模式能有效应对这种需求。在设计研发过程中有意识地使用设计模式,能显著提高研发效率,减少出问题的几率,从而改进软件质量。