|||
最新在学习使用OpenFoam, 记录一下自己学习的过程,方便以后使用。
OpenFoam提供了丰富的边界条件可以选择,包括codedFixedValue这种功能强大的边界条件,你可以直接使用C++写出你自己定义的边界条件,OpenFoam运行时自动编译,非常方便。但即便如此,有时候仍不能满足我们的需求,比如我的边界条件需要实时读取流场中某一点的压力波动情况,再根据压力波动计算出我的喷口速度参数,这时候就需要重新创建一种新的边界条件满足我的需求。
一、首先给出几个参考来源:
1.wiki
http://openfoamwiki.net/index.php/HowTo_Adding_a_new_boundary_condition
2.新浪博客(翻译1)
http://blog.sina.com.cn/s/blog_14d64daa10102wous.html
3.百度文库 陈丽萍的“OpenFoam基础篇”
https://wenku.baidu.com/view/e8d917bb81c758f5f61f6758.html
4.CFD-online讨论该话题的帖子,如果中间遇到问题可以仔细浏览一边所有跟帖
二、下面是我自己实现的步骤:
选择一个和你需要的边界条件相近的已有边界条件。这个没得说,我选择的是totalPressure这个边界。
拷贝该边界条件的目录到其他任意位置。原始文件的目录在src/finiteVolumn/fields/fvPatchFields/derived/totalPressure, 下面有两个文件totalPressureFvPatchScalarField.C和totalPressureFvPatchScalarField.H 拷贝到我的运行目录run/mycode/custom下面。
将拷贝的所有文件全部重命名。把所有totalPressure替换成custom,上述两个文件重新命名为customFvPatchScalarField.C和customFvPatchScalarField.H。
在所有新的文件文本中将旧有名称全部查找替换为新的名称。没错,直接在两个新文件中使用查找和替换功能,把所有totalPressure替换成custom。
修改代码使之适合你的需求。很显然,作为开始,这里最好不作修改,待整个流程走通了之后,再添加你需要的代码。
创建新文件夹和文件。在run/mycode目录下新建目录Make,注意大小写,该目录和custom目录平行。在Make目录下新建两个空白文件files和options。
修改files。
原指南是直接从src/finiteVolume/Make下直接拷贝files文件和options文件进行修改,供参考。我的
files的文件内容如下:
custom/customFvPatchScalarField.C
LIB = $(FOAM_USER_LIBBIN)/libcustomFvPatchField
修改options文件:
options的文件内容如下:
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude
LIB_LIBS = \
-lfiniteVolume
参考src/finiteVolumn/Make/options,你可能需要包含其他库。
9. 编译。 wmake libso
如何出现错误,仔细检查上述步骤,特别注意拼写错误,目录等。如果编译成功,恭喜你,成功在望。
10. 添加任何需要的新的字典条目到你的初始条件文件中。这里,我们需要修改的是把原来的totalPressure 替换成新的边界custom。0/p文件修改如下:
inlet
{
type custom;
p0 uniform 100000;
}
11. 添加库libcustomFvPatchScalarField.so到controlDict中。修改controlDict文件,添加如下命令:
libs ("libcustomFvPatchScalarField.so"); 注意libs后面有空格。
12. Enjoy!
13. 整个过程尽量采用复制->黏贴,很容易出错。整个过程走通之后,再根据需要添加/修改代码。你的C++怎么样,对OpenFoam熟悉吗?对我而言,挑战才刚开始。
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-10-19 21:48
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社