示例#1
0
 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);
        }
示例#4
0
        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);
        }