private void btnRun_Click(object sender, EventArgs e) { rtbLog.AppendText("\nНачинаю расчёт."); rtbLog.AppendText("\nПреобразование входных данных, задание начальных условий..."); //Перевод углов, скоростей, угл. скоростей //из поточной СК в связанную IC.Angles_WindToBody(ref Body.Theta, ref Body.Psi, ref Body.phi); IC.V_WindToBody(ref Body.Vcx, ref Body.Vcy, ref Body.Vcz); IC.Om_WindToBody(ref Body.Omx, ref Body.Omy, ref Body.Omz); Body.centeredPartID = Body.CenteredPartID(); Body.lRear = Body.LRear(); // Чиста листов перед расчётом RK.ListsClear(); //Начальные приближения в массивах RK.InitApprox(); // Временный код для каких-то тестов //lbBody.Text = RK.Vcx_List[0].ToString(); //lbObstacle.Text = Body.Vcx.ToString(); //lbIC.Text = IC.nu0_dot.ToString(); //lbResults.Text = IC.phi0_dot.ToString(); //lbTest5.Text = Obstacle.Layers[0].A.ToString(); //lbTest6.Text = Body.Omz.ToString(); //Расчёт и запись соответственно rtbLog.AppendText("\nВычисление..."); RK.Computaion(); rtbLog.AppendText("\nЗапись результатов в массивы..."); RK.ListsToArrays(); RK.Dimentionless(); RK.DictionaryFill(); rtbLog.AppendText("\nСохранение результатов в файл..."); RK.Write(); rtbLog.AppendText("\nГотово!"); }
// Задает начальные приближения для нулевой итерации // Начальные приближения равны начальным условия public static void InitApprox() { t_List.Add(0.0); Vcx_List.Add(Body.Vcx); Vcy_List.Add(Body.Vcy); Vcz_List.Add(Body.Vcz); Vc_List.Add(Math.Sqrt(Body.Vcx * Body.Vcx + Body.Vcy * Body.Vcy + Body.Vcz * Body.Vcz)); // Абсолютная скорость Omx_List.Add(Body.Omx); Omy_List.Add(Body.Omy); Omz_List.Add(Body.Omz); Om_List.Add(Math.Sqrt(Body.Omx * Body.Omx + Body.Omy * Body.Omy + Body.Omz * Body.Omz)); // Абсолютная угловая скорость X_List.Add(IC.XInitial(Body.Theta)); Y_List.Add(0.0); Z_List.Add(0.0); psi_List.Add(Body.Psi); phi_List.Add(Body.phi); theta_List.Add(Body.Theta); //Body.Xc = X_Arr[0]; // Координата ЦМ в неподвижной СК }