protected override SecProp ShapeSecProp()
            {
                SecProp sp = new SecProp();

                double cos = Math.Cos(alpha);
                double sin = Math.Sin(alpha);

                double E = Material.E;

                double A    = R * R / 2.0 * (2.0 * alpha - Math.Sin(2.0 * alpha));
                double I_Y1 = A * R * R / 4.0 * (1.0 + (2.0 * Math.Pow(sin, 3.0) * cos) / (alpha - sin * cos));

                double Ixx = A * R * R / 4.0 * (1.0 - (2.0 / 3.0) * (Math.Pow(sin, 3.0) * cos) / (alpha - sin * cos));
                double Iyy = I_Y1 - 4.0 * Math.Pow(R, 6.0) * Math.Pow(sin, 6) / (9 * A);
                double Ixy = 0.0;

                sp.EA   = E * A;
                sp.EIxx = E * Ixx;
                sp.EIyy = E * Iyy;
                sp.EIxy = E * Ixy;
                sp.Xcg  = 4.0 * R * Math.Pow(sin, 3) / (3.0 * (2 * alpha - Math.Sin(2 * alpha)));
                sp.Ycg  = 0;

                return(sp);
            }
Esempio n. 2
0
            protected override SecProp ShapeSecProp()
            {
                SecProp sp = new SecProp();

                double E = Material.E;

                sp.EA   = 1.0 / 2.0 * E * b * h;
                sp.EIxx = E * 1.0 / 36.0 * b * Math.Pow(h, 3);
                sp.EIyy = E * 1.0 / 36.0 * h * Math.Pow(b, 3);
                sp.EIxy = E * -1.0 / 72.0 * Math.Pow(h, 2) * Math.Pow(b, 2);
                sp.Xcg  = b / 3.0;
                sp.Ycg  = h / 3.0;

                return(sp);
            }
Esempio n. 3
0
            protected override SecProp ShapeSecProp()
            {
                SecProp sp = new SecProp();

                double E = Material.E;

                sp.EA   = E * b * t;
                sp.EIxx = E * 1.0 / 12.0 * b * Math.Pow(t, 3);
                sp.EIyy = E * 1.0 / 12.0 * t * Math.Pow(b, 3);
                sp.EIxy = 0;
                sp.Xcg  = b / 2.0;
                sp.Ycg  = t / 2.0;

                return(sp);
            }
Esempio n. 4
0
            protected override SecProp ShapeSecProp()
            {
                SecProp sp = new SecProp();

                double E = Material.E;

                sp.EA   = E * ((1 - Math.PI / 4) * r * r);
                sp.EIxx = E * ((1 - 5 * Math.PI / 16) - (1 - Math.PI / 4) * Math.Pow((10 - 3 * Math.PI), 2) / (9 * Math.Pow((4 - Math.PI), 2))) * Math.Pow(r, 4);;
                sp.EIyy = sp.EIxx;
                sp.EIxy = E * (-0.00443868 * Math.Pow(r, 4));
                sp.Xcg  = ((10 - 3 * Math.PI) * r) / (3 * (4 - Math.PI));
                sp.Ycg  = ((10 - 3 * Math.PI) * r) / (3 * (4 - Math.PI));

                return(sp);
            }
Esempio n. 5
0
            protected override SecProp ShapeSecProp()
            {
                SecProp sp = new SecProp();

                double E = Material.E;

                double I_Y1 = alpha / 4 * (Math.Pow(_R, 4) - Math.Pow(r, 4)) * (1 + Math.Sin(alpha) * Math.Cos(alpha) / alpha);

                sp.EA   = E * (_R * _R - r * r) * alpha;
                sp.EIxx = E * alpha / 4 * (Math.Pow(_R, 4) - Math.Pow(r, 4)) * (1 - Math.Sin(alpha) * Math.Cos(alpha) / alpha);
                sp.EIyy = E * (I_Y1 - 1 / (alpha * (_R * _R - r * r)) * Math.Pow((2 * Math.Sin(alpha) * (Math.Pow(_R, 3) - Math.Pow(r, 3)) / 3), 2));
                sp.EIxy = 0;
                sp.Xcg  = (2 * (Math.Pow(_R, 3) - Math.Pow(r, 3)) * Math.Sin(alpha)) / (3 * alpha * (_R * _R - r * r));
                sp.Ycg  = 0;

                return(sp);
            }
