找回密码
 注册
查看: 4047|回复: 10

化学反应刚性的问题

[复制链接]
发表于 2015-4-2 19:59:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
最近求解带化学反应的欧拉方程时,遇见刚性问题,采用的时间分裂算法,流动和反应解耦。算化学反应的时候,采用亚时间循环,时间采用单步欧拉向前差分,分裂步数需要多次调整。后来看到了chemeq2的开源代码,加到程序中后,发现计算效率貌似还没有单步欧拉向前差分高,计算结果几乎一样,所以来请各位用过拟静态逼近的大神们说说看法,也可能是我的加到程序的chemeq2子程序不对,反对效果没有想象中的好。
发表于 2015-4-2 21:39:11 | 显示全部楼层
读博士的时候做过一些化学反应流问题,当时处理化学反应的刚性问题主要用一种“预调节矩阵(pre-condition matrix)”,物理意义就是把所有化学反应统一到一个虚拟的时间尺度上,从而避免引起刚性问题。
 楼主| 发表于 2015-4-2 22:04:13 | 显示全部楼层
周华 发表于 2015-4-2 21:39
读博士的时候做过一些化学反应流问题,当时处理化学反应的刚性问题主要用一种“预调节矩阵(pre-condition  ...

我记得看过关于这种方法的,但会涉及到源相JACOBI矩阵的求解还有求逆运算,一般来说,这样的工作量挺大的,求解矩阵一般是通过求得其解析表达式还是利用微商数值逼近?涉及矩阵求逆的话,我个人就觉得可以直接通过全隐的方法推进了,希望周华版主能给点建议

点评

全隐的话计算资源消耗比较大,我们当时采用的是点隐格式,就是在一点上计算其预调节矩阵同时求逆。这样说起来好像很麻烦,但其实是求解这类问题必要的代价。  详情 回复 发表于 2015-4-3 17:15
发表于 2015-4-2 22:57:07 | 显示全部楼层
真正“避免刚性问题”一定会涉及到JACOBI矩阵的计算。对一般的数值计算问题,JACOBI矩阵的元素只能用微商数值近似求得。但对于化学反应问题,由于其与“源”、“汇”项相关的碰撞反应的表达式具有同一类型的简单形式,JACOBI矩阵的元素可以解析精确给定,从而极大地简化了问题的求解。

 楼主| 发表于 2015-4-3 08:52:23 | 显示全部楼层
coolboy 发表于 2015-4-2 22:57
真正“避免刚性问题”一定会涉及到JACOBI矩阵的计算。对一般的数值计算问题,JACOBI矩阵的元素只能用微商数 ...

是的,化学反应问题的解析表达式可以求出JACOBI矩阵,但是后来的问题涉及解矩阵,如果说源相问题涉及解矩阵,那么计算对流项也全部使用隐式推进,因为涉及矩阵计算后,倒不如整个来的方便。
发表于 2015-4-3 17:15:32 | 显示全部楼层
dengliedison 发表于 2015-4-2 22:04
我记得看过关于这种方法的,但会涉及到源相JACOBI矩阵的求解还有求逆运算,一般来说,这样的工作量挺大的 ...

全隐的话计算资源消耗比较大,我们当时采用的是点隐格式,就是在一点上计算其预调节矩阵同时求逆。这样说起来好像很麻烦,但其实是求解这类问题必要的代价。
 楼主| 发表于 2015-4-3 18:03:21 | 显示全部楼层
周华 发表于 2015-4-3 17:15
全隐的话计算资源消耗比较大,我们当时采用的是点隐格式,就是在一点上计算其预调节矩阵同时求逆。这样说 ...

恩,点隐确实看起来比较麻烦,主要就是矩阵求逆。看到有相关文献为了求解效率,只取源相JACOBI矩阵的对角元素,计算效果与全矩阵求逆几乎没有明显的差别。之前采用基元反应的时候都是使用算子分裂法,流动和反应分开求解。最近想求解爆轰精细结构的时候,采用网格小于0.01mm时候,发现爆轰波不能顺利传播,总是出现解耦的情况,然而使用氢氧单步或者两步反应的时候就可以,因此当时认为是基元反应选择的问题,后来又选了不同的基元反应,采用时间分裂算法还是出现这个问题,后来就想是不是这种算子分裂的方法在小尺度网格情况下会得出错误结果,因此就想着流动和时间耦合求解。
 楼主| 发表于 2015-4-13 13:45:39 | 显示全部楼层
周华 发表于 2015-4-3 17:15
全隐的话计算资源消耗比较大,我们当时采用的是点隐格式,就是在一点上计算其预调节矩阵同时求逆。这样说 ...

您好,周华站长,我在使用采用完全求逆后的预调节矩阵后,得到的组分质量分数不守恒。查阅文献使用简化处理的雅各比矩阵,只取其对角元素,得到的结果是没有错误的,但使用完全求逆的预调节矩阵与生成源项向量的积得到的deltaU ,deltaU 的各个元素相加不等于零,这个可能是什么问题?使用的方程是每个各组分密度的方程(rho1,...,rhoN,rhou*u,rho*v,rho*E).能量项不单独处理。
发表于 2015-4-14 15:44:03 | 显示全部楼层
这种细节问题要你自己去研究了,方程、算法、程序都要检查一下。
 楼主| 发表于 2015-4-15 10:36:24 | 显示全部楼层
周华 发表于 2015-4-14 15:44
这种细节问题要你自己去研究了,方程、算法、程序都要检查一下。

谢谢周华站长,今天检查了程序,发现了程序的问题,能够运行了。但是发现点隐的效率其实并不高,并没有想象解决源项那么好,时间步长大了也会出现问题,而且点隐我感觉特别适合于定常问题,对于非定常问题,我个人觉得用chemeq等分裂算法求解更好,不知道周华站长的看法如何?

点评

没用过后边的算法,不好做评论。点隐方法是20年前的方法,主要用于解决刚性问题,现在有更好的方法应该不奇怪。  详情 回复 发表于 2015-4-15 15:29
发表于 2015-4-15 15:29:53 | 显示全部楼层
dengliedison 发表于 2015-4-15 10:36
谢谢周华站长,今天检查了程序,发现了程序的问题,能够运行了。但是发现点隐的效率其实并不高,并没有想 ...

没用过后边的算法,不好做评论。点隐方法是20年前的方法,主要用于解决刚性问题,现在有更好的方法应该不奇怪。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表