工程计算开源软件OpenFOAM
更新时间:2023-05-13 00:01:01 阅读量: 实用文档 文档下载
- 混沌工程开源推荐度:
- 相关推荐
66
《高性能计算发展与应用》 2008年第二期 总第二十三期
工程计算开源软件OpenFOAM
陈小龙 上海超级计算中心 上海 201203 xlchen@ssc.net.cn
摘要:
OpenFOAM是一款开源的连续介质计算力学软件包,包括计算流体力学。本文针对OpenFOAM软件的发展历程、程序功能和使用方法进行初步介绍,并描述该软件在上海超级计算中心曙光4000A上的移植与编译过程,同时给出了软件的基本使用方式和操作过程。
1. 软件背景介绍
OpenFOAM的前身为FOAM(Field Operation and Manipulation的简写),后来作为开源代码公布到网上,任何人都可以自由下载和传播她的源代码。其作者之一Hrvoje Jasak为克罗地亚(南斯拉夫成员国)人,1993年在读PhD期间开始写FOAM。在2004年,OpenFOAM软件的创始人与主要开发者Henry Weller将该软件开源化,与此同时成立了OpenCFD公司,专门进行OpenFOAM软件的研发、技术支持和官方培训。
其官方网站为www.openfoam.org 。
OpenFOAM(Open Field Operation and Manipulation的简称)软件可以模拟复杂流体流动、化学反应、湍流流动、换热分析等现象,还可以进行结构动力学分析、电磁场分析以及金融评估等。该软件由OpenCFD公司开发维护,在GNU General Public License许可下可以自由下载和发布。
OpenFOAM软件的核心技术为一系列的高效C++模块数据包,利用这些数据包可以构造出一系列有效的求解器、辅助工具和库文件,用来模拟特定的工程机械问题和进行前后处理,包括数据处理、图形显示、网格处理、物理模型和求解器接口等。
OpenFOAM提供了许多预编译好的求解器、辅助工具和模型库等,可以模拟一系列复杂问题。同时
它也是一款开源软件,用户可以扩展软件本身的功能和处理能力。该软件开源化不仅仅在于其程序代码对外公开,而且其软件程序结构和软件架构设计也开源化。因此用户可以最大程度地拓展程序以实现用户自定义功能。
OpenFOAM是一个完全由C++编写的面向对象的CFD类库,采用类似于我们日常习惯的方法在软件中描述偏微分方程,采用有限体积法对偏微分方程进行求解。软件支持三维任意多面体网格(比如CD-adapco公司推出的CCM+生成的多面体网格),因而可以处理复杂的几何外形,支持区域分解并行计算等。
2. 软件架构
OpenFOAM软件首先是一个C++库文件包,它包含许多可执行文件(也称为应用程序包)。从文件组织结构来说这些应用程序大体可以分为两大类:求解器和辅助工具。求解器用来求解连续介质力学中的某个特定问题,而辅助工具主要用来进行数据操作、辅助求解器完成计算任务。
从程序实现功能的角度来看,OpenFOAM软件同众多商业CFD软件一样,包括核心求解器、前处理和后处理三大模块。具体组成如下:
图1 OpenFOAM软件组织结构
而从程序开发的角度来看,OpenFOAM软件主要基于以下几个主要的类及其相互之间的作用。
1、Primitive与Container----基础类及容器类2、描述空间及时间的类3、张量的数学运算类
4、Field、Dimension Set、Boundary Conditon和Geometric Field---场、量纲、边界条件及几何场
5、Mesh---网格类6、积分、微分及离散类7、矩阵类
8、描述PDE(偏微分方程)的类9、物理模型类
在OpenFOAM中代码的组织,及类的区分和实现都是基于以上这些部分分别编写的
3. 软件功能
OpenFOAM软件可以模拟复杂流体流动、化学反应、湍流流动、换热分析等现象,还可以进行结构动力学分析、电磁场分析。具体功能分述如下:
求解方面 用户可以进行基本的CFD分析,可压与不可压缩流动分析、多相流分析、燃烧分析、热分析以及电磁场和结构动力学耦合分析。
前处理方面 软件拥有自己的JAVA/C++图形界面——case管理器FoamX,可以对case进行管理,对模型数据进行操作、设置边界条件和求解设置等内容,此外还有其他一些直接对数据进行操作的辅助
工具,如setField、MapField等工具。
图2 FoamX前处理界面
后处理方面 软件自带有paraFoam模块,可以对OpenFOAM软件的数据直接进行读取。paraFoam基于开源可视化软件ParaView开发,可以进行一些常用的后处理操作,如网格显示、云图显示、等值面显示、曲线绘制等等。此外,软件包含有与第三方软件的接口工具,可以通过专业的后处理软件进行数据处理,如foamToEnsight、foamToFieldview、foamToGMV、smapToFoam等。Ensight软件也可以直
接读取OpenFOAM软件的计算结果。
工程计算应用软件系列介绍
67
图3 paraFoam后处理界面
网格方面 软件支持各种各样的多面体非结构化网格,包括四面体、立面体、棱柱网格、Polehedral等。网格生成的时候即可以在自带的FoamX前处理器里进行简单操作(blockMesh),也可以接受其他网格处理软件生成的网格,包含有多种网格转换工具如cfxToFoam、fluentMeshToFluent、mshToFoam、ansysToFoam等。对于网格模型数据,可以进行网格编辑操作和网格质量检查,如网格移动、旋转、细化、重编号、网格分割、动网格等。
物理模型 软件包含有先进的物理模型,用来模拟可压与不可压缩流体、牛顿与非牛顿流体。湍流模型方面既有常规的层流、S-A模型,还包括各种各样的k-e模型,还包括有丰富的大涡模拟模拟,如各种Smagorinsky模型、scale similarity模型、spectral
eddy viscosity模型等等。另外OpenFOAM还具有以下
功能和特点:
燃烧模拟
拉格朗日粒子追踪及射流滑移网格,网格层消等
各种各样的工具箱,包括各种ODE求解器、ChemKIN接口等
自动生成动网格与网格转换工具,可以转换多种网格形式为FOAM可以处理的网格形式
支持多种网格接口
4. 软件移植与安装
4.1 软件推荐安装软硬件要求
硬件要求:至少128M内存,磁盘空间大约需要600M,在安装过程中需要使用大约1-2G硬盘空间作
《高性能计算发展与应用》 2008年第二期 总第二十三期
临时存储空间
操作系统:SuSE10.1及以上通讯库:MPI
编译器:GCC4.1.2及以上,或Intel C++ 9.14.2 上海超级计算中心曙光4000A软硬件环境
硬件环境:曙光4000A机群系统,单节点四路AMD Opteron 850,8G RAM
操作系统:Turbo Linux8.0编译器:GCC3.2.2;PGI6.0.8通讯库:MPICH1.2.6+GM2.1.24.3 软件的安装编译
OpenFOAM软件的安装编译都是通过执行各个目录下的Allwmake文件来完成的,因此在此之前必须设置好相应的编译环境和环境变量
1) 安装编译binutils工具包2) 安装编译GCC4.1.23) 安装Java SDK包4) 安装设置OpenFOAM
编译安装目录下的.bashrc文件,加入必要的编译器位置环境变量
export WM_COMPILER_DIR=$WM_PROJECT_INST_DIR/$WM_ARCH/gcc-4.1.2$WM_COMPILER_ARCH
修改.OpenFOAM目录下bashrc文件,设置OpenFOAM的编译环境变量
export WM_PRECISION_OPTION=DPexport WM_COMPILE_OPTION=Opt初始化OpenFOAM环境变量
. $HOME/OpenFOAM/OpenFOAM-1.4/.OpenFOAM-1.4/bashrc
5) 安装编译cmake下载编译并安装cmake2.4.6
修改$HOME/OpenFOAM/OpenFOAM-1.4/.bashrc文件中cmake的环境变量
export CMAKE=cmake
export CMAKE_ARCH_PATH=$WM_PROJECT_INST_DIR/$WM_ARCH/$CMAKE
AddPath $CMAKE_ARCH_PATH/bin6) 安装编译ParaView下载编译并安装paraview-2.4.4
修改$HOME/OpenFOAM/OpenFOAM-1.4/.OpenFOAM-1.4/apps/paraview/bashrc文件中cmake和paraview版本
export CMAKE_HOME=$WM_PROJECT_INST_DIR/$WM_ARCH/cmake
if [ -r $CMAKE_HOME ]; then
export PATH=$CMAKE_HOME/bin:$PATHfi
export ParaView_VERSION=2.4.4增加Tcl/TK补丁重编译ParaView
修改paraview-2.4.4/Utilities/TclTk/tcl8.4.5/unix/tcl.m4文件776行与2107行
if test -r /etc/.relid -a "X`uname -n`" = "X`uname -s`" ; then
system=MP-RAS-`awk ‘{print $3}’ /etc/.relid`
fi
修改$HOME/OpenFOAM/linux64/paraview-2.4.4/CMakeLists.txt文件
#SET(PV_INSTALL_INCLUDE_DIR ${PV_
INSTALL_ROOT}/include/paraview-${PARAVIEW_
VERSION})
SET(PV_INSTALL_INCLUDE_DIR ${PV_INSTALL_ROOT}/include)
7) 编译安装OpenFOAM软件包
在$HOME/OpenFOAM/OpenFOAM-1.4/.bashrc文件中增加_BIN_FOR_DEMANGLE_H环境变量;确定JAVA等环境变量设置正确;
cd $HOME/OpenFOAM/OpenFOAM-1.4/./Allwmake
编译完成后将环境变量增加到用户配置中export WM_64=on
./home/user/xlchen/OpenFOAM/OpenFOAM-1.4/.OpenFOAM-1.4/bashrc
export INCLUDE=$HOME/OpenFOAM/linux64/binutils-2.16.1/include:$HOME/OpenFOAM/linux64/termcap/include:$INCLUDE
export PATH=$HOME/OpenFOAM/linux64/binutils/bin:$PATH
export PATH=$HOME/OpenFOAM/linux64/gcc4.1.2/bin:$PATH
5. 软件使用方法
5.1 前后处理使用
用户设置好环境变量后,在命令行中直接敲入FoamX命令即可启动case管理器FoamX,在其中用户可以设置自己的模型数据和边界条件,进行简单的网格划分。用户也可以直接进行文本操作编辑输入文件。
待计算结束后用户可以输入paraFoam
<root>
<case>命令来查看计算结果,<root>为case所在目录
68
工程计算应用软件系列介绍
69
名,<case>为运行得case名字。用户也可以通过数据转换到第三方软件如ensight\fluent中进行结果后处理。5.2 计算求解
用户可以在FoamX中直接点击
进行计算,也可以通
过命令行的方式提交计算任务。具体参数格式为<executables name> <root> <case> <other args>。5.3并行求解
OpenFOAM1.4软件可以采用LAM-MPI的并行方式,也可以采用MPICH和OPENMPI进行并行计算。以lammpi方式为例:
#!/bin/sh
cat > machinefile << _EOF_AaaBbb_EOF_
lamboot -v machinefile
mpirun -np <nProcs> <foamExec> <root> <case> <otherArgs> -parallel < /dev/null >& log &
lamhalt -d##end致谢
非常感谢上海超级计算中心王涛博士在程序编
译方面给予我热情地帮助。
正在阅读:
工程计算开源软件OpenFOAM05-13
公司挂靠协议书(专业版)05-04
施组方案401-24
教师招聘--无领导小组讨论面试实战资料06-19
家乡的松柏树作文600字07-15
标准房屋买卖合同-房子买卖07-25
小学六年级上册数学《圆的面积》说课稿10-01
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 开源
- OpenFOAM
- 计算
- 工程
- 软件
- 上海高三高中数学专题复习-解析几何题型与方法
- 信息安全恶意代码防范方案
- 铝合金状态表示法
- 大学生社会医疗保险模式的浅议
- 老子思想对现代公关的启示
- 最新语文A版小学语文三年级上册《祖冲之》教案第二课时(1)(精品)
- 冀教英语七上Unit 4 Food and Restaurants Lesson 22 In the restaurant 教案
- _科学家的社会责任--问题的由来与发展
- 恭喜发财 红包拿来
- 5性压力性尿失禁诊断和治疗指南(试行)
- 颅脑复合损伤的护理体会
- 实验一离散时间信号的时域分析
- 浙江省宁波市2015年普通高中创新素养培育实验班招生考试模拟语文试题及答案
- 尔雅网络课前进中的物理学与人类文明答案2016
- 第三章 数值数组及向量化运算(matlab基础教程)
- 优秀社团干部代表发言稿(丁耀)
- 员工服务之星评比考核标准
- 07年上半年国民经济执行情况(定稿)
- HCNR200 HCNR201数据手册
- 0721-东北亚投资贸易博览会