转载自:http://openfoam.blog.sohu.com/158614863.html *********************************************************************************
Windows下OpenFOAM开发及使用环境配置指南 (1)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
本文献给那些对CFD具有浓厚兴趣, 且致力于源码级CFD研究的人们.
王智勇
写在前面:
~~~~~~~~
OpenFOAM是一款优秀的开源CFD软件, 其实更应该称作是一个程序库, 用户可以在其平台
上进行源码级开发. 目前OpenFOAM已经拥有大量的CFD求解器可供使用. 更重要的是, 它
是完全免费的. 更更重要的是, 我们可以在其提供的CFD类库(网格, 场, 离散算法)基础
上任意进行二次开发, 从而配置出适用于自己的CFD程序. 更更更重要的是, 我们可以在
不违背 GPL协议的前提下任意分发软件, 不存在使用其他盗版商业软件的违法问题(虽然
这每时每刻都在发生, 也许你的 Windows就是盗版...). Anyway, 无论从哪个角度来讲,
OpenFOAM都是 "FREE" 的. 尤其对于科学研究来讲, OpenFOAM 非常适合开发CFD模型,在
面向对象的设计体系下, 代码重用和模型扩充会为你的科研积累增色不少.
OpenFOAM 的开发源于Linux, 这对只熟悉Windows的用户来说是个噩耗, 尤其在中国更多
的人习惯于使用 Windows. 作为研究人员, 可以花上几个星期去钻研Linux, 从而适应在
Linux下的OpenFOAM开发及使用. 然而如果你把自己的程序交付给别人使用时, 让他在早
已习惯于Windows的情况下去重新学习另一个操作系统, 恐怕还是太费劲儿了点儿. 即便
是自己研究之用, 有时一些前后处理软件我们已经习惯了使用Windows版本, 在不同系统
之间切换还是一件烦人的事情(有朝一日在学界TeX取代了MS Word时或许就不用切换了).
另外更多的情况是, 你的实验室里大多数机器跑的都是Windows, 如果你要把OpenFOAM程
序放到上面运行, 那麻烦也来了...总而言之, 我们还需要一个Windows版本的OpenFOAM.
一些人在这方面做了工作. 早在OpenFOAM还处于1.2版本时, 便有人将其通过Cygwin移植
到Windows下. 到今天发展到1.7版本, 虽然断断续续, 但总有人在做. Cygwin是Windows
下的模拟Linux环境, 可以进行程序开发, 但得到的程序需要依赖于Cygwin环境运行, 当
然也可以脱离Cygwin环境, 将程序(exe, dll)打包然后移植到其他计算机上,但必须带上
cygwin1.dll, 因为程序对Windows的一些调用都是通过cygwin1.dll实现的, 这也就加大
了计算的开销, 对讲求效率的CFDer来说, 绝不是一个好消息. 但Cygwin的一个好处是可
以在Windows下进行程序开发, 这对使用Windows从事科研工作的人是个好消息.
另一套解决方案是在Linux下通过交叉编译得到 Windows下可执行的OpenFOAM程序, 交叉
编译环境采用MinGW. MinGW可以看做一个平台, 也可以看做gcc的一个版本, 它可以使你
在 A 操作系统上编译得到 B 操作系统的程序. Symscape (http://www.symscape.com)
和 blueCAPE (http://www.bluecape.com.pt) 公司在这方面做了大量的 port工作,他们
的产品分别是 OpenFlow 和 blueCFD. 他们在提供有偿服务的同时,也公开了其port方案
和相应的的 patch, 尤其是 blueCAPE 的 Bruno Santos 还在OpenFOAMWiki 上维护了一
个相当全面详细的页面(见后参考链接). 这种采用交叉编译得到的 OpenFOAM由于不存在
Cygwin这一层的调用,因此其运行速度较之前一种解决方案会有所提升. 但是这种方案下
的缺点是显而易见的, 开发过程还只能在Linux下进行, 系统切换仍然是个问题.
如果能在Windows下利用Cygwin环境进行开发, 同时编译的程序又能脱离Cygwin运行, 那
是再好不过了. 这样可以在一个操作系统下同时进行开发/调试和运行, 就像 Windows的
native程序一样, 不失为在Windows下使用OpenFOAM的最理想目标了. Cygwin + MinGW为
这种目标的实现提供了可能. 在Wyldckat(Bruno Santos @blueCAPE的OpenFOAMWiki ID)
的wiki页面上描述了该解决方案, 但对于OpenFOAM的编译过程, 主要还是针对在Linux下
利用MinGW进行交叉编译的情况. 对于Cygwin下的MinGW编译, 需要有一些修改的地方,本
文把这些实现的细节做一总结描述, 作为该wiki的补充, 主要目的还是给中国的用户/同
行做些参考, 尤其是对于年轻的研究生/博士生, 作为科研的主力军, 深入到OpenFOAM这
样的专业软件中做些扎实的研究还是有益的, 能让你在方法层面更加深刻地理解CFD, 至
少比拿Fluent算点东西就发 paper, 凑合着混毕业要好得多.
需要说明的是, 这种配置/开发/运行方案也有一个不足, 就是编译出来的程序在 Cygwin
环境下无法运行, 而需要在Windows的命令行(或bat文件)来使用. 对习惯了使用Cygwin/
Linux的人来说有点不爽, 好在MinGW的开发者提供了MSYS环境, 经过简单的配置,我们可
以在Windows下按Linux的习惯来运行程序. 这样, Cygwin+MinGW做开发, MSYS 作运行环
境,打造出一个 Windows 下开发及使用 OpenFOAM 的 CFD 环境.
本文致力于讲清过程,思路, 写得有些梗概. 对于初次接触以上工具的人来说, 参考一些
相关的文章是必要的, Google是最好的老师.
*********************************************************************************
参考链接:
~~~~~~~~
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
注意事项:
~~~~~~~~
*** 如格式不齐, 请拷贝到txt文档中用等宽字体查看本文档