unit teplo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, TeEngine, Series, ExtCtrls, TeeProcs, Chart;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Label5: TLabel;
Edit5: TEdit;
Label6: TLabel;
Edit6: TEdit;
Label7: TLabel;
Edit7: TEdit;
Label8: TLabel;
Label9: TLabel;
Edit8: TEdit;
Edit9: TEdit;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
Label17: TLabel;
Label18: TLabel;
Button1: TButton;
Chart1: TChart;
Series1: TLineSeries;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
i,j,N: integer;
T,alfa,beta: array [1..500] of real;
ai,bi,ci,fi: real;
lamda,ro,c,h,tau: real;
T1,T0,Tr,L,tend,time: real;
f,g: TextFile;
fdir,gdir,tendstr: string;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); // Íåÿâíàÿ ñõåìà
begin {1}
series1.clear;
//Ñ×ÈÒÛÂÀÍÈÅ ÏÀÐÀÌÅÒÐÎÂ
N:=strtoint(edit1.Text);
tend:=strtofloat(edit2.Text);
L:=strtofloat(edit3.Text);
lamda:=strtofloat(edit4.Text);
ro:=strtofloat(edit5.Text);
T0:=strtofloat(edit6.Text);
T1:=strtofloat(edit7.Text);
Tr:=strtofloat(edit8.Text);
//îïðåäåëÿåì ðàñ÷åòíûé øàã ñåòêè ïî ïðîñòðàíñòâåííîé êîîðäèíàòå
h:=L/(N-1);
//îïðåäåëÿåì ðàñ÷åòíûé øàã ñåòêè ïî âðåìåíè
tau:=tend/100;
//îïðåäåëÿåì ïîëå òåìïåðàòóðû â íà÷àëüíûé ìîìåíò âðåìåíè
for i:=1 to N do {*}
T[i]:=T0;
//èíòåãðèðîâàíèå íåñòàöèîíàðíîãî óðàâíåíèÿ òåïëïðîâîäíîñòè
time:=0;
while time < tend do begin {2}
time:=time+tau;
{îïðåäåëÿåì íà÷àëüíûå ïðîãîíî÷íûå êîýôôèöèåíòû íà îñíîâå ëåâîãî ãðàíè÷íîãî óñëîâèÿ}
alfa[1]:=0;
beta[1]:=T1;
for i:=2 to N-1 do begin {3}
{ai,bi,ci,fi - êîýôôèöèåíòû êàíîíè÷åñêîãî ïðåäñòàâëåíèÿ ÑËÀÓ ñ òðåõäèàãîíàëüíîé ìåòðèöåé}
ai:=lamda/sqrt(h);
bi:=(2*lamda)/(sqrt(h))+ro*c/tau;
ci:=lamda/sqrt(h);
fi:=-ro*c*T[i]/tau;
{alfa[i],beta[i] - ïðîãîíî÷íûå êîýôôèöèåíòû}
alfa[i]:=ai/(bi-ci*alfa[i-1]);
beta[i]:=(ci*beta[i-1]-fi)/(bi-ci*alfa[i-1]);
end; {3}
{îïðåäåëÿåì çíà÷åíèå òåìïåðàòóðû íà ïðàâîé ãðàíèöå}
T[N]:=Tr;
{îïðåäåëÿåì íåèçâåñòíîå ïîëå òåìïåðàòóðû}
for i:=N-1 downto 1 do {*}
T[i]:=alfa[i]*T[i+1]+beta[i];
end; {2}
//Âûâîä ðåçóëüòàòîâ â ôàéë
fdir:='C:\Users\Ðóñëàí\Desktop\Êîìïüþòåðíàÿ ôèçèêà\ÑÄÀÂÀÒÜ\Óðàâíåíèå òåïëîïðîâîäíîñòè ÄÅËÔÈ\res.txt';
AssignFile(f,fdir);
Rewrite(f);
WriteLn(f,'Òîëùèíà ïëàñòèíû L =',L:6:4);
WriteLn(f,'×èñëî óçëîâ ïî êîîðäèíàòå N =',N);
WriteLn(f,'Êîýôôèöèåíò òåïëîïðîâîäíîñòè ìàòåðèàëà lamda =',lamda:6:4);
WriteLn(f,'Ïëîòíîñòü ìàòåðèàëà ro =',ro:6:4);
WriteLn(f,'Òåïëîåìêîñòü ìàòåðèàëà c =',c:6:4);
WriteLn(f,'Íà÷àëüíàÿ òåìïåðàòóðà T0 =',T0:6:4);
WriteLn(f,'Òåìïåðàòóðà íà ãðàíèöå õ=0, T1 =',T1:6:4);
WriteLn(f,'Òåìïåðàòóðà íà ãðàíèöå õ=L, Tr =',Tr:6:4);
WriteLn(f,'Ðåçóëüòàò ïîëó÷åí ñ øàãîì ïî êîîðäèíàòå h =',h:6:4);
WriteLn(f,'Ðåçóëüòàò ïîëó÷åí ñ øàãîì ïî âðåìåíè tau =',tau:6:4);
WriteLn(f,'Òåìïåðàòóðíîå ïîëå â ìîìåíò âðåìåíè t =',tend:6:4);
close(f);
gdir:='C:\Users\Ðóñëàí\Desktop\Êîìïüþòåðíàÿ ôèçèêà\ÑÄÀÂÀÒÜ\Óðàâíåíèå òåïëîïðîâîäíîñòè ÄÅËÔÈ\tempr.txt';
AssignFile(g,gdir);
Rewrite(g);
for i:=1 to N do
writeln(g,' ',h*(i-1):6:3,' ',T[i]:8:5);
close(g);
end;{1}
end.