找回密码
 注册
Simdroid-非首页
查看: 414|回复: 8

[OpenFoam] OpenFOAM的编译方法

[复制链接]
发表于 2012-4-27 17:19:30 | 显示全部楼层 |阅读模式 来自 江苏无锡
本帖最后由 myleader 于 2012-4-28 12:20 编辑

OpenFOAM是源自英国剑桥和帝国理工的开源CFD软件,去年在美国成立了商业公司,主打培训、推广和咨询。2003年发布第一版,此后基本保持这每年一个新版的更新速度,现在最新版本是2.1.0.和其他开源软件比,其更新速度还是不错的,也就是说开发团队和发展能力是值得信赖的,其他的一些开源CFD软件,如Code-saturn、Free CFD等等更新都很不力,所以我更倾向于使用OpenFOAM。

去年就向大家许诺了要写这篇编译安装的文档,但是最近半年经历了各种狗血事件之后,终于腾出点时间来兑现自己的诺言,实在对不住大家。

本人是用的发行版是OpenSUSE12.1x64版,之前需要做一些准备,因为需要配置编译环境。你需要通过Yast安装一些包:
1)软件包组中的“编程”,其实只有C++的部分是需要的,不过我懒得去一个一个选了
2)libqt4-devel
3)cmake
4)gnuplot
如果你没有安装,那么后边编译时会遇到依赖性问题,根据官方的提示,你也可以用命令行
  1. zypper install -t pattern devel_C_C++
  2. zypper install cmake libqt4-devel gnuplot
复制代码
OpenFOAM其实不是很挑发行版,因为它所需的大部分系统变量都是在自己的配置文件中生成的。其中OpenFOAM本身需要gcc-4.4以上,官方网站声称4.3也可以,不过我没有测试过,SUSE12.1自带的是gcc-4.6.2,一切正常

编译步骤:
1 . 下载OpenFOAM的源码:http://www.openfoam.org/download/source.php
目前最新的是OpenFOAM-2.1.0.tgz  ThirdParty-2.1.0.tgz

2. 从sourceforge上下载上面两个压缩包,将其解压缩到所需安装的目录,这步要特别注意,通常linux下的软件都是可以随便把源代码放在什么目录下的,只是在最后make install的时候才会安装到指定目录,但是在这里必须要直接把源代码解压到安装目录,本文以非默认安装目录(/opt/OpenFOAM)为例说明。

3. 进入目录,解开压缩包:
  1. cd /opt/OpenFOAM
  2. tar xzfv OpenFOAM-2.1.0.tgz
  3. tar xzfv ThirdParty-2.1.0.tgz
复制代码
4. 配置用户环境变量:
编辑 ~/.bashrc,你可以用任意你喜欢的编辑器
添加:
  1. export FOAM_INST_DIR=/opt/OpenFOAM                         #你的安装路径
  2. foamDotFile=$FOAM_INST_DIR/OpenFOAM-2.1.0/etc/bashrc
  3. [ -f $foamDotFile ] && . $foamDotFile
复制代码

然后保存退出,其实这一步是为了保证以后在使用时自动载入OpenFOAM的环境变量配置文件,如果你对计算机系统有洁癖,那么可以每次手动执行其中的命令
  1. export FOAM_INST_DIR=/opt/OpenFOAM
  2. source $FOAM_INST_DIR/OpenFOAM-2.1.0/etc/bashrc
复制代码

等到退出terminal后OpenFOAM的设置就被清空了。

如果是正确的,那么没有提示。否则会出现无法找到文件等等错误,此时,要检查目录地址是否正确,书写是否规范。

备注:
如果选择默认目录安装,那么应该在 bashrc中添加这一段:
source $HOME/OpenFOAM/OpenFOAM-2.1.0/etc/bashrc,而不是上面的。
同样 source $HOME/OpenFOAM/OpenFOAM-2.1.0/etc/bashrc检查并更新环境变量

5. 修改编译选项。OpenFOAM的编译选项都是在$FOAM_INST_DIR/OpenFOAM-2.1.0/etc/bashrc中。其中43~45行是安装目录;62行选择系统自带编译器还是OpenFOAM自带编译器,如果你使用的是2010年之后的发行版,强烈建议保留系统编译器;66和67行选择编译器,默认gcc;71行选择编译目标,默认的是64位;75行设置精度,默认是双精度dp,除非你是拿来作教学,否则不要使用单精度sp;79行选择优化选项,除非你是开发者,否则一定要选择“优化”opt;84行选择节点间通信协议,默认openmpi比较稳定,但是效率不如hpmpi,不过hpmpi似乎是不开放源码的,大家手里不一定有;其他的大家就不要动了。

修改之后别忘了source $FOAM_INST_DIR/OpenFOAM-2.1.0/etc/bashrc检查并更新环境变量

6. 检查编译环境是否正确
  1. cd $WM_PROJECT_DIR
  2. foamSystemCheck
复制代码

如果正确,屏幕显示:
Checking basic system...
-----------------------------------------------------------------------
Shell:           /bin/bash
Host:            kms-1
OS:              Linux version 3.1.10-1.9-desktop
User:            kms-1


System check: PASS
==================
Continue OpenFOAM installation.

那么便可进行OpenFOAM的编译工作

7. 编译
  1. cd $WM_PROJECT_DIR
  2. ./Allwmake
复制代码

此时开始编译OpenFOAM的源码,过程相当耗时

你也可以尝试多核编译提高编译速度,方法是这样的:
export WM_SCHEDULER=wmakeScheduler
export WM_HOSTS="abc:2 def:4"
export WM_NCOMPPROCS=$($WM_SCHEDULER -count)
export WM_COLOURS="black blue green cyan red magenta yellow"

