✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,代码获取、论文复现及科研仿真合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab完整代码及仿真定制内容点击👇
🔥 内容介绍
表皮层属性是描述多层油藏注水过程中流体流动特征的重要参数。本文提出了一种基于扩展流模拟器(ES)和多维尺度分析(MDA)方法计算注水条件下多层油藏表皮层属性的方法。该方法通过 ES 模拟获得不同注水速率下的注水井和生产井的压力响应数据,并利用 MDA 方法分析压力响应数据,提取表皮层属性。
引言
多层油藏注水开发是提高石油采收率的重要手段。表皮层属性,如表皮层渗透率和表皮层储层空间,是描述注水过程中流体流动特征的重要参数。准确计算表皮层属性对于优化注水方案、提高注水开发效果至关重要。
传统的表皮层属性计算方法主要基于井筒测试或井间对比的方法。这些方法存在数据量少、代表性差、计算精度低等问题。近年来,基于数值模拟和多维尺度分析的方法逐渐成为计算表皮层属性的新兴技术。
方法
本文提出的基于 ES-MDA 方法计算注水条件下多层油藏表皮层属性的方法包括以下步骤:
-
建立多层油藏数值模拟模型:根据油藏地质资料、开发历史资料和注水方案,建立多层油藏数值模拟模型。
-
进行注水模拟:在数值模拟模型中,设置不同的注水速率,进行注水模拟。
-
提取压力响应数据:从注水模拟结果中,提取注水井和生产井的压力响应数据。
-
进行多维尺度分析:利用 MDA 方法对压力响应数据进行分析,提取表皮层渗透率和表皮层储层空间。
结果
本文将该方法应用于某多层油藏注水开发实例。通过 ES 模拟,获得了不同注水速率下的注水井和生产井的压力响应数据。利用 MDA 方法分析压力响应数据,提取了表皮层渗透率和表皮层储层空间。
结果表明,该方法能够准确计算多层油藏注水条件下的表皮层属性。计算的表皮层渗透率和表皮层储层空间与实际情况吻合较好。
结论
本文提出的基于 ES-MDA 方法计算注水条件下多层油藏表皮层属性的方法具有以下优点:
-
数据量大,代表性强
-
计算精度高,能够准确反映表皮层属性的变化规律
-
适用范围广,可用于不同类型多层油藏的注水开发
该方法为优化注水方案、提高注水开发效果提供了重要的技术支持。
📣 部分代码
% ==============================================================================================================
% =======================================================================================================
clear; clc; close all %clearing the console and the memory, and closing all graphical windows===============
%%
% setting the unit conversion constants - DONT CHANGE!!!
global alphap alphat
alphap=19.03;
alphat=0.0003484;
% setting the time vector size (must be an even number, to include falloff)
dim=142/2;
% setting the first timestep
t0=9.6d-6;
deltat=10.0^(0.1);
%%
% setting the input parameters
% initializing the number of layers
nlayers=2;
% setting oil and water viscosities
mio=2.3*ones(1,nlayers);
miw=0.52;%*ones(1,nlayers);
% setting the injection flow-rate
qinj=100.0;
% setting the wellbore radius
rw=0.108;
%%
% initializing the layer properties vectors
kj=zeros(1,nlayers);
hj=kj;%zeros(1,nlayers);
phij=kj;%zeros(1,nlayers);
cr=8e-5*ones(1,nlayers);
co=1.138e-4*ones(1,nlayers);
cw=4.04e-5*ones(1,nlayers);
ct=kj;
rskinj=rw*ones(1,nlayers);
kskinj=kj;%zeros(1,nlayers);
% setting layer properties
hj(1)=15.0;
hj(2)=10.0;
% hj(3)=7.0;
kskinj(1)=200.0;
kskinj(2)=200.0;
% kskinj(3)=300.0;
for j=1:nlayers
% setting layer permeability
if j == 1
kj(j)=600.0;
end
if j == 2
kj(j)=600.0;
end
% if j == 3
% kj(j)=800.0;
% end
% setting layer thickness
% hj(j)=20.0;
% setting layer skin zone permeability
% kskinj(j)=kj(j)*0.25;
% setting layer skin zone radius
if (j == 1)
rskinj(j)=rw+0.0;
end
if (j == 2)
rskinj(j)=rw+0.0;
end
% if (j == 3)
% rskinj(j)=rw+0.2;
% end
% setting layer porosity
phij(j)=0.25;
end
%%
% setting the relative permeability data
% initializing the initial water saturation
swi=0.25;
% initializing the residual oil saturation
sor=0.28;
% water relative permeability data
krw(1)=0.000000000; krw(2)=0.004730000; krw(3)=0.009458000;
krw(4)=0.014188000; krw(5)=0.018916000; krw(6)=0.023646000;
krw(7)=0.028374000; krw(8)=0.033110000; krw(9)=0.037873000;
krw(10)=0.042757000; krw(11)=0.047613000; krw(12)=0.052476000;
krw(13)=0.058981000; krw(14)=0.066197000; krw(15)=0.073700000;
krw(16)=0.082294000; krw(17)=0.095461000; krw(18)=0.110594000;
krw(19)=0.127831000; krw(20)=0.148597000; krw(21)=0.173000000;
% oil relative permeability data
kro(1)=0.540300000; kro(2)=0.500145000; kro(3)=0.459990000;
kro(4)=0.419835000; kro(5)=0.379685000; kro(6)=0.339530000;
kro(7)=0.299375000; kro(8)=0.261046000; kro(9)=0.223727000;
kro(10)=0.188473000; kro(11)=0.154791000; kro(12)=0.122027000;
kro(13)=0.095422000; kro(14)=0.071638000; kro(15)=0.051815000;
kro(16)=0.034833000; kro(17)=0.024335000; kro(18)=0.015993000;
kro(19)=0.009207000; kro(20)=0.003933000; kro(21)=0.000000000;
% transposing the relative permeability vectors
krw=krw';
kro=kro';
%%
% computing the endpoint mobilities
lohat=kro(1)./mio;
lwhat=krw(length(kro))./miw;
% computing the fractional flow and total mobility datanlay
sw=zeros(length(kro),nlayers);
lambdat=sw;
dfw=sw;
for j=1:nlayers
[sw(:,j),lambdat(:,j),dfw(:,j),ct(j)]=fill_data(length(kro),krw,kro,swi,sor,mio(j),miw,co(j),cw(j),cr(j));
end
% computing layer hidraulic diffusivities
etaj=kj.*kro(1)./phij./mio./ct;
% computing layer skin factors
Sj=(kj./kskinj-1).*log(rskinj./rw);
%%
% computing pressure data
[t,tp,pwf,deltapo,deltapl,qj] = compute_pwf(nlayers,dim,t0,deltat,rw,qinj,kj,hj,phij,etaj,ct,kskinj,rskinj,Sj,mio,miw,lohat,lwhat,sw,dfw,lambdat);
% computing pressure derivative data
[dpwf]=compute_derivative(t,pwf,tp);
% % checking the results with the line-source solution
%
% a=alphap*qinj/2/kj(1)/hj(1)/lohat;
% po=a.*log(t)+a*log(4*alphat*kj*lohat/exp(0.5522)/phij/ct/rw/rw);
%%
% plotting the results during injection
figure(1)
if (t(end)==tp)
g1=loglog(t(1:dim),pwf(1:dim), t(1:dim),dpwf(1:dim));
else
g1=loglog(t(1:dim/2),pwf(1:dim/2), t(1:dim/2),dpwf(1:dim/2));
end
g1(1).LineWidth=1.5;
g1(2).LineWidth=1.5;
a=round(log10(t(1))); a=max([10^(a) 1e-4]);
b=floor(log10(tp))+1; b=10^b;
c=min(min((pwf)),min(abs(dpwf))); c=10^log10(floor(c));
d=floor(log10(max(pwf)))+1; d=10^d;
axis([a,b,c,d])
title('Pressure and Pressure Derivative during Injection')
xlabel('t (h)')
ylabel('P, deltaP (kgf/cm虏)')
grid on
% plotting results during falloff
% figure(2)
% g2=loglog(t(dim/2+1:dim)-tp,deltapo(dim/2+1:dim), t(dim/2+1:dim)-tp,dpwf(dim/2+1:dim));
% g2(1).LineWidth=1.5;
% g2(2).LineWidth=1.5;
% axis([a,b,c,d])
% title('Pressure and Pressure Derivative during Falloff')
% xlabel('t (h)')
% ylabel('P, deltaP (kgf/cm虏)')
% res=[t(11:dim/2) pwf(11:dim/2) dpwf(11:dim/2) deltapo(11:dim/2) deltapl(11:dim/2)];
% res=[res; t(dim/2+11:dim) pwf(dim/2+11:dim) dpwf(dim/2+11:dim) deltapo(dim/2+11:dim) deltapl(dim/2+11:dim)];
%%
% clearing the console
clc
% clearing some auxiliary variables
clear t0 deltat dim co cr cw ii j compsw swi sor alphap alphat a b c d g1 g2
⛳️ 运行结果
🔗 参考文献
🎈 部分理论引用网络文献,若有侵权联系博主删除
🎁 关注我领取海量matlab电子书和数学建模资料
👇 私信完整代码和数据获取及论文数模仿真定制
1 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱船配载优化、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化
2 机器学习和深度学习方面
2.1 bp时序、回归预测和分类
2.2 ENS声神经网络时序、回归预测和分类
2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类
2.4 CNN/TCN卷积神经网络系列时序、回归预测和分类
2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类
2.7 ELMAN递归神经网络时序、回归\预测和分类
2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类
2.9 RBF径向基神经网络时序、回归预测和分类