用fluent模拟内循环床气化燃烧(调试过程记录)
论文已发表:http://www.sciencedirect.com/science/article/pii/S0196890417305599
模拟对象为文献Combined gasification of coal and biomass in internal circulating fluidized bed[1]中的内循环气化炉。[1]http://www.sciencedirect.com/science/article/pii/S037838201100395X
---------------------------------------------------------------------分割线-----------------------------------------------------------------
2016.8.? 遇到问题:燃烧过程涉及到空燃比,需要知道质量流率,然而,fluent里对空气设置质量流率可能会出现错误,因此需要知道速度边界与质量流率的关系。(模拟二维对象)
2016.8? 解决:用report--flux功能
对于二维模型,可以设置reference里面的depth来调节质量流率(当边界速度一定时)。
-----------------------------------------------------------------------分割线------------------------------------------------------
2016.8.? 遇到问题:fluent算燃烧果然还是不够稳健,直接加入所有反应(10多个)后直接残差飞上天。
-----------------------------------------------------------------------分割线------------------------------------------------------
2016.8.16 问题解决:先加了两个裂解反应算了一段时间,再加碳氧化,还是不行,残差还是飞上天。索性把碳氧化速率减小1000倍,稳定住了,然后一个个加所有的异相反应,也稳定的不错,直接加入所有的均相反应,收敛性不是很好,主要是连续性方程不收敛,先让他继续这么算,算一晚上明天去看看。
-----------------------------------------------------------------------分割线------------------------------------------------------
2016.8.17 下午去看了看,结果发散了,又在那倒腾好一会,现在终于把所有反应都加上去并且都能收敛了。过程是这样的:我从昨天保存的地方,开始逐个加均相反应。刚开始两个还能收敛的不错,加到第三个均相反应的时候,残差又降不下去了,即使把反应速率改小,把时间步长减小,前两步能够收敛,但是到后面又收敛的不好了。来回尝试了好几次还还是不行。然后我有了个灵感,因为把步长减小后,前几步的残差是能降到很低的,这样我把收敛标准调到e-4的话,误差积累应该就更小,没准收敛效果会更好。果然我的想法是可行的。把连续性标准调到e-4以后,收敛性确实好多了。然后我还把另外几个湍流模型都算上了,看看它们算出来的流型有啥区别没有。明天去看看。
-----------------------------------------------------------------------分割线------------------------------------------------------
2016.8.23 先总结一下前两天的。陆陆续续去了好几次,调的过程中发现,时间步长不是越小收敛效果越好。刚开始步长是1e-6,连续性下不去,然后我偶然发现把时间步长增加到1e-5反而能够很好收敛。目前看来,暂时能够比较稳定的计算,但是比较头疼的是,由于反应比较多,有两个网格温度超限,而且每一步残差都会飞到很高,后果就是没准哪一步就由于残差弹的太高导致程序死掉,但是继续算还是可以算的。目前就是这个状态,明天拿个细点的网格去算算试试。看能不能稍微好点。
-----------------------------------------------------------------------分割线------------------------------------------------------
2016.9.19 这回重新调整了一下case,把碳单独看成一相,这样能减少反应方程的数目。前期调残差也废了点劲,主要还是减小步长,然后根据不收敛的变量找到对应松弛因子,减小之。比较头疼的是算到14秒的时候,突然发散了,很是奇怪,按说基本上产物都比较稳定了,不应该发散才对。多半还是反应的原因,然后先把均相反应先全部关上,依次打开,发现是碳氧化反应导致的,然后把这个反应速率先减少10倍,试了试,发现可以稳定计算,但是影响产物的量,先这样计算一段时间试试吧。
-----------------------------------------------------------------------分割线------------------------------------------------------
2016.9.21 真的是一个问题一夜回到解放前。之前通的是300k的低温气体,流化还不错,后来改为1073k以后,死活流化不起来了。尝试了一下把气体密度改为volume-weighted,这回可以了。而且,发现沙子流化不起来的话,会阻碍气体的热量传递,高温区只有低端入口一点点。
-----------------------------------------------------------------------分割线------------------------------------------------------
2016.9.28 这几天真是经历各种神奇的bug,累觉不爱,好在现在基本解决。自从装上linux系统以后,windows下的fluent就出现奇葩问题,设置好以后,开始计算就会报错,莫名其妙的错误,就像这样:
然后关掉这个奇怪的框框,继续算就能算了。但是让人很不爽啊。于是我就把linux备份出来,把整个硬盘格式化,重做系统,居然还是如此。我就很方了。。最后的最后,我是换了个系统重装才解决这个问题。但是我现在并不知道到底是什么问题引起的,简直神奇。
这还没完。由于之前几次算的都不是很理想,我就重新跑了个流化的case,具体设置后面介绍,当把反应模型打开以后,出现掉进程的问题(并行)。然后单线程算,出现segmentation fault的问题。这下我更方了,我甚至一度感觉是电脑硬件出问题了。然后我就一步步排查,最终发现,当设置湍流模型为k-epsilon dispersed,生物质和煤同时给,此时打开容积燃烧模型就会出现segmentation faul的问题,于是我就换成k-epsilon mixture,就不会有这个问题了,然后就是一步步加反应了。下面说说这个case怎么设置的。
首先我用1073k的气体通入床内,并且patch整个流体域为1073k,湍流模型设置的是dispersed(但是事实证明,最好别用这个,用mixture吧,虽然mixture的鼓泡床出泡效果没有dispersed明显),等充分流化以后就开始加生物质和煤了,这两者是常温。先只加入裂解和水蒸发这两个,最难的地方在于,由于床料的阻碍作用,生物质和煤的速度残差下不去。把步长减小到2e-4,动量松弛因子可以小到0.1左右,然后可以先这样算一段时间,因为随着反应的进行,生物质和煤会反应掉,反正我是中午回去睡一觉回来看就收敛了。收敛以后可以再尝试着把其他反应都加上,并把过小的松弛因子(比如动量)加大点。目前看来,计算还算稳定,就是不知道会不会和之前一样算一会又发散。先看看吧。对了,这次我先用单线程算试试,看和双线程结果有没区别。
-----------------------------------------------------------------------分割线------------------------------------------------------
2016.10.31 基本上反应全部加进去收敛以后,就能一直比较稳定了,剩下的就是调反应速率,因为这块涉及到不同文献给出的反应速率单位不同,导致指前因子单位不同,所以换算很麻烦,再加上有些文献写的可能是错的,先来记录一下单位换算的问题。
举个例子:CH4 + O2的反应速率表达式长这样,r = k[CH4][O2]。在FLUENT里,反应速率的单位是kmol/m3/s,气体浓度单位是kmol/m3,这样,就可以推出k的单位是m3/kmol/s,所以在FLUENT里,对于这个反应要保证单位正确。此时假如查到一篇文献反应速率的单位是mol/m3/s,那么可以推出其k的单位是m3/mol/s,应该将k中指前因子乘以1000,再填入FLUENT面板中。
虽然道理是这样,我自己操作过程中却遇到问题,我用文献《Three dimensional kinetic modeling of fluidized bed biomass gasification》的反应速率,并换算好单位,但是结果差的很多,这个反应速率我之前是用过的,组分对的也还可以,没换算单位,所以对于这篇文献,我怀疑作者可能给的不是换算以后的值。为什么会有这种感觉呢,我通过对比了几篇文献中CO+H2O的反应速率的值,感觉有些混乱。
这个来自一篇引用很高的文献《Modeling of biomass gasification in fluidized bed》
可以看到,A的值(也就是上文提到的k值)是2.78e3,其单位是m3/kmol/s,和FLUENT里是一样的,再来看看另几篇。
-- from 《Euler–Lagrange/DEM simulation of wood gasification in a bubbling fluidized bed reactor》
-- from 《Simulation on gasification of forestry residues in fluidized beds by Eulerian–Lagrangian approach》
-- from 《Two dimensional numerical computation of a circulating fluidized bed biomass gasifier》
如果按照第一篇为基准,那么A单位转换成m3/mol/s后应该是2.78,可是从这几篇文献可以看到,非常混乱。
目前还没找到确定答案,存疑。