/// <summary> /// Пытается создать объект сети, если его не существует, иначе возвращает существующий объект. /// </summary> /// <param name="vacuumLine">Всасывающая линия.</param> /// <param name="forcingLine">Нагнетающая линия.</param> /// <returns>Возвращает новый или существующий объект сети.</returns> public static Network Create(LiquidInPipeline vacuumLine, LiquidInPipeline forcingLine) { if (_isExist) return _network; var network = new Network {VacuumLine = vacuumLine, ForcingLine = forcingLine}; _network = network; _isExist = true; return network; }
public ResistanceOut(EasyPACT.LiquidInPipeline lip_In, EasyPACT.LiquidInPipeline lip_Out, double Temperature_Out, double NK_dou, double VP) { this.lip_In = lip_In; this.lip_Out = lip_Out; this.Temperature_Out = Temperature_Out; this.NK_dou = NK_dou; this.VP = VP; Grid Grid_Add_Resistance = new MyGrid(); Grid_Add_Resistance.Name = "Grid_Add_Resistance"; MyLabel Pipe_Resist_In = new MyLabel("Pipe_Resist_In", 30, 100, 0, 0, "Нагнетательный трубопровод", 14); Pipe_Resist_In.FontWeight = FontWeights.Bold; MyLabel Local_Resistance_In_lbl = new MyLabel("Local_Resistance_In_lbl", 30, 140, 0, 0, "Местное сопротивление:"); MyComboBox Local_Resistance_In = new MyComboBox("Local_Resistance_In_1", 200, 200, 142, 0, 0); Local_Resistance_In.Items.Add("Выберите сопротивление"); Local_Resistance_In.Items.Add("Вход в трубу"); Local_Resistance_In.Items.Add("Выход и трубы"); Local_Resistance_In.Items.Add("Диафрагма"); Local_Resistance_In.Items.Add("Отвод"); Local_Resistance_In.Items.Add("Колено"); Local_Resistance_In.Items.Add("Вентиль нормальный"); //Local_Resistance_In.Items.Add("Вентиль прямоточный"); //Local_Resistance_In.Items.Add("Кран пробочный"); //Local_Resistance_In.Items.Add("Задвижка"); Local_Resistance_In.SelectedIndex = 0; Local_Resistance_In.SelectionChanged += Local_Resistance_In_SelectionChanged; // Комбобоксы для сопротивлений MyComboBox First = new MyComboBox("First_1", 200, 410, 142, 0, 0); First.Visibility = Visibility.Hidden; MyComboBox Second = new MyComboBox("Second_1", 200, 620, 142, 0, 0); Second.Visibility = Visibility.Hidden; MyTextBox Third = new MyTextBox("Third_1", 200, 410, 142, 0, 0); Third.Visibility = Visibility.Hidden; /* MyLabel Number_Local_Resistance_In_lbl = new MyLabel("Number_Local_Resistance_In_lbl", 334, 100, 0, 0, "Количество:"); MyTextBox Number_Local_Resistance_In = new MyTextBox("Number_Local_Resistance_In", 60, 425, 100, 0, 0); MyLabel Shtyk = new MyLabel("Shtyk", 489, 100, 0, 0, "штук."); MyLabel Size = new MyLabel("Size_1", 556, 100, 0, 0, "Размеры"); MyComboBox Size_Choose = new MyComboBox("", 100, 620, 102, 0, 0); */ MyButton Add_New_Local_Resistance = new MyButton("Add_New_Local_Resistance", 100, 100, 170, 0, 0, "Добавить"); Add_New_Local_Resistance.Click += Add_New_Local_Resistance_Click; ScrollBar hSBar = new ScrollBar(); hSBar.Orientation = Orientation.Vertical; hSBar.HorizontalAlignment = HorizontalAlignment.Right; hSBar.Width = 10; hSBar.Height = 200; hSBar.Minimum = 0; hSBar.Value = 0; hSBar.Scroll += scroll; hSBar.Visibility = Visibility.Hidden; MyButton Next_3 = new MyButton("Next_3", 150, 0, 0, 20, 7, "Далее"); Next_3.HorizontalAlignment = HorizontalAlignment.Right; Next_3.VerticalAlignment = VerticalAlignment.Bottom; Next_3.Background = Brushes.DarkGreen; Next_3.FontSize = 12; Next_3.Foreground = Brushes.LightGray; Next_3.Click += Next_3_Click; MyButton Help_Add_Resistance = new MyButton("Help_Add_Resistance", 70, 18, 0, 0, 7, "Справка"); Help_Add_Resistance.VerticalAlignment = VerticalAlignment.Bottom; Help_Add_Resistance.Background = Brushes.DarkGreen; Help_Add_Resistance.FontSize = 12; Help_Add_Resistance.Foreground = Brushes.LightGray; Help_Add_Resistance.Click += Help_Add_Resistance_Click; Image Resistance_Img_Top = new Image() { Width = 900, Height = 90, HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Top, Name = "Resistance_Img_Top", Margin = new Thickness(0, 0, 0, 0) }; var Resistance_Img_Top_bi = new BitmapImage(); Resistance_Img_Top_bi.BeginInit(); Resistance_Img_Top_bi.UriSource = new Uri(@"C:\EasyPACT\EasyPACT_Graphic\EasyPACT_Resists.jpg"); Resistance_Img_Top_bi.EndInit(); Resistance_Img_Top.Source = Resistance_Img_Top_bi; Image Resistance_Img_Bottom = new Image() { Width = 900, Height = 50, HorizontalAlignment = HorizontalAlignment.Left, VerticalAlignment = VerticalAlignment.Top, Name = "Resistance_Img_Bottom", Margin = new Thickness(0, 366, 0, 0) }; BitmapImage Resistance_Img_Bottom_bi = new BitmapImage(); Resistance_Img_Bottom_bi.BeginInit(); Resistance_Img_Bottom_bi.UriSource = new Uri(@"C:\EasyPACT\EasyPACT_Graphic\EasyPACT_Bottom_First.jpg"); Resistance_Img_Bottom_bi.EndInit(); Resistance_Img_Bottom.Source = Resistance_Img_Bottom_bi; Grid_Add_Resistance.Children.Add(Local_Resistance_In_lbl);//0 Grid_Add_Resistance.Children.Add(Local_Resistance_In);//1 Grid_Add_Resistance.Children.Add(Add_New_Local_Resistance);//2 Grid_Add_Resistance.Children.Add(hSBar);//3 Grid_Add_Resistance.Children.Add(First);//4 Grid_Add_Resistance.Children.Add(Second);//5 Grid_Add_Resistance.Children.Add(Third);//6 Grid_Add_Resistance.Children.Add(Resistance_Img_Bottom);//7 Grid_Add_Resistance.Children.Add(Next_3);//8 Grid_Add_Resistance.Children.Add(Help_Add_Resistance);//9 Grid_Add_Resistance.Children.Add(Resistance_Img_Top);//10 Grid_Add_Resistance.Children.Add(Pipe_Resist_In);//11 this.Content = Grid_Add_Resistance; Uri iconUri = new Uri("C://EasyPACT/EasyPACT_Graphic/EasyPACT_Icon.jpg", UriKind.RelativeOrAbsolute); this.Icon = BitmapFrame.Create(iconUri); this.MinHeight = 450; this.MinWidth = 900; this.MaxHeight = 450; this.MaxWidth = 900; this.Title = "Местные сопротивления - Нагнетательный трубопровод - EasyPACT"; }
static void Main(string[] args) { // Разделитель - точка var inf = new CultureInfo(System.Threading.Thread.CurrentThread.CurrentCulture.Name); System.Threading.Thread.CurrentThread.CurrentCulture = inf; inf.NumberFormat.NumberDecimalSeparator = "."; // Вывод курсовой //var ans = Database.Query("insert into liquid_list(name,formula,molar_mass) values('Бутан','C4H10',58.1)"); //var ans = Database.Query("select * from liquid_list"); /*string ConnectionString = "Data Source=|DataDirectory|\\EasyPACT.sdf"; SqlCeConnection Connect = new SqlCeConnection(ConnectionString); Connect.Open(); var command = Connect.CreateCommand(); command.CommandTimeout = Connect.ConnectionTimeout; command.Connection = Connect; command.CommandType = CommandType.Text; command.CommandText = "select * from liquid_list"; var table = new DataTable(); var adapter = new SqlCeDataAdapter(command); adapter.Fill(table); command.CommandText = "insert into liquid_list ([name],[formula],molar_mass) values('Бутан','C4H10',58.01)"; adapter.UpdateCommand = command; var row = table.NewRow(); row.BeginEdit(); row.SetField("name", "Бутан"); row.SetField("formula", "C4H10"); row.SetField("molar_mass", Convert.ToSingle(58.01)); row.EndEdit(); table.Rows.Add(row); table.AcceptChanges(); adapter.Update(table); table.AcceptChanges(); //table.AcceptChanges(); Connect.Close();*/ //var ht = new HeatExchangerPipe(14); var liq = new LiquidMix("11,12", 0.28, 20, 760); var pip = new PipelineRound(33, 1, 0.069, 0.0025, 52); pip.AddLocalResistance(1); pip.AddLocalResistance(12); pip.AddLocalResistance(65.5); pip.AddLocalResistance(2.1); pip.AddLocalResistance(7); var lip = new LiquidInPipeline(liq, pip); pip = new PipelineRound(33, 1, 0.092, 0.0025, 6); pip.AddLocalResistance("1 1"); for (var i = 0; i < 7; i++) pip.AddLocalResistance("4 90 1"); var lip2 = new LiquidInPipeline(liq, pip); var net = Network.Create(lip2, lip); net.SetProductivity(30000/3600.0); Network.Get().ChooseHeatExchanger(liq.BoilingPoint, liq.BoilingPoint + 20); net.ChooseCentrifugalPump(5.6); Console.WriteLine("Смесь: {0}", liq.Name); Console.WriteLine("\tТемпература: {0} град.", liq.Temperature); Console.WriteLine("\tДавление: {0} мм рт. ст.", liq.Pressure); Console.WriteLine("\tТемпература кипения: {0} град.", liq.BoilingPoint); Console.WriteLine("\tВязкость: {0} Па*с", liq.ViscosityDynamic); Console.WriteLine("\tТеплоемкость: {0} Дж/кг К", liq.ThermalCapacity); Console.WriteLine("\t: {0} Дж/кг К", liq.ThermalCapacity); Console.WriteLine("Трубопровод всасывающий"); Console.WriteLine("\tРазмеры: {0}x{1} м", net.VacuumLine.Pipeline.ExternalDiameter, net.VacuumLine.Pipeline.ExternalDiameter - net.VacuumLine.Pipeline.Diameter); Console.WriteLine("\tДлина: {0} м",net.VacuumLine.Pipeline.Length); Console.WriteLine("\tКоэффициент м.с.: {0}",net.VacuumLine.Pipeline.FactorOfLocalResistance); Console.WriteLine("Трубопровод нагнетательный"); Console.WriteLine("\tРазмеры: {0}x{1} м", net.ForcingLine.Pipeline.ExternalDiameter, net.ForcingLine.Pipeline.ExternalDiameter - net.ForcingLine.Pipeline.Diameter); Console.WriteLine("\tДлина: {0} м", net.ForcingLine.Pipeline.Length); Console.WriteLine("\tКоэффициент м.с.: {0}", net.ForcingLine.Pipeline.FactorOfLocalResistance); Console.WriteLine("Смесь во всасывающем ТП"); Console.WriteLine("\tСкорость: {0} м/с",net.VacuumLine.Speed); Console.WriteLine("\tКритерий Рейнольдса: {0}",net.VacuumLine.Re); Console.WriteLine("\tКоэффициент трения: {0}", net.VacuumLine.FactorOfAFriction); Console.WriteLine("\tПотеря давления на трение: {0} Па",net.VacuumLine.LossOfPressureUponAFriction()); Console.WriteLine("\tПотеря давления на м.с.: {0} Па",net.VacuumLine.LossOfPressureUponLocalResistances()); Console.WriteLine("\tПотеря давления: {0} Па", net.VacuumLine.LossOfPressureUponLocalResistances() + net.VacuumLine.LossOfPressureUponAFriction()); Console.WriteLine("\tПотеря напора: {0} м", (net.VacuumLine.LossOfPressureUponLocalResistances() + net.VacuumLine.LossOfPressureUponAFriction())/net.VacuumLine.Liquid.Density/9.81); Console.WriteLine("Смесь в нагнетательном ТП"); Console.WriteLine("\tСкорость: {0} м/с", net.ForcingLine.Speed); Console.WriteLine("\tКритерий Рейнольдса: {0}", net.ForcingLine.Re); Console.WriteLine("\tКоэффициент трения: {0}", net.ForcingLine.FactorOfAFriction); Console.WriteLine("\tПотеря давления на трение: {0} Па", net.ForcingLine.LossOfPressureUponAFriction()); Console.WriteLine("\tПотеря давления на м.с.: {0} Па", net.ForcingLine.LossOfPressureUponLocalResistances()); Console.WriteLine("\tПотеря давления: {0} Па", net.ForcingLine.LossOfPressureUponLocalResistances() + net.ForcingLine.LossOfPressureUponAFriction()); Console.WriteLine("\tПотеря напора: {0} м", (net.ForcingLine.LossOfPressureUponLocalResistances() + net.ForcingLine.LossOfPressureUponAFriction()) / net.ForcingLine.Liquid.Density / 9.81); Console.WriteLine("Смесь в трубном пространстве ТО"); Console.WriteLine("\tСкорость: {0} м/с", net.HeatExchanger.LiquidInPipeline.Speed); Console.WriteLine("\tКритерий Рейнольдса: {0}", net.HeatExchanger.LiquidInPipeline.Re); Console.WriteLine("\tКоэффициент трения: {0}", net.HeatExchanger.LiquidInPipeline.FactorOfAFriction); Console.WriteLine("\tПотеря давления на трение: {0} Па", net.HeatExchanger.LiquidInPipeline.LossOfPressureUponAFriction()); Console.WriteLine("\tПотеря давления на м.с.: {0} Па", net.HeatExchanger.LiquidInPipeline.LossOfPressureUponLocalResistances()); Console.WriteLine("\tПотеря давления: {0} Па", net.HeatExchanger.LiquidInPipeline.LossOfPressureUponLocalResistances() + net.HeatExchanger.LiquidInPipeline.LossOfPressureUponAFriction()); Console.WriteLine("\tПотеря напора: {0} м", (net.HeatExchanger.LiquidInPipeline.LossOfPressureUponLocalResistances() + net.HeatExchanger.LiquidInPipeline.LossOfPressureUponAFriction()) / net.HeatExchanger.LiquidInPipeline.Liquid.Density / 9.81); Console.WriteLine("Затраты на создание скорости потока: {0} Па", net.ForcingLine.LossOfPressureUponCreationOfSpeed()); Console.WriteLine("Затраты на подъем жидкости: {0} Па", net.ForcingLine.LossOfPressureUponLifting(5.6)); Console.WriteLine("Полный напор: {0} м", (net.VacuumLine.LossOfPressureUponLocalResistances() + net.VacuumLine.LossOfPressureUponAFriction())/ net.VacuumLine.Liquid.Density/9.81 + (net.ForcingLine.LossOfPressureUponLocalResistances() + net.ForcingLine.LossOfPressureUponAFriction())/ net.ForcingLine.Liquid.Density/9.81 + (net.HeatExchanger.LiquidInPipeline.LossOfPressureUponLocalResistances() + net.HeatExchanger.LiquidInPipeline.LossOfPressureUponAFriction())/ net.HeatExchanger.LiquidInPipeline.Liquid.Density/9.81 + net.ForcingLine.LossOfPressureUponLifting(5.6) / 9.81 / net.ForcingLine.Liquid.Density); Console.WriteLine("Для смеси {0} с параметрами t={1} и p={2} подходит ТО {3}, чтобы ее вскипятить.", liq.Id, liq.Temperature, liq.Pressure, net.HeatExchanger.Id); Console.WriteLine("Выбранный насос: {0}.",net.Pump.Brand); var liq2 = new LiquidPure("6", 20, 760); Console.WriteLine("Коэффициент теплопроводности ацетона: {0}",liq2.ThermalConductivity / 1.163); Console.ReadKey(); }
private void Next_2_Click(object sender, RoutedEventArgs e) { bool g = true; double result = 0; var Grid_Add_Pipeline = this.Content as MyGrid; var Material_In = Grid_Add_Pipeline.Children[6] as MyComboBox; var Pipeline_Type = Grid_Add_Pipeline.Children[4] as MyComboBox; var Diameter_In = Grid_Add_Pipeline.Children[12] as MyTextBox; var Wall_Width_In = Grid_Add_Pipeline.Children[16] as MyTextBox; var Length_In = Grid_Add_Pipeline.Children[8] as MyTextBox; var Material_Out = Grid_Add_Pipeline.Children[23] as MyComboBox; var Pipeline_Out_Type = Grid_Add_Pipeline.Children[21] as MyComboBox; var Diameter_Out = Grid_Add_Pipeline.Children[29] as MyTextBox; var Wall_Width_Out = Grid_Add_Pipeline.Children[33] as MyTextBox; var Length_Out = Grid_Add_Pipeline.Children[25] as MyTextBox; var Diameter_In_Measure_Choose = Grid_Add_Pipeline.Children[13] as MyComboBox; var Wall_Width_In_Measure_Choose = Grid_Add_Pipeline.Children[17] as MyComboBox; var Length_In_Measure_Choose = Grid_Add_Pipeline.Children[9] as MyComboBox; var Diameter_Out_Measure_Choose = Grid_Add_Pipeline.Children[30] as MyComboBox; var Wall_Width_Out_Measure_Choose = Grid_Add_Pipeline.Children[34] as MyComboBox; var Length_Out_Measure_Choose = Grid_Add_Pipeline.Children[26] as MyComboBox; if ((double.TryParse(Diameter_In.Text, out result) == false) || (double.TryParse(Wall_Width_In.Text, out result) == false) || (double.TryParse(Length_In.Text, out result) == false) || (double.TryParse(Diameter_Out.Text, out result) == false) || (double.TryParse(Wall_Width_Out.Text, out result) == false) || (double.TryParse(Length_Out.Text, out result) == false)) g = false; if (g == false) { MessageBox.Show("Некоторые данные введены неправильно"); } if (g == true) { //MessageBox.Show("Все отлично!"); double DiaInNew = double.Parse(Diameter_In.Text); if (Diameter_In_Measure_Choose.SelectedIndex == 1) { DiaInNew /= 100; } if (Diameter_In_Measure_Choose.SelectedIndex == 2) { DiaInNew /= 1000; } double WallWidthInNew = double.Parse(Wall_Width_In.Text); if (Wall_Width_In_Measure_Choose.SelectedIndex == 1) { WallWidthInNew /= 100; } if (Wall_Width_In_Measure_Choose.SelectedIndex == 2) { WallWidthInNew /= 1000; } double LengthInNew = double.Parse(Length_In.Text); if (Length_In_Measure_Choose.SelectedIndex == 1) { LengthInNew /= 100; } if (Length_In_Measure_Choose.SelectedIndex == 2) { LengthInNew /= 1000; } double DiaOutNew = double.Parse(Diameter_Out.Text); if (Diameter_Out_Measure_Choose.SelectedIndex == 1) { DiaOutNew /= 100; } if (Diameter_Out_Measure_Choose.SelectedIndex == 2) { DiaOutNew /= 1000; } double WallWidthOutNew = double.Parse(Wall_Width_Out.Text); if (Wall_Width_Out_Measure_Choose.SelectedIndex == 1) { WallWidthOutNew /= 100; } if (Wall_Width_Out_Measure_Choose.SelectedIndex == 2) { WallWidthOutNew /= 1000; } double LengthOutNew = double.Parse(Length_Out.Text); if (Length_Out_Measure_Choose.SelectedIndex == 1) { LengthOutNew /= 100; } if (Length_Out_Measure_Choose.SelectedIndex == 2) { LengthOutNew /= 1000; } var Pip = new PipelineRound(Material_In.SelectedIndex + 1, Pipeline_Type.SelectedIndex + 1, DiaInNew, WallWidthInNew, LengthInNew); var lip_In = new LiquidInPipeline(liq, Pip); var Pip2 = new PipelineRound(Material_Out.SelectedIndex + 1, Pipeline_Out_Type.SelectedIndex + 1, DiaOutNew, WallWidthOutNew, LengthOutNew); var lip_Out = new LiquidInPipeline(liq, Pip2); Network.Create(lip_In, lip_Out); Resistance rst = new Resistance(lip_In, lip_Out, Temperature_Out,NK_dou,VP); rst.Show(); } }
/// <summary> /// Разность давлений в пространстве всасывания и нагнетания, Па. /// </summary> /// <param name="lip">Жидкость во всасывающем трубопроводе.</param> /// <returns>Возвращает разность давлений в пространстве всасывания и нагнетания, Па.</returns> public double LossOfPressureUponLifting(LiquidInPipeline lip) { return this.Liquid.Pressure - lip.Liquid.Pressure; }