Разработка программного продукта для расчета тепловых коэффициентов для тел с распределенными и сосредоточенными источниками энергии

Структура и описание программ для расчета тепловых коэффициентов для параллелепипеда с равномерно распределенными источниками тепла, равномерно распределенными на двух противоположных гранях и грани которого находятся в состоянии теплообмена со средой.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 22.06.2015
Размер файла 523,0 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

g2:=Bz*Ez*Ez*KSIz;

k:=(g2*g2*(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)))/(g2-(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)));

KSIx:=1/(1+By/k);

g1:=sqrt((Bx*KSIx+g2*g2)/(Ey*Ey));

FPlot.BeginPlot;

h:=2*lz/1000;

for i:=1 to 1000 do

begin

t:=0;

t:=W*lx*lx*0.5*g1*g1/(Ez*Ez*LAx*ly*By)*

(exp(g1*y/ly)+exp(-g1*y/ly))/

(exp(g1)+exp(-g1)+(g1/By)*(exp(g1)-exp(-g1)))*

(1-(exp(g2*x/lx)+exp(-g2*x/lx))/

(exp(g2)+exp(-g2)+(g2/Bx)*(exp(g2)-exp(-g2))))*

(1+2/Bz-z*z/(lz*lz))+tc;

FPlot.AddPoint(z,t,clRed);

z:=z+h;

end;

FPlot.Chart1.Title.Text.Clear;

FPlot.Chart1.Title.Text.Add('График зависимости температуры от координаты Z');

FPlot.Show;

FCoord.LX.Caption:='Z';

end;

end;

end;

procedure TForm1.BitBtn4Click(Sender: TObject);

begin

if (Edit1.text='') or (Edit2.text='') or (Edit3.text='') or (Edit4.text='')

or (Edit5.text='') or (Edit7.text='') or (Edit8.text='') or (Edit9.text='')

or (Edit10.text='') or (Edit6.text='') or (Edit11.text='') or (Edit12.text='') or (Edit13.text='')

or (Edit14.text='') then

ShowMessage('Заполните все поля формы')

else

begin

if (strtofloat(Edit6.text)<(-1/2)*strtofloat(Edit1.text)) or (strtofloat(Edit6.text)>(1/2)*strtofloat(Edit1.text)) or

(strtofloat(Edit8.text)<(-1/2)*strtofloat(Edit3.text)) or (strtofloat(Edit8.text)>(1/2)*strtofloat(Edit3.text)) or

(strtofloat(Edit7.text)<(-1/2)*strtofloat(Edit2.text)) or (strtofloat(Edit7.text)>(1/2)*strtofloat(Edit2.text)) then

ShowMessage('Координаты исследуемой точки выходят за рамки параллепипеда')

else

begin

lx:=strtofloat(Edit1.text)/2;

ly:=strtofloat(Edit2.text)/2;

lz:=strtofloat(Edit3.text)/2;

P:=strtofloat(Edit4.text);

W:=strtofloat(Edit4.text)/(4*lx*lz);

LAx:=strtofloat(Edit5.text);

LAy:=strtofloat(Edit11.text);

LAz:=strtofloat(Edit12.text);

ALx:=strtofloat(Edit9.text);

ALy:=strtofloat(Edit13.text);

ALz:=strtofloat(Edit14.text);

tc:=strtofloat(Edit10.text);

x:=strtofloat(Edit6.text);

y:=strtofloat(Edit7.text);

z:=strtofloat(Edit8.text);

Ez:=(lx/lz)*sqrt(LAz/LAx);

Ey:=(lx/ly)*sqrt(LAy/LAx);

Bx:=ALx*lx/LAx;

By:=ALy*ly/LAy;

Bz:=ALz*lz/LAz;

KSIz:=1/(1+Bz/3);

g2:=Bz*Ez*Ez*KSIz;

k:=(g2*g2*(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)))/(g2-(exp(g2)-exp(-g2))/(exp(g2)+exp(-g2)));

KSIx:=1/(1+By/k);

g1:=sqrt((Bx*KSIx+g2*g2)/(Ey*Ey));

t:=0;

t:=W*lx*lx*0.5*g1*g1/(Ez*Ez*LAx*ly*By)*

(exp(g1*y/ly)+exp(-g1*y/ly))/

(exp(g1)+exp(-g1)+(g1/By)*(exp(g1)-exp(-g1)))*

(1-(exp(g2*x/lx)+exp(-g2*x/lx))/

(exp(g2)+exp(-g2)+(g2/Bx)*(exp(g2)-exp(-g2))))*

(1+2/Bz-z*z/(lz*lz))+tc;

