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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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 }
            });
        }