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