示例#1
0
 public double GetBoltHoleWidth(BoltHoleType HoleType, bool IsTensionOrShearCalculation = true)
 {
     double d_h = 0.0;
     if (BoltHoleSizeCalculated == false)
     {
         GetBoltHoleDimensions(HoleType, IsTensionOrShearCalculation);
     }
     return d_hWidth;
 }
示例#2
0
        public double GetBoltHoleLength(BoltHoleType HoleType, bool IsTensionOrShearCalculation = true)
        {
            double d_h = 0.0;

            if (BoltHoleSizeCalculated == false)
            {
                GetBoltHoleDimensions(HoleType, IsTensionOrShearCalculation);
            }
            return(d_hLength);
        }
示例#3
0
        public BoltSlipCriticalGroupA(double Diameter, BoltThreadCase ThreadType,
                                      BoltFayingSurfaceClass FayingSurface, BoltHoleType HoleType,
                                      BoltFillerCase Fillers, int NumberOfSlipPlanes, ICalcLog log, double PretensionMultiplier = 1.13) :
            base(Diameter, ThreadType, FayingSurface, HoleType, Fillers, NumberOfSlipPlanes, log, PretensionMultiplier)
        {
            material = new BoltGroupAMaterial();

            nominalTensileStress = material.GetNominalTensileStress(ThreadType);
            nominalShearStress   = material.GetNominalTensileStress(ThreadType);
        }
        public BoltSlipCriticalGroupA(double Diameter, BoltThreadCase ThreadType,
            BoltFayingSurfaceClass FayingSurface, BoltHoleType HoleType,
            BoltFillerCase Fillers, int NumberOfSlipPlanes, ICalcLog log, double PretensionMultiplier = 1.13):
            base(Diameter,ThreadType,FayingSurface,HoleType,Fillers,NumberOfSlipPlanes,log,PretensionMultiplier)
        {
            material = new BoltGroupAMaterial();

            nominalTensileStress = material.GetNominalTensileStress(ThreadType);
            nominalShearStress = material.GetNominalTensileStress(ThreadType);
        }
示例#5
0
 public BoltSlipCritical(double Diameter, BoltThreadCase ThreadType,
     BoltFayingSurfaceClass FayingSurface, BoltHoleType HoleType,
     BoltFillerCase Fillers, int NumberOfSlipPlanes, ICalcLog log, double PretensionMultiplier=1.13)
     : base(Diameter, ThreadType, log)
 {
     this.fayingSurface = FayingSurface;
     this.holeType = HoleType;
     this.fillers = Fillers;
     this.pretensionMultiplier = PretensionMultiplier;
     this.numberOfSlipPlanes = NumberOfSlipPlanes;
 }
