public AffectedElementInFlexure(SectionOfPlateWithHoles Section, ISteelMaterial Material, ICalcLog CalcLog, bool IsRolled = false) : base(Section, Material, CalcLog) { this.HasHolesInTensionFlange = false; this.A_fg = 0; this.A_fn = 0; this.IsRolled = IsRolled; }
public void ConnectedPlateReturnsFlexuralStrength() { ICalcLog log = new CalcLog(); SectionRectangular Section = new SectionRectangular(0.5, 8); SectionOfPlateWithHoles NetSection = new SectionOfPlateWithHoles("", 0.5, 8, 2, 0.01, 2, 2, new Common.Mathematics.Point2D(0, 0)); AffectedElementInFlexure element = new AffectedElementInFlexure(Section, NetSection, 50, 65.0); double phiM_n = element.GetFlexuralStrength(0); Assert.True(360.0 == phiM_n); }
public void CompoundShapeReturnsZ_netWith2Holes() { double t_p = 0.5; double d_pl = 6.0; double n = 2; double d_hole = 13.0 / 16.0 + 1.0 / 16.0; SectionOfPlateWithHoles plate = new SectionOfPlateWithHoles("", t_p, d_pl, n, d_hole, 1.5, 1.5, new Point2D(0, 0)); double Z_net = plate.Z_x; double refValue = 3.19; double actualTolerance = EvaluateActualTolerance(Z_net, refValue); Assert.LessOrEqual(actualTolerance, tolerance); }
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); }