一份工作面试,猛然认识到企业对计算软件设计本身的重视,而非仅仅算法。在流体中文网上有个su2小组,想到以后有大神可以讨论,跃跃欲试了。
想从设计模式入手,认识该项目。su2_cfd 首先是一个完整的cfd求解器,包括前处理,后处理和求解器。
前处理读入配置参数,没有gui;后处理支持paraview, tecplot,gcns等格式;数值积分超类包括初始化子超类(CGeometry), 求解器子超类(CSolver), 和算法子超类 CNumerics。 符合设计原则一:将变化的部分,独立出来。
CSolver的子类实现具体控制方程的求解。该超类的设计符合设计原则二:针对接口编程,而不是具体实现。
另外CSolver向下依赖varaibles类和cnumerics类。 而variable又调用更底层的vectors/matrics数据结构,同理cnumeircs调用更底层的空间/时间步进算法,对流/粘性项算法。符合设计原则:依赖抽象,不要依赖具体类。即上层组件与底层组件接耦,通过中间抽象层通信。
另外,su2是大s飞行器优化设计实验室的作品,优化