Beispiel #1
0
        public AffectedElementInCompression(double F_y, double b, double t)
        {
            SteelMaterial      material = new SteelMaterial(F_y, double.PositiveInfinity, SteelConstants.ModulusOfElasticity, SteelConstants.ShearModulus);
            SectionRectangular section  = new SectionRectangular(b, t);

            Section = new SteelPlateSection(section, material);
        }
 public ChsTransversePlate(SteelChsSection Hss, SteelPlateSection Plate, ICalcLog CalcLog, bool IsTensionHss,
                           double P_uHss, double M_uHss)
     : base(Hss, Plate, CalcLog, IsTensionHss, P_uHss, M_uHss)
 {
     //assume 90 degrees for plate angle
     Angle = 90.0;
 }
        public void HssRhsConcentratedForceLongitudinalPlateReturnsValue()
        {
            SectionTube     ch      = new SectionTube(null, 8, 8, 0.25, 0.93 * 0.25, 1.5 * 0.25);
            SteelMaterial   matE    = new SteelMaterial(46.0, 65, SteelConstants.ModulusOfElasticity, SteelConstants.ShearModulus);
            SteelRhsSection Element = new SteelRhsSection(ch, matE);

            SectionRectangular rec  = new SectionRectangular(0.25, 8.0);
            SteelMaterial      matR = new SteelMaterial(36.0);
            SteelPlateSection  pl   = new SteelPlateSection(rec, matR);

            CalcLog log = new CalcLog();

            RhsLongitudinalPlate concForceConnection = new RhsLongitudinalPlate(Element, pl, log, false, 45.0, 148.0, 0.0);
            double phiR_n = concForceConnection.GetHssMaximumPlateThicknessForShearLoad().Value;

            //double refValueSec = 46.2;
            //double actualToleranceSec = EvaluateActualTolerance(phiR_n, refValueSec);
            //Assert.LessOrEqual(actualToleranceSec, tolerance);
        }
        public void HssRhsConcentratedForceThroughPlateReturnsValue()
        {
            SectionTube     ch      = new SectionTube(null, 8, 8, 0.25, 0.93 * 0.25, 1.5 * 0.25);
            SteelMaterial   matE    = new SteelMaterial(46.0);
            SteelRhsSection Element = new SteelRhsSection(ch, matE);

            SectionRectangular rec  = new SectionRectangular(0.25, 8.0);
            SteelMaterial      matR = new SteelMaterial(36.0);
            SteelPlateSection  pl   = new SteelPlateSection(rec, matR);

            CalcLog log = new CalcLog();

            RhsLongitudinalThroughPlate concForceConnection = new RhsLongitudinalThroughPlate(Element, pl, log, false, 45.0, 148.0, 0.0);
            double phiR_n = concForceConnection.GetHssWallPlastificationStrengthUnderAxialLoad().Value;

            double refValueSec        = 46.2;
            double actualToleranceSec = EvaluateActualTolerance(phiR_n, refValueSec);

            Assert.True(actualToleranceSec <= tolerance);
        }
 public RhsCapPlate(SteelRhsSection Hss, SteelPlateSection Plate, ICalcLog CalcLog, bool IsTensionHss,
                    double P_uChord, double M_uChord)
     : base(Hss, Plate, CalcLog, IsTensionHss, P_uChord, M_uChord)
 {
 }
Beispiel #6
0
 public ChsLongitudinalPlate(SteelChsSection Hss, SteelPlateSection Plate, ICalcLog CalcLog, bool IsTensionHss, double Angle,
                             double P_uHss, double M_uHss)
     : base(Hss, Plate, CalcLog, IsTensionHss, P_uHss, M_uHss)
 {
     this.Angle = Angle;
 }
 public ChsToPlateConnection(SteelChsSection Hss, SteelPlateSection Plate, ICalcLog CalcLog, bool IsTensionHss, double P_uHss, double M_uHss)
     : base(IsTensionHss, P_uHss, M_uHss, CalcLog)
 {
     this.hss   = Hss;
     this.plate = Plate;
 }
