예제 #1
0
        public static Tuple <double, double> fatorReducaoFlexao(Perfil perfil)
        {
            double wcx      = perfil.PegarWx();
            double wcy      = perfil.PegarWy();
            double ro       = perfil.PegarRo();
            string simetria = perfil.PegarSimetria();

            double tensao = Form1.tensaofy;

            List <double> lstForcaAxial = forcaAxialFlambagemGlobal(perfil, simetria);
            double        ney           = lstForcaAxial.ElementAt(2);
            double        nez           = lstForcaAxial.ElementAt(3);

            double mex = 1.0 * ro * Math.Sqrt(ney * nez);
            double mey = calculoMeFlexaoY(perfil);

            double lambdaZerox = Math.Sqrt(wcx * tensao) / mex;
            double lambdaZeroy = Math.Sqrt(wcy * tensao) / mey;

            double quiFltx = condicaoFLTFlexao(lambdaZerox);
            double quiFlty = condicaoFLTFlexao(lambdaZeroy);

            Tuple <double, double> quiFlt = new Tuple <double, double>(quiFltx, quiFlty);

            return(quiFlt);
        }
예제 #2
0
        public static double calculoMeFlexaoY(Perfil perfil)
        {
            double ro       = perfil.PegarRo();
            double jy       = perfil.PegarJy();
            string simetria = perfil.PegarSimetria();

            List <double> lstForcaAxial = forcaAxialFlambagemGlobal(perfil, simetria);

            double nex = lstForcaAxial.ElementAt(1);
            double nez = lstForcaAxial.ElementAt(3);

            // Considerando Cs = + 1.0 e Cm = 1.0
            double me = nex * (jy + Math.Sqrt(Math.Pow(jy, 2) + Math.Pow(ro, 2) * (nez / nex)));

            return(me);
        }
예제 #3
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);
        }