public void ShearFrictionReturnsValue() { IConcreteMaterial matC = GetConcreteMaterial(4000, false); IRebarMaterial m = new MaterialAstmA615(A615Grade.Grade60); double A_c = 720.0; double A_v = 4.84; ConcreteSectionShearFriction sec = new ConcreteSectionShearFriction(ACI.Entities.ShearAndTorsion.ShearFrictionSurfaceType.HardenedNonRoughenedConcrete, matC, A_c, m, A_v, 90, 0); double phiV_n = sec.GetShearFrictionStrength() / 1000.0; //convert back to ksi units double refValue = 130.68; double actualTolerance = EvaluateActualTolerance(phiV_n, refValue); Assert.True(actualTolerance <= tolerance); }
public static Dictionary <string, object> ShearFrictionStrength(string ShearFrictionSurfaceTypeId, ConcreteMaterial ConcreteMaterial, double A_c, RebarMaterial RebarMaterial, double A_v, double alpha = 90, double F_comp = 0) { //Default values //Calculation logic: double phiV_n = 0.0; ShearFrictionSurfaceType _ShearFrictionSurfaceType; bool IsValidShearFrictionSurfaceTypeString = Enum.TryParse(ShearFrictionSurfaceTypeId, true, out _ShearFrictionSurfaceType); if (IsValidShearFrictionSurfaceTypeString == false) { throw new Exception("Failed to convert string. ShearFrictionSurfaceType variable needs to be MonolithicConcrete, HardenedRoughenedConcrete, HardenedNonRoughenedConcrete or ConcreteAgainstSteel. Please check input"); } ConcreteSectionShearFriction sec = new ConcreteSectionShearFriction(_ShearFrictionSurfaceType, ConcreteMaterial.Concrete, A_c, RebarMaterial.Material, A_v, alpha, F_comp); phiV_n = sec.GetShearFrictionStrength() / 1000.0; //convert back to ksi units return(new Dictionary <string, object> { { "phiV_n", phiV_n } }); }