Ejemplo n.º 1
0
        // Retorna (Ne (0), Nex (1), Ney(2), Nez(3), Nexz(4))
        public static List <double> forcaAxialFlambagemGlobal(Perfil perfil, string simetria)
        {
            double pi2      = Math.Pow(Math.PI, 2);
            double Ne       = 0;
            double comp     = perfil.PegarComprimento();
            double iPerfilX = perfil.PegarIx();
            double iPerfilY = perfil.PegarIy();
            double ro       = perfil.PegarRo();
            double xo       = perfil.PegarXo();
            double cw       = perfil.PegarCW();
            double J        = perfil.PegarJ();

            //dupla simetria
            double Nex = pi2 * Form1.E * iPerfilX / (Math.Pow(comp, 2));
            double Ney = pi2 * Form1.E * iPerfilY / (Math.Pow(comp, 2));
            double Nez = 1 / Math.Pow(ro, 2) * ((pi2 * Form1.E * cw) / (Math.Pow(comp, 2)) + (Form1.G * J));

            //monossimetricos
            double _1xoro = 1 - Math.Pow(xo / ro, 2);
            double Nexz   = (Nex + Nez) / (2 * _1xoro) * (1 - Math.Sqrt(1 - (4 * Nex * Nez * _1xoro) / (Math.Pow(Nex + Nez, 2))));

            //assimetricos
            // A ser desenvolvido... equação de 3 grau

            // Retorna o menor valor
            if (simetria == "MONOSSIMETRICO")
            {
                Ne = Math.Min(Ney, Nexz);
            }
            else
            {
                Ne = Math.Min(Ney, Math.Min(Nex, Nez));
            }

            List <double> retorno = new List <double>();

            retorno.Add(Ne); retorno.Add(Nex); retorno.Add(Ney); retorno.Add(Nez); retorno.Add(Nexz);

            return(retorno);
        }