public override SteelLimitStateValue GetFlexuralLegOrStemBucklingStrength(FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType) { CompactnessClassFlexure StemCompactness = this.Compactness.GetWebCompactnessFlexure(); // for compact angles this limit state is not applicable SteelLimitStateValue ls = null; if (StemCompactness == General.Compactness.CompactnessClassFlexure.Compact) { ls = new SteelLimitStateValue(-1, false); return(ls); } else if (StemCompactness == CompactnessClassFlexure.Noncompact) { double S_c = GetSectionModulus(CompressionLocation, true, BracingType); //F10-7 double M_n = F_y * S_c * (2.43 - 1.72 * (((b) / (t))) * Math.Sqrt(((F_y) / (E)))); double phiM_n = 0.9 * M_n; ls = new SteelLimitStateValue(phiM_n, true); } else { double F_cr = ((0.71 * E) / (Math.Pow((((b) / (t))), 2))); double S_c = GetSectionModulus(CompressionLocation, true, BracingType); //(F10-8) double M_n = F_cr * S_c; double phiM_n = 0.9 * M_n; ls = new SteelLimitStateValue(phiM_n, true); } return(ls); }
private double GetYieldingMomentGeometricXCapacity(FlexuralCompressionFiberPosition compressionFiberLocation, FlexuralAndTorsionalBracingType BracingType) { double S_x = GetSectionModulus(compressionFiberLocation, false, BracingType); double Fy = Section.Material.YieldStress; double My = S_x * Fy; return My; }
public virtual SteelLimitStateValue GetFlexuralLegOrStemBucklingStrength(FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType) { SteelLimitStateValue ls = new SteelLimitStateValue(-1, false); return(ls); }
public override SteelLimitStateValue GetFlexuralLegOrStemBucklingStrength(FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType) { CompactnessClassFlexure StemCompactness = this.Compactness.GetWebCompactnessFlexure() ; // for compact angles this limit state is not applicable SteelLimitStateValue ls = null; if (StemCompactness == General.Compactness.CompactnessClassFlexure.Compact) { ls = new SteelLimitStateValue(-1, false); return ls; } else if (StemCompactness == CompactnessClassFlexure.Noncompact) { double S_c = GetSectionModulus(CompressionLocation, true, BracingType); //F10-7 double M_n = F_y * S_c * (2.43 - 1.72 * (((b) / (t))) * Math.Sqrt(((F_y) / (E)))); double phiM_n = 0.9 * M_n; ls = new SteelLimitStateValue(phiM_n, true); } else { double F_cr = ((0.71 * E) / (Math.Pow((((b) / (t))), 2))); double S_c = GetSectionModulus(CompressionLocation, true, BracingType); //(F10-8) double M_n = F_cr * S_c; double phiM_n = 0.9 * M_n; ls = new SteelLimitStateValue(phiM_n, true); } return ls; }
private double GetFlexuralTorsionalBucklingMomentCapacity(double L_b, double C_b, FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType, MomentAxis MomentAxis) { double M_n = 0.0; double M_n1 = 0.0; double M_n2 = 0.0; double M_e = GetM_e(L_b, C_b, CompressionLocation, BracingType, MomentAxis); double M_y = GetYieldingMomentGeometricXCapacity(CompressionLocation, BracingType); if (M_e<=M_y) { //F10-2 M_n1=(0.92-((0.17*M_e) / (M_y)))*M_e; } else { //F10-3 M_n1=(1.92-1.17*Math.Sqrt(((M_y) / (M_e))))*M_y; } M_n2 = 1.5*M_y; M_n= Math.Min(M_n1,M_n2); double phiM_n = 0.9 * M_n; return phiM_n; }
public override SteelLimitStateValue GetFlexuralLateralTorsionalBucklingStrength(double C_b, double L_b, FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType) { SteelLimitStateValue ls; if (BracingType == FlexuralAndTorsionalBracingType.FullLateralBracing) { ls = new SteelLimitStateValue(-1, false); } else { double phiM_n = GetLateralTorsionalBucklingStrength(CompressionLocation,L_b, C_b); ls = new SteelLimitStateValue(phiM_n, true); } return ls; }
public override SteelLimitStateValue GetFlexuralLateralTorsionalBucklingStrength(double C_b, double L_b, FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType) { if (SectionValuesWereCalculated == false) { GetSectionValues(); } SteelLimitStateValue ls; if (BracingType == FlexuralAndTorsionalBracingType.FullLateralBracing) { ls = new SteelLimitStateValue(-1, false); } else { double phiM_n = GetFlexuralTorsionalBucklingMomentCapacity(L_b, C_b); ls = new SteelLimitStateValue(phiM_n, true); } return ls; }
protected double GetSectionModulus(FlexuralCompressionFiberPosition compressionFiberLocation, bool UseCompressionSectionModulusOnly, FlexuralAndTorsionalBracingType BracingType) { double Sxt = GetSectionModulusTensionSxt(compressionFiberLocation); double Sxc = GetSectionModulusCompressionSxc(compressionFiberLocation); double Sx; if (UseCompressionSectionModulusOnly == true) { Sx=Sxc; } else { Sx=Math.Min(Sxc, Sxt); } if (BracingType == FlexuralAndTorsionalBracingType.NoLateralBracing) { Sx = 0.8 * Sx; } return Sx; }
public virtual SteelLimitStateValue GetFlexuralLegOrStemBucklingStrength(FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType) { SteelLimitStateValue ls = new SteelLimitStateValue(-1, false); return ls; }
private double GetM_e(double L_b, double C_b, FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType, MomentAxis MomentAxis) { double M_e; if (MomentAxis == MomentAxis.MajorPrincipalAxis) { if (IsEqualLeg == true) { M_e = ((0.46 * E * Math.Pow(b, 2) * Math.Pow(t, 2) * C_b) / (L_b)); //F10-4 } else { double beta_wCorrected; //F10-5 if (CompressionLocation == FlexuralCompressionFiberPosition.Top) { if (AngleRotation == AngleRotation.FlatLegBottom) { if (d < b) //short leg in compression { beta_wCorrected = beta_w; } else { beta_wCorrected = -beta_w; } } else { if (d > b) //short leg in compression { beta_wCorrected = beta_w; } else { beta_wCorrected = -beta_w; } } } else if (CompressionLocation == FlexuralCompressionFiberPosition.Bottom) { if (AngleRotation == AngleRotation.FlatLegBottom) { if (d > b) { beta_wCorrected = beta_w; } else { beta_wCorrected = -beta_w; } } else { if (d < b) { beta_wCorrected = beta_w; } else { beta_wCorrected = -beta_w; } } } else { throw new CompressionFiberPositionException(); } M_e = ((4.9 * E * I_z * C_b) / (Math.Pow(L_b, 2))) * (Math.Sqrt(Math.Pow(beta_wCorrected, 2) + 0.052 * Math.Pow((((L_b * t) / (r_z))), 2)) + beta_wCorrected); } } else { if (CompressionLocation == FlexuralCompressionFiberPosition.Top) { //F10-6a M_e = ((0.66 * E * Math.Pow(b, 4) * t * C_b) / (Math.Pow(L_b, 2))) * (Math.Sqrt(1 + 0.78 * Math.Pow((((L_b * t) / (Math.Pow(b, 2)))), 2)) - 1); } else { //F10-6b M_e = ((0.66 * E * Math.Pow(b, 4) * t * C_b) / (Math.Pow(L_b, 2))) * (Math.Sqrt(1 + 0.78 * Math.Pow((((L_b * t) / (Math.Pow(b, 2)))), 2)) + 1); } if (BracingType == FlexuralAndTorsionalBracingType.AtPointOfMaximumMoment) { M_e = 1.25 * M_e; } } return(M_e); }
private double GetFlexuralTorsionalBucklingMomentCapacity(double L_b, double C_b, FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType, MomentAxis MomentAxis) { double M_n = 0.0; double M_n1 = 0.0; double M_n2 = 0.0; double M_e = GetM_e(L_b, C_b, CompressionLocation, BracingType, MomentAxis); double M_y = GetYieldingMomentGeometricXCapacity(CompressionLocation, BracingType); if (M_e <= M_y) { //F10-2 M_n1 = (0.92 - ((0.17 * M_e) / (M_y))) * M_e; } else { //F10-3 M_n1 = (1.92 - 1.17 * Math.Sqrt(((M_y) / (M_e)))) * M_y; } M_n2 = 1.5 * M_y; M_n = Math.Min(M_n1, M_n2); double phiM_n = 0.9 * M_n; return(phiM_n); }
private double GetM_e(double L_b, double C_b, FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType, MomentAxis MomentAxis) { double M_e; if (MomentAxis == MomentAxis.MajorPrincipalAxis) { if (IsEqualLeg == true) { M_e = ((0.46 * E * Math.Pow(b, 2) * Math.Pow(t, 2) * C_b) / (L_b)); //F10-4 } else { double beta_wCorrected; //F10-5 if (CompressionLocation == FlexuralCompressionFiberPosition.Top) { if (AngleRotation == AngleRotation.FlatLegBottom) { if (d < b) //short leg in compression { beta_wCorrected = beta_w; } else { beta_wCorrected = -beta_w; } } else { if (d > b) //short leg in compression { beta_wCorrected = beta_w; } else { beta_wCorrected = -beta_w; } } } else if (CompressionLocation == FlexuralCompressionFiberPosition.Bottom) { if (AngleRotation == AngleRotation.FlatLegBottom) { if (d > b) { beta_wCorrected = beta_w; } else { beta_wCorrected = -beta_w; } } else { if (d < b) { beta_wCorrected = beta_w; } else { beta_wCorrected = -beta_w; } } } else { throw new CompressionFiberPositionException(); } M_e = ((4.9 * E * I_z * C_b) / (Math.Pow(L_b, 2))) * (Math.Sqrt(Math.Pow(beta_wCorrected, 2) + 0.052 * Math.Pow((((L_b * t) / (r_z))), 2)) + beta_wCorrected); } } else { if (CompressionLocation == FlexuralCompressionFiberPosition.Top) { //F10-6a M_e = ((0.66 * E * Math.Pow(b, 4) * t * C_b) / (Math.Pow(L_b, 2))) * (Math.Sqrt(1 + 0.78 * Math.Pow((((L_b * t) / (Math.Pow(b, 2)))), 2)) - 1); } else { //F10-6b M_e = ((0.66 * E * Math.Pow(b, 4) * t * C_b) / (Math.Pow(L_b, 2))) * (Math.Sqrt(1 + 0.78 * Math.Pow((((L_b * t) / (Math.Pow(b, 2)))), 2)) + 1); } if (BracingType == FlexuralAndTorsionalBracingType.AtPointOfMaximumMoment) { M_e = 1.25 * M_e; } } return M_e; }
public virtual SteelLimitStateValue GetFlexuralLateralTorsionalBucklingStrength(double C_b, double L_b, FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType, MomentAxis MomentAxis) { double phiM_n = GetFlexuralTorsionalBucklingMomentCapacity(CompressionLocation, L_b); SteelLimitStateValue ls = new SteelLimitStateValue(-1, false); return(ls); }
private double GetYieldingMomentGeometricXCapacity(FlexuralCompressionFiberPosition compressionFiberLocation, FlexuralAndTorsionalBracingType BracingType) { double S_x = GetSectionModulus(compressionFiberLocation, false, BracingType); double Fy = Section.Material.YieldStress; double My = S_x * Fy; return(My); }
protected double GetSectionModulus(FlexuralCompressionFiberPosition compressionFiberLocation, bool UseCompressionSectionModulusOnly, FlexuralAndTorsionalBracingType BracingType) { double Sxt = GetSectionModulusTensionSxt(compressionFiberLocation); double Sxc = GetSectionModulusCompressionSxc(compressionFiberLocation); double Sx; if (UseCompressionSectionModulusOnly == true) { Sx = Sxc; } else { Sx = Math.Min(Sxc, Sxt); } if (BracingType == FlexuralAndTorsionalBracingType.NoLateralBracing) { Sx = 0.8 * Sx; } return(Sx); }
public override SteelLimitStateValue GetFlexuralLateralTorsionalBucklingStrength(double C_b, double L_b, FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType) { return base.GetFlexuralLateralTorsionalBucklingStrength(C_b, L_b, CompressionLocation, BracingType); }
public override SteelLimitStateValue GetFlexuralLateralTorsionalBucklingStrength(double C_b, double L_b, FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType) { return(base.GetFlexuralLateralTorsionalBucklingStrength(C_b, L_b, CompressionLocation, BracingType)); }
public override SteelLimitStateValue GetFlexuralLateralTorsionalBucklingStrength(double C_b, double L_b, FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType) { SteelLimitStateValue ls = null; double b, h; if (sectionSolid is ISectionRound) { ls = new SteelLimitStateValue(); ls.IsApplicable = false; ls.Value = -1; return ls; } else if (sectionSolid is ISectionRectangular) { ISectionRectangular recangularShape = sectionSolid as ISectionRectangular; if (MomentAxis == Common.Entities.MomentAxis.XAxis) { b = recangularShape.B ; h = recangularShape.H; } else if (MomentAxis == Common.Entities.MomentAxis.YAxis) { b = recangularShape.H; h = recangularShape.B; } else { throw new FlexuralBendingAxisException(); } if (b >= h) { ls.IsApplicable = false; ls.Value = -1; } else { ls = GetLateralTorsionalBucklingStrength(L_b, C_b); } } else { throw new ShapeTypeNotSupportedException(" flexural calculation of solid-shape beam"); } return ls; }
public override SteelLimitStateValue GetFlexuralLateralTorsionalBucklingStrength(double C_b, double L_b, FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType) { SteelLimitStateValue ls; if (BracingType == FlexuralAndTorsionalBracingType.FullLateralBracing) { ls = new SteelLimitStateValue(-1, false); } else { double phiM_n = GetLateralTorsionalBucklingCapacity(CompressionLocation, L_b, C_b); ls = new SteelLimitStateValue(phiM_n, true); } return(ls); }
public override SteelLimitStateValue GetFlexuralLateralTorsionalBucklingStrength(double C_b, double L_b, FlexuralCompressionFiberPosition CompressionLocation, FlexuralAndTorsionalBracingType BracingType) { SteelLimitStateValue ls = null; double b, h; if (sectionSolid is ISectionRound) { ls = new SteelLimitStateValue(); ls.IsApplicable = false; ls.Value = -1; return(ls); } else if (sectionSolid is ISectionRectangular) { ISectionRectangular recangularShape = sectionSolid as ISectionRectangular; if (MomentAxis == Common.Entities.MomentAxis.XAxis) { b = recangularShape.B; h = recangularShape.H; } else if (MomentAxis == Common.Entities.MomentAxis.YAxis) { b = recangularShape.H; h = recangularShape.B; } else { throw new FlexuralBendingAxisException(); } if (b >= h) { ls.IsApplicable = false; ls.Value = -1; } else { ls = GetLateralTorsionalBucklingStrength(L_b, C_b); } } else { throw new ShapeTypeNotSupportedException(" flexural calculation of solid-shape beam"); } return(ls); }