· физические параметры среды и тела,
· граничные условия, характеризующие распределение температур на поверхности тела, или взаимодействие изучаемого тела с окружающей средой.
Все эти частные особенности совместно с дифференциальным уравнением дают полное описание конкретного процесса теплопроводности и называются условиями однозначности или краевыми условиями.
Обычно начальные условия распределения температуры задаются для момента времени t = 0.
Граничные условия могут быть заданы тремя способами.
Граничное условие первого рода задается распределением температуры на поверхности тела для любого момента времени.
Граничное условие второго рода задается поверхностной плотностью теплового потока в каждой точке поверхности тела для любого момента времени.
Граничное условие третьего рода задается температурой среды, окружающей тело, и законом теплоотдачи между поверхность тела и окружающей средой.
Решение дифференциального уравнения теплопроводности при заданных условиях однозначности позволяет определить температурное поле во всем объеме тела для любого момента времени или найти функцию .
2.6 Теплопроводность через шаровую стенку
С учётом описанной в разделах 2.1 - 2.5 терминологии задачу данной курсовой работы можно сформулировать так. Постоянный тепловой поток направлен через шаровую стенку, причем источником теплоты является внутренняя сфера радиусом R1. Мощность источника P постоянна. Среда между граничными сферами изотропна, поэтому её теплопроводность c является функцией одной переменной - расстояния от центра сфер (радиуса) r. По условию задачи . Вследствие этого температура среды тоже является в данном случае функцией одной переменной - радиуса r: T = T(r), а изотермические поверхности это концентрические сферы. Таким образом искомое температурное поле - стационарное и одномерное, а граничные условия являются условиями первого рода: T(R1) = T1, T(R2) = T2.
|
Из одномерности температурного поля следует, что плотность теплового потока j так же, как теплопроводность и температура, являются в данном случае функциями одной переменной - радиуса r. Неизвестные функции j(r) и T(r) можно определить одним из двух способов: или решать дифференциальное уравнение Фурье (2.25), или использовать закон Фурье (2.11). В данной работе избран второй способ. Закон Фурье для исследуемого одномерного сферически симметричного температурного поля имеет вид:
. (2.27)
В этом уравнении учтено, что вектор нормали к изотермической поверхности n параллелен радиус-вектору r. Поэтому производная может быть записана как .
Определим зависимость плотности теплового потока j от r. Для этого сначала вычислим тепловой поток q через сферу произвольного радиуса r > R.
. (2.28)
В частности, тепловой поток q1 через внутреннюю сферу радиусом R1 и тепловой поток q2 через наружную сферу радиусом R2 равны
(2.29)
Все эти три потока создаются одним и тем же источником мощностью P. Поэтому все они равны P и поэтому равны между собой.
. (2.30)
С учётом (2.28) и (2.29) это равенство можно записать в виде:
. (2.31)
Учитывая, что
,
получаем искомую зависимость плотности теплового потока j от радиуса r:
, (2.32)
где C1 - это константа, определяемая формулой
. (2.33)
Физический смысл полученного результата достаточно ясен: это известный закон обратных квадратов, характерный для задач со сферической симметрией.
Теперь, так как функция j(r) известна, можно рассматривать уравнение (2.27) как дифференциальное уравнение относительно функции T(r). Решение этого уравнение и даст искомое распределение температур. Подставив в (2.27) выражение (2.32) и заданную функцию , получим следующее дифференциальное уравнение:
. (2.34)
Данное уравнение решается методом разделения переменных:
.
Интегрирование этого выражения даёт:
Итак, функция T(r) имеет вид:
. (2.35)
Константы
C1 и C2 можно определить из граничных условий T(R1)
= T1,
T(R2) = T2. Подстановка этих условий в (2.35) даёт
линейную систему двух уравнений с двумя неизвестными C1 и C2:
. (2.36)
Вычитая из первого уравнения второе, получим уравнение относительно C1:
,
откуда
. (2.37)
С учётом этого выражение (2.35) можно записать в виде:
. (2.38)
Теперь первое граничное условие T(R1) = T1 даёт:
, (2.39)
откуда следует выражение для константы C2:
. (2.40)
Подстановка (2.40) в (2.39) даёт окончательное выражение для искомой функции T(r):
. (2.41)
Зная функцию T(r), можно из закона Фурье
определить и окончательное выражение для плотности теплового потока j как функции от радиуса r:
. (2.42)
Интересно отметить, что распределение температур не зависит от коэффициента b, но зато плотность потока пропорциональна b.
3 Заключение
В результате проделанной работы выведено дифференциальное уравнение теплопроводности применительно к данным конкретным условиям задачи и получено решение этого уравнения в виде функции T(r). Разработана программа TSO, рассчитывающая функцию T(r) и строящая её график для различных задаваемых пользователем параметров задачи . Листинг программы приведен в Приложении А.
Список используемых источников
Нащокин В.В. Техническая термодинамика и теплопередача: Учеб. пособие для вузов. — 3-е изд., испр. и доп. — М: Высш. школа, 1980. — 469 с.
Араманович И.Г., Левин В.И. Уравнения математической физики: М.: Наука, 1969. — 288 стр.
Савельев И. В. Курс общей физики. Т. 1. Механика. Молекулярная физика: Учеб. пособие для студентов втузов. — М.: Наука, 1982. — 432с.
Зельдович Б.И., Мышкис А.Д. Элементы математической физики. — М.: Наука, 1973. — 352с.
Приложение А
(обязательное)
Листинг программы TSO
unit Kurs_p;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Spin;
type
TForm1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Edit1: TEdit;
Label9: TLabel;
Edit2: TEdit;
Label10: TLabel;
Edit3: TEdit;
Label11: TLabel;
Edit4: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
private
public
procedure OsiK (x0,y0:Integer);
procedure Postroenie(T1,T2,R1,R2:real);
end;
var
Form1: TForm1;
X0,Y0:integer;
T1,T2,R1,R2:real;
implementation
{$R *.DFM}
procedure TForm1.OsiK (x0,y0:Integer);
var
i,x,y:integer;
begin
Canvas.Pen.Width:=2;
Canvas.Pen.Color := clBlack;
Canvas.MoveTo(x0, y0); {построение оси X}
Canvas.LineTo(x0+400, y0);
Canvas.MoveTo(x0+400, y0); {построение стрелочек оси Х}
Canvas.LineTo(x0+400-10, y0-5);
Canvas.MoveTo(x0+400, y0);
Canvas.LineTo(x0+400-10, y0+5);
Label4.Left:=x0+390;
Label4.Top:=y0+10;
Label5.Left:=x0+350;
Label5.Top:=y0+10;
Label6.Left:=x0;
Label6.Top:=y0+10;
Label7.Left:=x0-25;
Label7.Top:=y0-10;
Label8.Left:=x0-25;
Label8.Top:=y0-105;
Canvas.MoveTo(x0, y0); {построение оси Y}
Canvas.LineTo(x0, y0-150);
Canvas.MoveTo(x0, y0-150); {построение стрелочек оси Y}
Canvas.LineTo(x0-5, y0-150+10);
Canvas.MoveTo(x0, y0-150);
Canvas.LineTo(x0+5, y0-150+10);
Label3.Left:=x0-25;
Label3.Top:=y0-150;
Canvas.Pen.Width:=1;
x:=x0;
for i:=1 to 10 do
begin
x:=x+35;
Canvas.MoveTo(x, y0-3);
Canvas.LineTo(x, y0+3);
end;
y:=y0;
for i:=1 to 5 do
begin
y:=y-20;
Canvas.MoveTo(x0-3, y);
Canvas.LineTo(x0+3, y);
end;
end;
procedure TForm1.Postroenie(T1,T2,R1,R2:real);
var
x,y:integer;
Kx,Ky,x1,y1,P,C1,Sag:real;
begin
Canvas.Pen.Width:=1;
Canvas.Pen.Color := clRed;
Sag:=(R2-R1)/500; {шаг по X}
C1:=(T1-T2)/(ln(R2/R1));
Kx:=(R2-R1)/350; {Коэффициенты "усиления"}
if T1>T2 then
Ky:=T1/100
else
Ky:=T2/100;
x1:=R1; {Начальные условия}
y1:=T1;
Canvas.MoveTo(x0+Round((x1-R1)/Kx),y0-Round(y1/Ky));
repeat
y:=Round(y1/Ky);
x:=Round((x1-R1)/Kx);
Canvas.LineTo(x0+x, y0-y);
x1:=x1+Sag;
y1:=(T1+C1*ln(R1/x1));
{label1.Caption:=label1.Caption+'; '+intToStr(x);
label2.Caption:=label2.Caption+'; '+intToStr(y);}
until x1>R2;
P:=4*Pi*C1;
label1.Caption:='Мощность источника: ='+FloatToStrF(P,ffGeneral,5,1)+
' Вт';
label5.Caption:=FloatToStrF(R2,ffGeneral,4,1);
label6.Caption:=FloatToStrF(R1,ffGeneral,4,1);
if T1>T2 then
begin
label7.Caption:=FloatToStrF(T2,ffGeneral,4,1);
label8.Caption:=FloatToStrF(T1,ffGeneral,4,1);
end
else
begin
label7.Caption:=FloatToStrF(T1,ffGeneral,4,1);
label8.Caption:=FloatToStrF(T2,ffGeneral,4,1);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Code1,Code2,Code3,Code4:integer;
begin
Repaint;
val (Edit1.Text,T1,Code1);
val (Edit2.Text,T2,Code2);
val (Edit3.Text,R1,Code3);
val (Edit4.Text,R2,Code4);
if (Code4 or Code3 or Code2 or Code1) <> 0 then
begin
Edit1.SetFocus;
MessageDlg ('Введите пожалуйста значение!', mtError, [mbOk],0);
end
else
Postroenie(T1,T2,R1,R2);
end;
procedure TForm1.FormPaint(Sender: TObject);
begin
x0:=100;
y0:=200;
OsiK(x0,y0);
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9',#8,'.']) then
begin
Key:=#0;
MessageBeep($FFFFFFFF);
end;
end;
end.