public static Dictionary <string, object> ThresholdTorsion(ConcreteFlexureAndAxiaSection ConcreteSection, double N_u, double c_transv_ctr,
                                                                   bool IsPrestressed = false, string Code = "ACI318-14")
        {
            //Default values
            double phiT_th = 0;


            //Calculation logic:
            TorsionShapeFactory    tss           = new TorsionShapeFactory();
            ConcreteSectionFlexure cross_Section = ConcreteSection.FlexuralSection as ConcreteSectionFlexure;

            if (cross_Section != null)
            {
                if (cross_Section.Section.SliceableShape is ISectionRectangular)
                {
                    IConcreteTorsionalShape shape = tss.GetShape(cross_Section.Section.SliceableShape, ConcreteSection.ConcreteMaterial.Concrete, c_transv_ctr);
                    ConcreteSectionTorsion  s     = new ConcreteSectionTorsion(shape);
                    phiT_th = s.GetThreshholdTorsion(N_u) / 1000.0; //Conversion from ACI psi units to ksi units
                }
                else
                {
                    throw new Exception("Only rectangular cross-sections are currently supported for torsional calculations");
                }
            }
            else
            {
                throw new Exception("Unrecognized shape type");
            }

            return(new Dictionary <string, object>
            {
                { "T_th", phiT_th }
            });
        }
Example #2
0
        public ConcreteSectionTorsion GetConcreteTorsionBeam(double Width, double Height, double fc, double d, bool IsLightWeight, double c_cent)
        {
            IConcreteSection        Section = GetRectangularSection(Width, Height, fc, IsLightWeight);
            TorsionShapeFactory     tss     = new TorsionShapeFactory();
            IConcreteTorsionalShape shape   = tss.GetShape(Section.SliceableShape, Section.Material,
                                                           c_cent);
            ConcreteSectionTorsion s = new ConcreteSectionTorsion(shape);

            return(s);
        }
        public static Dictionary <string, object> RequiredLongitudinalTorsionRebar(ConcreteFlexureAndAxiaSection ConcreteSection, double T_u, RebarMaterial RebarMaterial,
                                                                                   double c_transv_ctr, double theta = 45, string Code = "ACI318-14")
        {
            //Default values
            double A_l = 0;


            //Calculation logic:
            TorsionShapeFactory     tss   = new TorsionShapeFactory();
            ConcreteSectionFlexure  sec   = (ConcreteSectionFlexure)ConcreteSection.FlexuralSection;
            IConcreteTorsionalShape shape = tss.GetShape(sec.Section.SliceableShape, ConcreteSection.ConcreteMaterial.Concrete, c_transv_ctr);
            ConcreteSectionTorsion  secT  = new ConcreteSectionTorsion(shape);
            double T_u_lb_in = T_u * 1000.0; //internally Kodestruct uses lb - in units for concrete

            A_l = secT.GetRequiredTorsionLongitudinalReinforcementArea(T_u_lb_in, RebarMaterial.Material.YieldStress);

            return(new Dictionary <string, object>
            {
                { "A_l", A_l }
            });
        }
        public static Dictionary <string, object> MaximumTorsionalAndShearStrengthInteraction(ConcreteFlexureAndAxiaSection ConcreteSection, double c_transv_ctr,
                                                                                              double V_u, double T_u, double V_c, double b, double d, bool IsPrestressed = false, string Code = "ACI318-14")
        {
            //Default values
            double InteractionRatio = 0;


            //Calculation logic:

            TorsionShapeFactory     tss   = new TorsionShapeFactory();
            ConcreteSectionFlexure  sec   = (ConcreteSectionFlexure)ConcreteSection.FlexuralSection;
            IConcreteTorsionalShape shape = tss.GetShape(sec.Section.SliceableShape, ConcreteSection.ConcreteMaterial.Concrete, c_transv_ctr);
            ConcreteSectionTorsion  s     = new ConcreteSectionTorsion(shape);
            double V_u_lb    = V_u * 1000.0; //internally Kodestruct uses lb - in units for concrete
            double T_u_lb_in = T_u * 1000.0; //internally Kodestruct uses lb - in units for concrete

            InteractionRatio = s.GetMaximumForceInteractionRatio(V_u_lb, T_u_lb_in, V_c, b, d);


            return(new Dictionary <string, object>
            {
                { "InteractionRatio", InteractionRatio }
            });
        }