|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
[这个贴子最后由supersonic在 2004/03/25 01:35pm 第 1 次编辑]
1 为什么要剖析Overture源代码
作为一个大型项目,必须做好充分准备。我们大多数人没有做大型项目的经验,因此必须有所借鉴。最好的方法莫过于剖析现成的CFD软件源代码,从中学习大型计算软件的设计思想和开发经验。
目前完全开放的CFD软件不多,技术比较先进、具有实用性和通用性的似乎只有Overture这一个。所以我们选择Overture作为学习对象。
2 Overture简介
Overture大概在1996年由美国Lawrence Livermore国家实验室的应用科学计算中心开始开发。Overture是一个面向对象的微分方程求解器的C++代码框架。它可以为那些涉及到复杂运动区域内的物理现象数值模拟提供可移植的、灵活的开发环境。Overture采用C++实现,提供一套C++类库隐藏了复杂的数据结构和数据操作,使得用户可以在脱离数据结构访问的层次上使用有限差分或者有限体积法。Overture被设计为使用结构网格或者多个结构网格来求解。它能够使用曲线网格、自适应网格AMR,以及采用重叠网格来处理具有运动部件的复杂区域。Overture目前不仅仅具有求解器,还有自己的前处理和简单的后处理工具,初步能够采用CAD模型创建网格。
Overture基本上有几类C++类库组成:
(1) A++/P++ 实现串行和并行环境下数组类的封装,以简化C++环境下对数组操作,并提供并行环境下的数据通讯和数据分配。
(2) Mappings 定义计算区域及其几何变换,如曲线、曲面、面积和体积等。
(3) Grids 定义与计算区域匹配的网格以及网格操作。
(4) Grid functions 作为网格上的求解变量(密度、速度、压力……)
(5) Operators 提供基于有限差分或者有限体积的微分运算操作和边界条件操作。
(6) 可视化工具
(7) 自适应网格Adaptive mesh refinement,实现重叠网格上的网格自适应以提高计算精度和效率。
(8) 负载均衡工具,实现并行环境小的自适应重叠网格计算的负载均衡。
(9) 第三方提供的并行机制和优化工具。
Overture框架本身不包含特定求解器,求解器是自定义的。但是Lawrence Livermore同时为Overture开发了一些CFD求解器,能够求解高速可压缩流、不可压缩流、低马赫数弱可压流、非牛顿流体和化学反应流动。
我们认为Overture是一个相当先进的CFD软件。它综合采用重叠网格和AMR技术使得它对于复杂几何和运动边界问题具有很大的灵活性,它的面向对象结构赋予它很好的可扩展性。所以我们相信剖析Overture本身已经具有很大意义。
3 初步的源代码剖析计划
Overture本身很庞大,大体上分为3个源代码包:底层数据结构类库A++/P++、开发框架Overture和CFD求解器OverBlown。A++/P++不涉及具体的数值计算,因此可以暂且不作为重点,我们只需要了解它的用法。重点在于开发框架Overture和CFD求解器OverBlown。
鉴于Overture和OverBlown的依赖关系,先剖析Overture才能更好的理解OverBlown。
开发框架Overture和CFD求解器OverBlown是由各种类组合而成,所以自然分别对每个类进行剖析是合适的。此外,除了C++类库,Overture还带有一些网格划分程序也需要剖析。
剖析计划参与者分为若干个小组、每个小组负责一个类或者一个程序的源代码剖析。最终提供附加有详细解释的文档。小组内部和计划成员之间的联系交流方式待议。
剖析源代码比先前我们做过的文档翻译计划要复杂得多,因此需要对注释和文档做一些规范。建议文档要足够详细,不仅仅是解释源代码,还要说清楚源代码采用的方法、原理、公式、出处,必要时必须附有图片说明和参考文献。具体的文档规范待讨论后决定。
4 计划招募成员的要求
鉴于这个计划有相当的难度,因此对参与成员的要求比较高。初涉CFD的朋友和只会使用商业软件的朋友请量力而行。
a. 具有一定的CFD编程经验,精通C++语言和Fortran语言。
b. 志愿剖析Overture和OverBlown类库的成员必须有一定的CFD基础,熟悉基本的数值计算方法。否则看不懂源代码背后的原理。
c. 志愿剖析网格划分程序的成员必须对Linux下的Motif编程,网格划分理论有一定了解。
d. 具有认真严谨的态度,能坚持,富有自由与共享的精神。剖析别人的源代码是一个比较艰苦的工作,在这个过程中必须认真严谨,并能够锲而不舍。而且编写文档必须抱着能让读者轻松读懂的目标,不能敷衍。此外,这个计划是没有回报的,如果说有,那就是你剖析一个类的源代码,最终会得到所有源代码的文档。因此自由与共享的精神是必须的,任何企图投机取巧、占便宜的人不必参加了。
Overture源代码包下载地址 h**p://www.llnl.gov/CASC/Overture/henshaw/overtureDownload/overtureDownload.html |
|