private (string densidade, string viscosidade) FluidoParaDenVis(string nome) { MaterialFluidoOPI material = InicializadorObjetos.MaterialFluidoOPI(nome); double dens = Math.Round(material.Densidade / 1000.0, 2); double vis = Math.Round(material.Viscosidade * 1000, 2); return(dens.ToString(), vis.ToString()); }
/// <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; } }
private void cmbTrocadorMaterial_SelectedIndexChanged_1(object sender, EventArgs e) { MaterialTubulacao materialTubulacao = InicializadorObjetos.MaterialTubulacao(cmbTrocadorMaterial.Text); txbTrocadorRugosidade.Text = $"{Math.Round(materialTubulacao.Rugosidade * 1e2),1} cm"; }
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; }
/// <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; } }