private ISteelBeamFlexure CreateIBeam(CompactnessClassFlexure FlangeCompactness, CompactnessClassFlexure WebCompactness, ISectionI Section, ISteelMaterial Material, ICalcLog Log, bool IsRolled) { SteelSectionI steelSection = new SteelSectionI(Section, Material); ISteelBeamFlexure beam = null; if (FlangeCompactness == CompactnessClassFlexure.Compact && WebCompactness == CompactnessClassFlexure.Compact) { //F2 beam = new BeamIDoublySymmetricCompact(steelSection, IsRolled, Log); } else if (WebCompactness == CompactnessClassFlexure.Compact && FlangeCompactness != CompactnessClassFlexure.Compact) { //F3 throw new NotImplementedException(); } return(beam); }
private ISteelBeamFlexure CreateIBeam(CompactnessClassFlexure FlangeCompactness, CompactnessClassFlexure WebCompactness, ISectionI Section, ISteelMaterial Material, ICalcLog Log, bool IsRolled) { SteelSectionI steelSection = new SteelSectionI(Section, Material); ISteelBeamFlexure beam = null; if (FlangeCompactness== CompactnessClassFlexure.Compact && WebCompactness == CompactnessClassFlexure.Compact) { //F2 beam = new BeamIDoublySymmetricCompact(steelSection, IsRolled, Log); } else if (WebCompactness == CompactnessClassFlexure.Compact && FlangeCompactness!= CompactnessClassFlexure.Compact) { //F3 throw new NotImplementedException(); } return beam; }
public double GetFlexuralStrength() { double phiM_n =0.0; CalcLog log = new CalcLog(); ISection section = Section.Shape; if (section is SectionRectangular || section is SectionOfPlateWithHoles || section is SectionI) { if (section is SectionOfPlateWithHoles) { SectionOfPlateWithHoles plateWithHoles = section as SectionOfPlateWithHoles; double S_g = plateWithHoles.B * Math.Pow(plateWithHoles.H, 2); double Z_net = plateWithHoles.Z_x; double Y = 0.9* this.Section.Material.YieldStress * S_g; //Flexural Yielding double R = 0.75* this.Section.Material.UltimateStress * Z_net; phiM_n = Math.Min(Y, R); } else if (section is ISectionI ) { ISectionI IShape = section as ISectionI; double R = GetTensionFlangeRuptureStrength(IShape); if (IsCompactDoublySymmetricForFlexure == false) { throw new Exception("Noncompact and singly symmetric I-shapes are not supported for connection checks."); } else { BeamIDoublySymmetricCompact IBeam = new BeamIDoublySymmetricCompact(Section,this.IsRolled, Log); double Y = 0.9 * IBeam.GetMajorNominalPlasticMoment(); phiM_n = Math.Min(Y, R); } } else //Rectangle { SectionRectangular plate = section as SectionRectangular; if (plate !=null) { double Z = plate.Z_x; double Y =0.9* this.Section.Material.YieldStress * Z; phiM_n = Y; } } } else { throw new Exception("Wrong section type. Only SectionRectangular, SectionOfPlateWithHoles and SectionI are supported."); } return phiM_n; }