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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
//[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); }
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 } }); }
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); }
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); }