工程计算开源软件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致谢

非常感谢上海超级计算中心王涛博士在程序编

译方面给予我热情地帮助。

本文来源:https://www.bwwdw.com/article/6ype.html

Top