Exemplo n.º 1
0
        protected void AtualizaGrafico()
        {
            double densidade   = Convert.ToDouble(numericDensidade.Value) * 1000;
            double viscosidade = Convert.ToDouble(numericViscosidade.Value) / 1000;

            double diametro    = Convert.ToDouble(numericDiametro.Value) / 100;
            double comprimento = Convert.ToDouble(numericComprimento.Value);
            double rugosidade  = Convert.ToDouble(numericRugosidade.Value) / 1000000;
            double elevacao    = Convert.ToDouble(numericElevacao.Value);

            double AeqBomba = (trackBarAeq.Value / 500.0);
            double BeqBomba = (trackBarBeq.Value / 500.0) * (-2096928);
            double CeqBomba = (trackBarCeq.Value / 500.0) * 2649.96;
            double DeqBomba = (trackBarDeq.Value / 500.0) * 26;

            // Cria o fluido agua usando o constructor
            FluidoOPI agua = new FluidoOPI(densidade, viscosidade);

            // Cria a tubulação tubo1 usando o constructor
            Tubulacao tubo1 = new Tubulacao(diametro, comprimento, new MaterialTubulacao(rugosidade), elevacao);

            // Cria as singularidades usando o constructor
            Singularidade s1 = new Singularidade(1, "Cotovelo");
            Singularidade s2 = new Singularidade(2, "Cotovelo");

            tubo1.AdicionaSingularidade(s1);
            tubo1.AdicionaSingularidade(s2);

            Bomba bomba1 = new Bomba(new double[] { AeqBomba, BeqBomba, CeqBomba, DeqBomba }, agua, tubo1);

            // Atualiza os valores da bomba
            bomba1.CalculaVazao();

            List <double> plotX;
            List <double> plotYBomba;
            List <double> plotYtubo;

            // Prepara os pontos para plotagem
            (plotX, plotYBomba, plotYtubo) = bomba1.PreparaPlot(40);

            // Ponto de operacao para plotagem
            double[] pontoOperacaoX = new double[1];
            double[] pontoOperacaoY = new double[1];

            // Definicao do ponto de operacao
            pontoOperacaoX[0] = bomba1.Vazao * 3600; // m^3/h
            pontoOperacaoY[0] = bomba1.CalcAlturaBomba(bomba1.Vazao);

            // Plotagem da curva da bomba e da tubulacao
            chart2.Series[0].Points.DataBindXY(plotX, plotYBomba);
            chart2.Series[1].Points.DataBindXY(plotX, plotYtubo);

            // Plotagem do ponto de operacao
            chart2.Series[2].Points.DataBindXY(pontoOperacaoX, pontoOperacaoY);
            chart2.Series[2].Label = "Ponto de operacao (" + Math.Round(pontoOperacaoX[0], 1) + " [m³/h] ; "
                                     + Math.Round(pontoOperacaoY[0], 1) + " [m])";

            // Apresentação do ponto de operação no campo Saídas
            labelVazao.Text      = Math.Round(pontoOperacaoX[0], 1).ToString();
            labelPerdaCarga.Text = Math.Round(pontoOperacaoY[0], 1).ToString();
        }