Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Текст программы Visual Basic 6.0




*** Описание структуры меню главной формы ***

 

Begin VB.Menu Menu

Caption = “Меню”

Begin VB.Menu Default

Caption = “Defaults”

Shortcut = ^D

End

Begin VB.Menu Exit

Caption = “Выход”

Shortcut = {F4}

End

End

Begin VB.Menu Help

Caption = “Справка”

Begin VB.Menu About

Caption = «О программе»

End

Begin VB.Menu ObAnode

Caption = «кр. Описание»

End

End

 

Attribute VB_Name = “MainForm”

 

*** Текст основного модуля программы (MainForm.frm) ***

 

'обработка команд меню.

Private Sub About_Click()

frmAbout.Visible = True

End Sub

 

Private Sub ObAnode_Click()

Anode.Visible = True

End Sub

 

Private Sub Exit_Click()

Unload Me

End Sub

 

'Установка значений по умолчанию.

Private Sub Default_Click()

Text1.Text = “3”: Text2.Text = “3.5”: Text3.Text = “3.77”

Text4.Text = “1.1”: Text5.Text = “11.7”: Text6.Text = “170”

Text7.Text = “0.3”: Text8.Text = “100”: Text11.Text = “10”

Text9.Text = “300”: Text10.Text = “15”

End Sub

 

'ВЫБОР: медь или другой материал.

Private Sub Option1_Click()

If Option1.Value = True Then

Text3.Enabled = False: Text4.Enabled = False

Text5.Enabled = False: Text6.Enabled = False

Text7.Enabled = False

End If

Text3.Text = “3.77”: Text4.Text = “1.1”: Text5.Text = “11.7”

Text6.Text = “170”: Text7.Text = “0.3”

End Sub

 

Private Sub Option2_Click()

If Option2.Value = True Then

Text3.Enabled = True: Text4.Enabled = True

Text5.Enabled = True: Text6.Enabled = True

Text7.Enabled = True

End If

End Sub

 

'ОБРАБОТКА ОШИБОК ВВОДА РАДИУСОВ.

Private Sub Text1_Change()

If Val(Text1.Text) >= Val(Text2.Text) Then

MsgBox «Внутренний радиус должен быть меньше наружного.»,, «Ошибка!»

ElseIf (Text1.Text = “”) Or Val(Text1.Text) = 0 Then

MsgBox «Внутрений радиус д.б. строго больше нуля!»,, «Ошибка!»

End If

End Sub

 

Private Sub Text2_Change()

If Val(Text1.Text) >= Val(Text2.Text) Then

MsgBox «Наружный радиус должен быть больше внутреннего.»,, «Ошибка!»

ElseIf (Text2.Text = “”) Or Val(Text2.Text) = 0 Then

MsgBox «Наружный радиус необходимо ввести!»,, «Ошибка!»

End If

End Sub

 

'Нажатия на кнопки MainForm.

Private Sub Command1_Click()

Tempety.Visible = True

End Sub

 

Private Sub Command2_Click()

Graph1.Visible = True

End Sub

 

'кнопка выходa из программы.

Private Sub Command3_Click()

Unload Me

End Sub

 

*** Текст модуля расчета и вывода таблицы (Tables.frm) ***

 

'Вывод таблицы температур и термонапряжений.

Private Sub Calculate_Click()

'Массив(разбиения_радиус,обр_шаг_время).

Dim Mas(31, 500001) As Double

Dim Temp, Vrema As Double

Const Sigma = 0.00000000000567

Label9.Caption = “Идет расчёт...”

List1.Clear: List2.Clear

List3.Clear: List4.Clear: List5.Clear

'получение значений переменных из Главной формы.

Rvn = Val(MainForm.Text1.Text)

Rnar = Val(MainForm.Text2.Text)

Lamda = Val(MainForm.Text3.Text)

Alpha = Val(MainForm.Text4.Text)

Uprug = Val(MainForm.Text5.Text)

KLR = Val(MainForm.Text6.Text)

Eps = Val(MainForm.Text7.Text)

Power = Val(MainForm.Text8.Text)

Tzero = Val(MainForm.Text9.Text)

Discr = Val(MainForm.Text10.Text)

Vrema = Val(MainForm.Text11.Text)

'вычисление шага по R и по времени.

Step = (Rnar – Rvn) / Discr ‘-dR

Step_t = (Step * Step) / 6 ‘-dT

Uprug = Uprug * 1000000 ‘x 10v6y

KLR = KLR * 0.00000001 ‘x 10v-7y

'Установка начальной температуры.

For i = 0 To Discr

Mas(i, 0) = Tzero

Next i

VremaX = 0

'цикл по заданному времени работы.

For j = 0 To (Vrema / Step_t)

