حل معادله جریان غیرماندگار در اطراف لوله زهکش به صورت عددی با استفاده از روش ضمنی و صریح

حل معادله جریان غیرماندگار در اطراف لوله زهکش به صورت عددی با استفاده از روش ضمنی و صریح
در این پست می‌خوانید:

حل معادله جریان غیرماندگار در اطراف لوله زهکش به صورت عددی با استفاده از روش ضمنی و صریح در محیط متلب

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

معادله یک بعدی غیرماندگار به صورت زیر تعریف می‌شود :

حل عددی زهکشی

در این رابطه 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)

 

 

5/5 - (1 امتیاز)
دیدگاه‌ها ۰
ارسال دیدگاه جدید