Esempio n. 6
0
        public static SecProp SecProp_Section(List <SecProp> SecPropList)
        {
            double sumEA = 0, sumXcgEA = 0, sumYcgEA = 0;

            foreach (SecProp sp in SecPropList)
            {
                sumEA    = sumEA + sp.EA;
                sumXcgEA = sumXcgEA + sp.EA * sp.Xcg;
                sumYcgEA = sumYcgEA + sp.EA * sp.Ycg;
            }
            double Xcg_global = sumXcgEA / sumEA;
            double Ycg_global = sumYcgEA / sumEA;


            double sumEIxx = 0, sumEIyy = 0, sumEIxy = 0;

            foreach (SecProp sp in SecPropList)
            {
                sumEIxx = sumEIxx + sp.EIxx + sp.EA * Math.Pow(sp.Ycg - Ycg_global, 2);
                sumEIyy = sumEIyy + sp.EIyy + sp.EA * Math.Pow(sp.Xcg - Xcg_global, 2);
                sumEIxy = sumEIxy + sp.EIxy + sp.EA * (sp.Xcg - Xcg_global) * (sp.Ycg - Ycg_global);
            }

            double thetap = Theta_Principal(sumEIxx, sumEIyy, sumEIxy);

            double[] EIPrincipal = RotatedAxesProperties(sumEIxx, sumEIyy, sumEIxy, thetap);
            double   sumEI1p     = EIPrincipal[0];
            double   sumEI2p     = EIPrincipal[1];

            SecProp SPGlobal = new SecProp
            {
                Xcg    = Xcg_global,
                Ycg    = Ycg_global,
                EA     = sumEA,
                EIxx   = sumEIxx,
                EIyy   = sumEIyy,
                EIxy   = sumEIxy,
                EI1p   = sumEI1p,
                EI2p   = sumEI2p,
                thetap = thetap
            };

            return(SPGlobal);
        }
            protected override Coordinate LocalPointCoordinate(string PointID)
            {
                //Returns the coordinate of a defined point
                //assumes zero rotation and translation
                Coordinate point1_sh = new Coordinate();

                SecProp sp   = ShapeSecProp();
                double  x_cg = sp.Xcg;
                double  y_cg = sp.Ycg;

                switch (PointID)
                {
                case "a":
                    point1_sh = ConvertXYtoCoordinate(0, 0);
                    break;

                case "b":
                    point1_sh = ConvertXYtoCoordinate(-b / 2, 0);
                    break;

                case "c":
                    point1_sh = ConvertXYtoCoordinate(-b / 4, h / 2);
                    break;

                case "d":
                    point1_sh = ConvertXYtoCoordinate(0, h);
                    break;

                case "e":
                    point1_sh = ConvertXYtoCoordinate(b / 4, h / 2);
                    break;

                case "f":
                    point1_sh = ConvertXYtoCoordinate(b / 2, 0);
                    break;

                case "cg":
                    point1_sh = ConvertXYtoCoordinate(x_cg, y_cg);
                    break;
                }

                return(point1_sh);
            }
            protected override Coordinate LocalPointCoordinate(string PointID)
            {
                //Returns the coordinate of a defined point
                //assumes zero rotation and translation
                Coordinate point1_sh = new Coordinate();

                double cos = Math.Cos(alpha);
                double sin = Math.Sin(alpha);

                switch (PointID)
                {
                case "a":
                    point1_sh = ConvertXYtoCoordinate(0, 0);
                    break;

                case "b":
                    point1_sh = ConvertXYtoCoordinate(R * cos, R * sin);
                    break;

                case "c":
                    point1_sh = ConvertXYtoCoordinate(R, 0);
                    break;

                case "d":
                    point1_sh = ConvertXYtoCoordinate(R * cos, -R * sin);
                    break;

                case "e":
                    point1_sh = ConvertXYtoCoordinate(R * cos, 0);
                    break;

                case "cg":
                    SecProp sp   = ShapeSecProp();
                    double  x_cg = sp.Xcg;
                    double  y_cg = sp.Ycg;
                    point1_sh = ConvertXYtoCoordinate(x_cg, y_cg);
                    break;
                }

                return(point1_sh);
            }
            protected override Coordinate LocalPointCoordinate(string PointID)
            {
                //Returns the coordinate of a defined point
                //assumes zero rotation and translation
                Coordinate point1_sh = new Coordinate();

                SecProp sp   = ShapeSecProp();
                double  x_cg = sp.Xcg;
                double  y_cg = sp.Ycg;

                switch (PointID)
                {
                case "a":
                    point1_sh = ConvertXYtoCoordinate(0, 0);
                    break;

                case "b":
                    point1_sh = ConvertXYtoCoordinate(0, ((0) + (h - t2 - r2)) / 2);
                    break;

                case "c":
                    point1_sh = ConvertXYtoCoordinate(0, h - t2 - r2);
                    break;

                case "d":
                    point1_sh = ConvertXYtoCoordinate(-r2, h - t2);
                    break;

                case "e":
                    point1_sh = ConvertXYtoCoordinate(((-r2) + (tw - b2)) / 2, h - t2);
                    break;

                case "f":
                    point1_sh = ConvertXYtoCoordinate(-(b2 - tw), h - t2);
                    break;

                case "g":
                    point1_sh = ConvertXYtoCoordinate(-(b2 - tw), h - t2 / 2);
                    break;

                case "h":
                    point1_sh = ConvertXYtoCoordinate(-(b2 - tw), h);
                    break;

                case "i":
                    point1_sh = ConvertXYtoCoordinate((-1 * (b2 - tw) + (tw)) / 2, h);
                    break;

                case "j":
                    point1_sh = ConvertXYtoCoordinate(tw, h);
                    break;

                case "k":
                    point1_sh = ConvertXYtoCoordinate(tw, ((h) + (t1 + r1)) / 2);
                    break;

                case "l":
                    point1_sh = ConvertXYtoCoordinate(tw, t1 + r1);
                    break;

                case "m":
                    point1_sh = ConvertXYtoCoordinate(tw + r1, t1);
                    break;

                case "n":
                    point1_sh = ConvertXYtoCoordinate(((tw + r1) + (b1)) / 2, t1);
                    break;

                case "o":
                    point1_sh = ConvertXYtoCoordinate(b1, t1);
                    break;

                case "p":
                    point1_sh = ConvertXYtoCoordinate(b1, t1 / 2);
                    break;

                case "q":
                    point1_sh = ConvertXYtoCoordinate(b1, 0);
                    break;

                case "r":
                    point1_sh = ConvertXYtoCoordinate(b1 / 2, 0);
                    break;

                case "cg":
                    point1_sh = ConvertXYtoCoordinate(x_cg, y_cg);
                    break;
                }

                return(point1_sh);
            }
            protected override Coordinate LocalPointCoordinate(string PointID)
            {
                //Returns the coordinate of a defined point
                //assumes zero rotation and translation
                Coordinate point1_sh = new Coordinate();

                SecProp sp   = ShapeSecProp();
                double  x_cg = sp.Xcg;
                double  y_cg = sp.Ycg;

                switch (PointID)
                {
                case "a":
                    point1_sh = ConvertXYtoCoordinate(0, 0);
                    break;

                case "b":
                    point1_sh = ConvertXYtoCoordinate(0, b2 / 2);
                    break;

                case "c":
                    point1_sh = ConvertXYtoCoordinate(0, b2);
                    break;

                case "d":
                    point1_sh = ConvertXYtoCoordinate(t2, b2);
                    break;

                case "e":
                    point1_sh = ConvertXYtoCoordinate(t2, (b2 + t1 + r) / 2);    //average of d and f
                    break;

                case "f":
                    point1_sh = ConvertXYtoCoordinate(t2, t1 + r);
                    break;

                case "g":
                    point1_sh = ConvertXYtoCoordinate(t2 + r, t1);
                    break;

                case "h":
                    point1_sh = ConvertXYtoCoordinate((t2 + r + b1) / 2, t1);   //average of g and i
                    break;

                case "i":
                    point1_sh = ConvertXYtoCoordinate(b1, t1);
                    break;

                case "j":
                    point1_sh = ConvertXYtoCoordinate(b1, 0);
                    break;

                case "k":
                    point1_sh = ConvertXYtoCoordinate(b1 / 2, 0);
                    break;

                case "cg":
                    point1_sh = ConvertXYtoCoordinate(x_cg, y_cg);
                    break;
                }

                return(point1_sh);
            }
