/// <summary> /// Кнопка добавить /// </summary> private void Button_Click_OK(Object sender, RoutedEventArgs e) { ProgressiveCavityPump newPump = new ProgressiveCavityPump(); newPump.RateCoefficients = new List <RateCoefficient>(); newPump.PowerCoefficients = new List <PowerCoefficient>(); newPump.TorqueCoefficients = new List <TorqueCoefficient>(); try { for (int i = 1; i < RateCoefficients.Children.Count; i++) { TextBox box = (TextBox)(RateCoefficients.Children[i] as StackPanel).Children[1]; int order = i - 1; newPump.RateCoefficients.Add(new RateCoefficient(order, double.Parse(box.Text))); } for (int i = 1; i < PowerCoefficients.Children.Count; i++) { TextBox box = (TextBox)(PowerCoefficients.Children[i] as StackPanel).Children[1]; int order = i - 1; newPump.PowerCoefficients.Add(new PowerCoefficient(order, double.Parse(box.Text))); } for (int i = 1; i < TorqueCoefficients.Children.Count; i++) { TextBox box = (TextBox)(TorqueCoefficients.Children[i] as StackPanel).Children[1]; int order = i - 1; newPump.TorqueCoefficients.Add(new TorqueCoefficient(order, double.Parse(box.Text))); } newPump.Name = ((TextBox)NamePCP.Children[1]).Text; newPump.Diameter = Convert.ToDouble(((TextBox)Diameter.Children[1]).Text); newPump.NominalRate = Convert.ToDouble(((TextBox)NominalRate.Children[1]).Text); newPump.BaseSpeed = Convert.ToDouble(((TextBox)NominalSpeed.Children[1]).Text); } catch { MessageBox.Show("Ошибка Неправильно задано одно из полей."); return; } this.Hide(); //MainWindow.Button_Click_UpdateGrafESN(null, null); using (PersistanceContext db = new PersistanceContext()) { db.PcpPumps.Add(newPump); db.SaveChanges(); //Обновляем каталог MainWindow.CatalogPcp = db.PcpPumps.Include("PowerCoefficients").Include("RateCoefficients").Include("TorqueCoefficients").ToList(); //Отображаем таблицу каталога ЭЦН MainWindow.ShowPCPDataBase(); } MainWindow.Button_Click_UpdateGrafPCP(null, null); }
/// <summary> /// Моделирование работы скважины с идеальным ВШН и подбор реальных ВШН соответствующего идеальному. Возвращает список подобранных насосов. /// </summary> /// <param name="eps">Точность с которой будет расчитываться забойное давление (безразмерная)</param> /// <param name="dynamicH">Динамический уровень пластовой жидкости, отсчитывается от входа в насос (м)</param> /// <param name="CatalogPcp">Каталог ВШН</param> /// <param name="bottomholePressure">Забойное давление (МПа)</param> /// <param name="gasRate">Дебит газа (тыс.м3/сут)</param> /// <param name="waterRate">Дебит жидкости (м3/сут)</param> /// <param name="nglRate">Дебит газового конденсата (т/сут)</param> /// <returns></returns> public List <SettingForPCP> ModelingPCP(double eps, double dynamicH, List <ProgressiveCavityPump> CatalogPcp, out double bottomholePressure, out double gasRate, out double waterRate, out double nglRate) { gasRate = ModelingPump(eps, dynamicH, out bottomholePressure, out waterRate, out nglRate); List <SettingForPCP> chosenPumps = new List <SettingForPCP>(); double head = Pump.CalcNeededHeadHeight(bottomholePressure, WellheadPressure, Tubing.Depth, WaterFluid); chosenPumps = ProgressiveCavityPump.ChosePCP(Tubing.TubingDiameter, waterRate, head, CatalogPcp); return(chosenPumps); }
public UpdatePCP(MainWindow mainWindow, ProgressiveCavityPump chosenPump) { InitializeComponent(); MainWindow = mainWindow; Top = MainWindow.Top + 50; Left = MainWindow.Left + 50; ChosenPump = new ProgressiveCavityPump(chosenPump); ((TextBox)NamePCP.Children[1]).Text = chosenPump.Name; ((TextBox)Diameter.Children[1]).Text = chosenPump.Diameter.ToString(); ((TextBox)NominalRate.Children[1]).Text = chosenPump.NominalRate.ToString(); ((TextBox)BaseSpeed.Children[1]).Text = chosenPump.BaseSpeed.ToString(); SetRateCoefficients(); SetPowerCoefficients(); SetTorqueCoefficients(); }