حل معادله جریان غیرماندگار در اطراف لوله زهکش به صورت عددی با استفاده از روش ضمنی و صریح
حل معادله جریان غیرماندگار در اطراف لوله زهکش به صورت عددی با استفاده از روش ضمنی و صریح در محیط متلب
یکی از بحثهای مهم در آبهای زیرزمینی و مدلسازی زهکشی تعیین جهت جریان و بررسی نوسانات سطح ایستابی در اثر تخلیه و تغذیه میباشد. برای این منظور بایستی معادلات دیفرانسیلی حاکم بر جریان حل شود.
معادله یک بعدی غیرماندگار به صورت زیر تعریف میشود :

در این رابطه R مقدار تغذیه، S ضریب ذخیره و T ضریب انتقال (KD) میباشد.
معادله فوق با الگوی صریح و ضمنی قابل حل میباشد، که در فایل پیوست ارائه شده است. در مثال ارائه شده جریان غیر ماندگار در اطراف لوله زهکش به فاصله 30 متر بررسی و حل شده است. سطح ایستابی اولیه 3/3 متر و در 10 روز به 2/8 متر میرسد. در صورت لزوم میتوان دادههای ورودی را تغییر داد و مسئله برای شرایط دیگر حل گردد. در صورت تغییر دادههای مسئله رعایت طول گامهای زمانی و مکانی مناسب و تعداد حلقههای به کار برده شده برای گرفتن جواب مناسب ضروری است.

در ادامه میتوانید کدهای مربوط به این بحث را دریافت نمایید:
clc
clear
dt=5;
dx=1.5;
T=0.0013;
s=0.07;
x=0:dx:15;
for i=1:31
ho(i)=3.3;
end
a=0.29;
hn(1)=3.3;
hn(11)=2.8;
jt=0;
for t=1:14400
jt=jt+dt;
for i=2:10
hn(i)=ho(i)+T*dt/(s*dx^2)*(ho(i+1)-2*ho(i)+ho(i-1));
end
ho=hn;
hn(1)=hn(2);
if jt==1440
h1440=hn;
q=500*s*(1-(0.8*exp(-a*1)));
elseif jt==2880
h2880=hn;
q1=500*s*(1-(0.8*exp(-a*2)));
elseif jt==4320
h4320=hn;
q2=500*s*(1-(0.8*exp(-a*3)));
elseif jt==5760
h5760=hn;
q3=500*s*(1-(0.8*exp(-a*4)));
elseif jt==7200
h7200=hn;
q4=500*s*(1-(0.8*exp(-a*5)));
elseif jt==8640
h8640=hn;
q5=500*s*(1-(0.8*exp(-a*6)));
elseif jt==10080
h10080=hn;
q6=500*s*(1-(0.8*exp(-a*7)));
elseif jt==11520
h11520=hn;
q7=500*s*(1-(0.8*exp(-a*8)));
elseif jt==12960
h12960=hn;
q8=500*s*(1-(0.8*exp(-a*9)));
elseif jt==14400
h14400=hn;
q9=500*s*(1-(0.8*exp(-a*10)));
end
end
hold on
plot(x,h1440)
plot(x,h2880)
plot(x,h4320)
plot(x,h5760)
plot(x,h7200)
plot(x,h8640)
plot(x,h10080)
plot(x,h11520)
plot(x,h12960)
plot(x,h14400)
hold off
Qsarih=[q;q1;q2;q3;q4;q5;q6;q7;q8;q9];
filename = 'discharge.xlsx';
sheet = 1;
xlRange = 'B1';
xlswrite(filename,Qsarih,sheet,xlRange)
clc
clear
dt=1;
dx=0.25;
T=0.0013;
s=0.07;
x=0:dx:12.5;
A=2+(s*(dx^2))/(T*dt)
for i=1:51
ho(i)=3.3;
end
a=0.4176
hn(1)=3.3;
hn(51)=2.8;
jt=0;
for t=1:dt:14400
jt=jt+dt;
for i=2:50
hn(i)=ho(i);
end
for k=1:100
for i=2:50
old=hn(i);
hn(i)=(1/A)*((hn(i-1))+hn(i+1)+(A-2)*ho(i));
er(i)=abs(hn(i)-old);
end
if er<0.00000000000001
break
end
end
ho=hn;
hn(1)=hn(2);
if jt==1440
h1440=hn;
q=500*s*(1-(0.8*exp(-a*1)))
elseif jt==2880
h2880=hn;
q1=500*s*(1-(0.8*exp(-a*2)));
elseif jt==4320
h4320=hn;
q2=500*s*(1-(0.8*exp(-a*3)))
elseif jt==5760
h5760=hn;
q3=500*s*(1-(0.8*exp(-a*4)))
elseif jt==7200
h7200=hn;
q4=500*s*(1-(0.8*exp(-a*5)))
elseif jt==8640
h8640=hn;
q5=500*s*(1-(0.8*exp(-a*6)))
elseif jt==10080
h10080=hn;
q6=500*s*(1-(0.8*exp(-a*7)))
elseif jt==11520
h11520=hn;
q7=500*s*(1-(0.8*exp(-a*8)))
elseif jt==12960
h12960=hn;
q8=500*s*(1-(0.8*exp(-a*9)))
elseif jt==14400
h14400=hn;
q9=500*s*(1-(0.8*exp(-a*10)))
end
end
hold on
plot(x,h1440)
plot(x,h2880)
plot(x,h4320)
plot(x,h5760)
plot(x,h7200)
plot(x,h8640)
plot(x,h10080)
plot(x,h11520)
plot(x,h12960)
plot(x,h14400)
hold off
Qzemni=[q;q1;q2;q3;q4;q5;q6;q7;q8;q9];
filename = 'discharge.xlsx';
sheet = 1;
xlRange = 'A1';
xlswrite(filename,Qzemni,sheet,xlRange)