湍流模型接口
-
我在OF的不可压缩湍流框架内,根据kEpsilon.C和kEpsilon.H编译了一个湍流模型mykEpsilon。然后在求解器pisoFoam.C中计算了一个壁面距离myY,根据这个myY来修改mykEpsilon中epsilon的方程。
如果直接在mykEpsilon.C中直接加myY,这个湍流模型肯定不能编译通过,因为单独编译mykEpsilon的时候,程序是不知道myY是什么的。而在pisoFoam.C中,又仅靠一个指针turbulence联系湍流模型,仅有U和phi能进入湍流模型中计算。如何让求解过程中的myY信息能够实时地进入湍流模型呢? -
想到一个办法是把myY输出成文件字典,然后在mykEpsilon.C里面加一个IOdictionary来读取。但是不知道有没有什么更简便的方法吗。因为我需要进入湍流模型里的信息挺多的。
-
通过查找调用
const volScalarField& test = mesh_.lookupObject<volScalarField>("test");
-
@东岳 感谢。由于我不是每个网格都需要这些计算数据,所以我用的是scalarField,还有new开辟的数组。这样也可以用lookupObject么?
-
@Samuel-Tu 那就在湍流模型里面去调用壁面距离,一些湍流模型确实要调用,比如LES那面的vanDriest
-
@东岳 我不是使用的程序内置的计算壁面距离的方法,而是用的自己的方法,是在求解器pisoFoam里面写的求解壁面距离的代码,而且我是算的计算域内部的一个假想的虚拟面上的壁面距离,而不是边界面上wall的壁面距离,所以没法直接调用程序内置的计算方法,只能从我自己改写的pisoFoam读取。另外就是我在pisoFoam还new 了动态数组,用以储存需要用到的网格编号。这些动态数组也需要传递到kEpsilon湍流模型里。现在很苦恼怎么实现。
-
灵光一闪想到办法了。直接在kEpsilon类里面加数据成员和成员函数,用成员函数来初始化数据成员。然后在pisoFoam里面调用这个成员函数,读取pisoFoam算出来的数组。。。。。这么一想这个问题其实很简单。
-
发现在kEpsilon里面加成员函数和数据成员,编译kEpsilon成功。但是在pisoFoam.C里面使用这个湍流的成员函数,编译无法通过。原因是pisoFoam编译时的turbulence指针指向的是ImcompressibleTurbulenceModel。这个ImcompressibleTurbulenceModel类是没有上述成员函数和数据成员的。于是在ImcompressibleTurbulenceModel类中加了成员函数和数据成员。考虑到kEpsilon可以继承ImcompressibleTurbulenceModel,所以kEpsilon可以直接用那些数据成员了,就不必再定义。重新编译后,成功了。哈哈哈哈哈哈哈哈哈哈哈哈~~~
-
不过目前还有个不足是,我不知道怎么把ImcompressibleTurbulenceModel编译到USER_LIBBIN里面去。。因为这个编译很复杂,Make/files:
incompressibleTurbulenceModel.C turbulentTransportModels/turbulentTransportModels.C turbulentTransportModels/RAS/qZeta/qZeta.C turbulentTransportModels/RAS/kkLOmega/kkLOmega.C turbulentTransportModels/RAS/LamBremhorstKE/LamBremhorstKE.C turbulentTransportModels/RAS/LienLeschziner/LienLeschziner.C turbulentTransportModels/RAS/ShihQuadraticKE/ShihQuadraticKE.C turbulentTransportModels/RAS/LienCubicKE/LienCubicKE.C BCs = turbulentTransportModels/RAS/derivedFvPatchFields turbulentTransportModels/derivedFvPatchFields/wallFunctions/alphatWallFunctions/alphatJayatillekeWallFunction/alphatJayatillekeWallFunctionFvPatchScalarField.C LIB = $(FOAM_LIBBIN)/libincompressibleTurbulenceModels
我不敢乱动,所以在原文件里改的。这样可能会污染源代码。。
-
@Samuel-Tu 请问你是用什么方法算壁面距离的?我也需要给虚拟的面算壁面距离。
-
@我是河滩 就是最短的几何距离啊
-
@Samuel-Tu Lib那改到Foam_USER_Libbin