Exemplo n.º 1
0
        public void CalculaTudo(object sender, EventArgs e)
        {
            double vazao      = Convert.ToDouble(numericUpDown1.Value);
            double pressaoAtm = Convert.ToDouble(numericUpDown11.Value);

            FluidoIdealOPIII agua = new FluidoIdealOPIII(new MaterialFluidoOPIII("NA", Convert.ToDouble(numericUpDown9.Value), Convert.ToDouble(numericUpDown10.Value), new double[3] {
                4.6543, 1435.264, -64.848
            }), Convert.ToDouble(numericUpDown7.Value) + 273.15);

            Tubulacao tubulacaoSuccao = new Tubulacao(Convert.ToDouble(numericUpDown4.Value) / 100,
                                                      Convert.ToDouble(numericUpDown6.Value), new MaterialTubulacao(Convert.ToDouble(numericUpDown3.Value) / 1000),
                                                      Convert.ToDouble(numericUpDown8.Value), "haaland");

            Tubulacao tubulacaoRecalque = new Tubulacao(Convert.ToDouble(numericUpDown4.Value) / 100,
                                                        Convert.ToDouble(numericUpDown5.Value), new MaterialTubulacao(Convert.ToDouble(numericUpDown3.Value) / 1000),
                                                        Convert.ToDouble(numericUpDown2.Value) - Convert.ToDouble(numericUpDown8.Value), "haaland");

            label24.Text = Convert.ToString(tubulacaoSuccao.Comprimento + tubulacaoRecalque.Comprimento);

            Tubulacao tubulacaoCompleta = new Tubulacao(Convert.ToDouble(numericUpDown4.Value) / 100,
                                                        Convert.ToDouble(label24.Text), new MaterialTubulacao(Convert.ToDouble(numericUpDown3.Value) / 1000),
                                                        Convert.ToDouble(numericUpDown2.Value), "haaland");

            BombaCompleta bombaCompleta = new BombaCompleta(new double[] { 0.00, 0.00, 0.00, 0.00 }, agua, tubulacaoSuccao,
                                                            tubulacaoRecalque, Convert.ToDouble(numericUpDown11.Value), Convert.ToDouble(numericUpDown13.Value), Convert.ToDouble(numericUpDown12.Value));

            /// Item a)
            label38.Text = Convert.ToString(Math.Round(tubulacaoCompleta.CalculaReynolds(agua.Material, vazao)));
            label39.Text = Convert.ToString(Math.Round(100000 * tubulacaoCompleta.CalculaFAtrito(agua.Material, vazao)) / 100000);
            label44.Text = Convert.ToString(Math.Round(10000 * tubulacaoCompleta.CalculaPerdaCarga(agua.Material, vazao)) / 10000);
            label48.Text = Convert.ToString(Math.Round(10000 * tubulacaoCompleta.CalculaPerdaCarga(agua.Material, vazao)) / 10000 + tubulacaoCompleta.Elevacao);

            /// Item b)
            label50.Text = Convert.ToString(Math.Round(100 * agua.ConvertePressaoEmM(pressaoAtm)) / 100);
            label51.Text = Convert.ToString(numericUpDown8.Value);
            label55.Text = Convert.ToString(Math.Round(1000 * agua.ConvertePressaoEmM(agua.PresaoVapor), 2) / 1000);
            label53.Text = Convert.ToString(Math.Round(100 * tubulacaoSuccao.CalculaPerdaCarga(agua.Material, vazao)) / 100);
            label57.Text = Convert.ToString(Math.Round(100 * bombaCompleta.NPSHDisponivel()) / 100);
            label60.Text = Convert.ToString(bombaCompleta.NPSHRequerido);
            if (Convert.ToDouble(label57.Text) > Convert.ToDouble(label60.Text))
            {
                label59.Text = ">";
                label61.Text = "Não pode haver cavitação!";
            }
            else
            {
                label61.Text = "Pode haver cavitação!";
                if (Convert.ToDouble(label57.Text) == Convert.ToDouble(label60.Text))
                {
                    label59.Text = "=";
                }
                else
                {
                    label59.Text = "<";
                }
            }

            /// Item c)
            bombaCompleta.CalculaAlturaManoRequerida(vazao);
            double potenciaW = bombaCompleta.CalculaPotencia(vazao);
            double tempoS    = Convert.ToDouble(numericUpDown14.Value) / vazao;

            label63.Text = Convert.ToString(Math.Round(potenciaW));
            label65.Text = Convert.ToString(Math.Round(potenciaW / 1000));
            label68.Text = Convert.ToString(Math.Round(tempoS));
            label70.Text = Convert.ToString(Math.Round(10000 * tempoS / 3600) / 10000);
            label73.Text = Convert.ToString(Math.Round(100 * potenciaW * tempoS / 3600000) / 100);
            label76.Text = Convert.ToString(Math.Round(1000 * potenciaW * tempoS *
                                                       Convert.ToDouble(numericUpDown15.Value) / 3600000) / 1000);
        }
