Текст программы 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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|