Esempio n. 1
0
        public void CheckLambda_LWConcWithSplitStrength_ReturnsLargerThan0_75()
        {
            DevelopmentTension tensDev = CreateDevelopmentObject(4000.0, ConcreteTypeByWeight.Lightweight, 100.0, 1.0, 1.0, false, 1.0, false);
            double             lambda  = tensDev.CheckLambda(0.85);

            Assert.AreEqual(0.85, lambda);
        }
Esempio n. 2
0
        public void CheckLambda_NormalConc_Returns1()
        {
            DevelopmentTension tensDev = CreateDevelopmentObject(4000.0, ConcreteTypeByWeight.Normalweight, 0.0, 1.0, 1.0, false, 1.0, false);
            double             lambda  = tensDev.CheckLambda(1.0);

            Assert.AreEqual(1.0, lambda);
        }
Esempio n. 3
0
        public void CheckLambda_LWConc_Returns0_75()
        {
            DevelopmentTension tensDev = CreateDevelopmentObject(4000.0, ConcreteTypeByWeight.Lightweight, 0.0, 1.0, 1.0, false, 1.0, false);
            double             lambda  = tensDev.CheckLambda(0.5);

            Assert.AreEqual(0.5, lambda);
        }
        private DevelopmentTension CreateDevelopmentObject(double RebarDiameter, bool IsEpoxyCoated, double ClearSpacing, double ClearCover)
        {
            DevelopmentTension tensDev = this.CreateDevelopmentObject(4000.0, RebarDiameter, IsEpoxyCoated, ConcreteTypeByWeight.Lightweight, 0.0,
                                                                      ClearSpacing, ClearCover, false, 1.0, false);

            return(tensDev);
        }
        private DevelopmentTension CreateDevelopmentObject(double ConcStrength, ConcreteTypeByWeight typeByWeight, double AverageSplitStrength,
                                                           double ClearSpacing, double ClearCover, bool IsTopRebar, double ExcessRebarRatio, bool checkMinLength)
        {
            DevelopmentTension tensDev = this.CreateDevelopmentObject(ConcStrength, 1.0, false, typeByWeight, AverageSplitStrength,
                                                                      ClearSpacing, ClearCover, IsTopRebar, ExcessRebarRatio, checkMinLength);

            return(tensDev);
        }
Esempio n. 6
0
        public void GetSqrt_fc_HighVal_Returns100()
        {
            double             concreteStrength = 20000.0;
            DevelopmentTension tensDev          = CreateDevelopmentObject(concreteStrength, 1.0, 1.0, false, 1.0, false);
            double             sqrt_fc          = tensDev.GetSqrt_fc();

            Assert.AreEqual(100.0, sqrt_fc);
        }
Esempio n. 7
0
        public void GetKsi_t_BotRebar_Returns1_0()
        {
            bool isTopRebar            = false;
            DevelopmentTension tensDev = this.CreateDevelopmentObject(4000, 0.0, 0.0, isTopRebar, 1.0, false);
            double             ksi_t   = tensDev.GetKsi_t();

            Assert.Equal(1.0, ksi_t);
        }
        private DevelopmentTension CreateDevelopmentObject(double ConcStrength, double RebarDiameter, bool IsEpoxyCoated,
                                                           ConcreteTypeByWeight typeByWeight, double AverageSplitStrength,
                                                           double ClearSpacing, double ClearCover, bool IsTopRebar, double ExcessRebarRatio, bool checkMinLength)
        {
            DevelopmentTension tensDev = this.CreateDevelopmentObject
                                             (ConcStrength, RebarDiameter, IsEpoxyCoated, typeByWeight, TypeOfLightweightConcrete.AllLightweightConcrete, AverageSplitStrength,
                                             ClearSpacing, ClearCover, IsTopRebar, ExcessRebarRatio, checkMinLength);

            return(tensDev);
        }
