MLEPerfilUFlexaoX(Perfil perfil, double tensao) { double t = perfil.PegarEspessura(); double raio = perfil.PegarRaio(); double elemento1 = perfil.PegarElemento1(); double elemento2 = perfil.PegarElemento2(); double elemento3 = perfil.PegarElemento3(); double elemento5 = perfil.PegarElemento5(); // Obtenção das larguras efetivas dos elementos de Perfil U double ycgf = 0, contador = 3; double ycgi = ycg, areaRetirar; while (contador >= 2) { contador = 0; //Obtenção das Larguras efetivas de cada elemento, nas configurações de Perfil U // Enrijecedor if (b1 == 0) { b1ef = 0; } else { b1ef = NBR.MLECompleta("AL", "FLEXAOX", tensao, b1, t, raio, b1, ycgi).ElementAt(0); } if (b1 == b1ef) { ycgf = ycgi; } else { areaRetirar = t * ((b1 - b1ef)); double areaEfetiva = area - t * ((b1 - b1ef)); ycgf = ycgi + ((areaRetirar / areaEfetiva) * (ycg - t * 0.5)); contador += 1; } // Mesa, totalmente comprimida if (b1 == 0) { // Caso não tenha enrijecedor b2ef = NBR.MLECompleta("AL", "COMPRESSAO", tensao, b2, t, raio, b2, ycgf); areaRetirar = t * (b2 - b2ef.ElementAt(0)); areaEfetiva -= areaRetirar; } else { // Caso tenha enrijecedor b2ef = NBR.elementoEnrijecido(b2, elemento1, b1ef, tensao, t); areaRetirar = t * (b2 - b2ef.ElementAt(0) + b1 - b2ef.ElementAt(1)); areaEfetiva -= areaRetirar; } if (areaRetirar == 0) { } else { ycgf += ((areaRetirar / areaEfetiva) * (ycg - t * 0.5)); contador += 1; } //Alma, parcialmente comprimida b3ef = NBR.MLECompleta("AA", "FLEXAOX", tensao, b3, t, raio, b3, ycgf).ElementAt(0); b3ef2 = NBR.MLECompleta("AA", "FLEXAOX", tensao, b3, t, raio, b3, ycgf).ElementAt(1); if (b3 == b3ef + b3ef2) { } else { areaRetirar = t * (b3 - b3ef - b3ef2); areaEfetiva -= areaRetirar; ycgf += Math.Round(((areaRetirar / areaEfetiva) * (ycg - t * 0.5)), 3); contador += 3; } if (contador >= 3) //Caso enrijecedor, mesa e alma não sejam totalmente efetivos; { double b3efi = b3ef; double b3ef2i = b3ef2; b3ef = NBR.MLECompleta("AA", "FLEXAOX", tensao, b3, t, raio, b3, ycgf).ElementAt(0); b3ef2 = NBR.MLECompleta("AA", "FLEXAOX", tensao, b3, t, raio, b3, ycgf).ElementAt(1); areaRetirar = t * (b3 - b3ef - b3ef2); areaEfetiva -= areaRetirar; ycgf += Math.Round(((areaRetirar / areaEfetiva) * (ycg - t * 0.5)), 3); double relacao = (b3efi + b3ef2i) / (b3ef + b3ef2); // Verifica se pode se desprezar a proxima iteração. if (relacao < 0.95) { ycgi = ycgf; continue; } else { break; } } ycgi = ycgf; } List <double> lstEfetivos = new List <double>(); // (t, b1ef, b2ef, b3ef, b4ef, b5ef, b3ef2) lstEfetivos.Add(t); //0 lstEfetivos.Add(b1ef); //1, comprimid0 lstEfetivos.Add(b2ef.ElementAt(0)); //2, comprimida lstEfetivos.Add(b3ef); //3. parcialmente comprimido lstEfetivos.Add(b4); //4, tracionado lstEfetivos.Add(b5); //5, tracionado lstEfetivos.Add(ycgf); //6 lstEfetivos.Add(xg); //7 lstEfetivos.Add(b2ef.ElementAt(1)); //8, ds lstEfetivos.Add(b3ef2); //9 return(lstEfetivos); }
MLEPerfilUFlexaoY(Perfil perfil, double tensao) { double t = perfil.PegarEspessura(); double raio = perfil.PegarRaio(); double elemento1 = perfil.PegarElemento1(); double elemento2 = perfil.PegarElemento2(); double elemento4 = perfil.PegarElemento4(); double elemento3 = perfil.PegarElemento3(); double elemento5 = perfil.PegarElemento5(); double xgi, xgf = 0; double tensaoAt1 = 0, tensaoAt2 = tensao; xgi = xg; // Primeira Situaçao - Alma comprimida //Alma totalmente comprimida = elemento AA while (tensaoAt1 != tensaoAt2) // TODO corrigir loop infinito { tensaoAt1 = tensaoAt2; b3ef = NBR.MLECompleta("AA", "COMPRESSAO", tensaoAt1, b3, t, raio, b3, xg).ElementAt(0); if (b3ef != b3) { double areaRetirar = (b3 - b3ef) * t; xgf = xgi + areaRetirar / area * (xg - 0.5 * t); } else { xgf = xgi; } tensaoAt2 = Math.Round(tensao * xgf / (b2 - xgf), 2); xgi = xgf; if (xgf > elemento2) { xgf = elemento2; b3ef = 0; break; } } //Verificação da Mesa, elemento parcialmente comprimido - AA double xgMesa; if (xgf > 0.5 * elemento2) { xgMesa = xgf; } else { xgMesa = elemento2 - xgf; } b2ef = NBR.MLECompleta("AA", "FLEXAOY", tensaoAt2, b2, t, raio, 0, xgMesa); List <double> lstEfetivos = new List <double>(); // (t, b1ef, b2ef, b3ef, b4ef, b5ef, b3ef2) lstEfetivos.Add(t); //0 lstEfetivos.Add(b1); //1 lstEfetivos.Add(b2ef.ElementAt(0)); //2 lstEfetivos.Add(b3ef); //3 lstEfetivos.Add(b2ef.ElementAt(0)); //4, b4ef lstEfetivos.Add(b5); //5 lstEfetivos.Add(ycg); //6 lstEfetivos.Add(xgf); //7 lstEfetivos.Add(b2ef.ElementAt(1)); //8, ds lstEfetivos.Add(b3ef2); //9 lstEfetivos.Add(b2ef.ElementAt(1)); //10, bef2 return(lstEfetivos); }
MLEPerfilUCompressao(Perfil perfil, double tensao) { double t = perfil.PegarEspessura(); double raio = perfil.PegarRaio(); double elemento1 = perfil.PegarElemento1(); double elemento2 = perfil.PegarElemento2(); double elemento3 = perfil.PegarElemento3(); double elemento5 = perfil.PegarElemento5(); string solicitacao = "COMPRESSAO"; //Obtenção das Larguras efetivas de cada elemento, nas configurações de Perfil U // Elementos totalmente comprimidos if (b1 <= 0) { b1ef = 0; } else { b1ef = NBR.MLECompleta("AL", solicitacao, tensao, b1, t, raio, 0, ycg).ElementAt(0); } if (b1 <= 0) { b2ef = NBR.MLECompleta("AL", solicitacao, tensao, b2, t, raio, 0, ycg); } else { b2ef = NBR.elementoEnrijecido(b2, elemento1, b1ef, tensao, t); } b3ef = NBR.MLECompleta("AA", solicitacao, tensao, b3, t, raio, 0, ycg).ElementAt(0); b3ef2 = NBR.MLECompleta("AA", solicitacao, tensao, b3, t, raio, 0, ycg).ElementAt(1); if (b5 <= 0) { b5ef = 0; } else { b5ef = NBR.MLECompleta("AL", solicitacao, tensao, b5, t, raio, 0, ycg).ElementAt(0); } if (b5 <= 0) { b4ef = NBR.MLECompleta("AL", solicitacao, tensao, b4, t, raio, 0, ycg); } else { b4ef = NBR.elementoEnrijecido(b4, elemento5, b5ef, tensao, t); } List <double> listaEfetivos = new List <double>(); // (t, b1ef, b2ef, b3ef, b4ef, b5ef, b3ef2) listaEfetivos.Add(t); //0 listaEfetivos.Add(b1ef); //1 listaEfetivos.Add(b2ef.ElementAt(0)); //2 listaEfetivos.Add(b3ef); //3 listaEfetivos.Add(b4ef.ElementAt(0)); //4 listaEfetivos.Add(b5ef); //5 listaEfetivos.Add(ycg); // 6, ycgEfetivo listaEfetivos.Add(xg); //7 listaEfetivos.Add(b2ef.ElementAt(1)); //8, ds listaEfetivos.Add(0); //9, b3ef2 // listaEfetivos.Add(Form1.xg); return(listaEfetivos); //return new Tuple<double, double, double, double, double, double> // (espessura, b1ef, b2ef, b3ef, b4ef, b5ef, ycg, xg); }