rhoCentralFoam发散,出现Negative Initial Temperature
-
计算目的:计算跨声速外流,先尝试简单模型计算,尝试使用rhoCentralFoam求解器。
算例外形 球 直径 0.002m。 边界条件 自由流 来流速度 1到250m/s均有计算 压强 6.0e4 Pa 温度 270K 流体类型 标准气体 网格为非结构,prism附面层。
条件根据rhoC的tutorials算例修改。首先说一下在rhoC的tutorials算例发现的几个现象:
- 所有rhoC的tutorials算例均为laminar。
- 所有rhoC的tutorials算例计算中输出的:
diagonal: Solving for rho, Initial residual = 0, Final residual = 0, No Iterations 0 diagonal: Solving for rhoUx, Initial residual = 0, Final residual = 0, No Iterations 0 diagonal: Solving for rhoUy, Initial residual = 0, Final residual = 0, No Iterations 0 diagonal: Solving for rhoE, Initial residual = 0, Final residual = 0, No Iterations 0
残差始终为0。和我计算中一致,不知道这是什么问题。
3. 有些算例为了控制Mach数,速度温度都设置的很低,看似是低速但是马赫数很高。但是这些算例中的rho/rhoU/rhoE的残差也始终是0。rcf_sphere算例(提取码: b7h6)出现的问题:Negative Initial Temperature
报错如下:
--> FOAM FATAL ERROR: Negative initial temperature T0: -10272.9 From function Foam::scalar Foam::species::thermo<Thermo, Type>::T(Foam::scalar, Foam::scalar, Foam::scalar, Foam::scalar (Foam::species::thermo<Thermo, Type>::*)(Foam::scalar, Foam::scalar) const, Foam::scalar (Foam::species::thermo<Thermo, Type>::*)(Foam::scalar, Foam::scalar) const, Foam::scalar (Foam::species::thermo<Thermo, Type>::*)(Foam::scalar) const, bool) const [with Thermo = Foam::hConstThermo<Foam::perfectGas<Foam::specie> >; Type = Foam::sensibleInternalEnergy; Foam::scalar = double; Foam::species::thermo<Thermo, Type> = Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleInternalEnergy>] in file /home/rebel/OpenFOAM/OpenFOAM-7/src/thermophysicalModels/specie/lnInclude/thermoI.H at line 56. FOAM aborting #0 Foam::error::printStack(Foam::Ostream&) at ??:? #1 Foam::error::abort() at ??:? #2 Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleInternalEnergy>::T(double, double, double, double (Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleInternalEnergy>::*)(double, double) const, double (Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleInternalEnergy>::*)(double, double) const, double (Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleInternalEnergy>::*)(double) const, bool) const at ??:? #3 Foam::hePsiThermo<Foam::psiThermo, Foam::pureMixture<Foam::constTransport<Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleInternalEnergy> > > >::calculate() at ??:? #4 Foam::hePsiThermo<Foam::psiThermo, Foam::pureMixture<Foam::constTransport<Foam::species::thermo<Foam::hConstThermo<Foam::perfectGas<Foam::specie> >, Foam::sensibleInternalEnergy> > > >::correct() at ??:? #5 ? in "/home/rebel/OpenFOAM/OpenFOAM-7/platforms/linux64GccDPInt32Opt/bin/rhoCentralFoam" #6 __libc_start_main in "/lib/x86_64-linux-gnu/libc.so.6" #7 ? in "/home/rebel/OpenFOAM/OpenFOAM-7/platforms/linux64GccDPInt32Opt/bin/rhoCentralFoam"
该错误往往发生在计算几十到一百个时间步后出现,根据残差可以发现和算例的区别是,每步的initial residuals都比final residuals大,而tutorials算例都是减小的,符合收敛的趋势。
但是,奇怪的是每一步的初始残差又总是只有10^-7^量级,也并不是很大。迭代后往往上升两个量级。。
其中内能e的上升比较明显,能从10^-9^上升到10^-5^。
所以光看残差趋势是预想不到某一步的直接发散。之后增加minMax函数监视,发现在接近发散的几个时间步,最大内能和温度都会陡增。从约200K增加到2000多K。
但是由于时间步长太短,几十步发散的情况下,可视化后处理看不出什么道道。球表面像长痘痘一样出现一些高温点。这是说明附面层网格出毛病了??
总的来说,应该就是能量方程发散,出现非物理的内能/温度。另外,fvOptions限制器已经加了,不过没起作用。。。。
请问这个负初始温度到底是啥?以及解决办法。
谢谢谢!
还有两个小个问题是,
1.上面报错的一堆“#::???” ,这堆报错信息到底能看出啥呀?这里面的问号是我电脑乱码了吗?
2.为什么同样laminar,同样的求解器,在不同算例里fvsolution中设置的量不同呢?
我是根据obliqueShock算例修改的,只是改了polyMesh和0文件下边界条件。可是运行报错e未定义,但是原算例本来就没有哇。 -
算例文件在文中已经贴出
-
尝试画粗网格计算正方体外流,结果确实可以计算,deltat=10^-7算到0.05s,未出现以上问题。
对应精细网格,计算到300个时间步,又出现了温度陡增的发散问题。
细网格内能残差
粗网格内能残差两个算例的迭代中能量残差都是initial residual< final residual,不过粗网格没有发散。
在这些rhoC算例中计算发现,温度压强都有“龟派气功”的特效。。。前缘驻点附近形成的高压会脱体。。。后缘驻点类似。。。
到最后消失了。。。 -
@东岳 是的哇
-
@东岳 我其他的边界条件pT都是一样的,控制雷诺数,计算了不同的速度。因为是层流,所以上传的是最小速度1m/s的。
-
@东岳 那么高速导致雷诺数量级太大,层流模型还能算么?
-
https://www.cfd-china.com/topic/1737/可压缩求解器为什么密度残差一直为0-迭代步也一直是0
这里面回答了rho,rhoE,rhoU残差为0的原因。
-
@东岳 重新试了一下250m/s,相当于0.83Ma,算了20步就出现负初始温度的问题
-
250m/s的cube,60步出现negative initial temperature。# Field minima and maxima # Time field min location(min) max location(max) 3.57143e-05 T 1.454278e+02 (1.646393e-02 1.393888e-19 -1.709886e-18) 3.108947e+02 (-1.646393e-02 1.393888e-19 -1.725321e-18) 3.57143e-05 e 1.043157e+05 (1.646393e-02 1.393888e-19 -1.709886e-18) 2.230054e+05 (-1.646393e-02 1.393888e-19 -1.725321e-18) 3.64286e-05 T 1.335562e+02 (5.517241e-03 1.105814e-02 1.105814e-02) 3.098790e+02 (-1.646393e-02 1.393888e-19 -1.725321e-18) 3.64286e-05 e 9.580017e+04 (5.517241e-03 1.105814e-02 1.105814e-02) 2.222768e+05 (-1.646393e-02 1.393888e-19 -1.725321e-18) 3.71429e-05 T 2.917792e+01 (6.206897e-03 1.105814e-02 1.105814e-02) 3.078215e+02 (-1.646393e-02 1.393888e-19 -1.725321e-18) 3.71429e-05 e 2.092939e+04 (6.206897e-03 1.105814e-02 1.105814e-02) 2.208010e+05 (-1.646393e-02 1.393888e-19 -1.725321e-18) 3.58333e-05 T 1.400088e+02 (5.517241e-03 1.105814e-02 1.179091e-02) 3.108729e+02 (-1.646393e-02 1.393888e-19 -1.725321e-18) 3.58333e-05 e 1.004286e+05 (5.517241e-03 1.105814e-02 1.179091e-02) 2.229898e+05 (-1.646393e-02 1.393888e-19 -1.725321e-18) 3.65278e-05 T 6.218740e+01 (5.517241e-03 1.105814e-02 1.105814e-02) 3.097428e+02 (-1.646393e-02 1.393888e-19 -1.725321e-18) 3.65278e-05 e 4.460715e+04 (5.517241e-03 1.105814e-02 1.105814e-02) 2.221792e+05 (-1.646393e-02 1.393888e-19 -1.725321e-18)
最后几步的温度最值,最后两步$T_{min}$下降一个量级。
-
沉了么。。?有大佬试试我的算例了么?