Windows下OpenFOAM开发及使用环境配置指南 (2)【转载】

时间:2024-01-04 18:54:44

转载自:http://openfoam.blog.sohu.com/158751915.html
*********************************************************************************

Windows下OpenFOAM开发及使用环境配置指南 (2)

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

本文献给那些对CFD具有浓厚兴趣, 且致力于源码级CFD研究的人们.

王智勇 <wang-zy@mails.thu.edu.cn>
@ THU

基本环境:

~~~~~~~~

操作系统:Windows 7 Ultimate 32 bit

Linux环境:Cygwin 1.7 32bit

OpenFOAM:
1.6

并行环境:MPICH2

配置过程:

~~~~~~~~

1. Install Cygwin (国内镜像www.cygwin.cn)

(1) 除基本安装外,还需安装以下包:

autoconf
automake binutils bison byacc diffutils patch doxygen

flex gcc-core
gcc-g++ git make python readline texinfo wget w3m

(2) 其余建议安装包:

bzip2 gitk
liblzma rxvt vim

2. 修改注册表, 使系统区分大小写

(1)
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session
Manager\

kernel\ObCaseInsensitive 设为0.

(2) 重启系统使应用生效.

3. 配置Cygwin

(1) 启动Cygwin,
home/<user>目录将依据当前Windows用户创建. 若用户名存在空格,

则需要在Cygwin根目录下的 /etc/passwd 中将映射名改为无空格的用户名标识,

并重启Cygwin.

(2) 在Cygwin
Shell中输入

mkdir
OpenFOAM

echo export
TEMP=/tmp >> ~/.bashrc

echo export
TMP=/tmp >> ~/.bashrc

以创建OpenFOAM安装目录并使TEMP/TMP变量有效.

(3) 在Windows中建立文件夹, 用于mount
OpenFOAM及tmp目录: 在/etc/fstab中添加

<of_dir>
/home/<user>/OpenFOAM ntfs
binary,posix=1 0 0

<tmp_dir>
ntfs binary,posix=1 0 0

其中<of_dir>
为OpenFOAM的实际安装目录,
<tmp_dir>为实际临时目录.
patch

命令的运行依赖/tmp目录.

- NOTE: 将以上目录设在根目录下比较方便, 且保持命名简洁易记.

(4) 重启Cygwin使修改生效. 输入

ln -s
/usr/bin/cpp /lib/cpp

以使wmake正确运行.

4. 安装OpenFOAM

(1) 下载OpenFOAM-1.6.General.gtgz,
ThirdParty-1.6.General.gtgz解压到安装目录

tar xzf
OpenFOAM-1.6.General.gtgz

tar xzf
ThirdParty-1.6.General.gtgz

(2) 下载PatchesNBatches.tar.gz并解压到$HOME/OpenFOAM目录. 在该目录下运行命令

patch -p0
< pnb/OpenFOAM-1.6_patch

patch -p0
< pnb/ThirdParty-1.6_patch

(3) 修改脚本, 配置OpenFOAM环境

(3a)在$HOME/.bashrc文件中添加下面一行:

source
$HOME/OpenFOAM/OpenFOAM-1.6/etc/bashrc-mingw32

使OpenFOAM配置随Cygwin启动生效.
bashrc-mingw32中需将case
$WM_ARCH in

Linux)中的"Linux)"改为"*)", 以使Cygwin能够假冒Linux. (当然也可以加入

Cygwin选项, 但会涉及到一些需要适应OpenFOAM的规则配置, 如wmake
rule

等, 不建议使用. 这种假冒策略是一个trick, 如果仅是本人在 cygwin 下使

用, 这种做法足够, 且可将源码修改降至最低. 至于考虑平台可移植性的通

用性设置, 则应该是OpenFOAM发布者该做的事情)

(3b)重启Cygwin, 发现有编译器未安装的警示信息, 不用理会, 这是因为OpenFOAM

认为编译器是mingw32, 有错误提示是正常的. 我们需要做的检查当前系统是

否含有gcc(用gcc
-v命令, 我的版本是3.4.4)

(3c)运行以下 chmod 命令以使新patch的script文件正确运行

chmod 744
$WM_THIRD_PARTY_DIR/build-mingw32

chmod 744
$WM_THIRD_PARTY_DIR/build-mingw-w32

chmod 744
$WM_THIRD_PARTY_DIR/build-mingw-w64

chmod 744
$WM_THIRD_PARTY_DIR/build-mingw-w64-45

chmod 744
$WM_THIRD_PARTY_DIR/makeGcc44

chmod 744
$WM_THIRD_PARTY_DIR/get-mpich2

chmod 744
$WM_PROJECT_DIR/src/Allclean

chmod 744
$WM_PROJECT_DIR/applications/utilities/parallelProcessing/Allwmake

chmod 744
$WM_PROJECT_DIR/bin/tutowin

