【PHP开源代码栏目提醒】:网学会员为广大网友收集整理了,70 《高性能计算发展与应用》 2009年第四期总第二十九期 - 培训资料,希望对大家有所帮助!
70《高性能计算发展与应用》 2009年第四期 总第二十九期工程计算
开源软件OpenFOAM-1.6简介以及其在魔方上的编译和使用?? 魏志刚 同济大学桥梁与隧道工程系 上海 200092 99dw@tongji.edu.cn?? 葛耀君 同济大学桥梁与隧道工程系 上海 200092 yaojunge@tongji.edu.cn?? 王 惠 上海超级计算中心 上海 201203 hwang@ssc.net.cn?? 刘 波 上海超级计算中心 上海 201203 bliu@ssc.net.cn摘要:OpenFOAM是近五年来在国际上十分活跃的一个基于有限体积法的CFD
开源软件,使用用户与日俱增。
在国内,也有越来越多的人在接触和使用OpenFOAM。
本文简介了OpenFOAM的历史和发展以及国际研究现状,分析了其内容和主要的特色,以及以中国上海超级计算中心的魔方为例,介绍了OpenFOAM的使用及编译方法。
最后,本文也对OpenFOAM在中文社区的推广提出了建议。
关键词:OpenFOAM,CFD,C++,中文社区1. OpenFOAM的简介OpenFOAM 是 Open Field Operation andManipulation的简称,这一
开源软件起源于英国帝国理工大学的Gosman教授的团队,最初的一些C++类出自 Charlie Hill 的博士
论文,后来到1993年由Henry Weller以及后来的 Hrvoje Jasak持续不断的开发而形成的。
一直以来,一个真正面向对象的CFD底层类库是非常令人期待的,比如说,如果方程 (1)倘若能够简单的表示成solve( fvm::ddt(k) + fvm::div(phi, k) - fvm::laplacian(nu() + nut, k)== nut*magSqr(symm(fvc::grad(U))) - fvm::Sp(epsilon/k, k));
代码中,由fvm或者fvc以命名空间来分别处理隐式和显式离散,ddt、div、laplacian等分别来处理时间导数,散度,拉普拉斯算子等各种张量的运算。
这种C++
代码形式将是非常理想的,可谓真正做到了“面向对象”。
OpenFOAM的特色正在于此——也就是通过构建稳定强大的底层类库,使得顶层应用更加简易灵活。
虽然OpenFOAM随着它的各个发布版本中会附带许多的应用程序,但是OpenFOAM本质上却是一个C++工具箱,是用C++语言编写的基于有限体积法的CFD工具箱。
OpenFOAM的核心是一个类库,它的前后处理和求解器都是从中自然衍生出来的,以至于像式1这样的偏微分方程能够由终端使用者灵活的构建,这大大减轻了后继开发者的负担,并极大的增加了
代码的扩展能力。
网上社群化,对现在每一个软件(商业的或
开源的),其意义都是极其重大的,
开源软件更是如此。
稳定的核心维护团队,定期的发布更新,用BBS来提供全球性使用者的交流平台,都是网上社群化的主要内容。
其中BBS的活跃程度集中体现了一个软件的全球热度,BBS有有助于搜集、反馈、交流、扩大使用经验,极其有利的促进一个软件的血液循环、新陈代谢。
早先2000年时,FOAM曾经一度作为71工程计算应用软件系列介绍商业软件由Nabla公司销售,后来到了2004年,被释放成
开源软件,称为OpenFOAM,在GPL
开源协议之下,由 Henry Weller 创立的 OpenCFD 公司予以发布。
它出色的CFD应用能力和高书写水准、出色的背景团队以及紧跟CFD的前沿,使得它不久便名声大噪,超过其它以有限体积法为基础的
开源软件,如OpenFlow等,成为全球CFD中最大的
开源社群,更在2009年加盟CFD-Online,成为其中一大独立的BBS板块,也是CFD-Online中唯一的非商业软件讨论版,总贴数在短短五年内已经逼近40万,仅次于ANSYS,可见其影响力以及其在业内所赢得的关注。
CFD以及其直接相关的研究领域,比如说湍流研究等等,如今的发展都是突飞猛进的,如果一个
开源软件或
开源平台有足够的高度,并把握住研究的前沿,则必然会吸引到无数研究者的目光。
这能使后续的研究者更有效的专注研究重点以及有更广阔的视野。
事实的确如此,OpenFOAM在发展中,不断的吸收了全球许多高校CFD梯队的精华,特别是欧洲的高校,比如Gosman教授下的诸多博士
论文对OpenFOAM的误差估计,数值算法,网格自适应,自由表面,多相流,湍流模拟等模块的贡献,还有后来其他欧洲学术团队在材料力学的相关研究以及燃烧模拟的植入。
这些都使OpenFOAM底层类库在应用的范围上更加的扩大。
2009年7月28日,OpenCFD公司释放出OpenFOAM-1.6版本,这样的话,基本上是每年都发布一个新版本。
目今,在网上存在的几个版本中,有两个最主要,一个是由Henry为主的OpenCFD公司的发行版本,另外一个是由Jasak为主的克罗地亚版本。
现在这两个版本在底层类库和上层应用的涵盖范围已经存在许多的不同。
Jasak教授克罗地亚版本的OpenFOAM,又称为OpenFOAM-dev版,其版本号一般比OpenCFD发行的版本要晚一拍(现在是OpenFOAM-1.5-dev版本),但二者版本号的差别不代表能力的差别,dev版本在底层类库和上层应用上常常更加丰富,是非常引人关注的一个版本。
最后还有就是通过svn或者git进行网上同步的一些版本,比如说1.6.x版等。
也有的开发者开发出OpenFOAM的live CD等安装使用光盘、live USB等,以及一些用户致力于移植OpenFOAM到Windows平台上,不过关注这类使用的用户群毕竟较少。
现在不容忽视的一个用户群比较多的是pyFoam工具,它的涵盖功能多,使用反馈非常好,其
代码和使用方法可以从OpenFOAMwiki上下载得到。
每年pyFoam的维护者Gschaider都要在OpenFOAM的workshop上作进展汇报。
就笔者而言,OpenFOAM主要的帮助和信息渠道有以下几个:??网上的BBS交流平台,CFD-Online的OpenFOAM板块,是最主要的交流平台。
其下分安装版,
代码版,试用版,前处理版,后处理板,Bug版,通知版。
中文流体论坛的BBS用户社群也在近几年内开始形成。
??官方发布的帮助文档,包括UserGuide和ProgrammersGuide,虽然远远不够详尽,但是对于
学习OpenFOAM来讲却是极好的入门手册;??OpenFOAMwiki网站和Jasak教授梯队的克罗地亚网站,都是重要的经验和资料库,如果想深入了解OpenFOAM的具体内容,则可以来这里
查询;其中OpenFOAMwiki网站对审视OpenFOAM的所有相关内容非常有帮助,是OpenFOAM的一个不断完整的在线百科全书;??要更深的明白具体理论背景等等,就需要读相应的
论文、专著和其它文献,这些可以从克罗地亚网站上下载到一些;??最后要说到的是刚刚出现的FDP(The FOAM Documentation Project)工程计划,意在最大程度的凝聚和完善OpenFOAM的
文档系统,这也是目前OpenFOAM用户感到的主要不足之处。
FDP工程主要从三个
文档的撰写为纲,搜集用户使用经验(文本形式)并且由专家组审核并整理收入到“使用手册”中,目前三大主要的使用手册分别是Utility Guide和Modeling Guide和Solvers Guide。
2. OpenFOAM的类库和应用程序CFD的数学本质主要是为了求解流体运动的Navier-Stokes偏微分方程,但是随着现在工业应用的不断推广,类似燃烧,多相流,自由表面,流固耦合,湍流模拟等等都使得CFD中要处理的方程越来越多,这是每一个CFD软件都要顾及到的。
另外,在CFD数值模拟软件当中,有一些共通的模块是必须要考虑到的,这些模块可以分开编写和处理,但同时,必须要考虑到彼此的依托关系,这些模块包括:??场的运算(场,指的是在流体领域中频繁出现的标量矢量等等各阶张量形成的流体场);??网格生成,处理,运动,拓扑变换;??离散形式(有限体积,有限元,有限差分或拉格朗日粒子追踪);??可定制的边界条件;??线性方程矩阵的处理和求解技术;??可定制的流动物理特性;??给终端用户提供的程序(包括单相和多相流体流动,热交换,燃烧,湍流,扩散,电磁学的模拟);72《高性能计算发展与应用》 2009年第四期 总第二十九期??由于许多模块具有相同的功能,应该给予统一的封装,提供统一的出口口径,如各类湍流模型;??各模型之间的组合(如流固耦合、自由表面等工业常见的耦合现象);??CFD的矢量性计算和并行化植入对于现在任何的CFD软件都十分重要;上面这些重要的模块和前期
设计考虑,基本定型了OpenFOAM的底层类库,以现在的版本1.6为例,其主要类库包括:表1 OpenFOAM的主要类库类别主要功用OpenFOAM基础类全局性设置内存管理基础类(算法定义,量纲和各阶张量的定义及其运算,差分格式,场的操作,矩阵操作等)数值算法类有限体积?? niteVolume普通偏微分方程ODE有限面积?? niteArea拉格朗日法lagrangian应用类并行
通信PstreamCFD相关工具cfdTools动网格处理和拓扑变换dynamicMesh发动机模拟工具engine网格操作工具meshTools有限体积网格运动操作movingFvMesh有限体积网格拓扑变换topoFvMesh三角面网格操作triSurface模型类粘性模型transportModels热力学模型thermophysicalModels湍流模型包括大涡模拟和雷诺平均模拟turbulenceModels图1 OpenFOAM计算流程跟所有的商业软件和CFD应用类似,OpenFOAM其CFD应用的流程主要是三个过程——前处理,求解以及后处理,这点跟Fluent很相似。
图1是OpenFOAM的前中后求解流程和相应的各主要应用程序,这些主要程序包括OpenFOAM自身的以及OpenFOAM调用第三方的。
OpenFOAM目前已经取消了基于Java/C++的GUI界面FoamX的开发,因为OpenFOAM的真正持久的用户大多数都对GUI界面并不感兴趣,而事实上也的确如是。
前处理主要处理的是网格和边界条件,流场初始化。
OpenFOAM随着其发行版,自带简单易用的一些网格处理工具,但是也同样支持其它前处理软件。
OpenFOAM本身自带的有blockMesh和始于1.5版本的snappyHexMesh,二者生成的都是六面体网格,blockMesh在简单的边界条件下生成结构化的网格还是十分方便的,许多用户的使用经验是,在边界条件不是很复杂,并且流域可划分为少于十几块儿的情况下,使用blockMesh还是很方便适宜的,更加复杂的需要诉诸于其他专门的网格处理器。
实际上,OpenFOAM各式各样的前处理和后处理与其它软件的转换接口形式多达数十种,涵盖了业内诸多著名的商业和
开源网格生成软件以及图形化显示软件。
接口开发事实上并不复杂,多半都是关乎文件格式的问题。
实际上,网格操作技术、动网格等技术是十分活跃的CFD板块,因为这牵扯到诸多工业流动。
在后处理中,除了数据的分析处理之外,一个不可缺少的就是流动显示的视觉化。
跟前处理一样,OpenFOAM提供两种选择,一种是使用官方发布版采纳的paraview(已经为OpenFOAM“特别定制”,成为paraFoam),另外一种将结果转化导出,73工程计算应用软件系列介绍使用其它第三方软件来视觉化。
paraFoam现在已经采用的paraview版本为3.3。
至于用户若要选择其他商业可视化软件包括著名的ANSYS的各类产品、以及Ensight、Tecplot、TotalView等等,后处理接口目前也都是丰富的。
至于计算中的各种关系参数的实时可视化监控,比如残差等等,OpenFOAM现在尚不支持,事实上更多的OpenFOAM用户似乎更习惯于shell界面。
但是正如在上节提过的,目前有pyFoam工具(使用python语言)可以做这些工作,它调用的是Gnuplot。
除了图形化显示之外,流场数据的分析,比如说流态的显示,涡量的生成,涡的鉴别,三分力系数等等,这些更重要的非可视化的后处理,OpenFOAM处理的能力更比商业软件更灵活更丰富,可定制性更好。
最关键的求解器方面,OpenFOAM的求解功能随着用户社群的扩大,越来越多的求解器被开发出来。
目前,随着两个官方发布的版本,求解器已经涵盖可压与不可压缩各式流动分析,单相多相流分析,燃烧和热交换分析,自由表面分析,牛顿与非牛顿流体分析,流固耦合分析,电磁学分析,金融分析,误差分析等等。
不但如此,各样大型矩阵的迭代求解方法,Navier-Stokes方程的求解控制,湍流模型参数的控制,各种自定义边界进出口条件,初始流场条件,OpenFOAM更是都向用户“敞开的”,也就是说都是可以自定义的。
跟商业软件相比,没有任何的黑箱操作,并且诸多的求解技术、湍流模型和边界条件,更是商业
软件在该特定技术尚不成熟的时候不能,也不敢发布的,这越发凸显
开源软件在学术研究上的优势。
3. OpenFOAM在魔方上的使用、编译以及运行3.1 编译和使用之前须知本编译过程只是一个参考,并不是也很难涵盖所有的可能性。
以目前的1.6版本,linux平台,64位计算机结构为例,目前OpenFOAM随其发布,主要有四个可下载的文件分别是:1) OpenFOAM-1.6.General.gtgz2) OpenFOAM-1.6.linux64GccDPOpt.gtgz3) ThirdParty-1.6.General.gtgz4) ThirdParty-1.6.linuxGcc64.gtgz前两个是OpenFOAM自身的软件包和预先编译好的可执行文件压缩包,后两个是与OpenFOAM密切相关的第三方软件包及预先编译好的可执行文件压缩包。
OpenCFD官方发布的预编译执行文件,编译环境是SUSE系统,硬件就不得而知了。
但是可以确定的是,从新编译第三方软件以及OpenFOAM,显然更有助于提高计算速度。
在编译OpenFOAM之前,必须对第三方软件包,有所了解,知道哪些是必须的,哪些是可以删除的,以及重不重新编译究竟影响如何。
所谓的第三方软件,也都是著名的一些
开源软件,OpenFOAM不负责其开发和维护,只是调用,或者为对接做一些不复杂的调整而已。
其次,关乎编译的最核心的是Gcc编译器,这也是OpenFOAM推荐的编译器,其它编译器,OpenFOAM现在并没有做到无缝化支持,包括Icc、Pgcc理论上都是可以的,但是编译起来会遇到不少难度,但使用Gcc编译则
问题寥寥。
至于pison、binutils、gmake、flex等这些基本系统编译程序是不可或缺的。
编译器可以使用第三方软件包中的Gcc也可以使用自己下载的最新版本。
要执行并行计算,则必须使用mpi通讯库以及负责通讯的程序,OpenFOAM默认推荐的是openmpi(如今openmpi对infiniBand的支持也很好了),但是用户的使用经验明确表明,mpich,hpmpi,lam等都是可以的,但是这些负责mpi通讯的
程序编译时需要注意一些共享选项的设置。
至于并行效率的比较则跟用户自身的硬件条件有关。
第三方软件包中没有网格划分的
开源软件,blockMesh以及SnappyHexMesh均由OpenFOAM自身开发携带。
至于一些动网格处理技术,则有时要调用到第三方软件。
并行计算需要预先做区域划分,OpenFOAM在区域划分的第三方软件中目前采用了
开源中算法较高的metis和scotch。
为了后处理可视化,OpenFOAM使用的是ParaView软件。
如果用户不需要后处理可视化的ParaView功能,或者是用其它的程序进行可视化,则可以不用编译此项。
相应需要的第三方软件预备以及编译妥当之后,才可以进行编译。
主要需要注意的是两点,一个是环境变量的设置,一个是编译内容的调整。
环境变量的设置(本文以bash shell为例,其它shell设置一样道理),三个主要的设置文件都是在etc文件夹下面,bashrc文件,以及bashrc调用的settings和allias文件。
最后,无论是使用预先编译的包,还是准备开始编译,都需要先使OpenFOAM相关的环境变量设置生效。
在 ̄/.bashrc文件中,source一下etc/bashrc文件即可使所有的OpenFOAM(使用和编译,以及第三方软件)所需要的环境变量设置生效。
为了编译,以及以后的使用,三个设置文件的内容都必须十分熟识,这是编译和使用的基本。
3.2 快速使用方法74《高性能计算发展与应用》 2009年第四期 总第二十九期以魔方计算平台为例,下面几个步骤是快速使用的方法。
1) 下载上节所述官方的四个压缩文件包(64位);2) 在自己的账号下建立一个OpenFOAM的文件夹,将下载的四个压缩文件放在此文件夹之下;3) 解
压缩(顺序不分先后)四个压缩文件包,于是OpenFOAM可源
代码以及可执行文件就都出来了;4) 在自己的 ̄/.bashrc文件里加入对 ̄/OpenFOAM/OpenFOAM-1.6/etc/bashrc文件的source,然后重新source一下自己的 ̄/.bashrc文件,OpenFOAM就可以使用了,注意默认的选项都在etc目录下的三个设置文件中,并行的mpi库是openmpi;5) 假如说计算的算例是空腔流cavity算例,一般习惯是,将计算的工作目录设置在 ̄/OpenFOAM/username-1.6/run目录下,于是建立
工作目录: ̄/OpenFOAM/username-1.6/run,OpenFOAM随发行版一般会发布一系列案例指导,都在目录 ̄/OpenFOAM/OpenFOAM-1.6/tutorials文件夹下面,将该文件夹下的icoFoam目录下的案例,cavity文件夹,拷贝到上面建立的工作目录;6) 第一步要做的是网格划分,执行blockMesh命令;7) 第二步,是决定究竟使用多少个处理器来求解,然后就进行区域划分。
区域划分的执行是修改文件 ̄/OpenFOAM/username-1.6/run/cavity/system/decomposeParDict,例如使用8个cpu计算,则修改第一行为“numberOfSubdomains 8;”即可,使用metis划分即可。
然后在 ̄/OpenFOAM/username-1.6/run/cavity目录下,运行decomposePar;8) 在不需要作业
管理系统的计算机上,这时只需要在工作目录 ̄/OpenFOAM/username-1.6/run/cavity下执行mpirun -np 8 icoFoam -parallel > log &即可,但在魔方上并行计算是通过lsf作业调度系统管理lsflsf的,因此需要递交
作业脚本,作业递交脚本的示例文件:#!/bin/shMY_MPI_TYPE=openmpiMY_MPI_HOME=/home/users/username/OpenFOAM/ThirdParty-1.6/openmpi-1.3/platforms/linux64GccDPOpt/#!/bin/shAPP_NAME=esourceNP=8#NP_PER_NODE=4RUN=”RAW”#rm -rf PWD/nodelist >& /dev/nullfor i in ‘echo LSB_HOSTS‘do echo i >> PWD/nodelistdone#mpdbootmpirun -machinefile PWD/nodelist -np 32 ‘which pisoFoam‘ -case FOAM_RUN/cylinder/cylinder -parallel > cyl &3.3 参考编译过程重新编译有助于优化计算性能,下面将在魔方上编译的参考过程按顺序列于下边,这些设置有些是必须的,有些只是参考。
1) 准备好软件
代码,只解压缩ThirdParty-1.6.General.gtgz,ThirdParty-1.6.linuxGcc64.gtgz,OpenFOAM-1.6.General.gtgz这三个文件,是一个很好的开始,或者接续上一小节的快速上手之后,输入foam转到OpenFOAM-1.6的主目录然后执行wcleanAll,即可将已经编译好的OpenFOAM可执行文件擦除,有一个全新的开始;2) 需要提醒的是etc下面的环境变量关乎到编译的所有方面,并且三个设置文件内容很清晰,编译者必须熟知里面的每个设置;如果在比较复杂的编译环境下,还需要熟知的wmake里面各shell脚本的作用,以及wmake/rules下general和另外一个
系统架构相关的目录下的编译设置;当然在魔方下,系统因为是64位,SUSE-Linux,所以wmake下的设置可以忽略;3) 几个编译以及OpenFOAM
代码编译需要的软件是binutils,flex,Gnu-make,以及为了编译后处理paraview所需要的cmake;4) 在etc下面的三个设置文件中,在魔方中设置为64位,双精度(DP选项),优化编译模式(Opt选项);5) 首先要准备好编译器,首选推荐的GNU-gcc编译器,版本越新,越能减少编译器中的bug,下载的ThirdParty-1.6.linuxGcc64.gtgz压缩包下会带有gcc编译器,也可以选择使用系统自带的Gcc,注意在etc的settings.sh文件中,有指向此编译器的设置,指向位置要设置好。
另外,从新下载最新的编译器源码,编译编译器Gcc仍是一个对优化更有益的选择,本文在此略过gcc的编译过程。
6) 下一个是mpi的选择,在etc设置文件中,可以看见默认的mpi选择是openmpi,如果想从新编译openmpi则需要先将ThirdParty的openmpi下的platforms文件夹删除;也可以选择其它mpi库,比如75工程计算应用软件系列介绍说mpi,mpich,mpich2,mvapich,hpmpi等;7) 再者就是编译内容的选择以及删减,因为并不是每一个编译内容都是需要的,在src目录下的Allwmake文件,以及ThirdParty目录下的Allwmake文件都有编译的具体内容,比如说如果不需要可压缩计算,就可以通过src/Allwmake文件的指向将相应的可压缩流动的类库编译关掉;其它可以关掉的选项其实并不多,即使关掉某些也对编译时间没有节省多少;OpenFOAM的基础类库编译需要很长一段时间;8) 最后的编译只需要在OpenFOAM-1.6目录下执行./Allwmake即可;由于OpenFOAM-1.6/Allwmake文件主要调用三个Allwmake,分别编译的是src目录下的OpenFOAM基础类库,OpenFOAM前后处理以及求解器(称为applications,下分solvers、utilities等),以及ThirdParty目录下的第三方软件(具体内容可查看ThirdParty-1.6/Allwmake文件),由于applications文件夹目录下需要编译的内容较多又不经
常用到,所以,编译前,可以先将此关掉,等基础类库编译完成后,单独使用OpenFOAM提供的wmake工具编译个别需要使用的可执行性程序,比如说blockMesh,icoFoam等。
3.4 案例下面以渠道流的大涡模拟为例,来看OpenFOAM的使用步骤(表2),以及网格和结果U流场(图2)。
表2 OpenFOAM渠道流在魔方上的并行模拟步骤步骤流程-(1)(可选)流程-(2)修改文件名<blockMeshDict><transportProperties>修改内容示例(含注释)……blocks( //更改前 hex (0 1 3 2 6 7 9 8) (40 25 30) simpleGrading (1 10.7028 1) //hex (2 3 5 4 8 9 11 10) (40 25 30) simpleGrading (1 0.0984 1) //更改后 hex (0 1 3 2 6 7 9 8) (40 25 40) simpleGrading (1 10.7028 1) hex (2 3 5 4 8 9 11 10) (40 25 40) simpleGrading (1 0.0984 1));…………//更改前nu nu 〔 0 2 -1 0 0 0 0 〕 2e-05;//更改后nu nu 〔 0 2 -1 0 0 0 0 〕 1.9e-05;……执行程序blockMesh-目的及注解修改z方向的网格数目,划分网格,划分好后可以使用paraFoam来查看网格划分修改nu的值,更改提升模拟雷诺数步骤流程-(3)流程-(4)修改文件名<LESProperties><fvSchemes>修改内容示例(含注释)……//更改前LESModel oneEqEddy;//更改后LESModel Smagorinsky;…………ddtSchemes{ //更改前 default backward; //更改后 default CrankNicholson;}……执行程序--目的及注解亚格子模型更改为Smagorinsky模型时间离散格式更改为CrankNicholson76《高性能计算发展与应用》 2009年第四期 总第二十九期步骤流程-(5)流程-(6)修改文件名<controlDict><decomposeParDict>修改内容示例(含注释)……application channelFoam;startFrom startTime;startTime 0;stopAt endTime;endTime 1000;deltaT 0.2;writeControl timeStep;writeInterval 200;purgeWrite 0;writeFormat ascii;writePrecision 6;writeCompression uncompressed;timeFormat general;timePrecision 6;runTimeModifiable yes;…………numberOfSubdomains 32;//有各种划分的算法,这里以全自动的metis为例。
method metis;……执行程序-decomposePar目的及注解这是控制全部计算进程的关键文件为了执行并行计算,需要先进性区域划分,划分为32个区域,以便调用32的cpu进行并行计算。
步骤流程-(7)流程-(8)修改文件名<myjob.lsf>-修改内容示例(含注释)……#!/bin/shMY_MPI_TYPE=mpichp4MY_MPI_HOME=/home/users/tongjibegyj/OpenFOAM/ThirdParty-1.6/mpich-1.2.7p1/platforms/linux64GccDPOpt/#!/bin/shAPP_NAME=esourceNP=32#NP_PER_NODE=16RUN=”RAW”#rm -rf ¥PWD/nodelist >& /dev/nullfor i in ‘echo ¥LSB_HOSTS‘do echo ¥i >> ¥PWD/nodelistdone#mpdbootmpirun -machinefile ¥PWD/nodelist -np 32 ‘which channelFoam‘ -case ¥FOAM_TUT/channelFoam/channel395 -parallel > channel395.log &……A) 网格B) 速度场U图2. 三维网格和速度场U执行程序bsub ./myjob.lsfreconstructPar -latestTime目的及注解递交作业重建流场的最后时刻77工程计算应用软件系列介绍4. 结论就笔者的经验与交流,OpenFOAM在中文社区的推广,倘若能逐步完成以下步骤,则对中文社区的推广更加有效:第一,组建稳定的由OpenFOAM经验用户组成的支持团队,这样的话无论依托什么样的平台,都会是中文OpenFAOM的社区活跃起来;支持团队的自愿者不但要熟识OpenFOAM的构造,也必须在CFD基础理论,实战经验等都有足够的经验,支持团队的成员涵盖的领域越多自然越好;第二,撰写以及翻译OpenFOAM的基础入门文献,将经验和知识转化成文字形式发布出来;第三,扩大交流,可以通过邀请OpenFOAM的创始人来讲座以及培训,通过融资在各高校做讲座以及推广,在中国开办OpenFOAM的workshop等来进一步的扩大交流,汇集经验和反馈;总之OpenFOAM是现在
开源CFD软件中,有限体积法为基础,难得的优秀
代码,OpenFOAM的
代码构造丰富精干,良好的开放性、高度活跃的社区,庞大有影响力的全球用户群,都使得这个软件成为近距离跟踪国际CFD发展的优秀选择,也是有志于CFD基础研究,和顶层应用扩展用户的优秀科研工具,值得国内CFD同行更多更深的关注。
参考文献:〔1〕 陈小龙,工程计算软件OpenFOAM,高性能计算发展与应用,2008〔2〕 OpenFOAM Wiki,http://openfoamwiki.net/index.
php/Howto_compile_OpenFOAM〔3〕 OpenFOAM OpenCFD的官方版主页(含下载链接),http://www.opencfd.co.uk/openfoam/〔4〕 OpenFOAM Crodia Jasak教授版本主页,http://powerlab.fsb.hr/ped/kturbo/OpenFOAM/〔5〕 OpenFOAM Message Board,http://www.cfd-online.com/Forums/openfoam/〔6〕 The FOAM Documentation Project (FDP),http://www.foam-documentation.de/〔7〕 历届OpenFOAM的workshop网站,www.openfoamworkshop.org/ 〔8〕 OpenFOAM extensions(OpenFOAM扩展版), http://sourceforge.net/projects/openfoam-extend/圣地亚哥超级计算机中心(SDSC)设立于加州大学,圣地亚哥方面希望能够以首台基于闪存的超级计算机来重新定义超级计算。
该中心已经获得了为期5年,价值2000万美元的来自美国国家科学基金会(NSF)的资助以兴建其超级
计算机,其将命名为”Gordon”。
该超级计算机将采用高性能的基于闪存的存储器,来代替繁重的硬盘存储系统。
在该项目的时间表上提供有未来拓展到固态硬盘(SSD)技术的条目。
这一超级计算机由高性能计算供应商Appro提供,将包括32个“超级节点”,每个超级节点将包括32个计算节点,每计算节点提供240的 gigaflop 和 64 gigabyte 的DRAM。
每个超级节点还具有两个I/O节点,每个拥有4TB的闪存。
当同虚拟共享内存捆绑时,每个超级节点有7.7 teraflop(TF)的计算能力和10 TB的存储(2TB的DRAM和8TB的闪存)。
当完全配置和部署时,Gordon将拥有245 teraflop的总计算能力,64TB DRAM,256TB的闪存和4 petabyte存储。
Gordon的32个超级节点将通过InfiniBand连接,达到每秒16 gigabit的双向千兆带宽的能力。
其上所采用的集群软件将是ScaleMP的模型化虚拟内存共享软件。
Gordon将被重新设置,以达到每超级节点超过1:1的可寻址内存比例。
圣地亚哥超级计算机中心表示,对于许多高性能计算系统,这一比例低于1:10。
首台基于闪存的超级计算机即将面世(吴声超).