Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Распределения температуры по толщине пластины кремния, нагреваемой в режиме теплового потока.doc
Скачиваний:
96
Добавлен:
01.04.2014
Размер:
379.39 Кб
Скачать
  1. Описание программы

Нам надо разработать программу для моделирования в диалоговом режиме распределения температуры по толщине пластины кремния, нагреваемой в режиме теплового потока.

Выполнить тестовый расчет для d = 500 мкм, W = 1000 Вт/, tp = , , с.

Для расчета графика зависимости необходимо задать толщину пластины, мощность, время в нижней части программы и нажать клавишу “РАСЧЕТ”. При этом появится график. Если изменить значение “ВРЕМЯ” и произвести новый расчет, то новый график будет отображен рядом со старым и цвет линии графика будет другим.

При нажатии на кнопку “ОЧИСТИТЬ”, производится очистка графика от предыдущих расчётов. Если график не очистить, то следующий график выводится на панель с сохранением графиков предыдущих расчётов, что удобно для наблюдения изменений расчетов.

Для выхода из программы нажимаем кнопку “ВЫХОД”.

Информация о разработчике указана вверху программы.

Общий вид главного окна программы представлен на рисунке 1.1

Пример работы программы показан на рисунке 1.2

Рисунок 1.1 – Общий вид главного окна программы

Рисунок 1.2 – Пример работы программы

  1. Исходный код с пояснениями

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.