Ri = Rvn

Mas(0, j) = Mas(1, j) + (Power * Step / Lamda) ‘1-e граничное условие.

For i = 1 To Discr

Ri = Ri + Step 'наращивание переменной радиуса на один шаг.

Temp = (Mas(i – 1, j) – 2 * Mas(i, j) + Mas(i + 1, j)) / (Step * Step)

Temp = Temp + (Mas(i + 1, j) – Mas(i – 1, j)) / (2 * Ri * Step)

Mas(i, j + 1) = Mas(i, j) + Step_t * Alpha * Temp

Next i 'цикл по числу разбиений радиуса анода закончился.

Temp = Mas(Discr, j) * Mas(Discr, j) * Mas(Discr, j) * Mas(Discr, j)

Temp = Temp – Tzero * Tzero * Tzero * Tzero ‘2-e граничное условие.

Mas(Discr, j + 1) = Mas(Discr – 1, j + 1) - Temp * (Eps * Sigma * Step) / Lamda

VremaX = VremaX + Step_t

Ri = Rvn

'вывод значений в таблицу и расчет термонапряжений.

If j Mod Val(Text1.Text) = 0 Then 'вывод строк через заданное число.

S1 = 0: S2 = 0

For i = 2 To Discr Step 2 ‘цикл расчета “Tsr” Методом Симпсона.

S1 = S1 + Mas(i, j)

S2 = S2 + Mas(i – 1, j)

Next i

Integ = (Step/3)*(Mas(0,j)+ 2*S1+ 4*(S2+Mas(Discr-1,j))+Mas(Discr,j))

Tsr = Integ / (Rnar – Rvn) 'средняя температура в сечении анода.

 

Temp_val = Format(VremaX, “00.0000”)

List1.AddItem (Temp_val) ‘Temp_val – временное значение.

