public void BeamReturnsphiMn() { var ConcreteMaterial = new Kodestruct.Concrete.ACI318_14.Materials.ConcreteMaterial(6000, ACI.Entities.ConcreteTypeByWeight.Normalweight, null); FlexuralSectionFactory flexureFactory = new FlexuralSectionFactory(); double b = 16; double h = 40; double f_y = 60000; RebarMaterialGeneral LongitudinalRebarMaterial = new RebarMaterialGeneral(f_y); List <RebarPoint> LongitudinalBars = new List <RebarPoint>(); Rebar TopRebar = new Rebar(4, LongitudinalRebarMaterial); RebarPoint TopPoint = new RebarPoint(TopRebar, new RebarCoordinate() { X = 0, Y = h / 2.0 - 3 }); LongitudinalBars.Add(TopPoint); Rebar BottomRebar = new Rebar(4, LongitudinalRebarMaterial); RebarPoint BottomPoint = new RebarPoint(BottomRebar, new RebarCoordinate() { X = 0, Y = -h / 2.0 + 3 }); LongitudinalBars.Add(BottomPoint); CrossSectionRectangularShape shape = new CrossSectionRectangularShape(ConcreteMaterial, null, b, h); IConcreteFlexuralMember fs = new ConcreteSectionFlexure(shape, LongitudinalBars, null, ConfinementReinforcementType.Ties); ConcreteFlexuralStrengthResult result = fs.GetDesignFlexuralStrength(FlexuralCompressionFiberPosition.Top); }
public void SimpleBeamFlexuralCapacityTopReturnsDesignValue() { ConcreteSectionFlexure beam = GetConcreteBeam(12, 20, 4000, true, new RebarInput(4, 2.5)); ConcreteFlexuralStrengthResult MResult = beam.GetDesignFlexuralStrength(FlexuralCompressionFiberPosition.Top); double M_n = MResult.phiM_n / 1000 / 12.0; double refValue = 253.0; double actualTolerance = EvaluateActualTolerance(M_n, refValue); Assert.LessOrEqual(actualTolerance, tolerance); }
public static Dictionary <string, object> FlexuralStrength(ConcreteFlexureAndAxiaSection ConcreteSection, string FlexuralCompressionFiberLocation = "Top", string Code = "ACI318-14") { //Default values double phiM_n = 0; double a = 0; double c = 0; string FlexuralFailureModeClassification = ""; double epsilon_t = 0; //Calculation logic: FlexuralCompressionFiberPosition p; bool IsValidStringFiber = Enum.TryParse(FlexuralCompressionFiberLocation, true, out p); if (IsValidStringFiber == false) { throw new Exception("Flexural compression fiber location is not recognized. Check input."); } //ConfinementReinforcementType co; //bool IsValidStringConf = Enum.TryParse(ConfinementReinforcementType, true, out co); //if (IsValidStringConf == false) //{ // throw new Exception("Confinement reinforcement type is not recognized. Check input."); //} KodestructAci.IConcreteFlexuralMember beam = ConcreteSection.FlexuralSection; ConcreteFlexuralStrengthResult result = beam.GetDesignFlexuralStrength(p); //note that internally ACI nodes in Kodestruct use psi units consistent with ACI code //convert to ksi units consistent with the rest of Dynamo nodes here phiM_n = result.phiM_n / 1000.0; a = result.a; c = result.a / ConcreteSection.ConcreteMaterial.Concrete.beta1; FlexuralFailureModeClassification = result.FlexuralFailureModeClassification.ToString(); //epsilon_t = result.epsilon_t; return(new Dictionary <string, object> { { "phiM_n", phiM_n } , { "a", a } , { "c", c } , { "FlexuralFailureModeClassification", FlexuralFailureModeClassification } , { "epsilon_t", epsilon_t } }); }