ASC24--The OpenCAEPoro Challenge

终于拿到奖状了

本次介绍一下关于ASC24题目总的挑战题目——The OpenCAEPoro Challenge

       这个问题的目的是使用 OpenCAEPoro 进行三相黑油模拟。模拟涉及三层不同的储层结构,包含一口注入井和一口生产井。天然气注入顶层,石油从底层产出。注入天然气导致石油膨胀,天然气流向生产井。储油层被认为是封闭的,即储油层与外部区域之间没有质量或热量交换为此,需要对代码进行修改和优化。主要重点是 OpenCAEPoro 和 PETSc 求解器中的代码部分。通过修改和优化代码,目的是缩短模拟的运行时间。
具体来说,在 OpenCAEPoro 中,可能需要调整和优化与模拟有关的参数,如时间步长、总模拟时间和输出间隔。这些参数的选择将直接影响模拟的效率和计算时间。

我们使用的系统配置如下:

Operating system

Ubuntu 20.04

Compiler

Fortran 4.8.5\GCC 7/9,G++ 7/9\CBLAS\BLAS 3.8.0

MPI software

MPICH 4.1.2\lapack-3.11\parmetis-4.0.3\hypre-2.28.0\petsc-3.20.3\petsc_solver\OpenCAEPoro

在考虑优化过程中,我们给出了多种方法,其中为了优化 Solver::GoOneStepIsoT 函数,我们可以考虑以下几点:
- 频繁的条件判断:ctrl.time.GetCurrentDt() < MIN_TIME_CURSTEP 在每个循环中都要检查。如果这个条件很少为真,可能会造成不必要的性能损失。请考虑是否有办法减少此检查的频率,或在更合适的位置进行判断。等等

1.	const OCPNRsuite& Solver::GoOneStepIsoT(Reservoir& rs, OCPControl& ctrl) {  
2.	    // Prepare for time marching  
3.	    IsoTSolver.Prepare(rs, ctrl);  
4.	      
5.	    // Time marching with adaptive time stepsize  
6.	    while (true) { // improve infinite loop conditions    
7.	        double currentDt = ctrl.time.GetCurrentDt();  
8.	        if (currentDt < MIN_TIME_CURSTEP) {  
9.	            if (CURRENT_RANK == MASTER_PROCESS) {  
10.	                OCP_WARNING("Time stepsize is too small: " + to_string(currentDt) + TIMEUNIT);  
11.	            }  
12.	            ctrl.StopSim = OCP_TRUE;  
13.	            break;  
14.	        }  
15.	  
16.	        IsoTSolver.AssembleMat(rs, ctrl);  
17.	        IsoTSolver.SolveLinearSystem(rs, ctrl);  
18.	  
19.	        if (!IsoTSolver.UpdateProperty(rs, ctrl)) {  
20.	            continue;  
21.	        }  
22.	  
23.	        if (IsoTSolver.FinishNR(rs, ctrl)) {  
24.	            break;  
25.	        }  
26.	    }  
27.	  
28.	    IsoTSolver.FinishStep(rs, ctrl);  
29.	  
30.	    return IsoTSolver.GetNRsuite();  
31.	}  


 

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值