public IShearMember GetShearMemberCircular(double D, double t_nom, bool Is_SAW_member, double L_v, double F_y, double E) { ISteelMaterial material = new SteelMaterial(F_y, E); ShearMemberCircular member = new ShearMemberCircular(D, t_nom, Is_SAW_member, L_v, material); return(member); }
public IShearMember GetShearMemberNonCircular(ShearNonCircularCase ShearCase, double h, double t_w, double a, double F_y, double E) { ISteelMaterial material = new SteelMaterial(F_y, E); IShearMember member = null; bool IsTeeShape; switch (ShearCase) { case ShearNonCircularCase.MemberWithStiffeners: IsTeeShape = false; member = new ShearMemberWithStiffeners(h, t_w, a, material, IsTeeShape); break; case ShearNonCircularCase.Tee: IsTeeShape = true; member = new ShearMemberWithoutStiffeners(h, t_w, material, IsTeeShape); break; case ShearNonCircularCase.Box: member = new ShearMemberBox(h, t_w, material); break; default: IsTeeShape = false; member = new ShearMemberWithoutStiffeners(h, t_w, material, IsTeeShape); break; } return(member); }
protected double GetFcrGeneral() { SectionRectangular r = new SectionRectangular(t_w, h_o); SteelMaterial mat = new SteelMaterial(Material.YieldStress); CalcLog log = new CalcLog(); AffectedElementInFlexure flexuralElement = new AffectedElementInFlexure(r, mat, log); return(flexuralElement.GetPlateBucklingCriticalStress(c)); #region Obsolete //double lambda = GetLambda(); //double F_y = Material.YieldStress; //double Q; //if (lambda<=0.7) //{ // Q = 1.0; //} //else if (lambda<=1.41) //{ // Q = (1.34 - 0.468 * lambda); //} //else //{ // Q = ((1.3) / (Math.Pow(lambda, 2))); //} //double F_cr = F_y * Q; //return F_cr; #endregion }
public void HssGappedKConnectionReturnsYieldingOfBranchesFromUnevenDistributionValue() { SectionTube ch = new SectionTube(null, 12, 12, 0.625, 0.581); SteelMaterial mat = new SteelMaterial(46.0); SteelRhsSection Chord = new SteelRhsSection(ch, mat); SectionTube mainBranch = new SectionTube(null, 8, 8, 0.375, 0.349); SteelRhsSection MainBranch = new SteelRhsSection(mainBranch, mat); SectionTube secBranch = new SectionTube(null, 8, 8, 0.375, 0.349); SteelRhsSection SecondaryBranch = new SteelRhsSection(secBranch, mat); IHssTrussBranchConnection con = new RhsTrussGappedKConnection(Chord, MainBranch, 45, SecondaryBranch, 45, AxialForceType.Compression, AxialForceType.Tension, false, 430, 0 ); //Note: not clear in the design guide why moment is ignored in chord utilization calculation double phiP_nMain = con.GetChordWallPlastificationStrength(true).Value; double refValueMain = 415; double actualToleranceMain = EvaluateActualTolerance(phiP_nMain, refValueMain); Assert.True(actualToleranceMain <= tolerance); double phiP_nSec = con.GetBranchYieldingFromUnevenLoadDistributionStrength(false).Value; double refValueSec = 415; double actualToleranceSec = EvaluateActualTolerance(phiP_nSec, refValueSec); Assert.True(actualToleranceSec <= tolerance); }
public AffectedElementInCompression(double F_y, double b, double t) { SteelMaterial material = new SteelMaterial(F_y, double.PositiveInfinity, SteelConstants.ModulusOfElasticity, SteelConstants.ShearModulus); SectionRectangular section = new SectionRectangular(b, t); Section = new SteelPlateSection(section, material); }
public void HssOverlappedKConnectionReturnsYieldingOfBranchesFromUnevenDistributionValue() { SectionTube ch = new SectionTube(null, 8, 8, 0.5, 0.465); SteelMaterial mat = new SteelMaterial(46.0); SteelRhsSection Chord = new SteelRhsSection(ch, mat); SectionTube mainBranch = new SectionTube(null, 6, 4, 5.0 / 16.0, 0.291); SteelRhsSection MainBranch = new SteelRhsSection(mainBranch, mat); SectionTube secBranch = new SectionTube(null, 5, 3, 1.0 / 4.0, 0.233); SteelRhsSection SecondaryBranch = new SteelRhsSection(secBranch, mat); double O_v = 0.533; IHssTrussBranchConnection con = new RhsTrussOverlappedConnection(Chord, MainBranch, 45, SecondaryBranch, 45, AxialForceType.Compression, AxialForceType.Tension, false, 0, 0, O_v ); double phiP_nMain = con.GetBranchYieldingFromUnevenLoadDistributionStrength(true).Value; double refValueMain = 236; double actualToleranceMain = EvaluateActualTolerance(phiP_nMain, refValueMain); Assert.True(actualToleranceMain <= tolerance); double phiP_nSec = con.GetBranchYieldingFromUnevenLoadDistributionStrength(false).Value; double refValueSec = 151; double actualToleranceSec = EvaluateActualTolerance(phiP_nSec, refValueSec); Assert.True(actualToleranceSec <= tolerance); }
private void CreateBeam() { FlexuralMemberFactory factory = new FlexuralMemberFactory(); ISection section = new SectionTee("", 8, 4, 0.5, 0.5); SteelMaterial mat = new SteelMaterial(36.0, 29000); beam = factory.GetBeam(section, mat, null, MomentAxis.XAxis, FlexuralCompressionFiberPosition.Top); }
private void CreateBeam() { FlexuralMemberFactory factory = new FlexuralMemberFactory(); AiscShapeFactory AiscShapeFactory = new AiscShapeFactory(); ISection section = AiscShapeFactory.GetShape("C15X33.9", ShapeTypeSteel.Channel); SteelMaterial mat = new SteelMaterial(36.0, 29000); beam = factory.GetBeam(section, mat, null, MomentAxis.XAxis, FlexuralCompressionFiberPosition.Top); }
protected double GetFcrGeneral() { SectionRectangular r = new SectionRectangular(t_w, h_o); SteelMaterial mat = new SteelMaterial(Material.YieldStress); CalcLog log = new CalcLog(); throw new NotImplementedException(); }
private void CreateBeam() { FlexuralMemberFactory factory = new FlexuralMemberFactory(); AiscShapeFactory AiscShapeFactory = new AiscShapeFactory(); ISection section = AiscShapeFactory.GetShape("HSS8X6X.500", ShapeTypeSteel.RectangularHSS); SteelMaterial mat = new SteelMaterial(46.0, 29000); beam = factory.GetBeam(section, mat, null, MomentAxis.XAxis, FlexuralCompressionFiberPosition.Top); }
private void CreateColumn(double L_ex, double L_ey, double L_ez = 0) { CompressionMemberFactory factory = new CompressionMemberFactory(); AiscShapeFactory ShapeFactory = new AiscShapeFactory(); ISection section = ShapeFactory.GetShape("PIPE8SCH80"); SteelMaterial mat = new SteelMaterial(35.0, 29000); L_ez = L_ez == 0? L_ex : L_ez; column = factory.GetCompressionMember(section, mat, L_ex, L_ey, L_ez); }
public void ConnectedPlateReturnsFlexuralStrength() { ICalcLog log = new CalcLog(); SectionRectangular Section = new SectionRectangular(0.5, 8); ISteelMaterial Material = new SteelMaterial(50); AffectedElementInFlexure element = new AffectedElementInFlexure(Section, Material, log); double phiM_n = element.GetFlexuralStrength(); Assert.AreEqual(360.0, phiM_n); }
public double GetExtendedSinglePlateFlexuralBucklingStrength(double F_y, double t_pl, double d_pl, double L_pl) { SectionRectangular r = new SectionRectangular(t_pl, d_pl); SteelMaterial mat = new SteelMaterial(F_y); CalcLog log = new CalcLog(); AffectedElementInFlexure flexuralElement = new AffectedElementInFlexure(r, mat, log); return(flexuralElement.GetPlateFlexuralBucklingStrength(L_pl)); }
private void CreateColumn(double L_ex, double L_ey, double L_ez = 0, string Shape = "W14X82") { CompressionMemberFactory factory = new CompressionMemberFactory(); AiscShapeFactory AiscShapeFactory = new AiscShapeFactory(); ISection section = AiscShapeFactory.GetShape(Shape, ShapeTypeSteel.IShapeRolled); SteelMaterial mat = new SteelMaterial(50.0,29000); L_ez = L_ez == 0? L_ex : L_ez; column = factory.GetCompressionMember(section,mat, L_ex, L_ey, L_ez); }
private void CreateColumn(double L_ex, double L_ey, double L_ez = 0) { CompressionMemberFactory factory = new CompressionMemberFactory(); AiscShapeFactory AiscShapeFactory = new AiscShapeFactory(); ISection section = AiscShapeFactory.GetShape("HSS8X6X.500", ShapeTypeSteel.RectangularHSS); SteelMaterial mat = new SteelMaterial(46.0, 29000); L_ez = L_ez == 0? L_ex : L_ez; column = factory.GetCompressionMember(section, mat, L_ex, L_ey, L_ez); }
public static Dictionary <string, object> FlexuralLateralTorsionalBuckling(CustomProfile Shape, double F_y, double L_b, double C_b = 1.0, string BendingAxis = "XAxis", string FlexuralCompressionLocation = "Top", string FlexuralBracingCase = "NoLateralBracing", double E = 29000, bool IsRolledMember = true, string Code = "AISC360-10") { //Default values double phiM_n = 0; bool IsApplicableLimitState = false; //Calculation logic: MomentAxis Axis; bool IsValidStringAxis = Enum.TryParse(BendingAxis, true, out Axis); if (IsValidStringAxis == false) { throw new Exception("Axis selection not recognized. Check input string."); } FlexuralCompressionFiberPosition FlexuralCompression; //Calculation logic: bool IsValidStringCompressionLoc = Enum.TryParse(FlexuralCompressionLocation, true, out FlexuralCompression); if (IsValidStringCompressionLoc == false) { throw new Exception("Flexural compression location selection not recognized. Check input string."); } FlexuralAndTorsionalBracingType Bracing; //Calculation logic: bool IsValidStringBracing = Enum.TryParse(FlexuralBracingCase, true, out Bracing); if (IsValidStringBracing == false) { throw new Exception("Flexural bracing case selection not recognized. Check input string."); } SteelMaterial mat = new SteelMaterial(F_y, E); FlexuralMemberFactory factory = new FlexuralMemberFactory(); ISteelBeamFlexure beam = factory.GetBeam(Shape.Section, mat, null, Axis, FlexuralCompression, IsRolledMember); SteelLimitStateValue LTB = beam.GetFlexuralLateralTorsionalBucklingStrength(C_b, L_b, FlexuralCompression, Bracing); phiM_n = LTB.Value; IsApplicableLimitState = LTB.IsApplicable; return(new Dictionary <string, object> { { "phiM_n", phiM_n } , { "IsApplicableLimitState", IsApplicableLimitState } }); }
private void CreateElements() { SectionTube ch = new SectionTube(null, 8, 8, 1 / 4.0, 0.93 * (1.0 / 4.0), 0.35); SteelMaterial mat = new SteelMaterial(46.0); Chord = new SteelRhsSection(ch, mat); SectionTube br = new SectionTube(null, 6, 8, 3.0 / 8.0, 0.93 * (3.0 / 8.0), 0.35); Branch = new SteelRhsSection(br, mat); }
public void FactoryReturnsChannel() { FlexuralMemberFactory factory = new FlexuralMemberFactory(); AiscShapeFactory AiscShapeFactory = new AiscShapeFactory(); ISectionChannel r = new SectionChannel("", 12.0, 6, 0.4, 0.25); SteelMaterial mat = new SteelMaterial(50.0, 29000); ISteelBeamFlexure beam12 = factory.GetBeam(r, mat, null, MomentAxis.XAxis, FlexuralCompressionFiberPosition.Top); Assert.IsTrue(true); }
public void PipeShapeBeam() { FlexuralMemberFactory factory = new FlexuralMemberFactory(); AiscShapeFactory AiscShapeFactory = new AiscShapeFactory(); ISection r = AiscShapeFactory.GetShape("HSS2.5X.188"); SteelMaterial mat = new SteelMaterial(35.0, 29000); ISteelBeamFlexure beam12 = factory.GetBeam(r, mat, null, MomentAxis.YAxis, FlexuralCompressionFiberPosition.Left); Assert.IsTrue(beam12 != null); }
public AffectedElementInFlexure(ISection section, double F_y, double F_u, bool HasHolesInTensionFlange, double A_fg, double A_fn, bool IsCompactDoublySymmetricForFlexure, bool IsRolled = false) : base(F_y, F_u) { SteelMaterial material = new SteelMaterial(F_y, F_u, SteelConstants.ModulusOfElasticity, SteelConstants.ShearModulus); this.Section = new SteelGeneralSection(section, material); this.A_fg = A_fg; this.A_fn = A_fn; this.HasHolesInTensionFlange = HasHolesInTensionFlange; this.IsCompactDoublySymmetricForFlexure = IsCompactDoublySymmetricForFlexure; this.IsRolled = IsRolled; }
public void E1AReturnsAxialCapacity() { //AiscCatalogShape section = new AiscCatalogShape("W14X90", null); AiscShapeFactory AiscShapeFactory = new AiscShapeFactory(); ISectionI section = (ISectionI)AiscShapeFactory.GetShape("W14X90", ShapeTypeSteel.IShapeRolled); ISteelMaterial Material = new SteelMaterial(65, 29000); ISteelSection steelSection = new SteelSectionI(section, Material); IShapeCompact col = new IShapeCompact(steelSection, true, 19 * 12, 19 * 12, 19 * 12); double phiPn = col.GetFlexuralBucklingStrength().Value; Assert.True(phiPn == 903); }
private void CreateColumn(double L_ex, double L_ey, double L_ez = 0) { double d = 17.0; double b_f = 8.0; double t_f = 1.0; double t_w = 0.25; ISection r = new SectionI("", d, b_f, t_f, t_w); SteelMaterial mat = new SteelMaterial(50.0, 29000); L_ez = L_ez == 0? L_ex : L_ez; CompressionMemberFactory factory = new CompressionMemberFactory(); column = factory.GetCompressionMember(r, mat, L_ex, L_ey, L_ez); }
public double GetFlexuralStrength_Vertical(sCrossSection section, eColorMode forceType, IFrameSet fs) { sKodeStructConverter kcon = new sKodeStructConverter(); SteelMaterial mat = kcon.ToKodeStructMaterial_Steel(section); string Code = "AISC360-10"; double phiM_n = 0; double b_eff = this.GetBeamEffectiveSlabWidth(fs); double SumQ_n = this.GetSumOfStudsStrength(fs); // assuming, // Shear Stud Anchor // Light Weight Concrete : 4ksi // solid concrete thickness = 2.5" // rib thickness = 3" // double h_solid = 2.5; double h_rib = 3.0; double F_y = mat.YieldStress; //?? unit ?? F_y of what?? double fc_prime = 4.0; //?? unit ?? MomentAxis Axis = kcon.ToKodeStructMomentAxis(forceType); //?? just this for composite? ISection shape = kcon.ToKodeStructCrossSection(section); if (shape is ISliceableShapeProvider) { ISliceableShapeProvider prov = shape as ISliceableShapeProvider; ISliceableSection sec = prov.GetSliceableShape(); CompositeBeamSection cs = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime); phiM_n = cs.GetFlexuralStrength(SumQ_n); } else { if (shape is ISliceableSection) { ISliceableSection sec = shape as ISliceableSection; CompositeBeamSection cs = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime); phiM_n = cs.GetFlexuralStrength(SumQ_n); } else { throw new Exception("Shape type not supported. Please provide a shape object of standard geometry"); } } return(phiM_n); }
public static Dictionary <string, object> LimitingLengthForFlexuralYielding(CustomProfile Shape, double F_y, string BendingAxis = "XAxis", string FlexuralCompressionLocation = "Top", double E = 29000, bool IsRolledMember = true, string Code = "AISC360-10") { //Default values double L_pValue = 0; bool IsApplicable = false; //Calculation logic: MomentAxis Axis; //Calculation logic: bool IsValidStringAxis = Enum.TryParse(BendingAxis, true, out Axis); if (IsValidStringAxis == false) { throw new Exception("Axis selection not recognized. Check input string."); } FlexuralCompressionFiberPosition FlexuralCompression; //Calculation logic: bool IsValidStringCompressionLoc = Enum.TryParse(FlexuralCompressionLocation, true, out FlexuralCompression); if (IsValidStringCompressionLoc == false) { throw new Exception("Flexural compression location selection not recognized. Check input string."); } SteelMaterial mat = new SteelMaterial(F_y, E); FlexuralMemberFactory factory = new FlexuralMemberFactory(); ISteelBeamFlexure beam = factory.GetBeam(Shape.Section, mat, null, Axis, FlexuralCompression, IsRolledMember); SteelLimitStateValue L_p = beam.GetLimitingLengthForFullYielding_Lp(FlexuralCompression); L_pValue = L_p.Value; IsApplicable = L_p.IsApplicable; IsApplicable = L_p.IsApplicable; return(new Dictionary <string, object> { { "L_p", L_pValue } , { "IsApplicable", IsApplicable } }); }
public AffectedElementInFlexure(ISection GrossSection, ISection NetSection, double F_y, double F_u, bool IsCompactDoublySymmetricForFlexure = true, bool IsRolled = false) : base(F_y, F_u) { SteelMaterial material = new SteelMaterial(F_y, F_u, SteelConstants.ModulusOfElasticity, SteelConstants.ShearModulus); this.Section = new SteelGeneralSection(GrossSection, material); this.SectionNet = new SteelGeneralSection(NetSection, material); this.GrossSectionShape = GrossSection; this.NetSectionShape = NetSection; this.IsCompactDoublySymmetricForFlexure = IsCompactDoublySymmetricForFlexure; this.IsRolled = IsRolled; Log = new CalcLog(); }
public void DoublySymmetricIReturnsFlexuralLateralTorsionalBucklingStrengthInelasticW12() { FlexuralMemberFactory factory = new FlexuralMemberFactory(); AiscShapeFactory AiscShapeFactory = new AiscShapeFactory(); ISection section = AiscShapeFactory.GetShape("W12X26", ShapeTypeSteel.IShapeRolled); SteelMaterial mat = new SteelMaterial(50.0, 29000); ISteelBeamFlexure beam12 = factory.GetBeam(section, mat, null, MomentAxis.XAxis, FlexuralCompressionFiberPosition.Top); SteelLimitStateValue LTB = beam12.GetFlexuralLateralTorsionalBucklingStrength(1.0, 19 * 12, FlexuralCompressionFiberPosition.Top, Steel.AISC.FlexuralAndTorsionalBracingType.NoLateralBracing); double phiM_n = LTB.Value; double refValue = 60 * 12; // from AISC Steel Manual Table 3-10 double actualTolerance = EvaluateActualTolerance(phiM_n, refValue); Assert.True(actualTolerance <= tolerance); }
public void AngleReturnsFlexuralLTBStrengthL3X3() { FlexuralMemberFactory factory = new FlexuralMemberFactory(); AiscShapeFactory AiscShapeFactory = new AiscShapeFactory(); ISection section = AiscShapeFactory.GetShape("L3X3X3/8", ShapeTypeSteel.Angle); SteelMaterial mat = new SteelMaterial(36.0, 29000); ISteelBeamFlexure thisBeam = factory.GetBeam(section, mat, null, MomentAxis.XAxis, FlexuralCompressionFiberPosition.Top); SteelLimitStateValue LTB = beam.GetFlexuralLateralTorsionalBucklingStrength(1.0, 4.5 * 12, FlexuralCompressionFiberPosition.Top, Steel.AISC.FlexuralAndTorsionalBracingType.NoLateralBracing); double phiM_n = LTB.Value; double refValue = 88.9; double actualTolerance = EvaluateActualTolerance(phiM_n, refValue); Assert.True(actualTolerance <= tolerance); }
public double GetLowerBoundMomentOfInertia(sCrossSection cCheck, IFrameSet fs) { sKodeStructConverter kcon = new sKodeStructConverter(); SteelMaterial mat = kcon.ToKodeStructMaterial_Steel(fs.crossSection); double I_LB = 0; double b_eff = this.GetBeamEffectiveSlabWidth(fs); double SumQ_n = this.GetSumOfStudsStrength(fs); // assuming, // Shear Stud Anchor // Light Weight Concrete : 4ksi // solid concrete thickness = 2.5" // rib thickness = 3" // double h_solid = 2.5; double h_rib = 3.0; double F_y = mat.YieldStress; //?? unit ?? F_y of what?? double fc_prime = 4.0; //?? unit ?? //check lowerBound Moment of Inertia by check section??? ISection shape = kcon.ToKodeStructCrossSection(cCheck); if (shape is ISliceableShapeProvider) { ISliceableShapeProvider prov = shape as ISliceableShapeProvider; ISliceableSection sec = prov.GetSliceableShape(); CompositeBeamSection cs = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime); I_LB = cs.GetLowerBoundMomentOfInertia(SumQ_n); } else { if (shape is ISliceableSection) { ISliceableSection sec = shape as ISliceableSection; CompositeBeamSection cs = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime); I_LB = cs.GetLowerBoundMomentOfInertia(SumQ_n); } else { throw new Exception("Shape type not supported. Please provide a shape object of standard geometry"); } } return(I_LB); }
public void ExtendedPlateBucklingFlexuralStrength() { double phiR_n; double h_o = 9.0; double t_w = 0.5; SectionRectangular r = new SectionRectangular(t_w, h_o); SteelMaterial mat = new SteelMaterial(36); CalcLog log = new CalcLog(); AffectedElementInFlexure flexuralElement = new AffectedElementInFlexure(r, mat, log); double lambda = flexuralElement.GetLambda(10); double refValue = 0.408; double actualTolerance = EvaluateActualTolerance(lambda, refValue); Assert.LessOrEqual(actualTolerance, tolerance); }
public void DoublySymmetricIReturnsFlexuralMinorAxisYieldingStrength() { FlexuralMemberFactory factory = new FlexuralMemberFactory(); AiscShapeFactory AiscShapeFactory = new AiscShapeFactory(); ISection section = AiscShapeFactory.GetShape("W18X35", ShapeTypeSteel.IShapeRolled); SteelMaterial mat = new SteelMaterial(50.0, 29000); beam = factory.GetBeam(section, mat, null, MomentAxis.YAxis, FlexuralCompressionFiberPosition.Top); SteelLimitStateValue Y = beam.GetFlexuralYieldingStrength(FlexuralCompressionFiberPosition.Top); double phiM_n = Y.Value; double refValue = 0.9 * Math.Min(50.0 * 8.06, 1.6 * 50.0 * 5.12); double actualTolerance = EvaluateActualTolerance(phiM_n, refValue); Assert.LessOrEqual(actualTolerance, tolerance); }