收敛失败可能是由于:
a) 内部(线性求解)迭代收敛失败。
b) 由于时间步截断引起的牛顿迭代不收敛。
c) 物质平衡误差。
如果你发现输出文件中频繁出现"迭代例程收敛失败",采用下述方法重新尝试:
1. 采用更小的时间步长。通过使用 *DTMAX设置较小的最大时间步,或使用 *NORM *PRESS 以及 *NORM *SATUR 降低每一时间步内允许的压力,饱和度变化值以达到减小时间步的目的。
2. 使用关键字 *ITERMAX 增加最大迭代步数。或者,
3. 使用 *SDEGREE 增加矩阵分解的度,但应注意到这种方法会增加存储需要。
如果在第一个牛顿迭代或第二个牛顿迭代不收敛,而至少在最后一个牛顿迭代是收敛的,则不是一个严重问题。
牛顿迭代收敛失败引起时间步截断,而这是由于在迭代过程中某些基本变量超过了标定的变化范围,这样就会产生压力或饱和度负值这样的非物理值,牛顿迭代就会超过确定的最大次数。
如果问题是由最大允许变化引起的,并且不经常产生这种问题,这个问题就不是十分重要的。如果发生大量的时间步截断现象,就应采用下述方法加以改进:
4. 对相对渗透率和PVT的曲线进行检查是否存在非线性化,不连续,以及跳跃点,这些曲线应当是平滑的。
5. 检查是否正确地描述了网格及其他的性质。
6. 检查确定的井生产限制。最好始终对注入井给定最大井底压力,对生产井给定最小井底压力。
7. 如果不收敛是由于超过限定的牛顿迭代次数,使用关键字 *NEWTONCYC 增加牛顿迭代循环次数。
如果迭代超过限定次数是由于数值振荡引起的,可在输出文件中看到某些网格的气相反复出现或消失,这时采用平滑非线性曲线(4)和减小时间步长(1)的方法是解决此类问题的较好途径。
8. 在油藏的某些区域或整个油藏采用全隐式方法求解。如果使用缺省的转换临界值, *AIM *STAB 只对隐式网格的相邻点作解法转换检查,所以如果在油藏中的某些地区产生剧烈变化,而这些地区又不与井相邻,那么就需要将这些问题设置为隐式求解。
这种情况的产生的原因包括:
a) 当不使用垂向初始化平衡计算时,即使所有井都不打开,有时也会造成初始压力和饱和度发生很大变化,在这种情况下,应使用全隐式方法求解。
b) 当气顶存在时,如果有较大的气锥产生,应当将气顶底部层位设为全隐式求解,至少应将气锥产生地区设为全隐式。
c) 当某些网格具有相当高的渗透率值时,很小的压力变化也会造成饱和度剧烈变化,建议将这些地区的网格设为全隐式求解。
如果收敛容限与每个时间步的标定变化相比太大就会造成物质平衡错误,检查收敛容限使其小于标定值。使用关键字 *MATBALTOL 改变模型的敏感性。
在大多数情况下,迭代过程中允许变化 *NORM *PRESS和 *NORM *SATUR,以及容限 *CONVERGE *PRESS 和 *CONVERGE *SATUR 的缺省值都是合适的,但在某种情况下,比如当你模拟裂缝油藏或使用裂缝代表水平井时,建议最好使用较小的值。对于模拟锥进问题,同样也建议使用较小的允许变化值。