快速实施和测试雷诺平均纳维-斯托克斯湍流模型的最佳软件是什么?
如何快速实现和测试湍流模型?
开放式泡沫。
在那里实现模型真的很容易,即使你不知道如何用 C++ 编程,一切都设置好了,你可以按照模式进行。如果您确实了解使用虚函数的类似类接口/动态多态性,那么这非常容易。
模型,显式或隐式,将涉及对字段的操作,在 OpenFOAM 中,字段操作非常简单(Open Field Operaton And Manipulation),如您在OpenFOAM 编程幻灯片的第 21 页上所见。通用编程和函数重载允许在模型开发方面进行顶级编码:您的代码看起来与您正在求解的控制方程或您在场上进行的计算完全一样。
在这个级别上,生成的代码是自动并行的,可以在各种类型的并行库之间进行选择(MPI 和最近的 OpenMP)。测试模型也很容易,模型会自动启用运行时选择性(如果您只是遵循其他模型的结构,现有的湍流模型,粘度模型等,代码结构始终相同),这意味着您可以在运行期间更改参数。
这是我的想法......还有其他优点:库是模块化的,支持任意非结构化网格(滑动界面,细化,混合平面等)的高度先进的拓扑变化,具有一流的数值求解器......总而言之:这真的很酷。:)
附加信息:
您可以在此处检查模型的层次结构,然后使用 locate 命令在源代码中查找模型:locate turbulenceModel.H将您带到抽象基类(根类,湍流模型的基本类型)的源目录,在我的例子中是是(src/turbulenceModels/incompressible/RAS)。
之后,找到与您的模型相似的那个,复制代码,重命名类(如果您使用的是 vim 编辑器,请在所有源文件中尝试%s/oldName/newName/g),并将其编译为你的新图书馆。瞧,一个新的湍流模型,并行,闪亮,运行时可修改等。
哪个代码
我会提出一些与以前的帖子不同的建议...我建议您从 Ferziger 和 Peric CFD 书中获取一些轻量级代码,例如“CAFFA”,可在此站点的 2dgt 文件夹中找到。一切都在您面前不到 2000 行,无需了解 OOP。你会更有信心,因为你知道每一行代码。
实施新的湍流模型意味着什么?
有了这个源代码,您将了解到在大多数 RANS 模型的情况下,实现新的湍流模型意味着在专用于求解标量传输方程的子程序中做以下几件事:
- 不稳定的术语 - 什么都不做
- 对流项 - 什么都不做
- 扩散 - 改变扩散系数(中的)
- 批量源术语(生产、销毁)- 您可能必须更改它们。这也是新湍流模型的系数发挥作用的地方。您可以使用已知值和中点规则显式计算它们(源项)以进行集成。这真的很容易。
- 涡流粘度 - 转到计算它的例程,在最坏的情况下,您将不得不更改一行代码以获得新形式的方程。
- 边界条件 - 您通常也会更改它们,除非您正在求解与您已经实现的传输方程相同的传输方程。
如果您使用的是 RANS 模型,就是这样。
测试
设置通道案例有可用的 DNS 数据库,并尝试在对数速度剖面中进行匹配。即使没有 DNS,也有众所周知的“围墙法则”可以帮助您。每个经过良好调整(根据系数值)的湍流模型都应该正确地再现它。这将是验证或问题的答案是否正确解决了方程式。然后设置一个用于湍流模型验证的测试用例,例如来自 ERCOFTAC 数据库的一些测试用例。
祝你好运!
我可以推荐使用硬件加速的开源高级仿真库。使用方便,见本次空气动力学模拟源码。