Exemple #1
0
        /// <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();
        }