示例#6
0
 public BoltSlipCritical(double Diameter, BoltThreadCase ThreadType,
                         BoltFayingSurfaceClass FayingSurface, BoltHoleType HoleType,
                         BoltFillerCase Fillers, int NumberOfSlipPlanes, ICalcLog log, double PretensionMultiplier = 1.13)
     : base(Diameter, ThreadType, log)
 {
     this.fayingSurface        = FayingSurface;
     this.holeType             = HoleType;
     this.fillers              = Fillers;
     this.pretensionMultiplier = PretensionMultiplier;
     this.numberOfSlipPlanes   = NumberOfSlipPlanes;
 }
        /// <summary>
        /// Bearing Strength at Bolt Holes
        /// </summary>
        /// <param name="l_c">Clear distance, in the direction of the force, between the edge of the hole and the edge of the adjacent hole or edge of the material</param>
        /// <param name="d_b">Nominal bolt diameter</param>
        /// <param name="t">Thickness of connected material</param>
        /// <param name="F_y">Yield stress of base metal</param>
        /// <param name="F_u">Ultimate stress of base metal</param>
        /// <param name="BoltHoleType">Type of bolt hole</param>
        /// <param name="BoltHoleDeformationType">Identifies whetehr deformation at the bolt hole at service load is a design consideration</param>
        /// <param name="IsUnstiffenedHollowSection">Identifies whether this is a connection made using bolts that pass completely through an unstiffened box member or HSS</param>
        /// <returns></returns>
        public double GetBearingStrengthAtBoltHole(double l_c, double d_b, double t, double F_y, double F_u, BoltHoleType BoltHoleType, 
            BoltHoleDeformationType BoltHoleDeformationType, bool IsUnstiffenedHollowSection=false)
        {
            double phiR_n;
            if (IsUnstiffenedHollowSection == false)
            {
                        double phiR_n1;
                        double phiR_n2;
           
                if (BoltHoleType == Wosad.Steel.AISC.SteelEntities.Bolts.BoltHoleType.LSL_Perpendicular)
                {
                        //(J3-6c)
                        phiR_n1=0.75*(1.0*l_c*t*F_u);
                        phiR_n2=0.75*(2.0*d_b*t*F_u);
                }
                else
                {
                    if (BoltHoleDeformationType == Wosad.Steel.AISC.BoltHoleDeformationType.ConsideredUnderServiceLoad)
                    {
                         //(J3-6a)
                        phiR_n1=0.75*(1.2*l_c*t*F_u);
                        phiR_n2=0.75*(2.4*d_b*t*F_u);
 
                    }
                    else
                    {
                       //(J3-6b)
                        phiR_n1=0.75*(1.5*l_c*t*F_u);
                        phiR_n2=0.75*(3.0*d_b*t*F_u);
                    }
                }
                phiR_n = Math.Min(phiR_n1, phiR_n2);
            }
            else
	            {
                    phiR_n=0.75*(1.8*d_b*t*F_y);
	            }

            return phiR_n;
            }
