Разностные методы решения задач теплопроводности. Кузнецов Г.В - 169 стр.

UptoLike

169
{цикл с постусловием, позволяющий итерационно вычислять значения
температуры в области решения, вследствие наличия нелинейности в
самом уравнении теплопроводности}
repeat
{запоминаем поле температуры на предыдущей s итерации}
for k:=1 to Nx do
for l:=1 to Ny do
Ts[k,l]:=T[k,l];
{цикл с параметром для определения прогоночных коэффициентов по
формуле (8)}
for j:= 2 to Ny-1 do
begin
{ai, bi, ci, fi – коэффициенты канонического представления систему
уравнений с трехдиагональной матрицей}
ai:=lamda/sqr(hy);
bi:=2.0*lamda/sqr(hy)+kapa/h+ro*c/tau;
ci:=lamda/sqr(hy);
fi:=-ro*c*Tn[i,j]/tau-kapa*Te/h-eps1*sigma
*(sqr(sqr(Te))-sqr(sqr(T[i,j])))/h;
{alfa[
j], beta[j] – прогоночные коэффициенты}
alfa[j]:=ai/(bi-ci*alfa[j-1]);
beta[j]:=(ci*beta[j-1]-fi)/(bi-ci*alfa[j-1]);
end;
{определяем значение температуры на верхней границе, используя
соотношение (21) при условии, что q
2
= 0}
T[i,Ny]:=(2.0*lamda*tau*beta[Ny-1]+ro*c*sqr(hy)*Tn[i,Ny])
/(ro*c*sqr(hy)+2.0*lamda*tau*(1.0-alfa[Ny-1]));
{используя соотношение (7) определяем неизвестное поле температуры
на целом (n+1) временном слое}
for j:= Ny-1 downto 1 do
T[i,j]:=alfa[j]*T[i,j+1]+beta[j];
{определяем максимум модуля разности локальных значений
температур между текущей и предыдущей итерациями}
max:=abs(T[i,1]-Ts[i,1]);
for j:=2 to Ny do
if max < abs(T[i,j]-Ts[i,j]) then max:=abs(T[i,j]-Ts[i,j]);
until max<=eps; {окончание цикла с постусловием}
end; {поле температуры на целом (n+1) временном слое определили}
end; {цикл с предусловием окончен}
{выводим результат в файл}
Assign(g,'
tempr.txt');