/// <summary> /// / /// </summary> /// <param name="R"> Радиус до эпицентра взрыва, метры</param> /// <param name="M"> Масса вещества, тонны</param> /// <param name="substance"> Тип вещества (из списка)</param> /// <param name="P"> Плотность населения, тыс.чел /км^2 </param> /// <param name="one"> Взрыв 1 цистерны или группы </param> /// public static void Raschet2(double R, double M, double Q0, double P, bool one, Solve2 obj, double k1, double k2, double Vb, double Dm, bool secondPart) { //коэффициент условий хранения double z = 0.9; if (one) z = 0.5; obj.z = z; //масса в тротиловом эквиваленте double m = z * M; //т obj.m = m; //Радиус бризантного действия double r1 = 17.5 * Math.Pow(m, 1.0 / 3.0); //м obj.r1 = r1; //Радиус огненного шара double r2 = 1.7 * r1; //м obj.r2 = r2; //Избыточное давление в зоне огненного шара double dPf2 = 1300 * Math.Pow((r1 / r2), 3) + 50; //кПа obj.dPf2 = dPf2; //Избыточное давление в зоне действия воздушной ударной волны double K = 0.24 * R / r1; obj.K = K; double dPf3 = 0; if (K <= 2) { dPf3 = 700 / (3*Math.Sqrt(1+ 29.8*Math.Pow(K, 3)) - 1); //кПа } else { dPf3 = 22 / (K * Math.Sqrt(Math.Log(K)+0.158)); //кПа } obj.dPf3 = dPf3; //Угловой коэффициент взаимного расположения объекта и источника взрыва double F = r2 * r2 * r1 / Math.Sqrt(Math.Pow(r2 * r2 + R * R, 3)); obj.F = F; //Прозрачность атмосферы double T = 1 - 0.058 * Math.Log(R); obj.T = T; //Интенсивность теплового излучения double I = Q0 * F * T; //кДж*м^2/c obj.I = I; //Продолжительность существования огненного шара double t = 0.45 * Math.Pow(m, 1.0 / 3.0); obj.t = t; //Удельная теплота пожара double U = I * t; //кДж/(м^2) obj.U = U; //Число погибших людей double Ncm = 3 * P * Math.Pow(m, 1.0 / 3.0); obj.Ncm = Ncm; //Вторая часть if (secondPart) { //Радиус зоны токсичного задымления double R3 = (3.42 / k1) * Math.Pow((m / (Vb * k2 * Dm)), 2.0/3.0); obj.R3 = R3; } }
private void button1_Click(object sender, EventArgs e) { Double.TryParse(textBox1.Text, out R); Double.TryParse(textBox2.Text, out M); Double.TryParse(textBox3.Text, out P); Double.TryParse(textBox4.Text, out Vb); Solve2 test = new Solve2(); bool secondPart = false; if (checkBox1.Checked == true) { secondPart = true; //ПО ТАБЛИЦЕ НАХОДИМ Dm 4 табл приложение 1. //Токсодоза Вещества Смертельная Dm = 3.2; } string[][] need_data = (new WorkWithFile(data + "table_6.bjd")).writtingToArray(new char[]{'|', '|'}); foreach(var arg in need_data) { if (arg[0] == substance) { Double.TryParse(arg[1], out Q0); break; } } Solve2.Raschet2(R, M, Q0, P, one, test, k1, k2, Vb, Dm, secondPart); //test.U need_data = (new WorkWithFile(tables + @"\Annex_1\table_2.bjd")).writtingToArray(new char[]{'|', '|'}); string str1 = ""; string str2 = ""; foreach (var arg1 in need_data) { string[] mass1 = arg1[1].Split(new char[]{'-'}, StringSplitOptions.RemoveEmptyEntries); string[] mass2 = arg1[2].Split(new char[]{'-'}, StringSplitOptions.RemoveEmptyEntries); if(test.U >= Double.Parse(mass1[0]) && test.U <= Double.Parse(mass1[1])) { str1 += arg1[0] + ": Обугливание \n"; } else { if(test.U >= Double.Parse(mass2[0])) { str1 += arg1[0] + ": Устойчивое горение\n"; } else{ str1 += arg1[0] + ": Нет эффекта\n"; } } } need_data = (new WorkWithFile(tables + @"\Annex_1\table_3.bjd")).writtingToArray(new char[]{'|', '|'}); foreach(var arg1 in need_data) { string[] mass; if (arg1[2].Contains(">")) { mass = arg1[2].Split(new char[]{'>'}, StringSplitOptions.RemoveEmptyEntries); } else { mass = arg1[2].Split(new char[]{'-'}, StringSplitOptions.RemoveEmptyEntries); } if( test.U >= Double.Parse(mass[0]) && test.U <= Double.Parse(mass[1])) { str2 += arg1[3] + " " + arg1[4] + "\n"; } } if(str2 == "") {str2 = "Пострадавших от ожогов нет";} MessageBox.Show(test.ToString() + "\n--------------------------------------------------------------------------------\n" + str1 + "\n--------------------------------------------------------------------------------\n" + str2); if (secondPart) MessageBox.Show("Радиус зоны токсичного задымления, м: " + test.R3); }