如何在OpenFOAM中增加边界条件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在OpenFOAM中增加边界条件相关的知识,希望对你有一定的参考价值。

如何在OpenFOAM中增加边界条件【翻译】
注:如有翻译不妥,还请见谅
翻译自:http://openfoamwiki.net/index.php/HowTo_Adding_a_new_boundary_condition
首先请看:http://openfoamwiki.net/index.php/Contrib_groovyBC
如果你没有合适的边界条件,请进行下面的步骤:
选择一个和你需要的边界条件相近的已有边界条件—我们叫它originalFvPatchField。
拷贝该边界条件的目录到其他任意位置。(比如say run/myCode)。
将拷贝的所有文件全部重命名(比如say customFvPatchField)。
在所有新的文件文本中将旧有名称全部查找替换为新的名称(比如originalFvPatchField替换为customFvPatchField)
修改代码使之适合你的需求
创建目录结构:myCode/Make,并且在其中放置文件和选项。
将相关的信息放入文件当中:
在finiteVolume/Make/files目录下查找originalFvPatchField
拷贝相关的入口到你的myCode/Make/files目录下
将入口重命名为你需要的—用你的customFvPatchField来重命名它(如果在最后有一个s,将s保留)
告知编译器新库的名字。使用$(FOAM_USER_LIBBIN)来替换$(FOAM_LIBBIN),将lib添加到新名称前面,它应该看起来是这样的:
LIB = $(FOAM_USER_LIBBIN)/libcustomPatchField
选择文件应该有EXE_INC(对任意的包含都适用,比如I$(LIB_SRC)/finiteVolume/lnInclude之于finiteVolume)和LIB_LIBS(对任何包含库,比如lfiniteVolume之于finiteVolume),其他LIB_LIBS也一样。
编译:$wmake libso
添加任何需要的新的字典条目到你的初始条件文件中,比如0/U和0/P 文件。
增加库("libcustomFvPatchField.so" "libOpenFOAM.so")到controlDict中。
现在新的边界条件应该可以正常运行了。
参考技术A 望浏联芞输聫结 Ḃ1 6 ︒ ṗ W 袔跶凯
第一声咳嗽就带来一个糟糕的后果,
参考技术B 可不知道为什么,他最终还是没有把已经抽出一半的烟卷塞了回去。还发金腰,果然是“打”比赛
他的嘴角不禁流露出一丝嘲讽的笑容:足协竟然回挑选一个连一支足球队都养不起的省份竟然会举办乙级赛事即使不看比赛前的赛事预告,姜丽虹大概和她的同伴商量出了一个结果,她走过来红着脸小声地央告他再去打个电话,并且把撂在自己脚边的纸箱打开,让服务员检查里面的物事两个纸箱里装着三十套名牌运动衫和运动短裤。穆里奥有望带领热刺队在这个季赢得辉煌。进攻方设计中的下底突破或者传中没有能成功,总经理大声招呼着人,让他们把那些要马上送走的货再盘点一回,

OpenFoam这样的开源软件和Fluent差距在哪

我是一名仿真工程师,你的提问其实是不恰当的,应该说Fluent这样的商业软件和OpenFoam的差距在哪。总的来说OpenFoam有如下一些优劣势:

优势

    相比起Fluent动辙上百万的购买费用,OpenFoam是免费的。

    OpenFoam是极其灵活的,它包括有各种各样的边界条件设置与求解器,绝大多数的CFD问题都可以使用OpenFoam来仿真,反而是很多商业软件,包括Fluent,边界条件与求解器的丰富程度与OpenFoam是没法相比的,这也使得这些商业软件的应用范围是要小于OpenFoam的

3. OpenFoam可以让你真正了解CFD模拟仿真的过程并享受它的魅力。因为Fluent等商业软件都是黑箱操作,你在使用这些软件时只能机械的设置,然后得到结果,而使用OpenFoam可以让你真正理解如何通过计算机来仿真再现我们真实世界的物理过程,让你真正感受到计算机世界与现实世界的完美结合

4.很多人以为Fluent这些商业软件的仿真结果更可靠,但事实并非如此,CFD-online上已有人讨论过,OpenFoam确实更精确。有人用OpenFoam跑出的结果不合理,只是因为OpenFoam比较南使用,使用者不能完全驾驭它

劣势

劣势只有一条,就是OpenFoam对于初学者是很难上手的,你需要投入很多时间去学习它,理解它,然后驾驭它

结语

关于OpenFoam与Fluent等商业软件的探讨在国外论坛早已经有了,下边的链接为CFD-online上关于这一话题的讨论,可以说一边倒支持OpenFoam,如果你懂英文可以看一下。最后,模拟仿真的未来是属于OpenFoam的

链接:https://www.cfd-online.com/Forums/fluent/47483-openfoam-vs-fluent-cfx.html

参考技术A 我要反对上面那个所谓的仿真工程师的说法。
openfoam和fluent是我最常用的两款CFD软件包。对于两款软件来说,他们本质上就是个方程的求解器,所解的方程都是一样的, 在这个情况下所谓的求解精度就是对比一个有解析解的方程和用各自算法求解的数值解的逼近程度。
openfoam最大的优点是免费和开源,其他方面都没有比fluent强大所少。针对特定问题,openfoam可以采用特定的算法,使得求解精度可能较高,但是并不会有特别明显的差别。根据我的计算对比,openfoam、fluent和starccm+在对于圆柱绕流和某一类组分输运问题上,三者求解曲线基本一致。openfoam因为其开源性可以用最新的算法,也可以植入自己设计的算法。
但是除了开源这一点,从易用性角度来看,openfoam明显不及fluent,这不用多说。从求解稳定性角度来看也是远远不如。对于大部分用cfd做研究而不是研究CFD的人员,或者是企业工作人员来说,fluent是更好的选择。fluent算法相对保守,基本上是无脑AMG,但是正因为如此,所以才更是个广大的CFD应用者。
当然如果题主是要研究CFD算法,那我当然推荐openfoam。否则我是不推荐的。
CFD仿真的未来绝对不是开源,因为不是每个人都有精力和能力去学习C++,去调各种参数。CFD的发展应该是开源和商软的有机结合,在开源社区的加持下,一些算法得到很好的验证,商软背后的科学家团队针对性的提高这些算法的稳健性加入商软中。
换句话说,14.5时代的fluent目前依旧会满足绝大部分使用者的需求,为了虚无缥缈的目的啃开源和代码,殊为不智

以上是关于如何在OpenFOAM中增加边界条件的主要内容,如果未能解决你的问题,请参考以下文章

新闻资讯FOAMAnalyzer -- OpenFOAM Analyzing Tool

openFOAM 中的边界分配

将 OpenFOAM 场定义为空间函数

如何在 openFOAM 的 docker 版本中挂载卷

OpenFOAM 如何从列表中删除一些元素?

如何在 OpenFOAM 中编译 OpenVINO-Code?