private CompositeBeamSection GetBeamForTests(double SumQ_n)
        {
            double Y_2 = 5;
            double f_cPrime = 4;
            double h_solid = 3;
            double b_eff;
            double h_rib = 3;
            b_eff = SumQ_n / ((h_rib + h_solid - Y_2) * 2 * 0.85 * f_cPrime); //Back calculate b_eff to get the round number from AISC manual
            double Y_2T = h_solid - (SumQ_n / (0.85 * f_cPrime * b_eff) / 2) + h_rib; //test

            AiscShapeFactory factory = new AiscShapeFactory();
            ISection section = factory.GetShape("W18X35", ShapeTypeSteel.IShapeRolled);
            PredefinedSectionI catI = section as PredefinedSectionI;
            SectionIRolled secI = new SectionIRolled("", catI.d, catI.b_fTop, catI.t_f, catI.t_w, catI.k);
            CompositeBeamSection cs = new CompositeBeamSection(secI, b_eff, h_solid, h_rib, 50.0, f_cPrime);
            return cs;
        }
        public static Dictionary<string, object> BeamEffectiveSlabWidth(double L, double L_centerLeft, double L_centerRight, double L_edgeLeft, 
            double L_edgeRight, string Code = "AISC360-10")
        {
            //Default values
            double b_eff = 0;


            //Calculation logic:
             CompositeBeamSection cs = new CompositeBeamSection() ;
             b_eff= cs.GetEffectiveSlabWidth(L, L_centerLeft, L_centerRight, L_edgeLeft, L_edgeRight);


            return new Dictionary<string, object>
            {
                { "b_eff", b_eff }
 
            };
        }
        public static Dictionary<string, object> LowerBoundMomentOfInertia(CustomProfile Shape, double b_eff, double h_solid, double h_rib, double F_y, double fc_prime,
            double SumQ_n, string Code = "AISC360-10")
        {
            //Default values
            double I_LB = 0;


            //Calculation logic:


            if (Shape.Section is ISliceableShapeProvider)
            {
                ISliceableShapeProvider prov = Shape.Section as ISliceableShapeProvider;
                ISliceableSection sec = prov.GetSliceableShape();
                CompositeBeamSection cs = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime);
                I_LB = cs.GetLowerBoundMomentOfInertia(SumQ_n);
            }
            else
            {
                if (Shape.Section is ISliceableSection)
                {
                    ISliceableSection sec = Shape.Section as ISliceableSection;
                    CompositeBeamSection cs = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime);
                    I_LB = cs.GetLowerBoundMomentOfInertia(SumQ_n);
                }
                else
                {
                    throw new Exception("Shape type not supported. Please provide a shape object of standard geometry");
                }

            }

            return new Dictionary<string, object>
            {
                { "I_LB", I_LB }
 
            };
        }
        public static Dictionary<string, object> PositiveMomentFlexuralStrength(CustomProfile Shape, double b_eff, double h_solid, double h_rib, double F_y, double fc_prime,
            double SumQ_n, string Code = "AISC360-10")
        {
            //Default values
            double phiM_n = 0;


            //Calculation logic:
            if (Shape.Section is ISliceableShapeProvider)
            {
                ISliceableShapeProvider prov = Shape.Section as ISliceableShapeProvider;
                ISliceableSection sec = prov.GetSliceableShape();
                CompositeBeamSection cs = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime);
                phiM_n = cs.GetFlexuralStrength(SumQ_n);
            }
            else
            {
                if (Shape.Section is ISliceableSection)
                {
                    ISliceableSection sec = Shape.Section as ISliceableSection;
                    CompositeBeamSection cs = new CompositeBeamSection(sec, b_eff, h_solid, h_rib, F_y, fc_prime);
                    phiM_n = cs.GetFlexuralStrength(SumQ_n);
                }
                else
                {
                    throw new Exception("Shape type not supported. Please provide a shape object of standard geometry");
                }
                
            }


            return new Dictionary<string, object>
            {
                { "phiM_n", phiM_n }
 
            };
        }