Temp_val = Format(Mas(1, j) – 273.15, “#.000”)

List2.AddItem (Temp_val) ‘Температура R-внутр.

Temp_val = Format(Mas(Discr, j) – 273.15, “#.000”)

List3.AddItem (Temp_val) ‘Температура R-наружн.

Temp_val = Format(KLR * Uprug * (Mas(0, j) – Tsr), “#.000”)

List4.AddItem (Temp_val) 'Вывод термонапряжений в столбцы 4 и 5.

Temp_val = Format(KLR * Uprug * (Tsr – Mas(Discr, j)), “#.000”)

List5.AddItem (Temp_val) 'вывод значений с форматом закончен.

End If

Next j 'повторение цикла по времени работы.

Label9.Caption = “Status: Сделано.”

End Sub

 

'организация общей прокрутки всех столбцов (ListIndex-номер строки).

Private Sub List1_Click()

List2.ListIndex = List1.ListIndex: List3.ListIndex = List1.ListIndex

List4.ListIndex = List1.ListIndex: List5.ListIndex = List1.ListIndex

End Sub

 

Private Sub List2_Click()

List1.ListIndex = List2.ListIndex: List3.ListIndex = List2.ListIndex

List4.ListIndex = List2.ListIndex: List5.ListIndex = List2.ListIndex

End Sub

 

Private Sub List3_Click()

List1.ListIndex = List3.ListIndex: List2.ListIndex = List3.ListIndex

List4.ListIndex = List3.ListIndex: List5.ListIndex = List3.ListIndex

End Sub

 

Private Sub List4_Click()

List1.ListIndex = List4.ListIndex: List2.ListIndex = List4.ListIndex

List3.ListIndex = List4.ListIndex: List5.ListIndex = List4.ListIndex

End Sub

 

Private Sub List5_Click()

List1.ListIndex = List5.ListIndex: List2.ListIndex = List5.ListIndex

List3.ListIndex = List5.ListIndex: List4.ListIndex = List5.ListIndex

End Sub

 

*** Текст модуля построения графиков (Graph1.frm) ***

 

'расчет и построение графиков температуры.

Private Sub Calculate_Click()

'Массив(разбиения_радиус,обр_шаг_время).

Label5.Caption = “Status: Считаю...”

Dim Mas(31, 500001) As Double

Dim Temp As Double ‘общая переменная.

Const Sigma = 0.00000000000567

'получение значений переменных из Главной формы.

Rvn = Val(MainForm.Text1.Text)

Rnar = Val(MainForm.Text2.Text)

Lamda = Val(MainForm.Text3.Text)

Alpha = Val(MainForm.Text4.Text)

Uprug = Val(MainForm.Text5.Text)

KLR = Val(MainForm.Text6.Text)

Eps = Val(MainForm.Text7.Text)

Power = Val(MainForm.Text8.Text)

Tzero = Val(MainForm.Text9.Text)

Discr = Val(MainForm.Text10.Text)

Vrema = Val(MainForm.Text11.Text)

'вычисление шага по R и по времени.

Step = (Rnar – Rvn) / Discr ‘-dR

Step_t = (Step * Step) / 6 ‘-dT

Uprug = Uprug * 1000000 ‘x 10v6y

KLR = KLR * 0.00000001 ‘x 10v-7y

'Установка начальной температуры.

For i = 0 To Discr

Mas(i, 0) = Tzero

Next i

'масштабирование графика термонапряжений.

Pic2.Scale (0, 1200)-(Vrema / Step_t, 0)

'цикл по заданному времени работы лампы.

For j = 0 To (Vrema / Step_t)

Ri = Rvn

Mas(0, j) = Mas(1, j) + (Power * Step / Lamda) ‘1-e граничное условие.

For i = 1 To Discr

Ri = Ri + Step 'наращивание переменной радиуса на один шаг.

Temp = (Mas(i – 1, j) – 2 * Mas(i, j) + Mas(i + 1, j)) / (Step * Step)

Temp = Temp + (Mas(i + 1, j) – Mas(i – 1, j)) / (2 * Ri * Step)

Mas(i, j + 1) = Mas(i, j) + Step_t * Alpha * Temp

Next i 'цикл по числу разбиений радиуса анода закончился.

Temp = Mas(Discr, j) * Mas(Discr, j) * Mas(Discr, j) * Mas(Discr, j)

Temp = Temp – Tzero * Tzero * Tzero * Tzero ‘2-e граничное условие.

Mas(Discr, j + 1) = Mas(Discr – 1, j + 1) - Temp * (Eps*Sigma*Step)/Lamda

VremaX = VremaX + Step_t

If Max_Temp < Mas(0, j) Then Max_Temp = Mas(0, j) ‘нахождение максимума.

'расчет термонапряжений и построение их графика.

If j Mod 10 = 1 Then 'вывод через каждые десять значений времени.

S1 = 0: S2 = 0

For i = 2 To Discr Step 2 'Вычисление интеграла методом Симпсона.

S1 = S1 + Mas(i, j)

S2 = S2 + Mas(i – 1, j)

Next i

Integ = (Step/3)*(Mas(0,j)+ 2*S1 + 4*(S2+Mas(Discr-1,j)) + Mas(Discr,j))

Tsr = Integ / (Rnar – Rvn) 'средняя температура в сечении.

 

'рисование линий графика термонапряжений (нижнего).

Pic2.Line (j, KLR * Uprug * (Mas(0, j) – Tsr) + 600)-(j + 10, KLR * Uprug * (Mas(0, j) – Tsr) + 600), vbRed

Pic2.Line (j, KLR * Uprug * (Tsr – Mas(Discr, j)) + 600)-(j + 10, KLR * Uprug * (Tsr – Mas(Discr, j)) + 600), vbBlue

End If

Next j

'заполнение значениями надписей на форме.

Max_Temp = Round(Max_Temp – 273.15)

Label9.Caption = Max_Temp

Label8.Caption = Max_Temp * 3 / 4

Label7.Caption = Max_Temp / 2

Label6.Caption = Max_Temp / 4

Label_t.Caption = Vrema

Label_t2.Caption = Vrema / 2

Label_t34.Caption = Vrema * 3 / 4

Label_t14.Caption = Vrema / 4

Label5.Caption = “Status: Выполнено.”

 

'Масштабирование первого рисунка (график температуры).

Pic1.Scale (0, Max_Temp)-(Vrema / Step_t, 0)

For j = 0 To Vrema / Step_t 'рисование внутр. Графика.

Pic1.Line (j, Mas(0, j) – 273)-(j + 1, Mas(0, j) – 273), vbRed

'рисование наруж. Графика.

Pic1.Line (j, Mas(Discr, j) – 273)-(j + 1, Mas(Discr, j) – 273), vbBlue

Next j

End Sub

 

'закрытие и выгрузка формы.

Private Sub Close_Click()

Unload Me

End Sub

 

*** Программный код формы frmAbout.frm ***

 

'форма вывода информации о программе.

Private Sub Form_Load()

Me.Caption = «О программе «& App.Title

lblVersion.Caption = “Версия“&App.Major&”.”&App.Minor&”.”&App.Revision&”(b)”

End Sub

 

'выгрузка по кнопке «OK».

Private Sub cmdOK_Click()

Unload Me

End Sub


Описание программы

Общие сведения.

Программа Termonap.exe работает под управлением ОС Windows и предназначена для расчета температур и термонапряжений в аноде МГП с естественным охлаждением. Для обеспечения функционирования программы нужен файл библиотеки MSVBVM60.dll.

 

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...