public AluminumLimitStateValue GetLocalBucklingFlexuralCriticalStress(double b, double t, LateralSupportType LateralSupportType, FlexuralCompressionFiberPosition CompressionLocation, WeldCase WeldCase, SubElementType SubElementType = SubElementType.Flat) { double S_xc = GetSectionModulusCompressionSxc(CompressionLocation); double M_np = this.GetPlasticMoment(); FlexuralLocalBucklingElement LocalElement = new FlexuralLocalBucklingElement(this.Section.Material, b, t, LateralSupportType, M_np, S_xc, WeldCase, SubElementType); double F_b = LocalElement.GetCriticalStress(); double F_y = 0; if (WeldCase == Entities.WeldCase.NotAffected) { F_y = this.Section.Material.F_ty; } else { F_y = this.Section.Material.F_tyw; } if (F_b > F_y) { F_b = F_y; } return(new AluminumLimitStateValue(F_b, true)); }
//Direct Strength Method F.3-2 public AluminumLimitStateValue GetLocalBucklingStrength(double b, double t, LateralSupportType LateralSupportType, FlexuralCompressionFiberPosition CompressionLocation, WeldCase WeldCase, SubElementType SubElementType = SubElementType.Flat) { double S_xc = GetSectionModulusCompressionSxc(CompressionLocation); double M_np = this.GetPlasticMoment(); FlexuralLocalBucklingElement LocalElement = new FlexuralLocalBucklingElement(this.Section.Material, b, t, LateralSupportType, M_np, S_xc, WeldCase, SubElementType); double F_b = LocalElement.GetCriticalStress(); double M_n = S_xc * F_b; AluminumLimitStateValue Y = GetFlexuralYieldingStrength(CompressionLocation); bool applicable; double val; if (M_n > Y.Value) { applicable = false; val = -1.0; } else { applicable = true; val = 0.9 * M_n; } return(new AluminumLimitStateValue(val, applicable)); }
public void AluminumElementReturnsLocalBucklingStressF_b() { //6063,T6,Up to 1,extrusion AluminumMaterial mat = new AluminumMaterial("6063", "T6", "Up to 1", "extrusion"); //SectionBox sb = new SectionBox(null, 12, 4, 0.25, 0.25); //AluminumSection alSec = new AluminumSection(mat,sb); //AluminumFlexuralMember m = new AluminumFlexuralMember(alSec); FlexuralLocalBucklingElement lbe = new FlexuralLocalBucklingElement(mat, 7, 0.25, LateralSupportType.OneEdge, 100, 80, Aluminum.AA.Entities.WeldCase.NotAffected); double F_b = lbe.GetCriticalStress(); double refValue = 9.95; double actualTolerance = EvaluateActualTolerance(F_b, refValue); Assert.LessOrEqual(actualTolerance, tolerance); }
public void AluminumShapeReturnsLocalBucklingStressF_b() { //6063,T6,Up to 1,extrusion AluminumMaterial mat = new AluminumMaterial("6063", "T6", "Up to 1", "extrusion"); SectionBox sb = new SectionBox(null, 12, 4, 0.25, 0.25); AluminumSection alSec = new AluminumSection(mat, sb); AluminumFlexuralMember m = new AluminumFlexuralMember(alSec); FlexuralLocalBucklingElement lbe = new FlexuralLocalBucklingElement(mat, 7, 0.25, LateralSupportType.OneEdge, 100, 80, Aluminum.AA.Entities.WeldCase.NotAffected); double F_b = m.GetLocalBucklingFlexuralCriticalStress(7, 0.25, LateralSupportType.OneEdge, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Top, Aluminum.AA.Entities.WeldCase.NotAffected).Value; double refValue = 9.95; double actualTolerance = EvaluateActualTolerance(F_b, refValue); Assert.True(actualTolerance <= tolerance); }