Esempio n. 9
0
        public void GetCb_NormalValuesClearSpacing_ReturnsValue()
        {
            double             RebarDiam    = 1.0;
            double             ClearSpacing = 1.0;
            double             ClearCover   = 3.0;
            DevelopmentTension tensDev      = this.CreateDevelopmentObject(RebarDiam, ClearSpacing, ClearCover);
            double             Cb           = tensDev.GetCb();

            Assert.AreEqual(1.0, Cb);
        }
        public void GetKsi_e_NotEpoxyBar_Returns1_0()
        {
            double             RebarDiam     = 1.0;
            double             ClearSpacing  = 2.0;
            double             ClearCover    = 1.0;
            bool               IsEpoxyCoated = false;
            DevelopmentTension tensDev       = this.CreateDevelopmentObject(RebarDiam, IsEpoxyCoated, ClearSpacing, ClearCover);
            double             ksi_e         = tensDev.GetKsi_e();

            Assert.AreEqual(1.0, ksi_e);
        }
        public void GetKsi_e_EpoxyBarLargeSpacingAndCover_Returns1_2()
        {
            double             RebarDiam     = 1.0;
            double             ClearSpacing  = 8.0;
            double             ClearCover    = 4.0;
            bool               IsEpoxyCoated = true;
            DevelopmentTension tensDev       = this.CreateDevelopmentObject(RebarDiam, IsEpoxyCoated, ClearSpacing, ClearCover);
            double             ksi_e         = tensDev.GetKsi_e();

            Assert.AreEqual(1.2, ksi_e);
        }
Esempio n. 12
0
        public void GetKsi_e_EpoxyBarSmallCover_Returns1_5()
        {
            double             RebarDiam     = 1.0;
            double             ClearSpacing  = 12.0;
            double             ClearCover    = 1.0;
            bool               IsEpoxyCoated = true;
            DevelopmentTension tensDev       = this.CreateDevelopmentObject(RebarDiam, IsEpoxyCoated, ClearSpacing, ClearCover);
            double             ksi_e         = tensDev.GetKsi_e();

            Assert.Equal(1.5, ksi_e);
        }
        public void GetConfinementTerm_NormalPCAvalues_ReturnsValue()
        {
            double             cb              = 1.17;
            double             Ktr             = 0.8;
            double             RebarDiam       = 1.0;
            double             ClearSpacing    = 0;
            double             ClearCover      = 0;
            DevelopmentTension tensDev         = this.CreateDevelopmentObject(RebarDiam, ClearSpacing, ClearCover);
            double             ConfinementTerm = tensDev.GetConfinementTerm(cb, Ktr);

            Assert.Equal(1.97, ConfinementTerm);
        }
Esempio n. 14
0
        public void ExcessReinf_NormalValue_ReturnsReduced()
        {
            double             concreteStrength = 5000.0;
            double             excessReinf      = 0.5;
            double             ld      = 20;
            DevelopmentTension tensDev = CreateDevelopmentObject(concreteStrength, 1.0, 1.0, false, excessReinf, false);

            tensDev.ExcessFlexureReinforcementRatio = excessReinf;
            double ldReduced = tensDev.CheckExcessReinforcement(ld, true, false);

            Assert.AreEqual(ld * excessReinf, ldReduced);
        }
        public void GetConfinementTerm_HighValue_Returns2_5()
        {
            double             cb              = 1.0;
            double             Ktr             = 100;
            double             RebarDiam       = 1.0;
            double             ClearSpacing    = 0;
            double             ClearCover      = 0;
            DevelopmentTension tensDev         = this.CreateDevelopmentObject(RebarDiam, ClearSpacing, ClearCover);
            double             ConfinementTerm = tensDev.GetConfinementTerm(cb, Ktr);

            Assert.Equal(2.5, ConfinementTerm);
        }
