湍流模型接口



  • 我在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可以直接用那些数据成员了,就不必再定义。重新编译后,成功了。哈哈哈哈哈哈哈哈哈哈哈哈~~~
    :high:



  • 不过目前还有个不足是,我不知道怎么把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


Log in to reply
 


CFD中文网 | 东岳流体学术 | 东岳流体商业 | 吉ICP备20003622号-1