示例#8
0
        private void GetBoltHoleDimensions(BoltHoleType HoleType, bool IsTensionOrShearCalculation = true)
        {
            #region Read Table Data

            //<Diameter><Standard>< Oversize><Short-Slot Width><Short-Slot Length><Long-Slot Width><Long-Slot Length>
            var Tv11         = new { d_b = 0.0, STD = 0.0, OVS = 0.0, SSL_Width = 0.0, SSL_Length = 0.0, LSL_Width = 0.0, LSL_Length = 0.0, }; // sample
            var AllBoltsList = ListFactory.MakeList(Tv11);

            using (StringReader reader = new StringReader(Resources.AISC360_10TableJ3_3NominalHoleDimensions))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    string[] Vals = line.Split(',');
                    if (Vals.Count() == 7)
                    {
                        double V0 = double.Parse(Vals[0], CultureInfo.InvariantCulture);
                        double V1 = double.Parse(Vals[1], CultureInfo.InvariantCulture);
                        double V2 = double.Parse(Vals[2], CultureInfo.InvariantCulture);
                        double V3 = double.Parse(Vals[3], CultureInfo.InvariantCulture);
                        double V4 = double.Parse(Vals[4], CultureInfo.InvariantCulture);
                        double V5 = double.Parse(Vals[5], CultureInfo.InvariantCulture);
                        double V6 = double.Parse(Vals[6], CultureInfo.InvariantCulture);


                        AllBoltsList.Add(new {
                            d_b        = V0,
                            STD        = V1,
                            OVS        = V2,
                            SSL_Width  = V3,
                            SSL_Length = V4,
                            LSL_Width  = V5,
                            LSL_Length = V6,
                        });
                    }
                }
            }

            #endregion

            if (Diameter >= 1 + 1.0 / 8.0)
            {
                switch (HoleType)
                {
                case BoltHoleType.STD:
                    d_hWidth  = Diameter + 1 / 16.0;
                    d_hLength = Diameter + 1 / 16.0;
                    break;

                case BoltHoleType.SSL_Perpendicular:
                    d_hWidth  = Diameter + 1 / 16.0;
                    d_hLength = Diameter + 3 / 8.0;
                    break;

                case BoltHoleType.SSL_Parallel:
                    d_hWidth  = Diameter + 1 / 16.0;
                    d_hLength = Diameter + 3 / 8.0;
                    break;

                case BoltHoleType.OVS:
                    d_hWidth  = Diameter + 5 / 16.0;
                    d_hLength = Diameter + 5 / 16.0;
                    break;

                case BoltHoleType.LSL_Perpendicular:
                    d_hWidth  = Diameter + 1 / 16.0;
                    d_hLength = Diameter * 2.5;
                    break;

                case BoltHoleType.LSL_Parallel:
                    d_hWidth  = Diameter + 1 / 16.0;
                    d_hLength = Diameter * 2.5;
                    break;
                }
            }
            else
            {
                var closest_d_b = AllBoltsList.Aggregate((x, y) => Math.Abs(x.d_b - Diameter) < Math.Abs(y.d_b - Diameter) ? x : y);
                switch (HoleType)
                {
                case BoltHoleType.STD:
                    d_hWidth  = closest_d_b.STD;
                    d_hLength = closest_d_b.STD;
                    break;

                case BoltHoleType.SSL_Perpendicular:
                    d_hWidth  = closest_d_b.SSL_Width;
                    d_hLength = closest_d_b.SSL_Length;
                    break;

                case BoltHoleType.SSL_Parallel:
                    d_hWidth  = closest_d_b.SSL_Width;
                    d_hLength = closest_d_b.SSL_Length;
                    break;

                case BoltHoleType.OVS:
                    d_hWidth  = closest_d_b.OVS;
                    d_hLength = closest_d_b.OVS;
                    break;

                case BoltHoleType.LSL_Perpendicular:
                    d_hWidth  = closest_d_b.LSL_Width;
                    d_hLength = closest_d_b.LSL_Length;
                    break;

                case BoltHoleType.LSL_Parallel:
                    d_hWidth  = closest_d_b.LSL_Width;
                    d_hLength = closest_d_b.LSL_Length;
                    break;
                }
            }
            // Per AISC add
            if (IsTensionOrShearCalculation == true)
            {
                d_hWidth  = d_hWidth + 1.0 / 16.0;
                d_hLength = d_hLength + 1.0 / 16.0;
            }

            BoltHoleSizeCalculated = true;
        }
        /// <summary>
        /// Bearing Strength at Bolt Holes
        /// </summary>
        /// <param name="l_c">Clear distance, in the direction of the force, between the edge of the hole and the edge of the adjacent hole or edge of the material</param>
        /// <param name="d_b">Nominal bolt diameter</param>
        /// <param name="t">Thickness of connected material</param>
        /// <param name="F_y">Yield stress of base metal</param>
        /// <param name="F_u">Ultimate stress of base metal</param>
        /// <param name="BoltHoleType">Type of bolt hole</param>
        /// <param name="BoltHoleDeformationType">Identifies whetehr deformation at the bolt hole at service load is a design consideration</param>
        /// <param name="IsUnstiffenedHollowSection">Identifies whether this is a connection made using bolts that pass completely through an unstiffened box member or HSS</param>
        /// <returns></returns>
        public double GetBearingStrengthAtBoltHole(double l_c, double d_b, double t, double F_y, double F_u, BoltHoleType BoltHoleType,
                                                   BoltHoleDeformationType BoltHoleDeformationType, bool IsUnstiffenedHollowSection = false)
        {
            double phiR_n;

            if (IsUnstiffenedHollowSection == false)
            {
                double phiR_n1;
                double phiR_n2;

                if (BoltHoleType == Kodestruct.Steel.AISC.SteelEntities.Bolts.BoltHoleType.LSL_Perpendicular)
                {
                    //(J3-6c)
                    phiR_n1 = 0.75 * (1.0 * l_c * t * F_u);
                    phiR_n2 = 0.75 * (2.0 * d_b * t * F_u);
                }
                else
                {
                    if (BoltHoleDeformationType == Kodestruct.Steel.AISC.BoltHoleDeformationType.ConsideredUnderServiceLoad)
                    {
                        //(J3-6a)
                        phiR_n1 = 0.75 * (1.2 * l_c * t * F_u);
                        phiR_n2 = 0.75 * (2.4 * d_b * t * F_u);
                    }
                    else
                    {
                        //(J3-6b)
                        phiR_n1 = 0.75 * (1.5 * l_c * t * F_u);
                        phiR_n2 = 0.75 * (3.0 * d_b * t * F_u);
                    }
                }
                phiR_n = Math.Min(phiR_n1, phiR_n2);
            }
            else
            {
                phiR_n = 0.75 * (1.8 * d_b * t * F_y);
            }

            return(phiR_n);
        }
