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 } }); }
public double GetBeamEffectiveSlabWidth(IFrameSet ifs) { sSteelFrameSet fs = ifs as sSteelFrameSet; CompositeBeamSection cs = new CompositeBeamSection(); double L = fs.parentCrv.length * 39.3701;//m to in return(cs.GetEffectiveSlabWidth(L, fs.effectiveSlabEdges.L_centerLeft_in, fs.effectiveSlabEdges.L_centerRight_in, fs.effectiveSlabEdges.L_edgeLeft_in, fs.effectiveSlabEdges.L_edgeRight_in)); }
public void CompositeBeamSectionReturnsLowerBoundMomentOfInertia() { double SumQ_n = 387; CompositeBeamSection cs = GetBeamForTests(SumQ_n); double I_LB = cs.GetLowerBoundMomentOfInertia(SumQ_n); double refValue = 1360; // from AISC Steel Manual double actualTolerance = EvaluateActualTolerance(I_LB, refValue); Assert.LessOrEqual(actualTolerance, tolerance); }
public void CompositeBeamReturnsFlexuralStrength() { double SumQ_n = 387; CompositeBeamSection cs = GetBeamForTests(SumQ_n); double phiM_n = cs.GetFlexuralStrength(SumQ_n); double refValue = 486; // from AISC Steel Manual double actualTolerance = EvaluateActualTolerance(phiM_n / 12.0, refValue); Assert.LessOrEqual(actualTolerance, tolerance); }
public double GetFlexuralStrength_Vertical(sCrossSection section, eColorMode forceType, IFrameSet fs) { sKodeStructConverter kcon = new sKodeStructConverter(); SteelMaterial mat = kcon.ToKodeStructMaterial_Steel(section); string Code = "AISC360-10"; double phiM_n = 0; double b_eff = this.GetBeamEffectiveSlabWidth(fs); double SumQ_n = this.GetSumOfStudsStrength(fs); // assuming, // Shear Stud Anchor // Light Weight Concrete : 4ksi // solid concrete thickness = 2.5" // rib thickness = 3" // double h_solid = 2.5; double h_rib = 3.0; double F_y = mat.YieldStress; //?? unit ?? F_y of what?? double fc_prime = 4.0; //?? unit ?? MomentAxis Axis = kcon.ToKodeStructMomentAxis(forceType); //?? just this for composite? ISection shape = kcon.ToKodeStructCrossSection(section); if (shape is ISliceableShapeProvider) { ISliceableShapeProvider prov = shape 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 is ISliceableSection) { ISliceableSection sec = shape 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(phiM_n); }
public double GetLowerBoundMomentOfInertia(sCrossSection cCheck, IFrameSet fs) { sKodeStructConverter kcon = new sKodeStructConverter(); SteelMaterial mat = kcon.ToKodeStructMaterial_Steel(fs.crossSection); double I_LB = 0; double b_eff = this.GetBeamEffectiveSlabWidth(fs); double SumQ_n = this.GetSumOfStudsStrength(fs); // assuming, // Shear Stud Anchor // Light Weight Concrete : 4ksi // solid concrete thickness = 2.5" // rib thickness = 3" // double h_solid = 2.5; double h_rib = 3.0; double F_y = mat.YieldStress; //?? unit ?? F_y of what?? double fc_prime = 4.0; //?? unit ?? //check lowerBound Moment of Inertia by check section??? ISection shape = kcon.ToKodeStructCrossSection(cCheck); if (shape is ISliceableShapeProvider) { ISliceableShapeProvider prov = shape 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 is ISliceableSection) { ISliceableSection sec = shape 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(I_LB); }
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 } }); }
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.0) + 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> 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 } }); }