コード例 #1
0
ファイル: Form2.cs プロジェクト: glebmillenium/projects
        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);
        }
コード例 #2
0
ファイル: Solve1.cs プロジェクト: glebmillenium/projects
 /// <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;
 }