示例#10
0
        private void GetBoltHoleDimensions(BoltHoleType HoleType, bool IsTensionOrShearCalculation=true)
        {

            #region Read Table Data

            //<Diameter><Standard>< Oversize><Short-Slot Width><Short-Slot Length><Long-Slot Width><Long-Slot Length>
            var Tv11 = new { d_b = 0.0, STD = 0.0, OVS = 0.0, SSL_Width = 0.0, SSL_Length = 0.0, LSL_Width = 0.0, LSL_Length = 0.0,}; // sample
            var AllBoltsList = ListFactory.MakeList(Tv11);

            using (StringReader reader = new StringReader(Resources.AISC360_10TableJ3_3NominalHoleDimensions))
            {
                string line;
                while ((line = reader.ReadLine()) != null)
                {
                    string[] Vals = line.Split(',');
                    if (Vals.Count() == 7)
                    {
                        double V0 = double.Parse(Vals[0], CultureInfo.InvariantCulture);
                        double V1 = double.Parse(Vals[1], CultureInfo.InvariantCulture);
                        double V2 = double.Parse(Vals[2], CultureInfo.InvariantCulture);
                        double V3 = double.Parse(Vals[3], CultureInfo.InvariantCulture);
                        double V4 = double.Parse(Vals[4], CultureInfo.InvariantCulture);
                        double V5 = double.Parse(Vals[5], CultureInfo.InvariantCulture);
                        double V6 = double.Parse(Vals[6], CultureInfo.InvariantCulture);


                        AllBoltsList.Add(new { 
                            d_b =           V0,
                            STD =           V1,
                            OVS =           V2,
                            SSL_Width =     V3,
                            SSL_Length =    V4,
                            LSL_Width =     V5,
                            LSL_Length =    V6,
                        
                        });
                    }
                }

            }

            #endregion

            if (Diameter >= 1 + 1.0 / 8.0)
            {
                switch (HoleType)
                {
                    case BoltHoleType.STD:
                        d_hWidth = Diameter + 1 / 16.0;
                        d_hLength = Diameter + 1 / 16.0;
                        break;
                    case BoltHoleType.SSL_Perpendicular:
                        d_hWidth = Diameter + 1 / 16.0;
                        d_hLength = Diameter +3 / 8.0;
                        break;
                    case BoltHoleType.SSL_Parallel:
                        d_hWidth = Diameter + 1 / 16.0;
                        d_hLength = Diameter +3 / 8.0;
                        break;
                    case BoltHoleType.OVS:
                        d_hWidth = Diameter + 5 / 16.0;
                        d_hLength = Diameter +5 / 16.0;
                        break;
                    case BoltHoleType.LSL_Perpendicular:
                        d_hWidth = Diameter + 1 / 16.0;
                        d_hLength = Diameter*2.5;
                        break;
                    case BoltHoleType.LSL_Parallel:
                        d_hWidth = Diameter + 1 / 16.0;
                       d_hLength = Diameter*2.5;
                        break;
                }
            }
            else
            {


                var closest_d_b = AllBoltsList.Aggregate((x, y) => Math.Abs(x.d_b - Diameter) < Math.Abs(y.d_b - Diameter) ? x : y);
                switch (HoleType)
                {
                    case BoltHoleType.STD:
                        d_hWidth = closest_d_b.STD;
                        d_hLength = closest_d_b.STD;
                        break;
                    case BoltHoleType.SSL_Perpendicular:
                        d_hWidth = closest_d_b.SSL_Width;
                        d_hLength = closest_d_b.SSL_Length;
                        break;
                    case BoltHoleType.SSL_Parallel:
                        d_hWidth = closest_d_b.SSL_Width;
                        d_hLength = closest_d_b.SSL_Length;
                        break;
                    case BoltHoleType.OVS:
                        d_hWidth = closest_d_b.OVS;
                        d_hLength = closest_d_b.OVS;
                        break;
                    case BoltHoleType.LSL_Perpendicular:
                        d_hWidth = closest_d_b.LSL_Width;
                        d_hLength = closest_d_b.LSL_Length;
                        break;
                    case BoltHoleType.LSL_Parallel:
                        d_hWidth = closest_d_b.LSL_Width;
                        d_hLength = closest_d_b.LSL_Length;
                        break;
                }
            }
            // Per AISC add 
            if (IsTensionOrShearCalculation==true)
            {
                d_hWidth = d_hWidth+ 1.0/16.0;
                d_hLength = d_hLength + 1.0 / 16.0; 
            }

            BoltHoleSizeCalculated = true;

        }