Exemplo n.º 2
0
        /// <summary>
        /// Botão para calculo inicial da coluna.
        /// </summary>
        private void btnInputInicial_Click(object sender, EventArgs e)
        {
            cmbFluidoLKTxt        = cmbFluidoLK.Text;
            cmbFluidoHKTxt        = cmbFluidoHK.Text;
            cmbCondicaoEntradaTxt = "Líquido saturado";
            nudRazaoQDbl          = 0.0;
            nudFracaoEntradaLKDbl = 0.5;
            nudRefluxoDbl         = 2.0;
            nudXdDbl          = 0.9;
            nudXbDbl          = 0.1;
            nudTemperaturaDbl = 50 + 273.15; // Temperatura tem que ser usada em Kelvin
            nudPressaoDbl     = 1E5;

            if ((cmbFluidoLKTxt != "" && cmbFluidoHKTxt != "") && cmbFluidoLKTxt != cmbFluidoHKTxt)
            {
                //EventosInputs(false);

                fluidoLK = new FluidoIdealOPIII(InicializadorObjetos.MaterialFluidoOPIII(cmbFluidoLKTxt), nudTemperaturaDbl);
                fluidoHK = new FluidoIdealOPIII(InicializadorObjetos.MaterialFluidoOPIII(cmbFluidoHKTxt), nudTemperaturaDbl);
                mistura  = new MisturaBinaria(fluidoLK, fluidoHK, nudFracaoEntradaLKDbl, nudTemperaturaDbl, nudPressaoDbl);

                if (mistura.Alpha > 1) // Condição para que a coluna fique em função do LK
                {
                    ColunaMcCabeThiele = new ColunaMcCabeThiele(mistura, nudXdDbl, nudXbDbl, nudFracaoEntradaLKDbl, nudRefluxoDbl, nudRazaoQDbl);

                    AtualizaEquilibrio();
                    AtualizaLinhasOP();
                    AtualizaLinhaQ();
                    AtualizaPratos();

                    chart.Series["Equilibrio"].LegendText = $"ELV {cmbFluidoLKTxt}, {cmbFluidoHKTxt}";
                    chart.Series["LinhaOP"].LegendText    = "Linha de Operação";
                    chart.Series["PontoQ"].LegendText     = "Linha Q";
                    chart.Series["Linha45"].Points.DataBindXY(new double[] { 0, 1 }, new double[] { 0, 1 });
                    txbConvergencia.Text      = "OK";
                    txbConvergencia.ForeColor = System.Drawing.Color.Green;

                    cmbCondicaoEntradaDin.Text  = cmbCondicaoEntradaTxt.ToLower();
                    nudFracaoEntradaLKDin.Value = Convert.ToDecimal(nudFracaoEntradaLKDbl);
                    nudRefluxoDin.Value         = Convert.ToDecimal(nudRefluxoDbl);
                    nudXd.Value         = Convert.ToDecimal(nudXdDbl);
                    nudXb.Value         = Convert.ToDecimal(nudXbDbl);
                    nudPressaoDin.Value = Convert.ToDecimal(nudPressaoDbl / 1e5);

                    VerificaConvergencia();

                    txbConvergencia.Visible = true;
                    labMudanca.Visible      = true;
                    gubVariaveis.Visible    = true;
                    gubResultados.Visible   = true;
                    gubGrafico.Visible      = true;
                    labResultados.Visible   = true;
                }
                else
                {
                    txbConvergencia.Visible   = true;
                    txbConvergencia.Text      = "Fluido HK é mais volátil";
                    txbConvergencia.ForeColor = System.Drawing.Color.Maroon;
                    labMudanca.Visible        = false;
                    gubGrafico.Visible        = false;
                    gubVariaveis.Visible      = false;
                    gubResultados.Visible     = false;
                    labResultados.Visible     = false;
                }
            }
            else
            {
                txbConvergencia.Visible   = true;
                txbConvergencia.Text      = "Fluidos idêndicos!";
                txbConvergencia.ForeColor = System.Drawing.Color.Maroon;
                labMudanca.Visible        = false;
                gubGrafico.Visible        = false;
                gubVariaveis.Visible      = false;
                gubResultados.Visible     = false;
                labResultados.Visible     = false;
            }
        }
        /// <summary>
        /// Botão para cálculo inicial do bombeamento
        /// </summary>
        private void btnCalcular_Click(object sender, EventArgs e)
        {
            if (true)
            {
                // -> Fluido
                cmbFluidoNomeTxt        = cmbFluidoNome.Text;
                nudFluidoTemperaturaDbl = Convert.ToDouble(nudFluidoTemperatura.Value) + 273.15; // Temperatura em K
                nudFluidoPressaoDbl     = Convert.ToDouble(nudFluidoPressao.Value) * 1e5;        // Pressão em Pa
                fluido = new FluidoIdealOPIII(InicializadorObjetos.MaterialFluidoOPIII(cmbFluidoNomeTxt), nudFluidoTemperaturaDbl);

                // -> Tubulação de Sucção
                nudTubSucRugosidadeDbl  = Convert.ToDouble(nudTubSucRugosidade.Value) * 1e-3;
                nudTubSucDiametroIntDbl = Convert.ToDouble(nudTubSucDiametroInt.Value) * 1e-2;
                nudTubSucCompSingDbl    = Convert.ToDouble(nudTubSucCompSing.Value);
                singEqvSuc = new Singularidade(nudTubSucCompSingDbl, "Equivalente");
                nudTubSucComprimentoDbl = Convert.ToDouble(nudTubSucComprimento.Value);
                nudTubSucElevacaoDbl    = Convert.ToDouble(nudTubSucElevacao.Value);
                tubulacaoSuccao         = new Tubulacao(nudTubSucDiametroIntDbl, nudTubSucComprimentoDbl, new MaterialTubulacao(nudTubSucRugosidadeDbl), nudTubSucElevacaoDbl, "haaland");
                tubulacaoSuccao.AdicionaSingularidade(singEqvSuc);
                // Valvula da sucção
                valvulaSuc = new Valvula(2, 1000);
                tubulacaoSuccao.AdicionaSingularidade(valvulaSuc);

                // -> Tubulação de Descarga
                nudTubDesRugosidadeDbl  = Convert.ToDouble(nudTubDesRugosidade.Value) * 1e-3;
                nudTubDesDiametroIntDbl = Convert.ToDouble(nudTubDesDiametroInt.Value) * 1e-2;
                nudTubDesCompSingDbl    = Convert.ToDouble(nudTubDesCompSing.Value);
                singEqvDes = new Singularidade(nudTubDesCompSingDbl, "Equivalente");
                nudTubDesComprimentoDbl = Convert.ToDouble(nudTubDesComprimento.Value);
                nudTubDesElevacaoDbl    = Convert.ToDouble(nudTubDesElevacao.Value);
                tubulacaoDescarga       = new Tubulacao(nudTubDesDiametroIntDbl, nudTubDesComprimentoDbl, new MaterialTubulacao(nudTubDesRugosidadeDbl), nudTubDesElevacaoDbl, "haaland");
                tubulacaoDescarga.AdicionaSingularidade(singEqvDes);
                // Valvula da descarga
                valvulaDes = new Valvula(2, 3000);
                tubulacaoDescarga.AdicionaSingularidade(valvulaDes);

                // Bomba
                bomba = new BombaCompleta(new double[3] {
                    0, 0, 0
                }, fluido, tubulacaoSuccao, tubulacaoDescarga, nudFluidoPressaoDbl, 2);

                nudVazaoDesejada.Value        = Convert.ToDecimal(0.5);
                nudAberturaValvulaSuc.Value   = Convert.ToDecimal(1.0);
                nudAberturaValvulaDes.Value   = Convert.ToDecimal(1.0);
                nudFluidoTemperaturaDin.Value = Convert.ToDecimal(nudFluidoTemperaturaDbl - 273.15);
                nudFluidoPressaoDin.Value     = Convert.ToDecimal(nudFluidoPressaoDbl * 1e-5);

                AtualizaHBomba();
                AtualizaNPSHDisp();

                gubFluidoDin.Visible    = true;
                gubSucDin.Visible       = true;
                gubDesDin.Visible       = true;
                chartPerdaCarga.Visible = true;
                chartNPSHDisp.Visible   = true;
                gubResultados.Visible   = true;
                labResultados.Visible   = true;

                tabControl.SelectedIndex = 1;
            }
        }