Esempio n. 11
0
            protected override Coordinate LocalPointCoordinate(string PointID)
            {
                //Returns the coordinate of a defined point
                //assumes zero rotation and translation
                Coordinate point1_sh = new Coordinate();

                SecProp sp   = ShapeSecProp();
                double  x_cg = sp.Xcg;
                double  y_cg = sp.Ycg;

                switch (PointID)
                {
                case "a":
                    point1_sh = ConvertXYtoCoordinate(0, 0);
                    break;

                case "b":
                    point1_sh = ConvertXYtoCoordinate(0, r1 + t);
                    break;

                case "c":
                    point1_sh = ConvertXYtoCoordinate(0, ((r1 + t) + (h - r2 - t)) / 2);
                    break;

                case "d":
                    point1_sh = ConvertXYtoCoordinate(0, h - r2 - t);
                    break;

                case "e":
                    point1_sh = ConvertXYtoCoordinate(-r2, h - t);
                    break;

                case "f":
                    point1_sh = ConvertXYtoCoordinate(((-r2) + (t - b2)) / 2, h - t);
                    break;

                case "g":
                    point1_sh = ConvertXYtoCoordinate(t - b2, h - t);
                    break;

                case "h":
                    point1_sh = ConvertXYtoCoordinate(t - b2, h - t / 2);
                    break;

                case "i":
                    point1_sh = ConvertXYtoCoordinate(t - b2, h);
                    break;

                case "j":
                    point1_sh = ConvertXYtoCoordinate(((t - b2) + (-r2)) / 2, h);
                    break;

                case "k":
                    point1_sh = ConvertXYtoCoordinate(-r2, h);
                    break;

                case "l":
                    point1_sh = ConvertXYtoCoordinate(t, h);
                    break;

                case "m":
                    point1_sh = ConvertXYtoCoordinate(t, h - t - r2);
                    break;

                case "n":
                    point1_sh = ConvertXYtoCoordinate(t, ((h - t - r2) + (t + r1)) / 2);
                    break;

                case "o":
                    point1_sh = ConvertXYtoCoordinate(t, t + r1);
                    break;

                case "p":
                    point1_sh = ConvertXYtoCoordinate(t + r1, t);
                    break;

                case "q":
                    point1_sh = ConvertXYtoCoordinate(((t + r1) + (b1)) / 2, t);
                    break;

                case "r":
                    point1_sh = ConvertXYtoCoordinate(b1, t);
                    break;

                case "s":
                    point1_sh = ConvertXYtoCoordinate(b1, t / 2);
                    break;

                case "t":
                    point1_sh = ConvertXYtoCoordinate(b1, 0);
                    break;

                case "u":
                    point1_sh = ConvertXYtoCoordinate(((b1) + (t + r1)) / 2, 0);
                    break;

                case "v":
                    point1_sh = ConvertXYtoCoordinate(t + r1, 0);
                    break;

                case "cg":
                    point1_sh = ConvertXYtoCoordinate(x_cg, y_cg);
                    break;
                }

                return(point1_sh);
            }