Esempio n. 16
0
        //[ExpectedException(ExpectedMessage = "Exceess reinforcement ratio cannot be more than 1.0")]
        public void ExcessReinf_ExcessRebarMoreThan1_ThrowsException()
        {
            double             excessReinf = 2.0;
            double             ld          = 20;
            DevelopmentTension tensDev     = CreateDevelopmentObject(4000.0, 1.0, 1.0, false, excessReinf, false);

            tensDev.ExcessFlexureReinforcementRatio = excessReinf;
            //double ldReduced = tensDev.CheckExcessReinforcement(ld, true, false);

            var ex = Assert.Throws <Exception>(() => tensDev.CheckExcessReinforcement(ld, true, false));

            Assert.That(ex.Message, Is.EqualTo("Exceess reinforcement ratio cannot be more than 1.0"));
        }
        public void GetKtr_ZeroNumber_Returns0()
        {
            double             Atr          = 0.4;
            double             s            = 10.0;
            double             n            = 0.0;
            double             RebarDiam    = 0;
            double             ClearSpacing = 0;
            double             ClearCover   = 0;
            DevelopmentTension tensDev      = this.CreateDevelopmentObject(RebarDiam, ClearSpacing, ClearCover);
            double             Ktr          = tensDev.GetKtr(Atr, s, n);

            Assert.Equal(0, Ktr);
        }
        public void GetConfinementTerm_0RebarDiam_throws()
        {
            double             cb           = 1.0;
            double             Ktr          = 100;
            double             RebarDiam    = 0.0;
            double             ClearSpacing = 0;
            double             ClearCover   = 0;
            DevelopmentTension tensDev      = this.CreateDevelopmentObject(RebarDiam, ClearSpacing, ClearCover);

            var ex = Assert.Throws <Exception>(() => tensDev.GetConfinementTerm(cb, Ktr));

            Assert.True(ex.Message == "Rebar diameter cannot be 0.0. Check input");
        }
        public static Dictionary <string, object> StraightBarTensionDevelopmentLengthBasic(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial, double d_b,
                                                                                           Concrete.ACI318.General.Reinforcement.RebarMaterial RebarMaterial,
                                                                                           string RebarCoatingType = "Uncoated", string RebarCastingPosition = "Top", double ExcessRebarRatio = 1.0, bool MeetsRebarSpacingAndEdgeDistance = true,
                                                                                           bool HasMinimumTransverseReinforcement = false, string Code       = "ACI318-14")
        {
            //Default values
            double l_d = 0;


            //Calculation logic:

            IRebarMaterial mat = RebarMaterial.Material;

            bool IsEpoxyCoated = false;

            switch (RebarCoatingType)
            {
            case "Uncoated":  IsEpoxyCoated = false; break;

            case "EpoxyCoated":  IsEpoxyCoated = true; break;

            default: throw new Exception("Unrecognized rebar coating. Please check string input");
            }

            Rebar rebar = new Rebar(d_b, IsEpoxyCoated, mat);


            bool IsTopRebar = false;

            switch (RebarCastingPosition)
            {
            case "Other":  IsTopRebar = false; break;

            case "Top":  IsTopRebar = true; break;

            default: throw new Exception("Unrecognized rebar casting position. Please check string input");
            }

            CalcLog log = new CalcLog();

            DevelopmentTension d = new DevelopmentTension(ConcreteMaterial.Concrete, rebar, MeetsRebarSpacingAndEdgeDistance, IsTopRebar, ExcessRebarRatio, true, log);

            l_d = d.GetTensionDevelopmentLength(HasMinimumTransverseReinforcement);

            return(new Dictionary <string, object>
            {
                { "l_d", l_d }
            });
        }
        public void GetKtr_NormalPCAValues_ReturnsCorrectValue()
        {
            //ACI318-08 PCA notes page 4-38
            //Example 4.3
            double             Atr          = 0.4;
            double             s            = 10.0;
            double             n            = 2.0;
            double             RebarDiam    = 0;
            double             ClearSpacing = 0;
            double             ClearCover   = 0;
            DevelopmentTension tensDev      = this.CreateDevelopmentObject(RebarDiam, ClearSpacing, ClearCover);
            double             Ktr          = tensDev.GetKtr(Atr, s, n);

            Assert.Equal(0.8, Ktr);
        }
