Описание программы
Нам надо разработать программу для моделирования в диалоговом режиме распределения температуры по толщине пластины кремния, нагреваемой в режиме теплового потока.
Выполнить тестовый расчет для d = 500 мкм, W = 1000 Вт/, tp = , , с.
Для расчета графика зависимости необходимо задать толщину пластины, мощность, время в нижней части программы и нажать клавишу “РАСЧЕТ”. При этом появится график. Если изменить значение “ВРЕМЯ” и произвести новый расчет, то новый график будет отображен рядом со старым и цвет линии графика будет другим.
При нажатии на кнопку “ОЧИСТИТЬ”, производится очистка графика от предыдущих расчётов. Если график не очистить, то следующий график выводится на панель с сохранением графиков предыдущих расчётов, что удобно для наблюдения изменений расчетов.
Для выхода из программы нажимаем кнопку “ВЫХОД”.
Информация о разработчике указана вверху программы.
Общий вид главного окна программы представлен на рисунке 1.1
Пример работы программы показан на рисунке 1.2
Рисунок 1.1 – Общий вид главного окна программы
Рисунок 1.2 – Пример работы программы
Исходный код с пояснениями
unit Unit1; //Название модуля
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series; //Библиотеки
type//Описание классов программы
TForm1 =class(TForm)
Panel1: TPanel;
Chart1: TChart;
Edit1: TEdit;
Edit2: TEdit;
Edit4: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
ComboBox1: TComboBox;
Image1: TImage;
Label7: TLabel;
Label8: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const // Описание констант
Ct=204;
p=2330;
ee=0.95;
E=1.9E-11;
v=0.25;
av=15E6;
Ts=300;
g=5.68E-8;
var// Описание переменных
Form1: TForm1;
T : extended;
diam : extended;
dtol : extended;
W : extended;
tp : extended;
implementation
{$R *.dfm}
function I1(x:extended):extended;
begin
I1:=exp(x)/sqrt(6.28*x); // функция Бесселя
end;
procedure TForm1.Button1Click(Sender: TObject);
var
qr,qq:TLineSeries;
Qrr,Qqq:extended;
a,r:extended;
K,Y,x:extended;
Tmax:extended;
begin
dtol:=strtofloat(Form1.Edit1.Text)*1E-6; //ввод толщины пластины
diam:=strtofloat(Form1.Edit2.Text)*1E-3; //ввод диаметра пластины
W:=strtofloat(Form1.Edit4.Text)*1E4; //ввод мощности
tp:=strtofloat(Form1.ComboBox1.Text)*1E-3; //ввод времени
Tmax:=sqrt(sqrt(W*0.67/(2*g*ee))); //аналитическое выражение
x:=((8*tp*Tmax*Tmax*Tmax*g*ee)/(Ct*p*dtol))+ //для оценки максимальной
ln((Tmax+Ts)/(Tmax-Ts))+2*arctan(Ts/Tmax)-tp*5.3; //температуры и времени
//достижения температуры T
T:=Tmax*(exp(x)-1)/(exp(x)+1);
qr:=TLineSeries.Create(Form1.Chart1.Owner);
qq:=TLineSeries.Create(Form1.Chart1.Owner);
Form1.Chart1.AddSeries(qr);
Form1.Chart1.AddSeries(qq);
qr.Title:='Qrr T='+inttostr(round(T));
qq.Title:='Qqq T='+inttostr(round(T));
a:=diam/2;
K:=802.99/T;
Y:=sqrt(k*dtol/(8*g*ee*T*T*T));
r:=0.9*a;
while r<=a do
begin
Qrr:=-1E3*(av*E*g*ee*T*T*T*T*Y*Y)*((1/a)-(1/r)*I1(r/Y)/I1(a/Y))/(K*(1-v)); //уравнение
Qqq:=-1E3*(av*E*g*ee*T*T*T*T*Y*Y)*((1/a)+((1/r)*I1(r/Y)/I1(a/Y))- ((1/Y)*I1(r/Y)/I1(a/Y)))/(K*(1-v)); // теплопроводности
qr.AddXY(r/a,Qrr);
qq.AddXY(r/a,Qqq);
r:=r+a/300;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
while Form1.Chart1.SeriesCount<>0 do Form1.Chart1.Series[0].Destroy; //очистка графика
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
close; //выход
end;
end.