public void GetNominalTensileStrengthModifiedToIncludeTheEffectsOfShearStressDG29()
         {
             BoltFactory bf = new BoltFactory("A325");

             IBoltBearing bolt = bf.GetBearingBolt(7.0 / 8.0, "N");
             double V = 8.05;
             double phi_R_n = bolt.GetAvailableTensileStrength(V);

             Assert.AreEqual(39.3, Math.Round(phi_R_n, 1));
         }
        public static Dictionary<string, object> ModifiedBoltShearStrength(double V_u,double d_b,string BoltMaterialId,
            string BoltThreadCase, string Code = "AISC360-10")
        {
            //Default values
            double phiR_nt_modified = 0.0;

            //Calculation logic:
            BoltFactory bf = new BoltFactory(BoltMaterialId);
            IBoltBearing bolt = bf.GetBearingBolt(d_b, BoltThreadCase);
            phiR_nt_modified = bolt.GetAvailableTensileStrength(V_u);

            return new Dictionary<string, object>
            {
                {"phiR_nt_modified", phiR_nt_modified}  
            };
        }
        public static Dictionary<string, object> BearingBoltShearStrength(double d_b, string BoltMaterialId, string BoltThreadCase,
            double NumberShearPlanes, bool IsEndLoadedConnectionWithLengthEfect = false, string Code = "AISC360-10")
        {
            //Default values
            double phiR_nv = 0;


            //Calculation logic:
            BoltFactory bf = new BoltFactory(BoltMaterialId);
            IBoltBearing bolt = bf.GetBearingBolt(d_b, BoltThreadCase);
            phiR_nv = bolt.GetAvailableShearStrength(NumberShearPlanes, IsEndLoadedConnectionWithLengthEfect);

            return new Dictionary<string, object>
            {
                { "phiR_nv", phiR_nv }
 
            };
        }