public ISteelCompressionMember GetIshape(ISteelSection Section, bool IsRolled, double L_x, double L_y, double L_z, ICalcLog CalcLog) { ISteelCompressionMember column = null; IShapeCompactness compactnessTop = new ShapeCompactness.IShapeMember(Section, IsRolled, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Top); IShapeCompactness compactnessBot = new ShapeCompactness.IShapeMember(Section, IsRolled, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Bottom); ICalcLog Log = new CalcLog(); CompactnessClassAxialCompression flangeCompactnessTop = compactnessTop.GetFlangeCompactnessCompression(); CompactnessClassAxialCompression flangeCompactnessBot = compactnessTop.GetFlangeCompactnessCompression(); CompactnessClassAxialCompression webCompactness = compactnessTop.GetWebCompactnessCompression(); if (flangeCompactnessTop == CompactnessClassAxialCompression.NonSlender && webCompactness == CompactnessClassAxialCompression.NonSlender && flangeCompactnessBot == CompactnessClassAxialCompression.NonSlender) { column = new IShapeCompact(Section, IsRolled, L_x, L_y, L_z, Log); //if (IShape.b_fBot == IShape.b_fTop && IShape.t_fBot == IShape.t_fTop) //{ // return new IShapeCompact(SectionI, IsRolledShape, L_ex, L_ey, L_ez, log); //} //else //{ // throw new NotImplementedException(); //} } else { column = new IShapeSlenderElements(Section, IsRolled, L_x, L_y, L_z, Log); } return(column); }
internal double GetRpc(FlexuralCompressionFiberPosition compressionFiberPosition) { double Rpc = 0; double Mp = GetMajorNominalPlasticMoment(); double Myc = GetCompressionFiberYieldMomentMyc(compressionFiberPosition); double hc = Gethc(compressionFiberPosition); double tw = this.Gettw(); ShapeCompactness.IShapeMember compactness = new ShapeCompactness.IShapeMember(Section, IsRolledMember, compressionFiberPosition); double lambdaWeb = compactness.GetWebLambda(); double lambdapw = compactness.GetWebLambda_p(StressType.Flexure); double lambdarw = compactness.GetWebLambda_r(StressType.Flexure); double Iyc = GetIyc(compressionFiberPosition); double Iy = Section.Shape.I_y; if (Iyc / Iy > 0.23) { if (hc / tw > lambdapw) { Rpc = Mp / Myc; //(F4-9a) } else { Rpc = Mp / Myc - (Mp / Myc - 1.0) * ((lambdaWeb - lambdapw) / (lambdarw - lambdapw)); //(F4-9b) Rpc = Rpc > Mp / Myc ? Mp / Myc : Rpc; } } else { Rpc = 1.0; //(F4-10) } return(Rpc); }
public double GetWebPlastificationFactorForTensionRpt(FlexuralCompressionFiberPosition compressionFiberPosition) { double Rpt = 0.0; double Mp = GetMajorNominalPlasticMoment(); double Myt = GetTensionFiberYieldMomentMyt(compressionFiberPosition); double hc = Gethc(compressionFiberPosition); double tw = this.Gettw(); ShapeCompactness.IShapeMember compactness = new ShapeCompactness.IShapeMember(Section, IsRolledMember, compressionFiberPosition); double lambdaWeb = compactness.GetWebLambda(); double lambdapw = compactness.GetWebLambda_p(StressType.Flexure); double lambdarw = compactness.GetWebLambda_r(StressType.Flexure); //double lambda = hc / tw; double lambda = compactness.GetWebLambda(); if (lambda <= lambdapw) { Rpt = Mp / Myt; //(F4-16a) } else { Rpt = Mp / Myt - (Mp / Myt - 1) * ((lambda - lambdapw) / (lambdarw - lambdapw)); //(F4-16b) } return(Rpt); }
public double GetLambdaWeb() { double Lambda = 0.0; compactness = new ShapeCompactness.IShapeMember (this.Section, this.isRolledMember, FlexuralCompressionFiberPosition.Top); // for web location of compression fiber does not matter Lambda = compactness.GetWebLambda(); return(Lambda); }
//Compression Flange Local Buckling F4.3 public double GetCompressionFlangeLocalBucklingCapacity(FlexuralCompressionFiberPosition compressionFiberPosition) { double Mn = 0.0; double bf = GetCompressionFlangeWidthbfc(compressionFiberPosition); double tf = GetCompressionFlangeThicknesstfc(compressionFiberPosition); ShapeCompactness.IShapeMember compactness = new ShapeCompactness.IShapeMember(Section, IsRolledMember, compressionFiberPosition); CompactnessClassFlexure flangeCompactness = compactness.GetFlangeCompactnessFlexure(); double lambda = compactness.GetCompressionFlangeLambda(); double Sxc = GetSectionModulusCompressionSxc(compressionFiberPosition); switch (flangeCompactness) { case CompactnessClassFlexure.Compact: throw new LimitStateNotApplicableException("Compression Flange Local buckling"); case CompactnessClassFlexure.Noncompact: double Rpc = GetRpc(compressionFiberPosition); double Myc = GetCompressionFiberYieldMomentMyc(compressionFiberPosition); double lambdapf = compactness.GetFlangeLambda_p(StressType.Flexure); double lambdarf = compactness.GetFlangeLambda_r(StressType.Flexure); double FL = GetStressFL(compressionFiberPosition); Mn = Rpc * Myc - (Rpc * Myc - FL * Sxc) * ((lambda - lambdapf) / (lambdarf - lambdapf)); //(F4-13) break; case CompactnessClassFlexure.Slender: double kc = Getkc(); double E = this.Section.Material.ModulusOfElasticity; Mn = 0.9 * E * kc * Sxc / Math.Pow(lambda, 2); break; } double phiM_n = 0.9 * Mn; return(phiM_n); }
protected virtual CompactnessResult GetShapeCompactness() { ShapeCompactness.IShapeMember compactnessTop = new ShapeCompactness.IShapeMember(Section, IsRolledMember, FlexuralCompressionFiberPosition.Top); CompactnessClassFlexure flangeCompactnessTop = compactnessTop.GetFlangeCompactnessFlexure(); ShapeCompactness.IShapeMember compactnessBot = new ShapeCompactness.IShapeMember(Section, IsRolledMember, FlexuralCompressionFiberPosition.Top); CompactnessClassFlexure flangeCompactnessBot = compactnessTop.GetFlangeCompactnessFlexure(); double lambda = 0.0; double lambdaTop = compactnessTop.GetCompressionFlangeLambda(); double lambdaBot = compactnessBot.GetCompressionFlangeLambda(); CompactnessClassFlexure flangeCompactness; ShapeCompactness.IShapeMember thisShapeCompactness; double b = 0; double tf = 0.0; if (lambdaTop > lambdaBot) { thisShapeCompactness = compactnessTop; flangeCompactness = flangeCompactnessTop; lambda = lambdaTop; b = GetBfTop(); tf = Get_tfTop(); } else { thisShapeCompactness = compactnessBot; flangeCompactness = flangeCompactnessBot; lambda = lambdaBot; b = GetBfBottom(); tf = Get_tfBottom(); } return(new CompactnessResult() { ShapeCompactness = thisShapeCompactness, FlangeCompactness = flangeCompactness, b = b, tf = tf, lambda = lambda }); }
//Compression Flange Local Buckling F3.2 public double GetCompressionFlangeLocalBucklingCapacity() { double M_n = 0.0; double phiM_n = 0.0; ISectionI sectionI = Section.Shape as ISectionI; if (sectionI != null) { ShapeCompactness.IShapeMember compactness = new ShapeCompactness.IShapeMember(Section, IsRolledMember, FlexuralCompressionFiberPosition.Top); CompactnessClassFlexure cClass = compactness.GetFlangeCompactnessFlexure(); if (cClass == CompactnessClassFlexure.Noncompact || cClass == CompactnessClassFlexure.Slender) { double lambda = this.GetLambdaCompressionFlange(FlexuralCompressionFiberPosition.Top); double lambdapf = this.GetLambdapf(FlexuralCompressionFiberPosition.Top); double lambdarf = this.GetLambdarf(FlexuralCompressionFiberPosition.Top); //note: section is doubly symmetric so top flange is taken double Sx = this.Section.Shape.S_xTop; double Fy = this.Section.Material.YieldStress; double E = this.Section.Material.ModulusOfElasticity; //double Zx = Section.SectionBase.Z_x; if (cClass == CompactnessClassFlexure.Noncompact) { double Mp = this.GetMajorNominalPlasticMoment(); M_n = Mp - (Mp - 0.7 * Fy * Sx) * ((lambda - lambdapf) / (lambdarf - lambdapf)); //(F3-1) } else { double kc = this.Getkc(); M_n = 0.9 * E * kc * Sx / Math.Pow(lambda, 2); //(F3-2) } } else { } if (cClass == CompactnessClassFlexure.Compact) { throw new LimitStateNotApplicableException("Flange local buckling"); } } phiM_n = 0.9 * M_n; return(phiM_n); }
public ISteelBeamFlexure GetBeamCase() { ISteelBeamFlexure beam = null; IShapeCompactness compactness = new ShapeCompactness.IShapeMember(section, IsRolledMember, compressionFiberPosition); CompactnessClassFlexure flangeCompactness = compactness.GetFlangeCompactnessFlexure(); CompactnessClassFlexure webCompactness = compactness.GetWebCompactnessFlexure(); if (flangeCompactness == CompactnessClassFlexure.Compact && webCompactness == CompactnessClassFlexure.Compact) { return(new BeamIDoublySymmetricCompact(section, IsRolledMember, CalcLog)); } else { if (webCompactness == CompactnessClassFlexure.Compact) { return(new BeamIDoublySymmetricCompactWebOnly(section, IsRolledMember, CalcLog)); } else if (webCompactness == CompactnessClassFlexure.Noncompact) { if (flangeCompactness == CompactnessClassFlexure.Compact) { return(new BeamINoncompactWebCompactFlange(section, IsRolledMember, CalcLog)); } else { return(new BeamINoncompactWeb(section, IsRolledMember, CalcLog)); } } else //slender web { if (flangeCompactness == CompactnessClassFlexure.Compact) { return(new BeamISlenderWebCompactFlange(section, IsRolledMember, CalcLog)); } else { return(new BeamISlenderWeb(section, IsRolledMember, CalcLog)); } } } return(beam); }
public double GetLambdaCompressionFlange(FlexuralCompressionFiberPosition compressionFiberPosition) { compactness = new ShapeCompactness.IShapeMember (this.Section, this.isRolledMember, compressionFiberPosition); return(compactness.GetCompressionFlangeLambda()); }
protected virtual double GetLambdarf(FlexuralCompressionFiberPosition compressionFiberPosition) { compactness = new ShapeCompactness.IShapeMember (this.Section, this.isRolledMember, compressionFiberPosition); return(compactness.GetFlangeLambda_r(StressType.Flexure)); }
public double GetCompressionFlangeLocalBucklingCapacity() { // compactness criteria is selected by the most slender flange double Mn = 0; ShapeCompactness.IShapeMember compactnessTop = new ShapeCompactness.IShapeMember(Section, IsRolledMember, FlexuralCompressionFiberPosition.Top); CompactnessClassFlexure flangeCompactnessTop = compactnessTop.GetFlangeCompactnessFlexure(); ShapeCompactness.IShapeMember compactnessBot = new ShapeCompactness.IShapeMember(Section, IsRolledMember, FlexuralCompressionFiberPosition.Top); CompactnessClassFlexure flangeCompactnessBot = compactnessTop.GetFlangeCompactnessFlexure(); double lambda = 0.0; double lambdaTop = compactnessTop.GetCompressionFlangeLambda(); double lambdaBot = compactnessBot.GetCompressionFlangeLambda(); CompactnessClassFlexure flangeCompactness; ShapeCompactness.IShapeMember compactness; double b = 0; double tf = 0.0; if (lambdaTop > lambdaBot) { compactness = compactnessTop; flangeCompactness = flangeCompactnessTop; lambda = lambdaTop; b = GetBfTop(); tf = Get_tfTop(); } else { compactness = compactnessBot; flangeCompactness = flangeCompactnessBot; lambda = lambdaBot; b = GetBfBottom(); tf = Get_tfBottom(); } double Mp = Zy * Fy; double lambdapf = compactness.GetFlangeLambda_p(StressType.Flexure); double lambdarf = compactness.GetFlangeLambda_r(StressType.Flexure); switch (flangeCompactness) { case CompactnessClassFlexure.Compact: Mn = double.PositiveInfinity; break; case CompactnessClassFlexure.Noncompact: Mn = Mp - (Mp - 0.7 * Fy * Sy) * ((lambda - lambdapf) / (lambdarf - lambdapf)); //(F6-2) break; case CompactnessClassFlexure.Slender: double Fcr = 0.69 * E / Math.Pow(b / tf, 2.0); //(F6-4) Mn = Fcr * Sy; //(F6-3) break; } double phiM_n = 0.9 * Mn; return(phiM_n); }