找回密码
 注册
查看: 3975|回复: 8

chemkin的solver的问题

[复制链接]
发表于 2005-9-16 21:36:49 | 显示全部楼层 |阅读模式

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

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

x
稳态求解器solver的设置分basic和advanced两个选项卡。
在basic中的absolute tolerance 和relative tolerance是指绝对残差和相对残差不?我一般取1.0e-12和1.0e-5,现在有问题解不出来,把它们分别改成5.0e-4,1.0e-3了还不行;
又把adanced 选项卡中的number of time steps由原用的100改成150,initial sizes of time step从1.0e-6改成了5.0e-5,还是解不出来;
请问:
1,计算energy equation时,取什么数量级好呢?
2,number of time steps和initial sizes of time step是指什么,值变大是什么意思,变小呢?
3,advaned选项卡中还有很多设置项,有什么比较有用的吗?怎么设置?
谢谢!
 楼主| 发表于 2005-9-24 15:29:26 | 显示全部楼层

chemkin的solver的问题

呵呵,自问自答吧,首先贴出我翻译的chemkin4.0帮助文件theroy的第15章的部分章节,讲到了solver处理控制方程的过程和方法:
15.1同质系统稳态求解器(Steady-state Solver for Homogenous Systems)
作为稳态问题, 0-D 同质系统在章节8 里描述,使用数字求解器 TWOPNT来对由一批控制方程决定的反应器模型进行求解。 TWOPNT 解决系统代数等式时,首先对等式8-1, 等式8-9, 等式8-18, 等式8-19, 等式8-20,等式8-60和等式8-54的稳态表达式代表的非线性代数等式运用一种修改过的牛顿算法。 但是, 在牛顿算法情形下若迭代不收敛 ,求解器自动地对等式的瞬态表达式的固定时间步数积分,这种时间步进的做法为牛顿算法提供一个离稳态解较近的新初值, 增加牛顿方法的收敛趋势。 在时间步进以后, 牛顿算法再次尝试收敛, 如果这失败, TWOPNT 在瞬变解答上花另外的时间步数进一步改进最初的迭代。 最后, 牛顿迭代收敛于稳态解。
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2005-9-18 13:06:39 | 显示全部楼层

chemkin的solver的问题

对了,我遇到的问题是:用PSR,初始温度给为2400K时能搞定,改成1700K,加上一点热损失(8000cal/sec,etc.)就算不出来了。改低温度加热损失的原因是希望终温在1300 ̄1800K范围内,研究这个时候的污染物排放。
那位知道为什么改低温度加热损失就算不出来呢?
 楼主| 发表于 2005-9-24 15:32:54 | 显示全部楼层

chemkin的solver的问题

15.1.1 初值
用牛顿迭代算法求解控制方程要求用户提供解答变量的初值。有时可能难以获得化学组成的较好初值,特别是在你对所研究的化学系统不甚了解的情况下。这时从更直觉的角度来解决问题也许是更好的。例如,对一个热学问题, 气体物质的良好初值往往是初始温度下的热力学平衡态构成。 为此目的,非强制的平衡演算(不提供初值的情况下为默认选择)将系统的吉布斯自由能减到最小以便确定平衡气体摩尔分数。当用户不供应任何气相物质摩尔分数的初值条件时,这个确定气相物质构成初值的方法会自动被初始化。 如果平衡构成不为反应器直接提供收敛解, 用户可以从目标始增加滞留时间(促使反应条件向平衡移动)直至得到解。 这个解可被作为初值继续解所需滞留时间下的解。这种逐步逼进目标解的做法由连续性(设置树上有continuation选项设置的)性质简化了, 并且一般只需很少的计算时间。对离子系统, 一种相似的方法能被使用于获得很难获得初值的情况。 在这种情况下, 用户可能要提供一个接近进入反应器的试剂气体构成的原始猜测, 并将电离沉积层设得很薄。 然后用连续性逐渐增加反应器电力可能导致希望的解答。
表面分数初值的获取经常是更加困难的, 不过对牛顿算法的影响不大。 有个普遍适用的规则是为每个物质都提供一个在系统中的初值,既使这些数字非常小也行。例如将初值设为1.0E-7也比用0好。
用户可选择求解气体能量方程或保持温度被固定在最初的指定值。一些情况下用户可以选择不求解气体能量方程。 例如, 当估计热耗很困难时,也许反应器温度被准确地测量了。解出能量方程后, 用户可选择用一步或是两步求解方程组。 默认情况下将使用二步: 首先在固定初始温度下求解反应过程化学物质构成变化,然后用刚才的解答作初值同时求解能量方程和物质构成。这个两步方法使方程的稳定性及非线性来源于反应速率指数对气体温度的依赖性的热力系统收敛的更有力度。对离子系统, 当你求解电子能量方程时, 收敛通常选择没有固定温度迭代的一步方法最适当。
 楼主| 发表于 2005-9-24 15:39:14 | 显示全部楼层

chemkin的solver的问题