Beispiel #8
0
        public static Dictionary <string, object> HssCapPlateLocalYieldingOrCripplingOfHss(CustomProfile HssSection, CustomProfile PlateSection, double t_pCap, double F_y, double F_yp, bool IsTensionHss, double P_uHss, double M_uHss)
        {
            //Default values
            double phiR_n = 0;
            bool   IsApplicableLimitState = false;


            //Calculation logic:
            CalcLog log = new CalcLog();
            SteelLimitStateValue limitState = null;

            //PLATE

            SteelPlateSection pl = null;

            if (!(PlateSection.Section is ISectionRectangular))
            {
                throw new Exception("Failed to convert section. Section needs to be either a Pipe or a Tube. Please check input.");
            }
            else
            {
                SteelMaterial       mat = new SteelMaterial(F_y);
                ISectionRectangular rect = PlateSection.Section as ISectionRectangular;
                double             t_pl, b_pl = 0.0;
                SectionRectangular rSect;
                if (rect.B <= rect.H)
                {
                    rSect = new SectionRectangular(rect.B, rect.H);
                }
                else
                {
                    rSect = new SectionRectangular(rect.H, rect.B);
                }
                pl = new SteelPlateSection(rSect, mat);
            }


            //HSS

            if (!(HssSection.Section is ISectionHollow))
            {
                throw new Exception("Failed to convert section. Section needs to be either a Pipe or a Tube. Please check input.");
            }
            else
            {
                SteelMaterial mat = new SteelMaterial(F_y);
                if (HssSection.Section is ISectionPipe)
                {
                    SteelChsSection sec    = new SteelChsSection(HssSection.Section as ISectionPipe, mat);
                    ChsCapPlate     capRhs = new ChsCapPlate(sec, pl, t_pCap, log, IsTensionHss, P_uHss, M_uHss);

                    limitState             = capRhs.GetHssYieldingOrCrippling();
                    phiR_n                 = limitState.Value;
                    IsApplicableLimitState = limitState.IsApplicable;
                }
                else if (HssSection.Section is ISectionTube)
                {
                    SteelRhsSection sec    = new SteelRhsSection(HssSection.Section as ISectionTube, mat);
                    RhsCapPlate     capRhs = new RhsCapPlate(sec, pl, t_pCap, log, IsTensionHss, P_uHss, M_uHss);

                    limitState             = capRhs.GetHssYieldingOrCrippling();
                    phiR_n                 = limitState.Value;
                    IsApplicableLimitState = limitState.IsApplicable;
                }
                else
                {
                    throw new Exception("Unsupported type of hollow section. Please use Tube or Pipe.");
                }
            }



            return(new Dictionary <string, object>
            {
                { "phiR_n", phiR_n }
                , { "IsApplicableLimitState", IsApplicableLimitState }
            });
        }
        public static Dictionary <string, object> HssToTransversePlateLocalCripplingAndYieldingStrengthOfHss(CustomProfile HssSection, CustomProfile PlateSection,
                                                                                                             double theta, string HssTransversePlateType, double F_y, double F_yp, bool IsTensionHss, double P_uHss, double M_uHss)
        {
            //Default values
            double phiR_n = 0;
            bool   IsApplicableLimitState = false;


            //Calculation logic:
            CalcLog log = new CalcLog();
            SteelLimitStateValue limitState = null;

            //PLATE

            SteelPlateSection pl = null;

            if (!(PlateSection.Section is ISectionRectangular))
            {
                throw new Exception("Failed to convert section. Section needs to be either a Pipe or a Tube. Please check input.");
            }
            else
            {
                SteelMaterial       mat = new SteelMaterial(F_y);
                ISectionRectangular rect = PlateSection.Section as ISectionRectangular;
                double t_pl, b_pl = 0.0;
                KodestructSection.SectionRectangular rSect;
                if (rect.B <= rect.H)
                {
                    rSect = new KodestructSection.SectionRectangular(rect.B, rect.H);
                }
                else
                {
                    rSect = new KodestructSection.SectionRectangular(rect.H, rect.B);
                }
                pl = new SteelPlateSection(rSect, mat);
            }

            TransversePlateType transvPlateType;
            bool IsValidTransvPlate = Enum.TryParse(HssTransversePlateType, true, out transvPlateType);

            if (IsValidTransvPlate == false)
            {
                throw new Exception("Failed to convert string. Transverse plate type must be TConnection or XConnection. Please check input");
            }

            //HSS

            if (!(HssSection.Section is ISectionHollow))
            {
                throw new Exception("Failed to convert section. Section needs to be either a Pipe or a Tube. Please check input.");
            }
            else
            {
                SteelMaterial mat = new SteelMaterial(F_y);
                if (HssSection.Section is ISectionPipe)
                {
                    SteelChsSection    sec = new SteelChsSection(HssSection.Section as ISectionPipe, mat);
                    ChsTransversePlate transversePlateChs = new ChsTransversePlate(sec, pl, log, IsTensionHss, P_uHss, M_uHss);

                    limitState             = transversePlateChs.GetLocalCripplingAndYieldingStrengthOfHss();
                    phiR_n                 = limitState.Value;
                    IsApplicableLimitState = limitState.IsApplicable;
                }
                else if (HssSection.Section is ISectionTube)
                {
                    SteelRhsSection    sec = new SteelRhsSection(HssSection.Section as ISectionTube, mat);
                    RhsTransversePlate transversePlateRhs = new RhsTransversePlate(sec, pl, log, IsTensionHss, transvPlateType, P_uHss, M_uHss);

                    limitState             = transversePlateRhs.GetLocalCripplingAndYieldingStrengthOfHss();
                    phiR_n                 = limitState.Value;
                    IsApplicableLimitState = limitState.IsApplicable;
                }
                else
                {
                    throw new Exception("Unsupported type of hollow section. Please use Tube or Pipe.");
                }
            }

            return(new Dictionary <string, object>
            {
                { "phiR_n", phiR_n }
                , { "IsApplicableLimitState", IsApplicableLimitState }
            });
        }
 public ChsCapPlate(SteelChsSection Hss, SteelPlateSection Plate, double t_plCap, ICalcLog CalcLog, bool IsTensionHss, double P_uHss, double M_uHss)
     : base(Hss, Plate, CalcLog, IsTensionHss, P_uHss, M_uHss)
 {
     this.t_plCap = t_plCap;
 }
        public static Dictionary <string, object> HssToLongitudinalPlateMaximumPlateThicknessForShear(CustomProfile HssSection, CustomProfile PlateSection,
                                                                                                      double F_y, double F_u, double F_yp, bool IsTensionHss, double P_uHss, double M_uHss)
        {
            //Default values
            double t_max = 0;


            //Calculation logic:
            CalcLog log = new CalcLog();
            SteelLimitStateValue limitState = null;

            //PLATE

            SteelPlateSection pl = null;

            if (!(PlateSection.Section is ISectionRectangular))
            {
                throw new Exception("Failed to convert section. Section needs to be either a Pipe or a Tube. Please check input.");
            }
            else
            {
                SteelMaterial       mat = new SteelMaterial(F_y, F_u, SteelConstants.ModulusOfElasticity, SteelConstants.ShearModulus);
                ISectionRectangular rect = PlateSection.Section as ISectionRectangular;
                double             t_pl, b_pl = 0.0;
                SectionRectangular rSect;
                if (rect.B <= rect.H)
                {
                    rSect = new SectionRectangular(rect.B, rect.H);
                }
                else
                {
                    rSect = new SectionRectangular(rect.H, rect.B);
                }
                pl = new SteelPlateSection(rSect, mat);
            }


            //HSS

            if (!(HssSection.Section is ISectionHollow))
            {
                throw new Exception("Failed to convert section. Section needs to be either a Pipe or a Tube. Please check input.");
            }
            else
            {
                SteelMaterial mat = new SteelMaterial(F_y);
                if (HssSection.Section is ISectionPipe)
                {
                    SteelChsSection      sec = new SteelChsSection(HssSection.Section as ISectionPipe, mat);
                    ChsLongitudinalPlate longitudinalPlateChs = new ChsLongitudinalPlate(sec, pl, log, IsTensionHss, 90.0, P_uHss, M_uHss);

                    //limitState = longitudinalPlateChs.ge
                    //phiR_n = limitState.Value;
                    //IsApplicableLimitState = limitState.IsApplicable;
                    t_max = longitudinalPlateChs.GetHssMaximumPlateThicknessForShearLoad().Value;
                }
                else if (HssSection.Section is ISectionTube)
                {
                    SteelRhsSection      sec = new SteelRhsSection(HssSection.Section as ISectionTube, mat);
                    RhsLongitudinalPlate longitudinalPlateRhs = new RhsLongitudinalPlate(sec, pl, log, IsTensionHss, 90.0, P_uHss, M_uHss);

                    //limitState = longitudinalPlateRhs.GetHssYieldingOrCrippling();
                    //phiR_n = limitState.Value;
                    //IsApplicableLimitState = limitState.IsApplicable;
                    t_max = longitudinalPlateRhs.GetHssMaximumPlateThicknessForShearLoad().Value;
                }
                else
                {
                    throw new Exception("Unsupported type of hollow section. Please use Tube or Pipe.");
                }
            }

            return(new Dictionary <string, object>
            {
                { "t_max", t_max }
            });
        }
