OpenFOAM程序开发入门(1)

一、OpenFOAM应用类型:

1、直接利用OpenFOAM的标准的求解器进行模拟,把OpenFOAM替代商业软件来使用,OpenFOAM已基本具有这样的功能和人气,与Fuent,Star-CD等相比较,OpenFOAM显然具有更高的求解效率和灵活性。

2、用户自定义求解器,即利用OpenFOAM的基本类库,如finiteVolume,OpenFOAM库来按照自己的求解流程来编写针对某类应用的求解器。用户需要开发的求解器就是类似于在OpenFOAM的applications中所看到的标准求解器icoFOAM,simpleFOAM等。显然这一需求是非常大的,从OpenFOAM问世以来,已有很多用户定义了自己的求解器。这类需求的特点是,并不需要特别关心离散和求解的最底层的知识,如时间项离散,空间项离散等,关注的重点是求解的步骤或者流程。在编程中,通常是顶层的求解流程的开发,在多数情况下可以不编译OpenFOAM的finiteVolume和OpenFOAM库。这种顶层的求解器的开发,是我们以前常常忽略的,或者是以前没有能力做到的。需要指出的是,商业软件中的所谓udf,user subroutine和这是不可相比的。

3、用户自己定义离散方法等。对于研究离散格式、代数求解器等人来说,更关注时间项ddt,扩散项Laplacian,对流项div是如何离散的,能否有更高效更高精度的离散方法,这需要修改finiteVolume库和OpenFOAM库中对应的代码。尤其是对流项,尽管OpenFOAM已经提供了基于NVD和TVD的模板和40多种有名的高阶高精度格式,但可以预见,这仍然是不够的,毕竟对流项的离散仍然是目前CFD的重点研究方向。

二、OpenFOAM程序开发的基本知识

1、重要的环境变量:

$WM_PROJECT_USER_DIR ―― OpenFOAM的用户目录
$FOAM_TUTORIALS ------OpenFOAM的算例目录
$ FOAM _SRC ------OpenFOAM库的源程序目录
$ FOAM_APP ------ OpenFOAM的求解器目录
$ FOAM_APPBIN ------- OpenFOAM的求解器执行文件目录
$ FOAM_RUN ------用户的算例目录

2、重要的shell:

run = cd to $FOAM_RUN
src = cd to $FOAM_SRC
app = cd to $FOAM_APP
util = cd to $FOAM_APP/utilities
sol = cd to $FOAM_APP/solvers
tut = cd to $FOAM_TUTORIALS

3、求解器的基本文件结构

appName 包含求解器源代码的目录

  • appName.C 求解器主程序
  • CreateFields.H 场变量的声明和初始化
  • Make/ 编译指令
    • files 编译需要的源程序文件和生成的目标文件
    • options 编译选项,如链接库等

appName/appName.C是求解器的主程序
appName/createFields.H声明变量,并从文件中读入初值,如p,物质属性。
appName/Make/files 所有源程序的名称,一个文件一行,最后一行是目标代码的名称和存放位置,EXE=$(FOAM_USER_APPBIN)/appName
appName/Make/options设定查找头文件和库的路径,EXE_INCS,和需要链接的库EXE_LIBS

4、算例的基本文件结构

case/ 算例目录

  • 0/ 包含初始和边界条件
  • constant/ 包含初次读入后,不随时间变化的数据
    • polyMesh/ 包含多面体网格数据
    • transportProperties/ 包含物性数据
  • system/ 包含计算控制和离散格式设定
    • controlDict 包含计算控制,如时间步长等
    • fvSchemes 包含离散格式设定
    • fvSolutions 包含代数求解器或SIMPLE,PISO算法设定

具体而言
case/0 每个需求解的变量需要一个文件设定其初始边界条件
case/constant/polyMesh 网格数据,如owner neighbour points faces boundary
case/system/transportProperties 物性数据
case/system/controlDict 设定起始终止时间,时间步长,输出控制
case/system/fvSchemes 设定程序用到的每个微分算子的离散格式
case/system/fvSolution 为每个变量选择代数方程求解器/收敛精度及PISO等算法设定

三、OpenFOAM程序开发的理论知识

作求解开发,必须能写出需要求解的控制方程及其定解条件,并且对于如何求解方程或方程组的步骤已经明确。
这些流体力学、传热学以及相关的理论是必需的,所谓连续介质力学中的数学模型,控制方程和定解条件就是表示它的语言。

四、OpenFOAM程序开发的最简单的例子

下面采用OpenFOAM来开发一个用户自己的求解器。主要是利用OpenFOAM的标准求解器icoFoam,用户不需要写任何代码,只为为了熟悉OpenFOAM程序开发的环境和步骤。
步骤:

1、将icoFoam目录拷贝到新的目录

可采用下面的Linux的命令实现:
到OpenFOAM的incompressible目录

cd applications/incompressible
cp –r icoFoam myicoFoam

以上只是复制目录icoFoam到新的位置,并且新目录名为myicoFoam

cd myicoFoam

进入新的目录,查看一下,可以看到里面的文件和icoFoam中是否一样

2、原文件改名,并且删除依赖文件

将icoFoam.C改名myicoFoam.C

mv icoFoam.C myicoFoam.C

删除依赖文件

rm icoFoam.dep
3、修改编译文件files和options

进入Make目录,打开files文件

icoFoam.C      源程序文件名
EXE = \$(FOAM_APPBIN)/icoFoam  可执行文件名

修改为

myicoFoam.C      源程序文件名
EXE = \$(FOAM_APPBIN)/myicoFoam  可执行文件名

此例中options不需修改,可以打开看看

EXE_INC = \    头文件包含
    -I$(LIB_SRC)/finiteVolume/lnInclude
EXE_LIBS = \  链接库
-lfiniteVolume
4、删除原来的obj文件
rm –rf linuxGccDPOpt
cd ..
5、编译
wmake
6、检验一下

到tutorial目录,检验一下

myicoFoam . cavity

参考资料:
[1] http://www.cfluid.com/thread-71981-1-1.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容