问答中心分类: 数值计算模拟计算过程中,遇到较小的时间步长或不收敛的问题,应该如何分析原因并找到解决方法?
0
cc 管理员 asked 3年 ago
1 Answers
0
admin 管理员 answered 3年 ago

 由于下述原因可能导致收敛失败:

  1. 内部迭代收敛失败
  2. 牛顿迭代失败导致步长截断
  3. 物质平衡误差

  如果你在output文件中经常查看到”iteration routine fails to converge” ,可尝试下述方法:

  • 采用较小的时间步长。采用*DTMAX 设定较小的最大时间步长或者采用*NORM *PRESS 和/或*NORM *SATUR来降低每个时间步的参数变量的改变范围;
  • 采用关键字 *ITERMAX增加指定的迭代次数;
  • 采用*SDEGREE增加分解度。请注意这些措施会增加储存空间。

如果时间步长截断(CUT)大量发生,尝试下述方法:

  • 检查相渗曲线和PVT数曲线,确保曲线是光滑的
  • 检查网格和其他属性是否有异常点
  • 检查井的约束条件,应对每口注入井指定最大井底压力,对每口生产井指定最小井底压力
  • 采用关键字*NEWTONCYC 增加指定的牛顿周期数,这个方法适用于超过牛顿迭代最大数导致的不收敛。

设定油藏的某些区域或者整个油藏为全隐式求解。这种方法适用于:

  • 当不采用垂直平衡初始化时。这种初始化方法会导致初始压力和饱和度改变较大,即便是关闭所有井。当这种情况发生时采用全隐式。
  • 当存在气顶时。
  • 当某些网格渗透率异常高时。较小的压力改变会导致这些网格饱和度剧烈变化。应将这些区域的网格设定为全隐式求解。对渗透率较高的区域压力收敛误差推荐使用1 kPa 。

如果找不到原因,可以输出不收敛信息,操作步骤为: 
Builder → I/O Control → Text output → Iteration TSS + details of unconverged variables →保存文件→ 再计算一次 → 查看OUT文件的诊断信息。

 

wangjianguo 管理员 replied 2年 ago

从2019版开始,3个模拟器都可以用人工智能技术来调整时间步长了,关键字AUTOTUNE ON,可以试试。有的模型不光收敛性问题能解决,提速也非常明显。