public ShearMemberBox(ISectionTube section, ISteelMaterial material) { base.material = material; base.t_w = 2.0 * section.t_des; base.h = section.H - 3.0 * section.t_des; }
internal double GetLocalYieldingOnSidewalls() { double R = 0; ISectionTube tube = Hss.Section as ISectionTube; if (tube == null) { throw new Exception("Member must be of type SectionTube"); } double B = tube.B; double Fy = Hss.Material.YieldStress; double tp = Plate.Section.B; double lb = tp; double A = tube.A; double Rn = 0.0; if ((5.0 * t_plCap + lb) < B) { //(K1-14a) Rn = 2.0 * Fy * t_plCap * (5.0 * t_plCap + lb); } else { //(K1-14b) Rn = Fy * A; } R = 1.0 * Rn; return(R); }
internal double GetLocalCripplingOfSideWalls() { double R = 0.0; double Rn = 0.0; double tp = Plate.Section.B; double lb = tp; ISectionTube tube = Hss.Section as ISectionTube; if (tube == null) { throw new Exception("Member must be of type SectionTube"); } double B = tube.B; double t = tube.t_des; double E = SteelConstants.ModulusOfElasticity; double Fy = Hss.Material.YieldStress; if (5.0 * t_plCap + lb < B) { //(K1-15) Rn = 1.6 * Math.Pow(t, 2) * (1.0 + 6.0 * lb / B * Math.Pow(t / t_plCap, 1.5)) * Math.Sqrt(E * Fy * t_plCap / t); } else { double A = tube.A; Rn = Fy * A; } R = 0.75 * Rn; return(R); }
private ISteelBeamFlexure CreateRhsBeam(CompactnessClassFlexure FlangeCompactness, FlexuralCompressionFiberPosition compressionFiberPosition, CompactnessClassFlexure WebCompactness, ISectionTube RhsSec, ISteelMaterial Material, MomentAxis MomentAxis, ICalcLog Log) { SteelRhsSection steelSection = new SteelRhsSection(RhsSec, Material); ISteelBeamFlexure beam = null; beam = new BeamRectangularHss(steelSection, compressionFiberPosition, MomentAxis, Log); return(beam); }
public void SectionRHSReturnsWeakAxisClone() { AiscShapeFactory factory = new AiscShapeFactory(); ISectionTube section = factory.GetShape("HSS12X6X.375") as ISectionTube; ISection sectionClone = section.GetWeakAxisClone(); double I_x = sectionClone.I_x; double refI_x = 72.9; //Manual gives 10.3 but actual area checked in Autocad is 10.42 double actualTolerance = EvaluateActualTolerance(I_x, refI_x); Assert.LessOrEqual(actualTolerance, tolerance); }
//ICompactnessElement FlangeCompactness; //ICompactnessElement WebCompactness; public HollowMember(ISteelSection section, FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis) { ISection Section = section.Shape; if (Section is ISectionTube || Section is ISectionPipe || Section is ISectionBox) { if (Section is ISectionTube) { ISectionTube tube = Section as ISectionTube; if (MomentAxis == MomentAxis.XAxis) { FlangeCompactness = new FlangeOfRhs(section.Material, tube, MomentAxis); WebCompactness = new WebOfRhs(section.Material, tube, MomentAxis); } else { WebCompactness = new FlangeOfRhs(section.Material, tube, MomentAxis); FlangeCompactness = new WebOfRhs(section.Material, tube, MomentAxis); } } if (Section is ISectionPipe) { ISectionPipe pipe = Section as ISectionPipe; FlangeCompactness = new WallOfChs(section.Material, pipe); WebCompactness = new WallOfChs(section.Material, pipe); } if (Section is ISectionBox) { ISectionBox box = Section as ISectionBox; if (MomentAxis == MomentAxis.XAxis) { FlangeCompactness = new FlangeOfBox(section.Material, box); WebCompactness = new WebOfBox(section.Material, box); } else { WebCompactness = new FlangeOfBox(section.Material, box); FlangeCompactness = new WebOfBox(section.Material, box); } } } else { throw new SectionWrongTypeException("ISectionTube, ISectionPipe or ISectionBox"); } }
protected double GetBeta() { double beta; double Bp = Plate.Section.H; ISectionTube tube = Hss.Section as ISectionTube; if (tube == null) { throw new Exception("Member must be of type SectionTube"); } double B = tube.B; beta = Bp / B; return(beta); }
internal double GetHSSWallPlastification() { //(K1-13) double R = 0.0; double Rn; double theta = Angle; double sinTheta = Math.Sin(theta.ToRadians()); double Fy = Hss.Material.YieldStress; double t = 0.0; ISectionHollow hollowMember = Hss.Section as ISectionHollow; if (hollowMember != null) { t = hollowMember.t_des; } else { throw new Exception("Member must be of type IHollowMember"); } ISectionTube tube = Hss.Section as ISectionTube; if (tube == null) { throw new Exception("Member must be of type SectionTube"); } double B = tube.B; double tp = Plate.Section.B; double lb = Plate.Section.H / sinTheta; double Qf = RhsStressInteractionQf(HssPlateOrientation.Longitudinal); //(K1-13) Rn = 2.0 * Fy * Math.Pow(t, 2) / (1.0 - (tp / B)) * (2.0 * lb / B + 4.0 * Math.Sqrt(1.0 - tp / B) * Qf) / sinTheta; R = Rn * 1.0; return(R); }
public double GetEffectivePlateWidth() { double Bep; double Bp = Plate.Section.H; double t = Plate.Section.B; ISectionTube tube = Hss.Section as ISectionTube; if (tube == null) { throw new Exception("Member must be of type SectionTube"); } double B = tube.B; //(K1-18) Bep = 10.0 * Bp / (B / t); Bep = Bep > Bp ? Bp : Bep; return(Bep); }
public FlangeOfRhs(ISteelMaterial Material, ISectionTube SectionTube, MomentAxis MomentAxis) //double OutsideCornerRadius=-1.0) :base(Material) { this.SectionTube = SectionTube; ISectionTube s = SectionTube; double td = s.t_des; //if (OutsideCornerRadius==-1.0) //{ // this.Width = s.B - 3.0 * td; //} //else //{ // if (OutsideCornerRadius<0) // { // throw new Exception("Invalid RHS corner radius. Must be over 0"); // } // this.Width = s.B - 2.0 * OutsideCornerRadius; //} this.Width = GetFlangeWidth_bf(MomentAxis); this.Thickness = td; }
public FlangeOfRhs(ISteelMaterial Material, ISectionTube SectionTube, MomentAxis MomentAxis) //double OutsideCornerRadius=-1.0) : base(Material) { this.SectionTube = SectionTube; ISectionTube s = SectionTube; double td = s.t_des; //if (OutsideCornerRadius==-1.0) //{ // this.Width = s.B - 3.0 * td; //} //else //{ // if (OutsideCornerRadius<0) // { // throw new Exception("Invalid RHS corner radius. Must be over 0"); // } // this.Width = s.B - 2.0 * OutsideCornerRadius; //} this.Width = GetFlangeWidth_bf(MomentAxis); this.Thickness = td; }
public SteelRhsSection(ISectionTube Section, ISteelMaterial Material) : base(Section, Material) { this.section = Section; }
protected override double GetArea() { ISectionTube tb = hss.Section; return(hss.Section.A); }
private ISteelBeamFlexure CreateRhsBeam(CompactnessClassFlexure FlangeCompactness, FlexuralCompressionFiberPosition compressionFiberPosition, CompactnessClassFlexure WebCompactness, ISectionTube RhsSec, ISteelMaterial Material, MomentAxis MomentAxis, ICalcLog Log) { SteelRhsSection steelSection = new SteelRhsSection(RhsSec, Material); ISteelBeamFlexure beam = null; beam = new BeamRectangularHss(steelSection,compressionFiberPosition, MomentAxis, Log); return beam; }
public double GetPureTorsionStressForClosedSection(ISection section, double T_u) { double tau; double b, h, t, J, R; if (section is ISolidShape) { if (section is ISectionRectangular) { ISectionRectangular sr = section as ISectionRectangular; J = sr.J; R = Math.Min(sr.B, sr.H); } else if (section is ISectionRound) { ISectionRound srou = section as ISectionRound; J = srou.J; R = srou.D / 2.0; } else { throw new Exception("Section type is not applicable for closed section analysis"); } tau = T_u * R / J; } else if (section is ISectionHollow) { if (section is ISectionTube || section is ISectionBox) { if (section is ISectionBox) { ISectionBox sb = section as ISectionBox; b = sb.B; h = sb.H; t = Math.Min(sb.t_f, sb.t_w); } else if (section is ISectionTube) { ISectionTube sT = section as ISectionTube; b = sT.B; h = sT.H; t = sT.t_des; } else { throw new Exception("Section type is not applicable for closed section analysis"); } tau = GetBoxShearStress(T_u, b, h, t); } else if (section is ISectionPipe) { ISectionPipe pipe = section as ISectionPipe; R = pipe.D / 2.0; J = pipe.J; tau = GetPipeStress(T_u, R, J); } else { throw new Exception("Section type is not applicable for closed section analysis"); } } else { throw new Exception("Section type is not applicable for closed section analysis"); } return(tau); }
public ISteelCompressionMember GetCompressionMember(ISection Shape, double L_ex, double L_ey, double L_ez, double F_y, double E, bool IsRolledShape = true) { string DEFAULT_EXCEPTION_STRING = "Selected shape is not supported. Select a different shape."; ISteelCompressionMember col = null; CalcLog log = new CalcLog(); SteelMaterial Material = new SteelMaterial(F_y, E); if (Shape is ISectionI) { ISectionI IShape = Shape as ISectionI; SteelSectionI SectionI = new SteelSectionI(IShape, Material); IShapeFactory IShapeFactory = new IShapeFactory(); return(IShapeFactory.GetIshape(SectionI, IsRolledShape, L_ex, L_ey, L_ez, log)); } else if (Shape is ISectionChannel) { ISectionChannel ChannelShape = Shape as ISectionChannel; SteelChannelSection ChannelSection = new SteelChannelSection(ChannelShape, Material); throw new Exception(DEFAULT_EXCEPTION_STRING); } else if (Shape is ISectionPipe) { ISectionPipe SectionPipe = Shape as ISectionPipe; SteelPipeSection PipeSection = new SteelPipeSection(SectionPipe, Material); ChsShapeFactory ChsFactory = new ChsShapeFactory(); return(ChsFactory.GetChsShape(PipeSection, L_ex, L_ey, L_ez, log)); } else if (Shape is ISectionTube) { ISectionTube TubeShape = Shape as ISectionTube; SteelRhsSection RectHSS_Section = new SteelRhsSection(TubeShape, Material); RhsShapeFactory RhsFactory = new RhsShapeFactory(); return(RhsFactory.GetRhsShape(RectHSS_Section, L_ex, L_ey, L_ez, log)); } else if (Shape is ISectionBox) { ISectionBox BoxShape = Shape as ISectionBox; SteelBoxSection BoxSection = new SteelBoxSection(BoxShape, Material); RhsShapeFactory RhsFactory = new RhsShapeFactory(); return(RhsFactory.GetRhsShape(BoxSection, L_ex, L_ey, L_ez, log)); } else if (Shape is ISectionTee) { ISectionTee TeeShape = Shape as ISectionTee; SteelTeeSection TeeSection = new SteelTeeSection(TeeShape, Material); throw new Exception(DEFAULT_EXCEPTION_STRING); } else { throw new Exception(DEFAULT_EXCEPTION_STRING); } }
public ISteelBeamFlexure GetBeam(ISection Shape, ISteelMaterial Material, ICalcLog Log, MomentAxis MomentAxis, FlexuralCompressionFiberPosition compressionFiberPosition, bool IsRolledMember = true) { ISteelBeamFlexure beam = null; if (MomentAxis == Common.Entities.MomentAxis.XAxis) { if (Shape is ISectionI) { ISectionI IShape = Shape as ISectionI; SteelSectionI SectionI = new SteelSectionI(IShape, Material); if (IShape.b_fBot == IShape.b_fTop && IShape.t_fBot == IShape.t_fTop) // doubly symmetric { DoublySymmetricIBeam dsBeam = new DoublySymmetricIBeam(SectionI, Log, compressionFiberPosition, IsRolledMember); beam = dsBeam.GetBeamCase(); } else { SinglySymmetricIBeam ssBeam = new SinglySymmetricIBeam(SectionI, IsRolledMember, compressionFiberPosition, Log); beam = ssBeam.GetBeamCase(); } } else if (Shape is ISolidShape) { ISolidShape solidShape = Shape as ISolidShape; SteelSolidSection SectionSolid = new SteelSolidSection(solidShape, Material); beam = new BeamSolid(SectionSolid, Log, MomentAxis); } else if (Shape is ISectionChannel) { ISectionChannel ChannelShape = Shape as ISectionChannel; SteelChannelSection ChannelSection = new SteelChannelSection(ChannelShape, Material); beam = new BeamChannel(ChannelSection, IsRolledMember, Log); IShapeCompactness compactness = new ShapeCompactness.ChannelMember(ChannelSection, IsRolledMember, compressionFiberPosition); CompactnessClassFlexure flangeCompactness = compactness.GetFlangeCompactnessFlexure(); CompactnessClassFlexure webCompactness = compactness.GetWebCompactnessFlexure(); if (flangeCompactness != CompactnessClassFlexure.Compact || webCompactness != CompactnessClassFlexure.Compact) { throw new Exception("Channels with non-compact and slender flanges or webs are not supported. Revise input."); } } else if (Shape is ISectionPipe) { ISectionPipe SectionPipe = Shape as ISectionPipe; SteelPipeSection PipeSection = new SteelPipeSection(SectionPipe, Material); beam = new BeamCircularHss(PipeSection, Log); } else if (Shape is ISectionTube) { ISectionTube TubeShape = Shape as ISectionTube; SteelRhsSection RectHSS_Section = new SteelRhsSection(TubeShape, Material); beam = new BeamRectangularHss(RectHSS_Section, compressionFiberPosition, MomentAxis, Log); } else if (Shape is ISectionBox) { ISectionBox BoxShape = Shape as ISectionBox; SteelBoxSection BoxSection = new SteelBoxSection(BoxShape, Material); beam = new BeamRectangularHss(BoxSection, compressionFiberPosition, MomentAxis, Log); } else if (Shape is ISectionTee) { ISectionTee TeeShape = Shape as ISectionTee; SteelTeeSection TeeSection = new SteelTeeSection(TeeShape, Material); beam = new BeamTee(TeeSection, Log); } else if (Shape is ISectionAngle) { ISectionAngle Angle = Shape as ISectionAngle; SteelAngleSection AngleSection = new SteelAngleSection(Angle, Material); beam = new BeamAngle(AngleSection, Log, Angle.AngleRotation, MomentAxis, Angle.AngleOrientation); } else if (Shape is ISolidShape) { ISolidShape SolidShape = Shape as ISolidShape; SteelSolidSection SolidSection = new SteelSolidSection(SolidShape, Material); beam = new BeamSolid(SolidSection, Log, MomentAxis); } else { throw new Exception("Specified section type is not supported for this node."); } } else // weak axis { if (Shape is ISectionI) { ISectionI IShape = Shape as ISectionI; SteelSectionI SectionI = new SteelSectionI(IShape, Material); beam = new BeamIWeakAxis(SectionI, IsRolledMember, Log); } else { throw new NotImplementedException(); } } return(beam); }
public ISteelCompressionMember GetCompressionMember(ISection Shape, double L_ex, double L_ey, double L_ez, double F_y, double E, bool IsRolledShape = true) { string DEFAULT_EXCEPTION_STRING = "Selected shape is not supported. Select a different shape."; ISteelCompressionMember col = null; CalcLog log = new CalcLog(); SteelMaterial Material = new SteelMaterial(F_y, E); if (Shape == null) { return(new ColumnGeneral(null, L_ex, L_ey, L_ez)); } if (Shape is ISectionI) { ISectionI IShape = Shape as ISectionI; SteelSectionI SectionI = new SteelSectionI(IShape, Material); IShapeFactory IShapeFactory = new IShapeFactory(); return(IShapeFactory.GetIshape(SectionI, IsRolledShape, L_ex, L_ey, L_ez)); } else if (Shape is ISectionChannel) { ISectionChannel ChannelShape = Shape as ISectionChannel; SteelChannelSection ChannelSection = new SteelChannelSection(ChannelShape, Material); throw new Exception(DEFAULT_EXCEPTION_STRING); } else if (Shape is ISectionPipe) { ISectionPipe SectionPipe = Shape as ISectionPipe; SteelPipeSection PipeSection = new SteelPipeSection(SectionPipe, Material); ChsShapeFactory ChsFactory = new ChsShapeFactory(); return(ChsFactory.GetChsShape(PipeSection, L_ex, L_ey, L_ez, log)); } else if (Shape is ISectionTube) { ISectionTube TubeShape = Shape as ISectionTube; SteelRhsSection RectHSS_Section = new SteelRhsSection(TubeShape, Material); RhsShapeFactory RhsFactory = new RhsShapeFactory(); return(RhsFactory.GetRhsShape(RectHSS_Section, L_ex, L_ey, L_ez)); } else if (Shape is ISectionBox) { ISectionBox BoxShape = Shape as ISectionBox; SteelBoxSection BoxSection = new SteelBoxSection(BoxShape, Material); RhsShapeFactory RhsFactory = new RhsShapeFactory(); return(RhsFactory.GetRhsShape(BoxSection, L_ex, L_ey, L_ez)); } else if (Shape is ISectionRectangular || Shape is ISectionRound) { ISteelSection solidSec; if (Shape is ISectionRectangular) { ISectionRectangular RectangleShape = Shape as ISectionRectangular; solidSec = new SteelRectangleSection(RectangleShape, Material); } else { ISectionRound rnd = Shape as ISectionRound; solidSec = new SteelRoundSection(rnd, Material); } CompressionMemberRectangle SolidShapeSection = new CompressionMemberRectangle(solidSec, L_ex, L_ey, L_ez); return(SolidShapeSection); } else if (Shape is ISectionTee) { ISectionTee TeeShape = Shape as ISectionTee; SteelTeeSection TeeSection = new SteelTeeSection(TeeShape, Material); IShapeCompactness compactnessTee = new ShapeCompactness.TeeMember(TeeSection); CompactnessClassAxialCompression flangeCompactness = compactnessTee.GetFlangeCompactnessCompression(); CompactnessClassAxialCompression stemCompactness = compactnessTee.GetWebCompactnessCompression(); if (flangeCompactness == CompactnessClassAxialCompression.NonSlender && stemCompactness == CompactnessClassAxialCompression.NonSlender) { return(new ColumnTee(TeeSection, IsRolledShape, L_ex, L_ey, L_ez)); } else { throw new Exception(DEFAULT_EXCEPTION_STRING); } } else { throw new Exception(DEFAULT_EXCEPTION_STRING); } }