15.1.2 0-D 反应器的修改过的牛顿下山法
牛顿方法确定迭代或近似解的序列来接近真实解。 为方便记忆, 我们叫这些近似解为矢量φ。当任意φ被代入控制方程方程一般不等于零,除非φ代表真实解; 一般来说方程等于一个残余的矢量F。下一步是目标发现能满足下式的φ:
F(φ)=0      (15-1)
0-D同质反应器的矢量φ可能是:
φ={ξj,…, ξNPSR}T  (15-2)
其中:
ξj={T,Te,Y1,…,Ykg,Zks(1),…..}T
T和Te是气体和电子的温度,Y’s是气体物质质量分数,Z’s是各表面相的表面分数,X’s是固相物质的摩尔分数,ρ是表面相的密度可变段的表面密度。解矢量的确切的组成也许随问题类型和反应器模型变化。未知数的总数J由方程8-66定义 。对应的矢量F由对应的气体能量方程, 电子能量方程, 物质方程和表面密度的连续性方程的残差组成。
假设解答的初值φ(0)是相当好的,牛顿方法会导致一系列迭代值{φ(n)}收敛于非线性方程Fφ(n)=0。牛顿算法的最标准的格式通常难以真正实施。
φ(n+1)=φ(n)-F(φ(n))/(ΔF/Δφ)φ(n)      (15-4)
评估Jacobian 矩阵ΔF/Δφ很费时, 并且收敛一般要求有一个非常好的初值φ(n). TWOPNT 有对这些问题的通常补救方法。 首先, TWOPNT 保留几步迭代的Jacobian 矩阵, 而不是依照方程15-10每步迭代都更新。因而, 当前使用的Jacobian矩阵J(n)可能是基于几步之前的解。 用户可以在输入文件中指定TWOPNT在计算新Jacobian矩阵以前迭代的最大步数。 其次, 由φ(n)向φ(n+1)的推进由因子λ(n)缩短。 修改过的牛顿算法成为
  φ(n+1)=φ(n)-λ(n)(J(n))-1F((n))       (15-5)
0<λ(n)<=1,且
   
J(n)=(ΔF/Δφ)φ(n)       1<m≤n      (15-6)
在内部, 每当老Jacobian收敛失败TWOPNT 将引起新Jacobian。 当式15-11 正确地表明两步迭代间的联系时, TWOPNT 不计算Jacobian 矩阵的逆矩阵,而是对未阻尼的矢量Δφ(n)求解线性方程系统J(n)Δφ(n)= F((n))。
TWOPNT 算法确定衰减系数λ(n)和基于严格标准设计的保持迭代稳定和在解的范围之内的新Jacobian的需要。 接受一步新的迭代解φ(n+1), TWOPNT 要求未衰减的步幅的要在数量级上减少。

如果解φ(n+1)未通过标准, TWOPNT 拒绝和它以一半衰减参数值或一个新Jacobian 矩阵再进行尝试。TWOPNT 调整衰减参数保证解总在解域内。物理 量对解域限制如:温度必须为正,物质的质量分数必须在0和1之间。对于稳态求解器,其实可能修改物质的质量分数的最小值轻微地为负值。允许某些物质摩尔分数略为负值有时可提高迭代收敛速度, 特别在物质质量分数存在几个数量级的差别时。
牛顿迭代法就这样进行着直到符合用户定义的收敛标准。 收敛要求最大修正矢量Δφ(n)减少到了在用户定义的绝对残差和相对残差之内。
Abs(Δφ)≤max(A,R×abs(φ))       (15-8)
A是绝对残差,B是相对残差。 相对残差大致表明在收敛解中有效数字的位数,绝对残差从相对收敛标准中去掉解中的小于A的组分。 一般地, 绝对残差应该小于任何关心的物质的最大质量分数。 用户在为离子解指定A时应该特别小心, 比起其他重要物质来说,电子质量很小,导致电子的质量分数更小。 相对残差一般取在1.0E-3 到1.0E-4的范围。
如果衰减无法得到适当的修正矢量, TWOPNT 计算一个新的Jacobian矩阵 。之后若牛顿下山仍然无法得到适当的修正矢量, TWOPNT 开始采取时间步进值。 时间步进的详细做法在下面对Jacobian 矩阵的描述之后。
 楼主| 发表于 2005-9-24 15:45:55 | 显示全部楼层

chemkin的solver的问题

现在回答我在一、二楼的问题:
一楼的问题:
absolute tolerance 和relative tolerance是指绝对残差A和相对残差B,前者是从相对收敛标准中去掉解中的小于A的组分,一般设为小于任何关心的物质的最大质量分数;后者大致表明在收敛解中有效数字的位数,一般取在1.0E-3 到1.0E-4的范围。
time steps我译为时间步进,具体见上文,一般设为(1~10)E-6。
二楼的问题:
2400K是绝热燃烧下估计的炉膛初温,因为计算值为2435K,所以是较好的估计,改成1800K就不好收敛了;当我为炉膛加上4500cal/sec的热损失后,再设初温为1700K,顺利搞定。
 楼主| 发表于 2005-9-24 15:47:35 | 显示全部楼层

chemkin的solver的问题

限于水平,翻译的有些地方可能不到位,欢迎参照原文继续讨论。希望我的一点经验对大家的研究有一点帮助!
发表于 2005-9-24 17:44:33 | 显示全部楼层

chemkin的solver的问题

继续努力!
发表于 2005-9-24 23:51:02 | 显示全部楼层

chemkin的solver的问题

真该好好想你学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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