|
发表于 2004-3-15 14:00:20
|
显示全部楼层
CFD工程(二)
[这个贴子最后由supersonic在 2004/03/15 02:45pm 第 4 次编辑]
俺的意见:
主要采用C++,实现一套模板类。AMROC的结构,在我看来还是很不错的。
所以我想
1.网格(几何属性等)、网格操作(网格的细化和粗化、网格之间的区域布尔运算……),网格包含的求解数据及其操作类模板(网格之间的数据交换、通信、限制与插值,网格的物理外边界和计算内边界处理……)。复杂拓扑结构完全是这一部分的任务。
2.针对单块网格的"一步"积分器以及相关操作的类(初始条件、边界条件、残差光顺、守恒性修正、细化点标记、求解变量修正、辅助变量的计算、各种线性方程组解法、各种格式的通量计算、各种限制器……)。这个单步积分器和整套网格的拓扑无关,它仅仅是一块结构网格的积分器。所以便于各种算法的添加和修改。而且,这样以来,差分法和有限体积法的差别就不大了。
3.求解器类。包含求解器类(属于一个顶层组合类,将网格、数据、"一步"积分器等等组合起来,实现一个整套网格上一个时间步长的推进)、求解控制类……
4.CGNS封装(CGNS输入输出、访问、修改)以及辅助类(如格式转化)。
5.辅助类。包含结果的输入输出、外部求解控制参数的透明化输入(指不依赖设备)、STL……
分类1和分类2之间由网格包含的求解数据类耦合
分类2组合成为分类3的求解器类
分类1、2、3以分类4为总线
各模板类中对计算要求高的函数可以采用fortran90、C或者不包含抽象数据操作的C++实现。
开发平台是个有点头疼的问题。俺希望这个东西是跨平台的。本来UNIX/Linux是首选,资源丰富,效率高。但是国内条件有限,不少单位还在用M$ Windows。但是偶目前好像还没听说M$ Windows上有比较好的C/C++/F90全套解决方案。Visual Studio那套做混编还是很麻烦,而且MS的NMake和UNIX的Make不兼容;PGI for WIN32居然不包含C++;GNU还没有实现f90。也许只能用GNU的C++和fortran77的。
此外,我还是希望先化功夫分析一下Overture这个东西。 |
|