tPEF湍流模型
-
各位Foamer大家好。
最近我在修改openFoam中twoPhaseEulerFOAM中的湍流模型。主要是因为目前里边的continousGasKEpsilon(CGKE)湍流模型是基于kEpsilon的。而我想创建一个基于RNGkEpsilon的版本,叫做continousGasRNGkEpsilon(CGRNGKE)。在CGKE基础上修改代码后,在phaseCompressible湍流分类中也已经通过编译,形成了新的库文件phaseCompressibleTurbulenceModels.so。以上均没有问题。但是在重新编译twoPhaseEulerFoam求解器的时候,总是得到错误如下:
undefined reference to `Foam::RASModels::RNGkEpsilon<Foam::EddyDiffusivity<Foam::ThermalDiffusivity<Foam::PhaseCompressibleTurbulenceModelFoam::phaseModel > > >::typeName'。
不知道哪位大神知道原因,敬请指教。谢谢 -
@dzsmoglai 在 tPEF湍流模型 中说:
undefined reference
这个问题太普遍了,不好确定,推荐几个贴:
http://www.cfd-china.com/topic/926/未定义的引用-undefined-reference
http://www.cfd-china.com/topic/3191/编译自己的求解器遇到问题-undefined-reference/10
主要是你的类函数问题
-
@dzsmoglai 在 tPEF湍流模型 中说:
oPhaseEulerFoam求解器的时候,总是得
感谢@东岳 老师的答复。目前此问题已经解决。原因也很简单。因为CGKE是基于kEpsilon的。而在PhaseCompressible湍流模型类中,在编译CGKE之前,事先通过PhaseCompressible这一类中的宏makRASModel(kEpsilon)编译了PhaseCompressible版本的kEpsilon模型。因此CGKE中任何函数在调用kEpsilon时就可以调用的到。本问题的解决办法就是同样的在makePhaseCompressibles.C中make一下RNGkE就行了,即makRASModel(RNGkEpsilon)。
如果有其它Foamer对上述解释不理解,我就再补充两句。kEpsilon, RNGkEpsilon这类湍流模型实际上是通用的模型,在incompressible,compressible, phaseCompressible等不同类的湍流模型类中有不同的体现。当然,这个涉及到OpenFoam的湍流模型代码结构,集成关系最多有8层左右,尚不了解的童鞋可以去参考此博客https://marinecfd.xyz/post/openfoam-templated-turbulence-modeling-framework-part-1/。链接是第一部分,一共三个部分。