chenqi2018的个人博客分享 http://blog.sciencenet.cn/u/chenqi2018

博文

如何在OpenFoam中创建新边界条件

已有 11776 次阅读 2018-8-1 18:05 |个人分类:OpenFoam学习|系统分类:科研笔记| OpenFoam, 创建新边界条件, boundary, condition, OpenFoam, OpenFoam, OpenFoam

最新在学习使用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讨论该话题的帖子,如果中间遇到问题可以仔细浏览一边所有跟帖

https://www.cfd-online.com/Forums/openfoam-programming-development/72434-custom-boundary-condition-openfoam.html

二、下面是我自己实现的步骤:

  1. 选择一个和你需要的边界条件相近的已有边界条件。这个没得说,我选择的是totalPressure这个边界。

  2. 拷贝该边界条件的目录到其他任意位置。原始文件的目录在src/finiteVolumn/fields/fvPatchFields/derived/totalPressure, 下面有两个文件totalPressureFvPatchScalarField.C和totalPressureFvPatchScalarField.H 拷贝到我的运行目录run/mycode/custom下面。

  3. 将拷贝的所有文件全部重命名。把所有totalPressure替换成custom,上述两个文件重新命名为customFvPatchScalarField.C和customFvPatchScalarField.H。

  4. 在所有新的文件文本中将旧有名称全部查找替换为新的名称。没错,直接在两个新文件中使用查找和替换功能,把所有totalPressure替换成custom。

  5. 修改代码使之适合你的需求。很显然,作为开始,这里最好不作修改,待整个流程走通了之后,再添加你需要的代码。

  6. 创建新文件夹和文件。在run/mycode目录下新建目录Make,注意大小写,该目录和custom目录平行。在Make目录下新建两个空白文件files和options。

  7. 修改files。

    原指南是直接从src/finiteVolume/Make下直接拷贝files文件和options文件进行修改,供参考。我的

    files的文件内容如下:

           custom/customFvPatchScalarField.C 

           LIB = $(FOAM_USER_LIBBIN)/libcustomFvPatchField

  8. 修改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熟悉吗?对我而言,挑战才刚开始。




https://blog.sciencenet.cn/blog-3393877-1127063.html


收藏 IP: 2.29.123.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-26 14:21

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部