【实验课1】 OpenFOAM初印象
从数学的角度看,OpenFOAM其实只做了一件事——求偏微分方程(组)的数值解。...
大家好!我是每周五OpenFOAM版块的作者BH,很荣幸地在CFD小学这个平台上分享自己的学习体会。您也许知道OpenFOAM或者您会马上去搜索引擎里科普一下。这是一个开源的计算流体动力学的工具箱,正如它的名字“开放的场操作与处理”,OpenFOAM不仅在计算流体力学中有强大的应用背景,而且在其它连续的、或近似连续的”场“中也有广泛的用途,如固体的应力模拟、电磁场、分子动力学和金融领域的Black-Scholes定价模型等。
从数学的角度看,OpenFOAM其实只做了一件事——求偏微分方程(组)的数值解。大家知道,流体力学中涉及到许许多多的方程,但是在低速流动中它们具有统一的形式,如:
,
也就是我们常说的对流扩散方程。如何解这类方程(组)已经成为一个专门的研究领域,其中涉及到的重要问题有空间的离散、时间的离散、方程的离散等。这些问题内容非常繁多而复杂往往不易弄明白,幸运的是OpenFOAM已经把这些常规的问题一并处理并写成相应的库或头文件,这给流体力学的研究者提供了一个非常好的样板,方便人们在各自感兴趣的内容上下功夫。然而,对于我们初学者来说,搞清楚OpenFOAM的整体架构,是使用OpenFOAM进行流场数值模拟的应用和深入研究计算流的前提条件。
因此,本次课的内容是简单地探究OpenFOAM的“套路”。
一、编译的套路
(此处引自苏军伟博客http://blog.sina.com.cn/s/blog_5fdfa7e60100dciw.html)
OpenFOAM用的编译器是gcc,他并不是直接运用该编译器,而是将该编译器进行了包装,也就是wmake。OpenFOAM中的头文件通常为 H结尾,而代码文件是以C为扩展名,应当注意,这里的C为大写的,如果写成小写,wmake会出现编译错误,尽管你编写的代码没有错误。
运用wmake编译程序,程序所在的文件夹结构必须为如下形式
|—newApp
|—newApp.C
|—otherHeader.H
|—Make
|—files
|—options
Make所在的文件夹中放有主程序,和在主程序用到的所有头文件,这里面的代码文件和头文件名字任意。Make文件夹里面有两个文件files和options,这两个文件的名字不能改变。
files文件主要干两件事
(1)指定哪些文件需要编译,这里的文件是代码文件,也就是.C文件,而不包括.H文件
(2)指定你要编译的类型,是编译成库,还是编译成可执行文件,以及编译成的库文件或者可执行文件的名字。
options文件也是干两件事
(1)指定编译的头文件所在的目录,如果说所用的头文件在当前文件夹或者标准C++的头文件,无需指定。
(2)指定编译当前程序所用到的库。
示例:OpenFOAM版的”Hello world”
第1步:建立一个目录,用于编译当前的Hello world程序
下面为当根目录建立一个hello的文件夹,并进入hello文件夹。
cd
mkdir hello //建立文件夹,名为hello
cd hello
第2步: 建立Make文件夹,并进入Make建立files和options文件
mkdir Make
cd Make
touch files //创建files文件
touch options //创建options文件
cd ..
第3步:建立程序文件hello.C, 打开hello.C进行编程序
touch hello.C //创建hello.C
kate hello.C //打开hello.C
输入如下代码
#include"iostream"
using namespace std ;
int main ()
{
cout
关注 CFD小学
微信扫一扫关注公众号