示例#11
0
        public IBoltSlipCritical GetSlipCriticalBolt(double Diameter, BoltThreadCase ThreadType, BoltFayingSurfaceClass SurfaceClass, BoltHoleType HoleType, BoltFillerCase FillerCase, double NumberOfSlipPlanes)
        {
            CalcLog log = new CalcLog();
            int NPlanes = (int)NumberOfSlipPlanes;
            IBoltSlipCritical bsc = null;
            switch (MaterialId)
            {
                case "A325": bsc = new BoltSlipCriticalGroupA(Diameter, ThreadType, SurfaceClass, HoleType, FillerCase, NPlanes, log); break;
                case "A490": bsc = new BoltSlipCriticalGroupB(Diameter, ThreadType, SurfaceClass, HoleType, FillerCase, NPlanes, log); break;
                case "F1852": bsc = new BoltSlipCriticalGroupA(Diameter, ThreadType, SurfaceClass, HoleType, FillerCase, NPlanes, log); break;
                case "A354GradeBC": bsc = new BoltSlipCriticalGroupA(Diameter, ThreadType, SurfaceClass, HoleType, FillerCase, NPlanes, log); break;
                case "A354GradeBD": bsc = new BoltSlipCriticalGroupB(Diameter, ThreadType, SurfaceClass, HoleType, FillerCase, NPlanes, log); break;
                case "A449": bsc = new BoltSlipCriticalGroupA(Diameter, ThreadType, SurfaceClass, HoleType, FillerCase, NPlanes, log); break;
                default: throw new Exception("Unrecognized bolt material or specified material cannot be used for high-strength bolting. Check input");

            }
            return bsc;
        }
示例#12
0
        public IBoltSlipCritical GetSlipCriticalBolt(double Diameter, BoltThreadCase ThreadType, BoltFayingSurfaceClass SurfaceClass, BoltHoleType HoleType, BoltFillerCase FillerCase, double NumberOfSlipPlanes)
        {
            CalcLog           log     = new CalcLog();
            int               NPlanes = (int)NumberOfSlipPlanes;
            IBoltSlipCritical bsc     = null;

            switch (MaterialId)
            {
            case "A325": bsc = new BoltSlipCriticalGroupA(Diameter, ThreadType, SurfaceClass, HoleType, FillerCase, NPlanes, log); break;

            case "A490": bsc = new BoltSlipCriticalGroupB(Diameter, ThreadType, SurfaceClass, HoleType, FillerCase, NPlanes, log); break;

            case "F1852": bsc = new BoltSlipCriticalGroupA(Diameter, ThreadType, SurfaceClass, HoleType, FillerCase, NPlanes, log); break;

            case "A354GradeBC": bsc = new BoltSlipCriticalGroupA(Diameter, ThreadType, SurfaceClass, HoleType, FillerCase, NPlanes, log); break;

            case "A354GradeBD": bsc = new BoltSlipCriticalGroupB(Diameter, ThreadType, SurfaceClass, HoleType, FillerCase, NPlanes, log); break;

            case "A449": bsc = new BoltSlipCriticalGroupA(Diameter, ThreadType, SurfaceClass, HoleType, FillerCase, NPlanes, log); break;

            default: throw new Exception("Unrecognized bolt material or specified material cannot be used for high-strength bolting. Check input");
            }
            return(bsc);
        }