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);
        }