private void btnCalcular_Click(object sender, EventArgs e)
        {
            txbErro.Text = "";

            // Fluido Anular
            if (cmbFluidoAnular.Text == "" || cmbFluidoInterno.Text == "" || cmbTrocadorMaterial.Text == "")
            {
                txbErro.Text = "Inputs incorretos";
                return;
            }

            string fluidoAnularNome = cmbFluidoAnular.Text;
            double fluidoAnularAPI  = Convert.ToDouble(nudFluidoAnularAPI.Value);
            double fluidoAnularTemp = Convert.ToDouble(nudFluidoAnularTempEnt.Value) + 273.15;   // T em K
            double tempAnularSai    = Convert.ToDouble(nudFluidoAnularTempSaida.Value) + 273.15; // T em L

            if (fluidoAnularNome == "Óleo (ºAPI)")
            {
                materialFluidoAnular = new MaterialOleoAPI(fluidoAnularAPI, fluidoAnularTemp);
            }
            else
            {
                materialFluidoAnular = InicializadorObjetos.MaterialFluidoOPII(fluidoAnularNome, fluidoAnularTemp);
            }

            fluidoAnularEnt = new FluidoOPII(materialFluidoAnular, fluidoAnularTemp);

            // Fluido Interno
            string fluidoInternoNome = cmbFluidoInterno.Text;
            double fluidoInternoAPI  = Convert.ToDouble(nudFluidoInternoAPI.Value);
            double fluidoInternoTemp = Convert.ToDouble(nudFluidoInternoTempEnt.Value) + 273.15;   // T em K
            double tempInternoSai    = Convert.ToDouble(nudFluidoInternoTempSaida.Value) + 273.15; // T em K

            if (fluidoInternoNome == "Óleo (ºAPI)")
            {
                materialFluidoInterno = new MaterialOleoAPI(fluidoInternoAPI, fluidoInternoTemp);
            }
            else
            {
                materialFluidoInterno = InicializadorObjetos.MaterialFluidoOPII(fluidoInternoNome, fluidoInternoTemp);
            }

            fluidoInternoEnt = new FluidoOPII(materialFluidoInterno, fluidoInternoTemp);

            // Tubulações
            string            tubulacaoMaterialNome = cmbTrocadorMaterial.Text;
            double            tubulacaoComprimento  = Convert.ToDouble(nudTrocadorComprimento.Value);
            MaterialTubulacao materialTubulacao     = InicializadorObjetos.MaterialTubulacao(tubulacaoMaterialNome);
            const double      espessura             = 0; // Considerando a tubulação sem espeçura.

            // Tubulação Interna
            double tubInternaDiam = Convert.ToDouble(nudTrocadorDiametroInterno.Value) * 1e-2; // Diametro em m

            tubulacaoInterna = new TubulacaoDuploTubo(tubInternaDiam, espessura, tubulacaoComprimento, materialTubulacao, EquipamentoOPII.TipoTubo.interno);

            // Tubulação Anular
            double tubAnularDiam = Convert.ToDouble(nudTrocadorDiametroAnular.Value) * 1e-2; // Diametro em m

            tubulacaoAnular = new TubulacaoDuploTubo(tubAnularDiam, espessura, tubulacaoComprimento, materialTubulacao, EquipamentoOPII.TipoTubo.anular, tubInternaDiam);

            // Não executa se a diferença de temperatura entre os fluido não for miníma.
            if (Math.Abs(fluidoAnularTemp - fluidoInternoTemp) < 2)
            {
                txbErro.Text = "Inputs incorretos";
                return;
            }

            tuboQente = (fluidoAnularTemp > fluidoInternoTemp) ? EquipamentoOPII.TipoTubo.anular : EquipamentoOPII.TipoTubo.interno;

            if (tuboQente == EquipamentoOPII.TipoTubo.anular)
            {
                if (fluidoAnularEnt.Temperatura < 40 + 273.15 || fluidoInternoEnt.Temperatura > 40 + 273.15) // Fluido Quente pouco quente ou frio pouco frio
                {
                    txbErro.Text = "Verifique as temp";
                    return;
                }
            }
            else
            {
                if (fluidoAnularEnt.Temperatura > 40 + 273.15 || fluidoInternoEnt.Temperatura < 40 + 273.15) // Fluido Quente pouco quente ou frio pouco frio
                {
                    txbErro.Text = "Verifique as temp";
                    return;
                }
            }

            // Trocador
            double vazaoQente       = Convert.ToDouble(nudVazaoQuente.Value) / 3600.0; // Vazao em m^3/s
            double fatorIncrustacao = Convert.ToDouble(nudTrocadorFatorEncrustacao.Value);

            trocador = new TrocadorDuploTubo(fluidoAnularEnt, tempAnularSai, fluidoInternoEnt, tempInternoSai, vazaoQente, tubulacaoAnular, tubulacaoInterna, fatorIncrustacao);

            trocador.CalculaTroca();
            fluidoAnularSai  = trocador.FluidoAnularSai;
            fluidoInternoSai = trocador.FluidoInternoSai;

            if (trocador.Anular == EquipamentoOPII.FluidoTroca.quente)
            {
                txbFigFluidoAnular.Lines = new string[] { "Fluido Anular: ", $"[{trocador.Anular}]", $"{trocador.FluidoAnularEnt.Material.Componente}",
                                                          $"T ent = {trocador.FluidoAnularEnt.Temperatura - 273.15} ºC", $"Vazão = {trocador.VazaoQuente * 3600} m^3/h" };
                txbFigFluidoInterno.Lines = new string[] { "Fluido Interno: ", $"[{trocador.Interno}]", $"{trocador.FluidoInternoEnt.Material.Componente}",
                                                           $"T ent = {trocador.FluidoInternoEnt.Temperatura - 273.15} ºC", $"Vazão = {Math.Round(trocador.VazaoFrio * 3600,1)} m^3/h" };
            }
            else
            {
                txbFigFluidoAnular.Lines = new string[] { "Fluido Anular: ", $"[{trocador.Anular}]", $"{trocador.FluidoAnularEnt.Material.Componente}",
                                                          $"T ent = {trocador.FluidoAnularEnt.Temperatura - 273.15} ºC", $"Vazão = {Math.Round(trocador.VazaoFrio * 3600,1)} m^3/h" };
                txbFigFluidoInterno.Lines = new string[] { "Fluido Interno: ", $"[{trocador.Interno}]", $"{trocador.FluidoInternoEnt.Material.Componente}",
                                                           $"T ent = {trocador.FluidoInternoEnt.Temperatura - 273.15} ºC", $"Vazão = {trocador.VazaoQuente * 3600} m^3/h" };
            }

            txbFigFluidoAnularTxt  = txbFigFluidoAnular.Lines;
            txbFigFluidoInternoTxt = txbFigFluidoInterno.Lines;

            txbFigFluidoAnular.Lines  = new string[] { txbFigFluidoAnularTxt[0], txbFigFluidoAnularTxt[1], txbFigFluidoAnularTxt[2], txbFigFluidoAnularTxt[3], txbFigFluidoAnularTxt[4] };
            txbFigFluidoInterno.Lines = new string[] { txbFigFluidoInternoTxt[0], txbFigFluidoInternoTxt[1], txbFigFluidoInternoTxt[2], txbFigFluidoInternoTxt[3], txbFigFluidoInternoTxt[4] };

            // Ativa os elementos da UI.
            txbFigFluidoAnular.Visible  = true;
            txbFigFluidoInterno.Visible = true;
            chartPerdaCarga.Visible     = true;
            chartComprimento.Visible    = true;
            gubResultados.Visible       = true;
            gubVarFluidoInterno.Visible = true;
            gubVarFluidoAnular.Visible  = true;
            gubVarTrocador.Visible      = true;
            tabControl.SelectedIndex    = 1;

            if (trocador.Anular == EquipamentoOPII.FluidoTroca.quente)
            {
                nudQuenteSaiMin = Convert.ToDecimal(trocador.FluidoInternoEnt.Temperatura + 2 - 273.15);
                nudFrioSaiMax   = Convert.ToDecimal(trocador.FluidoAnularEnt.Temperatura - 2 - 273.15);

                nudVarFluidoAnularTemp.Minimum    = nudQuenteEntMin;
                nudVarFluidoAnularTemp.Maximum    = nudQuenteEntMax;
                nudVarFluidoAnularTempSai.Minimum = nudQuenteSaiMin;
                nudVarFluidoAnularTempSai.Maximum = nudQuenteSaiMax;

                nudVarFluidoInternoTemp.Minimum    = nudFrioEntMin;
                nudVarFluidoInternoTemp.Maximum    = nudFrioEntMax;
                nudVarFluidoInternoTempSai.Minimum = nudFrioSaiMin;
                nudVarFluidoInternoTempSai.Maximum = nudFrioSaiMax;
            }
            else
            {
                nudQuenteSaiMin = Convert.ToDecimal(trocador.FluidoAnularEnt.Temperatura + 2 - 273.15);
                nudFrioSaiMax   = Convert.ToDecimal(trocador.FluidoInternoEnt.Temperatura - 2 - 273.15);

                nudVarFluidoAnularTemp.Minimum    = nudFrioEntMin;
                nudVarFluidoAnularTemp.Maximum    = nudFrioEntMax;
                nudVarFluidoAnularTempSai.Minimum = nudFrioSaiMin;
                nudVarFluidoAnularTempSai.Maximum = nudFrioSaiMax;

                nudVarFluidoInternoTemp.Minimum    = nudQuenteEntMin;
                nudVarFluidoInternoTemp.Maximum    = nudQuenteEntMax;
                nudVarFluidoInternoTempSai.Minimum = nudQuenteSaiMin;
                nudVarFluidoInternoTempSai.Maximum = nudQuenteSaiMax;
            }

            chartPerdaCarga.ChartAreas[0].AxisX.Minimum  = Convert.ToDouble(nudQuenteSaiMin);
            chartComprimento.ChartAreas[0].AxisX.Minimum = Convert.ToDouble(nudQuenteSaiMin);

            // Coloca os valores nas variaveis dinamicas
            nudVarFluidoInternoTemp.Value    = Convert.ToDecimal(fluidoInternoTemp - 273.15);
            nudVarFluidoInternoTempSai.Value = Convert.ToDecimal(tempInternoSai - 273.15);

            nudVarFluidoAnularTemp.Value    = Convert.ToDecimal(fluidoAnularTemp - 273.15);
            nudVarFluidoAnularTempSai.Value = Convert.ToDecimal(tempAnularSai - 273.15);

            nudVarTrocadorVazaoQuente.Value  = Convert.ToDecimal(vazaoQente * 3600);
            nudTrocadorComprimento.Value     = Convert.ToDecimal(tubulacaoComprimento);
            nudVarTrocadorDiamAnular.Value   = Convert.ToDecimal(tubAnularDiam * 100);
            nudTrocadorDiametroAnular.Value  = Convert.ToDecimal(tubAnularDiam * 100);
            nudVarTrocadorDiamInterno.Value  = Convert.ToDecimal(tubInternaDiam * 100);
            nudTrocadorDiametroInterno.Value = Convert.ToDecimal(tubInternaDiam * 100);

            AtualizaForms();

            atualizaParametros = true;
        }
Пример #2
0
 void CalculaTudo()
 {
     oleoQuente   = new MaterialOleoAPI(Convert.ToDouble(numericUpDown1.Value), 10.0);
     fluidoQuente = new FluidoOPII(oleoQuente, 10.0);
 }