HOST填 编译机器的计算机命,后面那个是核数,例子中:abc机用2个核,def机用4个核。
实际上我们编译的时候仅仅需要输入:
export WM_SCHEDULER=wmakeScheduler
export WM_HOSTS="hostname:np"                #输入名称和核数
export WM_NCOMPPROCS=$($WM_SCHEDULER -count)
不过我是不用的,在Intel E6500上单核编译的时间大概是4个小时,我还可以忍受

8. 编译third-party software。其实Java用系统自带的就可以,所以实际上第三方软件我们只需要编译paraView

编译 paraview
  1. cd $WM_THIRD_PARTY_DIR
  2. ./makeParaView
复制代码

编译pv3Reader
  1. cd $FOAM_UTILITIES/postProcessing/graphics/PV3Readers
  2. wmSET
  3. ./Allwclean
  4. ./Allwmake
复制代码
如果你是用Fedora或者Ubuntu,连paraView也不需要编译,有现成的rpm装上就行了


9. 测试一下
  1. mkdir -p $FOAM_RUN
  2. cp -r $FOAM_TUTORIALS $FOAM_RUN
  3. cd $FOAM_RUN/tutorials/incompressible/icoFoam/cavity
  4. blockMesh
  5. icoFoam
  6. paraFoam
复制代码
如果一切正常你就应该能看到paraView的界面了

到这里,OpenFOAM就编译完成了。

其实OpenFOAM官方提供的RPM已经是双精度、openmpi、优化的,如果你使用了Ubuntu10.04、11.04、11.10或者Fedora15、16或者OpenSUSE11.3、11.4的发行版,那么干脆直接安装RPM也可以。只不过我喜欢追新,这次使用了OpenSUSE12.1,所以就重新编译了。

以后我会慢慢把使用方法给补上,这个工程有些浩大,大家耐心点。


评分

1

查看全部评分

发表于 2012-6-6 18:25:17 | 显示全部楼层 来自 四川成都
Simdroid开发平台
正犯愁怎么编译
3q
回复 不支持

使用道具 举报

发表于 2012-6-6 21:39:42 | 显示全部楼层 来自 美国
myleader的文章是必读的,啥时候来个合集吧。
回复 不支持

使用道具 举报

发表于 2012-8-22 20:59:01 | 显示全部楼层 来自 北京
给力,我自己摸着石头过河,差不多,不过看你这思路很清晰~
回复 不支持

使用道具 举报

发表于 2012-8-22 21:19:56 | 显示全部楼层 来自 北京
我今天刚装openfoam,版本2.1.1,现在还在make openfoam里的执行文件,很慢。编译需要的库我一个个装的,在做你的第六步检查编译环境是否正确时,并没有您说的那个foamSystemCheck,不知什么愿意。另外我makeTird里的文件时,关于mpi的出现了一些warning,不知您是否遇到过~thanks for ur attention~
回复 不支持

使用道具 举报

 楼主| 发表于 2012-8-26 22:11:50 | 显示全部楼层 来自 江苏无锡
长梦断忆 发表于 2012-8-22 21:19
我今天刚装openfoam,版本2.1.1,现在还在make openfoam里的执行文件,很慢。编译需要的库我一个个装的,在 ...

你用的发行版是什么?

如果是SUSE的话直接用zypp安装依赖包很简单的,如果是fedora用yum也很简单,Ubuntu我没用过

必须要下载源代码才会有foamSystemCheck可执行脚本,预编译版本是没有的,建议你重新下载
回复 不支持

使用道具 举报

发表于 2012-8-27 10:53:26 | 显示全部楼层 来自 北京
谢谢你的回答,当时正在生成可执行文件,现在是可以foamSystemCheck的~你手头有原创案例没,共享一下~嘿嘿~
回复 不支持

使用道具 举报

发表于 2012-9-7 09:00:39 | 显示全部楼层 来自 美国
ubuntu最简单,openfoam有源的
回复 不支持

使用道具 举报

发表于 2012-9-7 09:02:25 | 显示全部楼层 来自 美国
The Ubuntu Deb pack is a good option for a user that wants to install OpenFOAM on a personal computer on which they have Ubuntu Linux running either as the native operating system or within a virtual machine. The pack contains both source code and binaries and includes a list of dependent system software which can be installed automatically to reduce the system administration overhead. It is therefore the simplest installation option, making it the ideal choice for those people with no experience of Linux. The pack is updated periodically to incorporate new features and bug fixes.

Ubuntu Versions

OpenFOAM and Paraview are currently available for the following versions of Ubuntu:

    10.04 LTS, codename lucid
    11.04, codename natty
    11.10, codename oneiric
    12.04, codename precise

Installation

OpenFOAM and Paraview can be simply installed using the apt package management tool. The user will need to provide superuser password authentication when executing the following commands with sudo

    In a terminal window, add OpenFOAM to the list of repository locations for apt to search, by copying and pasting the following in a terminal prompt (Applications -> Accessories -> Terminal).

    VERS=$(lsb_release -cs)
    sudo sh -c "echo deb http://www.openfoam.org/download/ubuntu $VERS main > /etc/apt/sources.list.d/openfoam.list"
        Note 1: Line 1 stores the version name of your Ubuntu distribution (e.g. maverick) under $VERS, which is used in line 2
        Note 2: This only needs to be done once for a given system
    Update the apt package list to account for the new download repository location

    sudo apt-get update
    Install OpenFOAM (211 in the name refers to version 2.1.1):

    sudo apt-get install openfoam211
    Install Paraview (3120 in the name refers to version 3.12.0):

    sudo apt-get install paraviewopenfoam3120

OpenFOAM-2.1.1 and Paraview-3.12.0 are now installed in the /opt directory.
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-4-25 12:34 , Processed in 0.035715 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表