Esempio n. 12
0
        public virtual SecProp CalculateSecProp()
        {
            double E  = Material.E;
            double _E = E;

            if (E == 0)
            {
                _E = 1E-10;
            }
            SecProp SP_shape = ShapeSecProp();

            //find center of gravity
            Coordinate cg_global = GetGlobalCGcoord();
            double     xcg       = cg_global.x;
            double     ycg       = cg_global.y;

            //Shape Section Properties (before rotation)
            double Ixx_sh = SP_shape.EIxx / _E;
            double Iyy_sh = SP_shape.EIyy / _E;
            double Ixy_sh = SP_shape.EIxy / _E;

            //adjust for shape mirroring (if both are true then Ixy_l is positive again)
            if (mirrorX)
            {
                Ixy_sh = -1 * Ixy_sh;
            }

            if (mirrorY)
            {
                Ixy_sh = -1 * Ixy_sh;
            }

            //Local Section Properties (after rotation)
            double[] Irotated = SectionElements.RotatedElementProperties(Ixx_sh, Iyy_sh, Ixy_sh, theta);
            double   Ixx_l    = Irotated[0];
            double   Iyy_l    = Irotated[1];
            double   Ixy_l    = Irotated[2];


            double thetap = SectionElements.Theta_Principal(Ixx_l, Iyy_l, Ixy_l);

            double[] Iprincipal = SectionElements.RotatedAxesProperties(Ixx_l, Iyy_l, Ixy_l, thetap);
            double   I1p        = Iprincipal[0];
            double   I2p        = Iprincipal[1];

            double A = SP_shape.EA / _E;

            SecProp sp = new SecProp
            {
                Xcg    = xcg,
                Ycg    = ycg,
                EA     = E * A,
                EIxx   = E * Ixx_l,
                EIyy   = E * Iyy_l,
                EIxy   = E * Ixy_l,
                EI1p   = E * I1p,
                EI2p   = E * I2p,
                thetap = thetap
            };

            return(sp);
        }