Beispiel #12
0
 public RhsTransversePlate(SteelRhsSection Hss, SteelPlateSection Plate, ICalcLog CalcLog, bool IsTensionHss, TransversePlateType PlateType,
                           double P_uHss, double M_uHss)
     : base(Hss, Plate, CalcLog, IsTensionHss, P_uHss, M_uHss)
 {
     this.PlateType = PlateType;
 }
Beispiel #13
0
        public static Dictionary <string, object> HssToLongitudinalPlateWallPlastification(CustomProfile HssSection, CustomProfile PlateSection,
                                                                                           double F_y, double F_yp, double P_uHss, double M_uHss, double theta = 90.0, bool IsTensionHss = false, bool IsThroughPlate = false)
        {
            //Default values
            double phiR_n = 0;
            bool   IsApplicableLimitState = false;


            //Calculation logic:
            CalcLog log = new CalcLog();
            SteelLimitStateValue limitState = null;

            //PLATE

            SteelPlateSection pl = null;

            if (!(PlateSection.Section is ISectionRectangular))
            {
                throw new Exception("Failed to convert section. Section needs to be either a Pipe or a Tube. Please check input.");
            }
            else
            {
                SteelMaterial       mat = new SteelMaterial(F_y);
                ISectionRectangular rect = PlateSection.Section as ISectionRectangular;
                double t_pl, b_pl = 0.0;
                KodestructSection.SectionRectangular rSect;
                if (rect.B <= rect.H)
                {
                    rSect = new KodestructSection.SectionRectangular(rect.B, rect.H);
                }
                else
                {
                    rSect = new KodestructSection.SectionRectangular(rect.H, rect.B);
                }
                pl = new SteelPlateSection(rSect, mat);
            }


            //HSS

            if (!(HssSection.Section is ISectionHollow))
            {
                throw new Exception("Failed to convert section. Section needs to be either a Pipe or a Tube. Please check input.");
            }
            else
            {
                SteelMaterial mat = new SteelMaterial(F_y);
                if (HssSection.Section is ISectionPipe)
                {
                    SteelChsSection      sec = new SteelChsSection(HssSection.Section as ISectionPipe, mat);
                    ChsLongitudinalPlate longitudinalPlateChs = new ChsLongitudinalPlate(sec, pl, log, IsTensionHss, theta, P_uHss, M_uHss);

                    limitState = longitudinalPlateChs.GetHssWallPlastificationStrengthUnderAxialLoad();
                    if (IsThroughPlate == false)
                    {
                        phiR_n = limitState.Value;
                    }
                    else
                    {
                        phiR_n = 2.0 * limitState.Value; //analogous to Rectangular HSS provsions
                    }

                    IsApplicableLimitState = limitState.IsApplicable;
                }
                else if (HssSection.Section is ISectionTube)
                {
                    SteelRhsSection sec = new SteelRhsSection(HssSection.Section as ISectionTube, mat);
                    if (IsThroughPlate == false)
                    {
                        RhsLongitudinalPlate longitudinalPlateRhs = new RhsLongitudinalPlate(sec, pl, log, IsTensionHss, theta, P_uHss, M_uHss);

                        limitState             = longitudinalPlateRhs.GetHssWallPlastificationStrengthUnderAxialLoad();
                        phiR_n                 = limitState.Value;
                        IsApplicableLimitState = limitState.IsApplicable;
                    }
                    else
                    {
                        RhsLongitudinalThroughPlate longitudinalPlateRhs = new RhsLongitudinalThroughPlate(sec, pl, log, IsTensionHss, theta, P_uHss, M_uHss);

                        limitState             = longitudinalPlateRhs.GetHssWallPlastificationStrengthUnderAxialLoad();
                        phiR_n                 = limitState.Value;
                        IsApplicableLimitState = limitState.IsApplicable;
                    }
                }
                else
                {
                    throw new Exception("Unsupported type of hollow section. Please use Tube or Pipe.");
                }
            }

            return(new Dictionary <string, object>
            {
                { "phiR_n", phiR_n }
                , { "IsApplicableLimitState", IsApplicableLimitState }
            });
        }