Esempio n. 21
0
        public static Dictionary <string, object> StraightBarTensionDevelopmentLengthDetailed(Concrete.ACI318.General.Concrete.ConcreteMaterial ConcreteMaterial, double d_b,
                                                                                              RebarMaterial RebarMaterial, string RebarCoatingType = "Uncoated", string RebarCastingPosition = "Top", double ExcessRebarRatio = 1.0, double s_clear = 3, double c_c = 1.5,
                                                                                              double A_tr = 0.44, double s_tr = 12, double n = 5, string Code = "ACI318-14")
        {
            //Default values
            double l_d = 0;


            //Calculation logic:
            IRebarMaterial mat = RebarMaterial.Material;

            bool IsEpoxyCoated = false;

            switch (RebarCoatingType)
            {
            case "Uncoated": IsEpoxyCoated = false; break;

            case "EpoxyCoated": IsEpoxyCoated = true; break;

            default: throw new Exception("Unrecognized rebar coating. Please check string input"); break;
            }

            Rebar rebar = new Rebar(d_b, IsEpoxyCoated, mat);


            bool IsTopRebar = false;

            switch (RebarCastingPosition)
            {
            case "Other": IsTopRebar = false; break;

            case "Top": IsTopRebar = true; break;

            default: throw new Exception("Unrecognized rebar casting position. Please check string input"); break;
            }

            CalcLog log = new CalcLog();

            DevelopmentTension d = new DevelopmentTension(ConcreteMaterial.Concrete, rebar, s_clear, c_c, IsTopRebar, ExcessRebarRatio, true, log);

            l_d = d.GetTensionDevelopmentLength(A_tr, s_tr, n);


            return(new Dictionary <string, object>
            {
                { "l_d", l_d }
            });
        }
Esempio n. 22
0
        public void GetTensionDevelopmentLength_PCAExample_4_3_Case2_ReturnsValue()
        {
            double RebarDiam                    = 1.0;
            bool   IsTopRebar                   = true;
            bool   IsEpoxyCoated                = false;
            ConcreteTypeByWeight type           = ConcreteTypeByWeight.Normalweight;
            double             ClearSpacing     = 1.33;
            double             ClearCover       = 2.0;
            double             fc               = 4000;
            double             ExcessRebarRatio = 1.0;
            DevelopmentTension tensDev          = this.CreateDevelopmentObject(fc, RebarDiam, IsEpoxyCoated, type,
                                                                               0.0, ClearSpacing, ClearCover, IsTopRebar, ExcessRebarRatio, true);
            double ld = Math.Round(tensDev.GetTensionDevelopmentLength(0.4, 10, 2), 0);

            Assert.AreEqual(47.0, ld);
        }