t:=trunc(t*1000)/1000;

label13.Caption:=floattostr(t);

end;

end;

end;

procedure TForm1.N1Click(Sender: TObject);

begin

Form2.Show;

end;

procedure TForm1.FormShow(Sender: TObject);

begin

ShowMessage('Для вызова помощи в программе нажмите F1 или правую клавишу мыши.');

LoadKeyboardLayout('00000419',KLF_ACTIVATE);

end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);

begin

if not (key in ['0'..'9',',', #8]) then

begin

Key:=#0;

end;

end;

procedure TForm1.Edit10KeyPress(Sender: TObject; var Key: Char);

begin

if not (key in ['0'..'9',',','-', #8]) then

begin

Key:=#0;

end;

end;

end.

Приложение 4

unit UPlot;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

Dialogs, ImgList, ActnList, Menus, ComCtrls, ToolWin, TeEngine, Series,

ExtCtrls, TeeProcs, Chart;

type

TFPlot = class(TForm)

procedure ACursMouseExecute(Sender: TObject);

procedure Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

procedure Chart1DblClick(Sender: TObject);

procedure FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure Chart1AfterDraw(Sender: TObject);

procedure ARepaintExecute(Sender: TObject);

procedure AMaxExecute(Sender: TObject);

procedure AMinExecute(Sender: TObject);

procedure FormKeyUp(Sender: TObject; var Key: Word;

Shift: TShiftState);

procedure ACalcExecute(Sender: TObject);

procedure ASaveBMPExecute(Sender: TObject);

procedure ASaveWMFExecute(Sender: TObject);

procedure ASaveEMFExecute(Sender: TObject);

procedure ACopyBMPExecute(Sender: TObject);

procedure ACopyWMFExecute(Sender: TObject);

procedure ACopyEMFExecute(Sender: TObject);

procedure APrintPExecute(Sender: TObject);

procedure AExitExecute(Sender: TObject);

procedure ACursorsExecute(Sender: TObject);

procedure AHelpExecute(Sender: TObject);

procedure FCoordClose;

procedure FormClose(Sender: TObject; var Action: TCloseAction);

procedure FormCreate(Sender: TObject);

private

{ Private declarations }

// Прорисовка изображений курсоров графика

procedure SetCursor;

// Запись координат курсоров в окно FCoord

procedure WriteValue;

public

{ Public declarations }

procedure BeginPlot;

procedure AddPoint(X,Y:real;Color:TColor);

procedure NullPoint(X:real);

end;

var

FPlot: TFPlot;

implementation

uses UCoord, Math, ShellAPI;

{$R *.DFM}

// IndCurs1 - индекс первого курсора

// IndCurs2 - индекс второго курсора

// HCursor - шаг перемещения курсора

var IndCurs1, IndCurs2, HCursor: LongInt;

ABad: array of real; // Массив областей недопустимых значений

Bad: boolean;

procedure TFPlot.BeginPlot;

begin

// Очистка серии прежнего графика

Series1.Clear;

// Обнуление массива недопустимых значений аргумента

SetLength(ABad,0);

// Сброс флага, сообщающего о том,

// что предыдущее значение аргумента недопустимое

Bad := false;

// Чтобы восстановить масштаб, если он перед этим изменялся

FPlot.Chart1.UndoZoom;

end;

procedure TFPlot.AddPoint(X,Y:real;Color:TColor);

begin

// Занесение очередной точки в график

if(FloatToStr(Y) = 'NAN')or

(FloatToStr(Y) = '-NAN')or

(FloatToStr(Y) = 'INF')or

(FloatToStr(Y) = '-INF')

then NullPoint(X)

else begin

Series1.AddXY(X,Y,'',Color);

// Сброс флага, сообщающего о том,

// что предыдущее значение аргумента недопустимое

Bad := false;

end;

end;

procedure TFPlot.NullPoint(X:real);

begin

// Если вычисление точки дало ошибку

if Bad

// Если прошлая точка тоже была недопустимой

then ABad[High(ABad)] := X

else begin

// Если прошлая точка была допустимой,

// то значение аргумента заносится как начальная и

// конечная точка очередного диапазона

SetLength(ABad,Length(ABad)+2);

ABad[High(ABad)-1] := X;

ABad[High(ABad)] := X;

// Установка флага, сообщающего о том,

// что предыдущее значение аргумента недопустимое

Bad := true;

end;

end;

procedure TFPlot.ACursMouseExecute(Sender: TObject);

// Включение/выключение курсора мыши

begin

ACursMouse.Checked:= not ACursMouse.Checked;

if ACursMouse.Checked

then begin

Series1.Cursor := crCross;

FCoord.Visible := true;

end

else begin

Series1.Cursor := crDefault;

if (not ACursors.Checked)

then FCoord.Visible := false

else begin

FCoord.XLabel.Caption := '';

FCoord.YLabel.Caption := '';

end;

end

end;

procedure TFPlot.ACursorsExecute(Sender: TObject);

// Включение/выключение курсоров графика

begin

ACursors.Checked:= not ACursors.Checked;

if ACursors.Checked

then begin

ACursors.ImageIndex:=4;

IndCurs1:=0;

IndCurs2:=0;

SetCursor;

WriteValue;

FCoord.Visible := true;

SetFocus; // Переключение фокуса на данную форму

end

else begin

ACursors.ImageIndex:=3;

SetCursor;

if (not ACursMouse.Checked)

then FCoord.Visible := false

else begin

with FCoord do begin

XLabel2.Caption := '';

YLabel2.Caption := '';

XLabel3.Caption := '';

YLabel3.Caption := '';

XLDelta.Caption := '';

YLDelta.Caption := '';

end;

end;

end;

end;

procedure TFPlot.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,

Y: Integer);

// Отображение координат курсора мыши

var XData, YData: double;

begin

if (Series1.Cursor = crCross) then begin

Series1.GetCursorValues(XData, YData);

with FCoord do begin

XLabel.Caption := FloatToStrF(XData,ffGeneral,7,0);

YLabel.Caption := FloatToStrF(YData,ffGeneral,7,0);

end;

end;

end;

procedure TFPlot.SetCursor;

// Поиск координат и прорисовка курсоров графика

var XPos, YPos, Pos: LongInt;

PenMode: TPenMode;

begin

with Chart1 do begin

PenMode := Canvas.Pen.Mode;

Canvas.Pen.Color:=clBlack;

Canvas.Pen.Mode := pmNotXor;

XPos:=Series1.CalcXPos(IndCurs1);

YPos:=Series1.CalcYPos(IndCurs1);

Canvas.MoveTo(XPos,ChartRect.Bottom);

Canvas.LineTo(XPos, ChartRect.Top);

Canvas.MoveTo(ChartRect.Left, YPos);

Canvas.LineTo(ChartRect.Right, YPos);

Pos:=Series1.CalcXPos(IndCurs2);

if (Pos <> XPos) then begin

Canvas.MoveTo(Pos,ChartRect.Bottom);

Canvas.LineTo(Pos, ChartRect.Top);

end;

Pos:=Series1.CalcYPos(IndCurs2);

if (Pos <> YPos) then begin

Canvas.MoveTo(ChartRect.Left, Pos);

Canvas.LineTo(ChartRect.Right, Pos);

end;

Canvas.Pen.Mode := PenMode;

end;

end;

procedure TFPlot.WriteValue;

// Отображение координат курсоров

var X1, X2, Y1, Y2: double;

begin

X1:=Series1.XValue[IndCurs1];

X2:=Series1.XValue[IndCurs2];

Y1:=Series1.YValue[IndCurs1];

Y2:=Series1.YValue[IndCurs2];

with FCoord do begin

XLabel2.Caption := FloatToStrF(X1,ffGeneral,7,0);

YLabel2.Caption := FloatToStrF(Y1,ffGeneral,7,0);

XLabel3.Caption := FloatToStrF(X2,ffGeneral,7,0);

YLabel3.Caption := FloatToStrF(Y2,ffGeneral,7,0);

XLDelta.Caption := FloatToStrF(X1-X2,ffGeneral,7,0);

YLDelta.Caption := FloatToStrF(Y1-Y2,ffGeneral,7,0);

end;

end;

procedure TFPlot.FormKeyDown(Sender: TObject; var Key: Word;

Shift: TShiftState);

// В режиме отображения курсоров графика перемещает курсоры

var IndNew:LongInt;

begin

if (ACursors.Checked) then begin

if (ssShift in Shift)

then IndNew:=IndCurs2

else IndNew:=IndCurs1;

case Key of

VK_Left: Dec(IndNew, HCursor);

VK_Right: Inc(IndNew, HCursor);

VK_Home: IndNew:=0;

VK_End: IndNew:= Series1.Count-1;

else exit;

end;

// Ограничение перемещения курсора

if (IndNew < 0) then IndNew := 0;

if (IndNew > Series1.Count-1) then IndNew := Series1.Count-1;

// Ускорение перемещения курсора

Inc(HCursor);

SetCursor; // Стирание прежнего курсора

if (ssShift in Shift)

then IndCurs2:=IndNew

else IndCurs1:=IndNew;

SetCursor; // Рисование нового курсора

WriteValue;

end;

end;

procedure TFPlot.Chart1AfterDraw(Sender: TObject);

// При перерисовке изображения прорисовывает курсоры

// отображает области недопустимых значений

var i: integer;

X1, X2 :longint;

begin

if(ACursors.Checked) then SetCursor;

if (Length(ABad) > 0)

then begin

FPlot.Chart1.Canvas.Brush.Color := clSilver;

FPlot.Chart1.Canvas.Pen.Color := clBlack;

FPlot.Chart1.Canvas.Brush.Style := bsSolid;

i:=0;

repeat

X1 := FPlot.Series1.CalcXPosValue(Max(ABad[i],FPlot.Series1.MinXValue));

X2 := FPlot.Series1.CalcXPosValue(Min(ABad[i+1],FPlot.Series1.MaxXValue));

if(X1 = X2) then begin

// Раздвигаются границы области, если они совпадают

Dec(X1,2);

Inc(X2,2);

end;

FPlot.Chart1.Canvas.Rectangle(X1,

FPlot.Chart1.ChartRect.Top,

X2,

FPlot.Chart1.ChartRect.Bottom);

inc(i,2);

until (i >= Length(ABad));

end;

end;

procedure TFPlot.FCoordClose;

// Выключение курсоров

begin

ACursMouse.Checked := false;

if(ACursors.Checked) then begin

SetCursor;

ACursors.Checked := false;

ACursors.ImageIndex:=3;

end;

end;

procedure TFPlot.ARepaintExecute(Sender: TObject);

// Перерисовка изображения

begin

Chart1.Repaint;

end;

procedure TFPlot.AMaxExecute(Sender: TObject);

// Установка курсора на максимум

var i: integer;

YMax: double;

begin

// Стирание прежнего курсора

if ACursors.Checked then SetCursor;

YMax := -1.7E308;

for i:=0 to Series1.LastValueIndex do

if (Series1.YValues[i] > YMax)

then begin

YMax := Series1.YValues[i];

IndCurs1 := i;

end;

IndCurs2 := 0;

SetCursor;

WriteValue;

FCoord.Visible := true;

ACursors.Checked := true;

ACursors.ImageIndex:=4;

SetFocus;

end;

procedure TFPlot.AMinExecute(Sender: TObject);

// Установка курсора на минимум

var i: integer;

YMin: double;

begin

// Стирание прежнего курсора

if ACursors.Checked then SetCursor;

YMin := 1.7E308;

for i:=0 to Series1.LastValueIndex do

if (Series1.YValues[i] < YMin)

then begin

YMin := Series1.YValues[i];

IndCurs1 := i;

end;

IndCurs2 := 0;

SetCursor;

WriteValue;

FCoord.Visible := true;

ACursors.Checked := true;

ACursors.ImageIndex:=4;

SetFocus;

end;

procedure TFPlot.FormKeyUp(Sender: TObject; var Key: Word;

Shift: TShiftState);

begin

HCursor := 1;

end;

procedure TFPlot.ACalcExecute(Sender: TObject);

// Вызов "Калькулятора"

begin

ShellExecute(Handle,'open','Calc',nil,nil,SW_RESTORE);

end;

procedure TFPlot.ASaveBMPExecute(Sender: TObject);

// Сохранят график в формате .bmp

begin

with SaveDialog1 do begin

DefaultExt:='bmp';

FilterIndex:=1;

if(SaveDialog1.Execute)

then Chart1.SaveToBitmapFile(SaveDialog1.FileName);

end;

end;

procedure TFPlot.ASaveWMFExecute(Sender: TObject);

// Сохранят график в формате .wmf

begin

with SaveDialog1 do begin

DefaultExt:='wmf';

FilterIndex:=3;

if(SaveDialog1.Execute)

then Chart1.SaveToMetafile(SaveDialog1.FileName);

end;

end;

procedure TFPlot.ASaveEMFExecute(Sender: TObject);

// Сохранят график в формате .emf

begin

with SaveDialog1 do begin

DefaultExt:='emf';

FilterIndex:=2;

if(SaveDialog1.Execute)

then Chart1.SaveToMetafileEnh(SaveDialog1.FileName);

end;

end;

procedure TFPlot.ACopyBMPExecute(Sender: TObject);

// Копирует график в Clipboard в формате .bmp

begin

Chart1.CopyToClipboardBitmap;

end;

procedure TFPlot.ACopyWMFExecute(Sender: TObject);

// Копирует график в Clipboard в формате .wmf

begin

Chart1.CopyToClipboardMetafile(false);

end;

procedure TFPlot.ACopyEMFExecute(Sender: TObject);

// Копирует график в Clipboard в формате .emf

begin

Chart1.CopyToClipboardMetafile(true);

end;

procedure TFPlot.APrintPExecute(Sender: TObject);

// Печать графика

var i: integer;

begin

if (PrintDialog1.Execute) then

for i:=1 to PrintDialog1.Copies do

if (Sender = APrintP)

then Chart1.PrintPortrait

else Chart1.PrintLandscape;

end;

procedure TFPlot.Chart1DblClick(Sender: TObject);

// Восстановление масштаба по умолчанию

begin

Chart1.UndoZoom;

end;

procedure TFPlot.AExitExecute(Sender: TObject);

// Завершение работы приложения

begin

Application.Terminate;

end;

procedure TFPlot.AHelpExecute(Sender: TObject);

// Вызов справки

begin

Application.HelpCommand(HELP_FINDER,0);

end;

procedure TFPlot.FormClose(Sender: TObject; var Action: TCloseAction);

begin

if(ACursors.Checked or ACursMouse.Checked)

then FCoord.Close;

end;

procedure TFPlot.FormCreate(Sender: TObject);

begin

Series1.XValues.Order := loNone;

end;

end.

Окно работы с курсором:

unit UCoord;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TFCoord = class(TForm)

procedure FormClose(Sender: TObject; var Action: TCloseAction);

private

{ Private declarations }

public

{ Public declarations }

end;

var

FCoord: TFCoord;

implementation

uses UPlot;

{$R *.dfm}

procedure TFCoord.FormClose(Sender: TObject; var Action: TCloseAction);

begin

FPlot.FCoordClose;

end;

end.

Размещено на Allbest.ru


Подобные документы

  • Идентификация объектов методом наименьших квадратов. Анализ коэффициентов парной, частной и множественной корреляции. Построение линейной модели и модели с распределенными параметрами. Итерационный численный метод нахождения корня (нуля) заданной функции.

    курсовая работа [893,3 K], добавлен 20.03.2014

  • Программный комплекс для расчета тепловых потерь через печные ограждения. Общие сведения об огнеупорных стенках. Технические характеристики огнеупоров. Разработка программного обеспечения для выполнения расчетов тепловых потерь через многослойную стенку.

    дипломная работа [5,3 M], добавлен 10.06.2012

  • Установка программ Winamp и распознавания текста ABBYY FineReader 11 Professional Edition. Использование в современной компании программы бухгалтерского учета 1С–Предприятие. Управление распределенными информационными базами. Установка драйверов защиты.

    отчет по практике [4,0 M], добавлен 18.05.2015

  • Техническое задание на проектирование системы автоматизированного решения задач механики. Разработка комплекта математических моделей систем с распределенными параметрами при действии динамических нагрузок. Выбор базового программного обеспечения.

    дипломная работа [679,7 K], добавлен 15.01.2010

  • Сравнение графиков заданной функции и интерполяционных полиномов на определенном интервале при двух вариантах выбора узлов (равномерно с шагом, по Чебышеву). Создание программы на основе метода Ньютона для построения графиков и расчета значений функции.

    контрольная работа [1,1 M], добавлен 07.07.2012

  • Рассмотрение архитектуры "файл-сервер" и двух- и трехуровневых архитектур "клиент-сервер". Модель сервера приложений и свойства "идеальной" системы управления распределенными базами данных. Способы распределения функций обработки логики запроса.

    презентация [60,2 K], добавлен 19.08.2013

  • Реализация концепции геопространственных информационных технологий, в рамках которой программист создает приложения, используя стандартные языки программирования. Применение ГИС для эффективного контроля за территориально-распределенными объектами.

    реферат [2,4 M], добавлен 12.01.2015

  • Обзор и анализ существующих методик управления проектами и оценки трудоемкости. Разработка алгоритма задания параметров и вычисления трудоемкости и стоимости программного продукта. Отладка и тестирование продукта. Разработка руководства пользователя.

    дипломная работа [2,5 M], добавлен 18.11.2017

  • Математические методы решения задачи расчета химического равновесия. Структура программного средства. Схема отношений базы данных химических элементов и соединений. Программная реализация Генетического Алгоритма для расчета химического равновесия.

    дипломная работа [6,6 M], добавлен 07.07.2012

  • Разработка и реализация компонентов "Интерфейс администратора", "Виртуальная лаборатория" системы удаленного доступа к вычислительным ресурсам. Определение функций клиента. Построение ER-модели базы данных системы УД и УРВР; архитектура и требования.

    дипломная работа [5,5 M], добавлен 26.05.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.