public SecProp CalculateSecProp() { List <SecProp> SecPropList = new List <SecProp>(); foreach (IShape shape in ShapeList) { SecPropList.Add(shape.CalculateSecProp()); } ; return(SectionElements.SecProp_Section(SecPropList)); }
public virtual Coordinate GlobalPointCoordinate(string PointID) { //Returns the coordinate of defined point //takes into account translation (defined by properties xp & yp) //and rotation (defined by property theta) Coordinate pnt1_shp = LocalPointCoordinate(point); Coordinate pnt2_shp = LocalPointCoordinate(PointID); Coordinate point1Coordinate = SectionElements.ConvertXYtoCoordinate(xp, yp); Coordinate pnt2_global = SectionElements.TransformCoordinate(point1Coordinate, pnt1_shp, pnt2_shp, theta, mirrorX, mirrorY); return(pnt2_global); }
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); }