编译湍流模型成功但是调用计算报错



  • 各位老师好!请教调用编译成功的湍流模型但是报错的问题。我给雷诺应力增加了一项非线性项,也就是说我修改了动量方程,也修改了komegaSST中的k 与 w的方程,编译通过,但是用算例调用计算报错(用的是OF2.4.0版本,rhoSimpleFoam求解器),报的错误看不懂,想请教下各位:
    c0fb73dd-9639-40c7-90d6-3acf0f029d6d-image.png


  • Linux讲师 OpenFOAM讲师

    printStack(FOAM::Ostream&) at ??:?

    这就是输出的时候找不到地址了,后面的都是 at ??:?
    这基本看不出来是哪错了,可能的情况太多了,除了用gdb之类的调(比较难学、麻烦)。就只能渐进式修改查错。看是哪里的修改导致这样的错误。

    或者整个什么都没有的流场,看看它崩不崩,如果不崩,说明你加的这项比较挑流场,难稳定。如果崩,那就肯定是程序的问题了



  • @bestucan 谢谢您的回复,我修改了一下我的湍流模型,现在是调用之后跑了两步报错,如下:
    eca6f9d1-8c9d-462d-bc56-eeaa19c2942b-image.png
    这个错误我之前跑算例的时候遇到过,在总压条件里面指定psi thermo:psi就可以了,现在的问题是算例能跑了,但是加上湍流模型后还是报这个错误。请问您说的给一个空流场,看它崩不崩是什么意思呢?怎么操作呢?



  • @bestucan 我渐进式排错的话,错误就在改的动量方程上,我是在动量方程、turbulent kinetic energy 跟 turbulent frequency equation 方程的雷诺应力项加上了非线性项,通过分模块排错,这一项加在后两个方程上没有问题,可以算,但是加在动量方程上就错了,我定义了一个非线性张量ADD_ ,动量方程是通过如下方式加的:
    2a23387f-197a-4066-b0eb-e8ae1f864288-image.png


  • Linux讲师 OpenFOAM讲师

    @fangyuanaza

    我说的空流场不崩是想着,可能是计算方法不稳定,容易溢出。所以如果是没有任何速度和湍流的流场(比如完全静止的一潭死水),拿么你的模型多么不稳定都没关系,因为几乎所有物理量都是0,各阶导数也是0。如果这样不崩,那就是算法上的问题了。如果这样也崩,那就是程序语法结构的问题了。

    你排错到这一步,我已经不太懂了,不过还有方法更贴近错误。
    把no write改成write,这样可以看return回去的是什么值。这个值是否在正常范围内。
    以第一个为例,先write不带2kADD_的,再write带2kADD_的,大概能看出来这一项对原本的样子有多大的影响。如果岔开的数量级大了,那就找到问题了。

    如果岔开的不大,那就手动给k和ADD_赋值,先赋值0,再逐渐改变。如果是改变导致崩,那就是超出范围了;如果赋值0也崩,那就是数据类型之类的编程问题了。

    虽然编译没错,但不一定就真没错。C++就这样,功能特性太多。一个不小心,隐形类型转换了之类的,openfoam的二次开发编译过程肯定用了动态链接库,带动态链接库的编译器查错更容易漏。



  • @bestucan 谢谢你~ 我找到问题了,就是ADD范围不对,我用了最值函数限制了就好了,这一点论文里面没有提,很不好找,谢谢你~


Log in to reply