chmod 744
$WM_PROJECT_DIR/bin/foamDiff

chmod 744
$WM_PROJECT_DIR/bin/backupSourceFolder

chmod 744
$WM_PROJECT_DIR/bin/backupFullFolder

(3d)下载mpich2-1.1.1p1-win-ia32.msi文件,
安装32位 MPICH2
1.1.1p1, 将安装

目录下的bin,
include和lib文件夹拷贝至ThirdParty-1.6/mpich2-1.1.1p1.

(3e)修改 bashrc-mingw32:将 WM_GETMPICH2 设为 DONTGETMPICH2

重启Cygwin使编译mingw32的环境设置生效.

(4) 编译mingw交叉编译器mingw32

(4a)将ThirdParty-1.6/build-mingw32脚本中以下变量对应的文件下载到

ThirdParty-1.6/mingwcc/source目录(手动创建).当然也可以下载这些

package 的最新版本, 但需注意要同时在脚本中修改相应的名字.

BINUTILS_ARCHIVE="binutils-2.19.1-src.tar.gz"

MINGW_ARCHIVE="mingwrt-3.15.2-mingw32-dev.tar.gz"

W32API_ARCHIVE="w32api-3.13-mingw32-dev.tar.gz"

REGEX_ARCHIVE="mingw-libgnurx-2.5.1-bin.tar.gz"

REGEX2_ARCHIVE="mingw-libgnurx-2.5.1-dev.tar.gz"

(4b)针对Cygwin环境修改build-mingw32脚本:

* BUILD=`uname -m`-$WM_ARCH-gnu
改为 BUILD=`uname -m`-pc-cygwin

* do_gmp, do_mpfr函数中将--host=$TARGET改为--host=$BUILD

* do_mpfr函数中--enable-thread-safe改为--disable-thread-safe

(4c)在ThirdParty-1.6目录下输入命令

./build-mingw32
GCC-4.3.3

运行脚本, 等待命令完成.
(约数小时, 期间若有tar错误或者 no
file or

directory错误, 不用理会.)

(5) 配置wmake编译环境.

(5a)建立flex++链接: 将 alias
flex++='flex -+' 命令加入到

OpenFOAM-1.6/etc/alias.sh中

(5b)修改wmake
rules. (我们现在的平台是"linux", 编译器是mingw32, 因此要改

的是OpenFOAM-1.6/wmake/rules/linuxmingw32文件夹中的内容)

* mplibMPICH中-lmpich改为-lmpi, 删除-lrt

* general中删除

include
$(GENERAL_RULES)/byacc

include
$(GENERAL_RULES)/btyacc++

加入

include
$(GENERAL_RULES)/version

include
$(GENERAL_RULES)/bison

(5c)修改zlib配置. 将ThirdParty-1.6/zlib/Make目录拷贝至

ThirdParty-1.6/gcc-4.3.3/zlib

(5d)重启Cygwin, 使修改生效

(6) 到OpenFOAM-1.6目录,
wclean all && ./Allwmake,
完成.

*********************************************************************************

参考链接:

~~~~~~~~

http://openfoamwiki.net/index.php/Tip_Using_Cygwin_for_cross-compiling_OpenFOAM

http://openfoamwiki.net/index.php/Tip_Cross_Compiling_OpenFOAM_1.6_in_Linux_For_Windows_with_MinGW

https://trac.handbrake.fr/wiki/CygWin

http://www.bluecape.com.pt/
(blueCAPE)

http://www.symscape.com/
(OpenFlow)

http://ftp.twaren.net/Unix/GNU/gnu/

http://heanet.dl.sourceforge.net/sourceforge/mingw

注意事项:

~~~~~~~~

***
<*>表示依赖于用户系统的一些变量, 用户需根据自己的系统配置来设定.

*** Cygwin只有32位的安装版本, 因此对gmp,
mpfr, gcc的编译过程来说, 系统都是i686,

而不是x86_64, 在Cygwin中输入uname
-m可确认这点

*** 以上配置过程请按顺序进行

*** 如格式不齐, 请拷贝到txt文档中用等宽字体查看本文档

文件下载:

~~~~~~~~

OpenFOAM-1.6.General.gtgz:
http://downloads.sourceforge.net/foam/OpenFOAM-1.6.General.gtgz?use_mirror=mesh

ThirdParty-1.6.General.gtgz:
http://downloads.sourceforge.net/foam/ThirdParty-1.6.General.gtgz?use_mirror=mesh

PatchesNBatches.tar.gz:
http://openfoamwiki.net/images/e/e2/PatchesNBatches.tar.gz

mpich2-1.1.1p1-win-ia32.msi:
http://www.mcs.anl.gov/research/projects/mpich2/downloads/tarballs/1.1.1p1/mpich2-1.1.1p1-win-ia32.msi

mingw相关文件:
http://heanet.dl.sourceforge.net/sourceforge/mingw