编译湍流模型成功但是调用计算报错
-
-
@bestucan 谢谢您的回复,我修改了一下我的湍流模型,现在是调用之后跑了两步报错,如下:
这个错误我之前跑算例的时候遇到过,在总压条件里面指定psi thermo:psi就可以了,现在的问题是算例能跑了,但是加上湍流模型后还是报这个错误。请问您说的给一个空流场,看它崩不崩是什么意思呢?怎么操作呢? -
@bestucan 我渐进式排错的话,错误就在改的动量方程上,我是在动量方程、turbulent kinetic energy 跟 turbulent frequency equation 方程的雷诺应力项加上了非线性项,通过分模块排错,这一项加在后两个方程上没有问题,可以算,但是加在动量方程上就错了,我定义了一个非线性张量ADD_ ,动量方程是通过如下方式加的:
-
我说的空流场不崩是想着,可能是计算方法不稳定,容易溢出。所以如果是没有任何速度和湍流的流场(比如完全静止的一潭死水),拿么你的模型多么不稳定都没关系,因为几乎所有物理量都是0,各阶导数也是0。如果这样不崩,那就是算法上的问题了。如果这样也崩,那就是程序语法结构的问题了。
你排错到这一步,我已经不太懂了,不过还有方法更贴近错误。
把no write改成write,这样可以看return回去的是什么值。这个值是否在正常范围内。
以第一个为例,先write不带2kADD_的,再write带2kADD_的,大概能看出来这一项对原本的样子有多大的影响。如果岔开的数量级大了,那就找到问题了。如果岔开的不大,那就手动给k和ADD_赋值,先赋值0,再逐渐改变。如果是改变导致崩,那就是超出范围了;如果赋值0也崩,那就是数据类型之类的编程问题了。
虽然编译没错,但不一定就真没错。C++就这样,功能特性太多。一个不小心,隐形类型转换了之类的,openfoam的二次开发编译过程肯定用了动态链接库,带动态链接库的编译器查错更容易漏。
-
@bestucan 谢谢你~ 我找到问题了,就是ADD范围不对,我用了最值函数限制了就好了,这一点论文里面没有提,很不好找,谢谢你~
6/6