54 lines
2.0 KiB
Matlab
54 lines
2.0 KiB
Matlab
function [Weladd, pwf] = initalSchedule_2026(p, sw, cs, Wellc, f, well_schedules_k)
|
|
nWel = size(Wellc, 1);%井数
|
|
Weladd = 0;
|
|
pwf = zeros(1);
|
|
BW = f.Bw(p);
|
|
muW = f.muw(p);
|
|
Nc = f.Nc(cs);
|
|
krW = f.krw(sw,Nc);
|
|
BG = f.Bg(p);
|
|
muG = f.mug(p);
|
|
krG = f.krrg(sw,Nc);
|
|
Ygt = krG ./ (muG .* BG);%mu代表黏度
|
|
Ygj = krG ./ muG;
|
|
Ywt = krW ./ (muW .* BW);%mu代表黏度
|
|
Ywj = krW ./ muW;
|
|
|
|
for i = 1 : nWel
|
|
if strcmp(well_schedules_k{i,2},'open')
|
|
if strcmp(well_schedules_k{i,3},'pro') && strcmp(well_schedules_k{i,4},'const_q') %该井是生产井并定产生产
|
|
Weladd = Weladd + 1;
|
|
nper = Wellc{i,2}; %该井的射孔数量
|
|
jperf = zeros(nper,1);
|
|
Trans = zeros(nper,1);
|
|
Tnp = 0;
|
|
Tn = 0;
|
|
for j = 1 : nper
|
|
jperf(j) = Wellc{i,3}(j);%该射孔点在基质网格和裂缝单元全体中的序号
|
|
Tr = Wellc{i,4}(j);%该射孔点对应的生产指数(缺流度)
|
|
Trans(j) = Tr * (Ygt(jperf(j)) + Ywt(jperf(j)));%生产指数
|
|
Tnp = Tnp + Trans(j)*p(jperf(j));
|
|
Tn = Tn + Trans(j);
|
|
end
|
|
pwf(Weladd) = (Tnp - well_schedules_k{i,5}/86.4) / Tn;%说明井筒无限导流,压力为一个值
|
|
elseif strcmp(well_schedules_k{i,3},'inj') && strcmp(well_schedules_k{i,4},'const_q') %注入井,恒定注入量
|
|
Weladd = Weladd + 1;
|
|
nper = Wellc{i,2};
|
|
jperf = zeros(nper,1);
|
|
Trans = zeros(nper,1);
|
|
Tnp = 0;
|
|
Tn = 0;
|
|
for j = 1 : nper
|
|
jperf(j) = Wellc{i,3}(j);
|
|
Tr = Wellc{i,4}(j);
|
|
Trans(j) = Tr / BW(jperf(j)) * (Ygj(jperf(j)) + Ywj(jperf(j)));%多相流注入方程
|
|
Tnp = Tnp + Trans(j)*p(jperf(j));
|
|
Tn = Tn + Trans(j);
|
|
end
|
|
pwf(Weladd) = (Tnp + well_schedules_k{i,5}/86.4) / Tn;%与生产井正好反过来
|
|
else
|
|
continue
|
|
end
|
|
end
|
|
end
|
|
pwf = pwf'; |