5-ilova
Birjinsli jism uchun ikki oʻlchovli issiqlik oʻtkazuvchanlik masalasini oshkormas
ayirmali sxema yordamida sonli yechishning Pascal ABC dasturi matni
uses crt; const mf=102;
type vector1=array[1..mf] of real; vector2=array[1..mf,1..mf] of real;
68
var{dasturda ishlatiladigan oʻzgaruvchilarni tavsiflash}
i, j, Nx, Ny : integer; T : vector2; alfa, beta : vector1; ai, bi, ci, fi : real;
a, lamda, ro, c : real; hx, hy, tau, t_end, time : real;
T0, L, H, Th, Tc : real; f, g : text;
begin clrscr;
{zaruriy kiritiladigan ma’lumotlar klabiatura orqali kiritiladi}
Writeln('Ox oʻq boʻyicha plastinkadagi fazoviy tugunlar sonini kiriting, Nx=');
Readln(Nx);
Writeln('Oy oʻq boʻyicha plastinkadagi fazoviy tugunlar sonini kiriting, Ny=');
Readln(Ny);
Writeln('Hisob jarayonining tugash vaqti qiymatini kiriting, t_end='); Readln(t_end);
Writeln('Plastinkaning uzunkigini kiriting, L='); Readln(L);
Writeln('Plastinkaning qalinligini kiriting, H='); Readln(H);
Writeln('Plastinka materialining issiqlik oʻtkauvchanlik koeffisiyentini kiriting,
Lamda='); Readln(lamda);
Writeln('Plastinka materialining zichligini kiriting, ro='); Readln(ro);
Writeln('Plastinka materialining issiqlik sigimini kiriting, c='); Readln(c);
Writeln('Hisob sohasining x = 0 chegarasidagi temperaturani kiriting, Th=');
Readln(Th);
Writeln('Hisob sohasining x = L chegarasidagi temperaturani kiriting, Tc=');
Readln(Tc);
Writeln('Boshlangʻich temperaturani kiriting, T0='); Readln(T0);
{Turning fazoviy koordinatalar buyicha hisob qadamlarini aniqlaymiz}
hx:=L/(Nx-1); hy:=H/(Ny-1);
{Issiqlik utkazuvchanlik koeffisiyentini aniqlaymiz} a:=lamda/(ro*c);
{Turning vaqt buyicha hisob qadamini aniqlaymiz} tau:=t_end/100.0;
{Boshlangich vaqt momentida temperatura maydonini aniqlaymiz}
for i:= 1 to Nx do for j:= 1 to Ny do T[i,j]:=T0;
{Nostatsionar issiqlik utkazuvchanlik tenglamasini integrallaymiz} time:=0;
while time begin
{vaqtning uzgaruvchisi qiymatini τ qadamga oshiramiz} time:=time+tau;
{Vaqtning oraliq qatlamida temperature maydonini aniqlash uchun Ox uq yunalishida
chiziqli algebraic tenglamalar sistemasini yechamiz}
for j:=1 to Ny do
begin
{Chapchegaraviy shart asosida boshlangich progonka koeffisiyentlarini aniqlaymiz}
alfa[1]:=0.0; beta[1]:=Th;
69
{formula yordamida progonka koeffisiyentlarini aniqlash uchun ishlatiladigan para-
metrli sikl}
for i:= 2 to Nx-1 do
begin
{ai, bi, ci, fi – uchdiagonalli matritsali chiziqli algebraic tenglamalar sistemasini ka-
nonik koʻrinishda ifodalash koeffisiyentlari}
ai:=lamda/sqr(hx); bi:=2.0*lamda/sqr(hx)+ro*c/tau;
ci:=lamda/sqr(hx); fi:=-ro*c*T[i,j]/tau;
{alfa[i], beta[i] – progonka koeffiyentlari}
alfa[i]:=ai/(bi-ci*alfa[i-1]); beta[i]:=(ci*beta[i-1]-fi)/(bi-ci*alfa[i-1]);
end;
{Ung chegaraviy shart asosida ung chegarada temperaturaning qiymatini aniqlash}
T[Nx,j]:=Tc;
{Vaqtning oraliq qatlamida temperatura maydonini formuladan foydalanib aniqlay-
miz}
for i:= Nx-1 downto 1 do T[i,j]:=alfa[i]*T[i+1,j]+beta[i];
end;
{Vaqtning butun qiymatli qatlamida temperature maydonini aniqlash uchun chiziqli
algebraik tenglamalar sistemasini Oy uq yunalishida yechamiz}
for i:=2 to Nx-1 do
begin
{q1 = 0 bulgan hol uchun formuladan foydalanib, quyi chegaraviy shart asosida bosh-
langich progonka koeffisiyentlarini aniqlaymiz}
alfa[1]:=2.0*a*tau/(2.0*a*tau+sqr(hy));
beta[1]:=sqr(hy)*T[i,1]/(2.0*a*tau+sqr(hy));
{(4.6) formula yordamida progonka koeffisiyentlarini aniqlash uchun ishlatiladigan
parametrli sikl}
for j:= 2 to Ny-1 do
begin
{ai, bi, ci, fi – uchdiagonalli matritsali chiziqli algebraik tenglamalar sistemasini ka-
nonik koʻrinishda ifodalash koeffisiyentlari}
ai:=lamda/sqr(hy); bi:=2.0*lamda/sqr(hy)+ro*c/tau;
ci:=lamda/sqr(hy); fi:=-ro*c*T[i,j]/tau;
{alfa[j], beta[j] – progonka koeffiyentlari}
alfa[j]:=ai/(bi-ci*alfa[j-1]); beta[j]:=(ci*beta[j-1]-fi)/(bi-ci*alfa[j-1]);
end;
{ q2 = 0 bulgan hol uchun formuladan foydalanib, yuqori chegarada temperaturaning
qiymatini aniqlaymiz}
70
T[i,Ny]:=(2.0*a*tau*beta[Ny-1]+sqr(hy)*T[i,Ny])/(2.0*a*tau*(1.0-alfa[Ny-
1])+sqr(hy));
{Vaqtning oraliq qatlamida temperatura maydonini formuladan foydalanib aniqlay-
miz}
for j:= Ny-1 downto 1 do T[i,j]:=alfa[j]*T[i,j+1]+beta[j];
end;
end; {sharli sikl operatorining tugashi}
{Hisob natijalarini faylga chiqarish} Assign(f,'res.txt'); Rewrite(f);
Writeln(f,'Plastinkaning uzunligi L = ',L:6:4);
Writeln(f, 'Plastinkaning qalinligiH = ',H:6:4);
Writeln(f,'Ox oʻq boʻyicha plastinkadagi fazoviy tugunlar soni Nx = ',Nx);
Writeln(f,'Oy oʻq boʻyicha plastinkadagi fazoviy tugunlar soni Ny = ',Ny);
Writeln(f,'Plastinka materialining issiqlik oʻtkauvchanlik koeffisiyenti lamda =
',lamda:6:4);
Writeln(f,'Plastinka materialining zichligi ro = ',ro:6:4);
Writeln(f,'Plastinka materialiningissiqlik sigimi’,c:6:4);
Writeln(f,'Boshlangich temperatura T0 = ',T0:6:4);
Writeln(f,'Hisob sohasining x = 0 chegarasidagi temperatura Th = ',Th:6:4);
Writeln(f,'Hisob sohasining x = L chegarasidagi temperatura Tc = ',Tc:6:4);
Writeln(f,'x koordinata buyicha hx qadam bilan hisoblash natijalari hx = ',hx:6:4);
Writeln(f,'y - koordinata buyicha hx qadam bilan hisoblab olingan natijalar hy =
',hy:6:4);
Writeln(f,'Natijalar olingan vaqt qadami tau = ',tau:6:4);
Writeln(f,'Berilgan vaqt momentidagi temperatura maydoni t = ',t_end:6:4);
close(f); Assign(g,'tempr.txt'); Rewrite(g);
for i:=1 to Nx do for j:=1 to Ny do
writeln(g,' ',hx*(i-1):10:8,' ',hy*(j-1):10:8,' ',T[i,j]:8:5);
close(g); end
Do'stlaringiz bilan baham: |