public MaterialBucklingConstantProvider(BucklingType BucklingType, SubElementType SubElementType, IAluminumMaterial Material, WeldCase WeldCase) { this.BucklingType = BucklingType; this.SubElementType = SubElementType; this.Material = Material; this.WeldCase = WeldCase; string temper = Material.Temper; }
public FlexuralLocalBucklingElement(IAluminumMaterial Material, double b, double t, LateralSupportType LateralSupportType, double M_np, double S_xc, WeldCase WeldCase, SubElementType SubElementType = SubElementType.Flat) { this.Material = Material; this.b = b; this.t = t; this.M_np = M_np; this.S_xc = S_xc; this.LateralSupportType = LateralSupportType; }
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)); }