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); Solve1 obj = new Solve1(); Solve1.Raschet1(R, M, P, obj); double temp = obj.dRf * 0.01019716212978; str = "-----------------------------------------------\n"; foreach(var arg in list_data) { if(arg.Item2.Checked) { foreach(var arg1 in need_data) { if(arg.Item1.Text == arg1[0]) { string[] mass1 = arg1[3].Split(new char[]{'-'}, StringSplitOptions.RemoveEmptyEntries); string[] mass2 = arg1[2].Split(new char[]{'-'}, StringSplitOptions.RemoveEmptyEntries); string[] mass3 = arg1[1].Split(new char[]{'-'}, StringSplitOptions.RemoveEmptyEntries); if(mass1.Length==1 || mass2.Length == 1 || mass1.Length == 1) { continue; } if (temp >= Double.Parse(mass1[0]) && temp <= Double.Parse(mass1[1])) { str += arg.Item1.Text + ": слабое разрушение \n"; } else { if (temp >= Double.Parse(mass2[0]) && temp <= Double.Parse(mass2[1])) { str += arg.Item1.Text + ": среднее разрушение \n"; } else { if (temp >= Double.Parse(mass3[0]) && temp <= Double.Parse(mass3[1])) { str += arg.Item1.Text + ": сильное разрушение \n"; } else { str += arg.Item1.Text + ": разрушений нет \n"; } } } } } } } String st = String.Format("Люди, находящиеся на расстоянии {0:F2} м от эпицентра взрыва, получат увечья или могут быть убиты", obj.r2); MessageBox.Show(obj.ToString() + "\n" + st +"\n" + str); }
/// <summary> /// / /// </summary> /// <param name="R"> Радиус до эпицентра взрыва, метры</param> /// <param name="M"> Масса тратила, кг</param> /// <param name="P"> Плотность населения, тыс.чел /км^2 </param> /// public static void Raschet1(double R, double m, double P, Solve1 obj) { //Избыточное давление, кПа double dRf = 95 * Math.Pow(m, 1.0 / 3.0) / R + 390 * Math.Pow(m, 2.0 / 3.0) / Math.Pow(R, 2) + 1300 * m / Math.Pow(R, 3); obj.dRf = dRf; //Скоростной напор воздуха double dRsk = (2.5 * dRf * dRf) / (dRf + 720); // кПа obj.dRsk = dRsk; //Скорость движения ударной волны м/с double Db = 340 * Math.Sqrt(1 + 0.0083 * dRf); obj.Db = Db; //Скорость движения за фротном ударной волны м/с double Vb = 8000 * dRf / Db; obj.Vb = Vb; //Время движения ВУВ, c double tb = 0.0013 * Math.Pow(m, 1.0 / 6.0) * Math.Sqrt(R); obj.tb = tb; //Потери среди населения double Ncm = P* 0.001* Math.Pow(m / 1000.0, 2.0 / 3.0); obj.Ncm = Ncm; //Радиус бризантного действия double r1 = 1.75 * Math.Pow(m, 1.0 / 3.0); //м obj.r1 = r1; //Радиус огненного шара double r2 = 1.7 * r1; //м obj.r2 = r2; //Избыточное давление в зоне 3: double K = 0.24 * R / r1; obj.K = K; double dRf3 = 0; if (K <= 2) { dRf3 = 700 / (3 * Math.Sqrt(1 + 29.8 * Math.Pow(K, 3)) - 1); //кПа } else { dRf3 = 22 / (K * Math.Sqrt(Math.Log(K) + 0.158)); //кПа } obj.dRf3 = dRf3; }