Esempio n. 23
0
        public void GetTensionDevelopmentLength_PCAExample_4_1_Case2_ReturnsValue()
        {
            double RebarDiam                    = 1.1280;
            bool   IsTopRebar                   = true;
            bool   IsEpoxyCoated                = true;
            ConcreteTypeByWeight type           = ConcreteTypeByWeight.Lightweight;
            double             ClearSpacing     = 21.7;
            double             ClearCover       = 3.0;
            double             fc               = 4000;
            double             ExcessRebarRatio = 1.0;
            DevelopmentTension tensDev          = this.CreateDevelopmentObject(fc, RebarDiam, IsEpoxyCoated, type,
                                                                               0.0, ClearSpacing, ClearCover, IsTopRebar, ExcessRebarRatio, true);
            double ld = Math.Round(tensDev.GetTensionDevelopmentLength(100, 10, 2), 1);

            Assert.AreEqual(72.8, ld);
        }
        public void GetTensionDevelopmentLength_Basic()
        {
            double RebarDiam                         = 0.5;
            bool   IsTopRebar                        = false;
            bool   IsEpoxyCoated                     = false;
            ConcreteTypeByWeight type                = ConcreteTypeByWeight.Normalweight;
            double            fc                     = 4000;
            double            ExcessRebarRatio       = 1.0;
            IConcreteMaterial concrete               = new ConcreteMaterial(fc, ConcreteTypeByWeight.Normalweight, null);
            Rebar             rebar                  = new Rebar(RebarDiam, IsEpoxyCoated, new MaterialAstmA615(A615Grade.Grade60));
            bool MeetsRebarSpacingAndEdgeDistance    = true;
            DevelopmentTension d                     = new DevelopmentTension(concrete, rebar, MeetsRebarSpacingAndEdgeDistance, IsTopRebar, ExcessRebarRatio, true, null);
            bool   HasMinimumTransverseReinforcement = true;
            double l_d = d.GetTensionDevelopmentLength(HasMinimumTransverseReinforcement);

            double refValue        = 18.97;
            double actualTolerance = EvaluateActualTolerance(l_d, refValue);

            Assert.True(actualTolerance <= tolerance);
        }
        private DevelopmentTension CreateDevelopmentObject(double ConcStrength, double RebarDiameter, bool IsEpoxyCoated,
                                                           ConcreteTypeByWeight typeByWeight, TypeOfLightweightConcrete lightWeightType, double AverageSplitStrength,
                                                           double ClearSpacing, double ClearCover, bool IsTopRebar, double ExcessRebarRatio, bool checkMinLength)
        {
            IRebarMaterial rebarMat = new RebarMaterialGeneral(60000);


            //IConcreteMaterial ConcStub = mocks.Stub<IConcreteMaterial>();
            IConcreteMaterial ConcStub = new ConcreteMaterial(ConcStrength, typeByWeight, lightWeightType,
                                                              null) as IConcreteMaterial;

            ConcStub.SpecifiedCompressiveStrength = ConcStrength;
            ConcStub.TypeByWeight = typeByWeight;
            ConcStub.AverageSplittingTensileStrength = AverageSplitStrength;



            DevelopmentTension tensDev = new DevelopmentTension(ConcStub,
                                                                new Rebar(RebarDiameter, IsEpoxyCoated, rebarMat),
                                                                ClearSpacing, ClearCover, IsTopRebar, ExcessRebarRatio, checkMinLength, null);

            return(tensDev);
        }
        private DevelopmentTension CreateDevelopmentObject(double ConcStrength, double RebarDiameter, bool IsEpoxyCoated,
                                                           ConcreteTypeByWeight typeByWeight, TypeOfLightweightConcrete lightWeightType, double AverageSplitStrength,
                                                           double ClearSpacing, double ClearCover, bool IsTopRebar, double ExcessRebarRatio, bool checkMinLength)
        {
            MockRepository mocks = new MockRepository();

            IRebarMaterial rebarMat = mocks.Stub <IRebarMaterial>();

            Expect.Call(rebarMat.YieldStress).Return(60000);
            //IRebarMaterial rebarMat = new MaterialAstmA706() as IRebarMaterial;

            ICalcLogEntry entryStub = mocks.Stub <ICalcLogEntry>();
            //entryStub.DependencyValues = new Dictionary<string, double>();
            ICalcLog logStub = mocks.Stub <ICalcLog>();

            //IConcreteMaterial ConcStub = mocks.Stub<IConcreteMaterial>();
            IConcreteMaterial ConcStub = new ConcreteMaterial(ConcStrength, typeByWeight, lightWeightType,
                                                              logStub) as IConcreteMaterial;

            ConcStub.SpecifiedCompressiveStrength = ConcStrength;
            ConcStub.TypeByWeight = typeByWeight;
            ConcStub.AverageSplittingTensileStrength = AverageSplitStrength;


            using (mocks.Record())
            {
                logStub.CreateNewEntry();
                LastCall.Return(entryStub);
            }

            DevelopmentTension tensDev = new DevelopmentTension(ConcStub,
                                                                new Rebar(RebarDiameter, IsEpoxyCoated, rebarMat),
                                                                ClearSpacing, ClearCover, IsTopRebar, ExcessRebarRatio, checkMinLength, logStub);

            return(tensDev);
        }