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; }
public ChannelMember(ISteelSection Section, bool IsRolledShape, FlexuralCompressionFiberPosition compressionFiberPosition) { double b; double tf; if (Section.Shape is ISectionChannel) { ISectionChannel sectChannel = Section.Shape as ISectionChannel; switch (compressionFiberPosition) { case FlexuralCompressionFiberPosition.Top: b = sectChannel.b_f; tf = sectChannel.t_f; break; case FlexuralCompressionFiberPosition.Bottom: b = sectChannel.b_f; tf = sectChannel.t_f; break; default: throw new CompressionFiberPositionException(); } //flange compactness FlangeCompactness = new FlangeOfChannel(Section.Material, b / 2.0, tf); //web compactness WebCompactness = new WebOfChannel(Section.Material, sectChannel); } }
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); }
public BeamRectangularHss(ISteelSection section, FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis, ICalcLog CalcLog) : base(section, CalcLog) { GetSectionValues(); this.MomentAxis = MomentAxis; FlangeCompactnessClass = GetFlangeCompactness(compressionFiberPosition, MomentAxis); }
public SinglySymmetricIBeam(ISteelSection section, bool IsRolledMember, FlexuralCompressionFiberPosition compressionFiberPosition, ICalcLog CalcLog) { this.section = section; this.IsRolledMember = IsRolledMember; this.CalcLog = CalcLog; this.compressionFiberPosition = compressionFiberPosition; }
public double GetUtilizationRatio(HssKConnectionLoadCaseData LoadCase, out double RequiredAxialStrenghPro, out double RequiredMomentStrengthMro) { ISteelSection chordSec = Chord as ISteelSection; double Umax = 0.0; double Fx = 0.0; double M = 0.0; if (chordSec != null) { double D = GetChordDiameter(); var forces = Chord.Forces.Where(f => f.LoadCaseName == LoadCase.LoadCaseName).ToList(); foreach (var f in forces) { Fx = Math.Abs(f.Fx); M = Math.Sqrt(Math.Pow(f.My, 2) + Math.Pow(f.Mz, 2)); double U = GetUtilizationRatio(chordSec, Fx, M); } } else { throw new Exception("Chord Member must implement ISteelSection interface"); } RequiredAxialStrenghPro = Fx; RequiredMomentStrengthMro = M; return(Umax); }
public BeamAngle(ISteelSection section, ICalcLog CalcLog, AngleRotation AngleRotation, MomentAxis MomentAxis, AngleOrientation AngleOrientation = AngleOrientation.ShortLegVertical) : base(section, CalcLog, AngleOrientation) { this.AngleRotation = AngleRotation; this.AngleOrientation = AngleOrientation; this.MomentAxis = MomentAxis; GetSectionValues(); }
public BeamISlenderWeb(ISteelSection section, bool IsRolledMember, ICalcLog CalcLog) : base(section, IsRolledMember, CalcLog) { SectionI = this.Section as ISectionI; if (section == null) { throw new SectionWrongTypeException(typeof(ISectionI)); } GetSectionValues(); }
public ISteelSection GetHssSteelSection() { ISteelSection s = Hss.Section as ISteelSection; if (s == null) { throw new Exception("Hss must implement ISteelSection interface"); } return(s); }
public BeamAngle(ISteelSection section, ICalcLog CalcLog, AngleRotation AngleRotation, MomentAxis MomentAxis, AngleOrientation AngleOrientation= AngleOrientation.ShortLegVertical) : base(section, CalcLog, AngleOrientation) { this.AngleRotation = AngleRotation; this.AngleOrientation = AngleOrientation; this.MomentAxis = MomentAxis; GetSectionValues(); }
public RhsNonSlender(ISteelSection Section, double L_ex, double L_ey, double L_ez) : base(Section, L_ex, L_ey, L_ez) { if (Section.Shape is ISectionTube) { SectionRhs = Section.Shape as ISectionTube; } else { throw new Exception("Section of wrong type: Need ISectionTube"); } }
public IShapeMember(ISteelSection Section, bool IsRolledShape, FlexuralCompressionFiberPosition compressionFiberPosition) { double b; double tf; if (Section.Shape is ISectionI) { ISectionI sectI = Section.Shape as ISectionI; switch (compressionFiberPosition) { case FlexuralCompressionFiberPosition.Top: b = sectI.b_fTop; tf = sectI.t_fTop; break; case FlexuralCompressionFiberPosition.Bottom: b = sectI.b_fBot; tf = sectI.t_fBot; break; default: throw new CompressionFiberPositionException(); } //flange compactness if (IsRolledShape == true) { this.FlangeCompactness = new FlangeOfRolledIShape(Section.Material, b / 2.0, tf); } else { this.FlangeCompactness = new FlangeOfBuiltUpI(Section.Material, sectI, compressionFiberPosition); } //web compactness bool isDoublySymmetric = ShapeISymmetry.IsDoublySymmetric(Section.Shape); if (isDoublySymmetric == true) { WebCompactness = new WebOfDoublySymI(Section.Material, sectI); } else { WebCompactness = new WebOfSinglySymI(Section.Material, sectI, compressionFiberPosition); } } }
public RhsSlender(ISteelSection Section, double L_x, double L_y, double L_z, ICalcLog CalcLog) : base(Section, L_x, L_y, L_z, CalcLog) { if (Section.Shape is ISectionTube) { SectionRhs = Section.Shape as ISectionTube; } else { throw new Exception("Section of wrong type: Need ISectionTube"); } }
public ChsSlender(ISteelSection Section, double L_x, double L_y, double L_z) : base(Section, L_x, L_y, L_z) { if (Section.Shape is ISectionPipe) { this.SectionPipe = Section.Shape as ISectionPipe; } else { throw new Exception("Section of wrong type: Need ISectionPipe"); } }
public BeamTee(ISteelSection section, ICalcLog CalcLog) : base(section, CalcLog) { if (section is ISectionTee) { SectionTee = section as ISectionTee; } else { throw new SectionWrongTypeException(typeof(ISectionTee)); } GetSectionValues(); }
public RhsNonSlender(ISteelSection Section, double L_ex, double L_ey, double L_ez, ICalcLog CalcLog) : base(Section,L_ex,L_ey, L_ez, CalcLog) { if (Section.Shape is ISectionTube) { SectionRhs = Section.Shape as ISectionTube; } else { throw new Exception("Section of wrong type: Need ISectionTube"); } }
public BeamSolid(ISteelSection section, ICalcLog CalcLog, MomentAxis MomentAxis) : base(section, CalcLog) { this.MomentAxis = MomentAxis; GetSectionValues(); sectionSolid = null; ISolidShape s = Section.Shape as ISolidShape; if (s == null) { throw new SectionWrongTypeException(typeof(ISolidShape)); } }
public TeeMember(ISteelSection Section) { if (Section.Shape is ISectionTee) { ISectionTee tee = Section.Shape as ISectionTee; FlangeCompactness = new FlangeOfTee(Section.Material, tee); WebCompactness = new StemOfTee(Section.Material, tee); } else { throw new SectionWrongTypeException(typeof(ISectionTee)); } }
//ICompactnessElement FlangeCompactness; //ICompactnessElement WebCompactness; public HollowMember(ISteelSection section, FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis) { ISection Section = section.Shape; if (Section is ISectionTube|| Section is ISectionPipe || Section is ISectionBox) { if (Section is ISectionTube) { ISectionTube tube = Section as ISectionTube; if (MomentAxis == MomentAxis.XAxis) { FlangeCompactness = new FlangeOfRhs(section.Material, tube, MomentAxis); WebCompactness = new WebOfRhs(section.Material, tube, MomentAxis); } else { WebCompactness = new FlangeOfRhs(section.Material, tube, MomentAxis); FlangeCompactness = new WebOfRhs(section.Material, tube, MomentAxis); } } if (Section is ISectionPipe) { ISectionPipe pipe = Section as ISectionPipe; FlangeCompactness = new WallOfChs(section.Material, pipe); WebCompactness = new WallOfChs(section.Material, pipe); } if (Section is ISectionBox) { ISectionBox box = Section as ISectionBox; if (MomentAxis == MomentAxis.XAxis) { FlangeCompactness = new FlangeOfBox(section.Material, box); WebCompactness = new WebOfBox(section.Material, box); } else { WebCompactness = new FlangeOfBox(section.Material, box); FlangeCompactness = new WebOfBox(section.Material, box); } } } else { throw new SectionWrongTypeException("ISectionTube, ISectionPipe or ISectionBox"); } }
public IShapeCompact(ISteelSection Section, bool IsRolled, double L_x, double L_y, double L_z, ICalcLog CalcLog) : base(Section, L_x, L_y, L_z, CalcLog) { if (Section.Shape is ISectionI) { SectionI = Section.Shape as ISectionI; } else { throw new Exception("Section of wrong type: Need ISectionI"); } this.IsRolled = IsRolled; }
//ICompactnessElement FlangeCompactness; //ICompactnessElement WebCompactness; public HollowMember(ISteelSection section, FlexuralCompressionFiberPosition compressionFiberPosition, MomentAxis MomentAxis) { ISection Section = section.Shape; if (Section is ISectionTube || Section is ISectionPipe || Section is ISectionBox) { if (Section is ISectionTube) { ISectionTube tube = Section as ISectionTube; if (MomentAxis == MomentAxis.XAxis) { FlangeCompactness = new FlangeOfRhs(section.Material, tube, MomentAxis); WebCompactness = new WebOfRhs(section.Material, tube, MomentAxis); } else { WebCompactness = new FlangeOfRhs(section.Material, tube, MomentAxis); FlangeCompactness = new WebOfRhs(section.Material, tube, MomentAxis); } } if (Section is ISectionPipe) { ISectionPipe pipe = Section as ISectionPipe; FlangeCompactness = new WallOfChs(section.Material, pipe); WebCompactness = new WallOfChs(section.Material, pipe); } if (Section is ISectionBox) { ISectionBox box = Section as ISectionBox; if (MomentAxis == MomentAxis.XAxis) { FlangeCompactness = new FlangeOfBox(section.Material, box); WebCompactness = new WebOfBox(section.Material, box); } else { WebCompactness = new FlangeOfBox(section.Material, box); FlangeCompactness = new WebOfBox(section.Material, box); } } } else { throw new SectionWrongTypeException("ISectionTube, ISectionPipe or ISectionBox"); } }
public BeamCircularHss(ISteelSection section, ICalcLog CalcLog) : base(section, CalcLog) { if (section is ISectionPipe) { SectionPipe = section as ISectionPipe; } else { throw new SectionWrongTypeException(typeof(ISectionTube)); } GetSectionValues(); }
ICompactnessElement FlangeCompactness; ICompactnessElement WebCompactness; public TeeMember(ISteelSection Section) { if (Section.Shape is ISectionTee) { ISectionTee tee = Section.Shape as ISectionTee; FlangeCompactness = new FlangeOfTee(Section.Material, tee); WebCompactness = new StemOfTee(Section.Material, tee); } else { throw new SectionWrongTypeException(typeof(ISectionTee));
public IShapeCompact(ISteelSection Section, bool IsRolled, double L_x, double L_y, double L_z) : base(Section, L_x, L_y, L_z) { bool IsValidShape = CheckValidShape(Section.Shape); if (IsValidShape == true) { SetShape(Section.Shape); } else { throw new Exception("Section of wrong type: Need ISectionI"); } this.IsRolled = IsRolled; }
public FlexuralMemberChsBase(ISteelSection section, ICalcLog CalcLog) : base(section, CalcLog) { sectionPipe = null; ISectionPipe s = Section as ISectionPipe; if (s == null) { throw new SectionWrongTypeException(typeof(ISectionPipe)); } else { sectionPipe = s; //compactness = new ShapeCompactness.HollowMember(Section, CompressionLocation.Top); } }
public FlexuralMemberAngleBase(ISteelSection section, ICalcLog CalcLog, AngleOrientation AngleOrientation) : base(section, CalcLog) { sectionAngle = null; ISectionAngle s = Section.Shape as ISectionAngle; if (s == null) { throw new SectionWrongTypeException(typeof(ISectionAngle)); } else { sectionAngle = s; compactness = new ShapeCompactness.AngleMember(s, section.Material, AngleOrientation); } }
public BeamDoubleAngle(ISteelSection section, ICalcLog CalcLog, AngleRotation AngleRotation, AngleOrientation AngleOrientation) : base(section, CalcLog, AngleOrientation) { if (section is ISectionDoubleAngle) { SectionDoubleAngle = section as ISectionDoubleAngle; } else { throw new SectionWrongTypeException(typeof(ISectionTube)); } this.AngleOrientation = AngleOrientation; this.AngleRotation = AngleRotation; GetSectionValues(); }
public BeamChannel(ISteelSection section, bool IsRolledMember, ICalcLog CalcLog) : base(section, IsRolledMember, CalcLog) { SectionChannel = null; ISectionChannel s = Section.Shape as ISectionChannel; this.isRolledMember = IsRolledMember; if (s == null) { throw new SectionWrongTypeException(typeof(ISectionChannel)); } else { SectionChannel = s; } }
public FlexuralMemberIBase(ISteelSection section, bool IsRolledMember, ICalcLog CalcLog) : base(section, CalcLog) { this.isRolledMember = IsRolledMember; if (!(Section.Shape is IDoubleFlangeMember)) { throw new SectionWrongTypeException("I-section or Channel"); } else { if (Section.Shape is ISectionI) { ISectionI s = Section.Shape as ISectionI; } } }
public double GetUtilizationRatio(ISteelSection Section, double RequiredAxialStrenghPro, double RequiredMomentStrengthMro) { double U = 0; double Fy = Section.Material.YieldStress; double Fc = 0.0; Fc = Fy; ISection sec = Section.Shape; double Ag = sec.A; double S = Math.Min(sec.S_xBot, sec.S_xTop); double Pro = RequiredAxialStrenghPro; double Mro = RequiredMomentStrengthMro; //(K1-6) from TABLE K1.2 U = Math.Abs(Pro / (Fc * Ag) + Mro / (Fc * S)); return U; }
public double GetUtilizationRatio(ISteelSection Section, double RequiredAxialStrenghPro, double RequiredMomentStrengthMro) { double U = 0; double Fy = Section.Material.YieldStress; double Fc = 0.0; Fc = Fy; ISection sec = Section.Shape; double Ag = sec.A; double S = Math.Min(sec.S_xBot, sec.S_xTop); double Pro = RequiredAxialStrenghPro; double Mro = RequiredMomentStrengthMro; //(K1-6) from TABLE K1.2 U = Math.Abs(Pro / (Fc * Ag) + Mro / (Fc * S)); return(U); }
public double GetChordStressInteractionFactorQf(bool ConnectingSurfaceInTension, double RequiredAxialStrenghPro, double RequiredMomentStrengthMro) { double Qf = 0.0; if (ConnectingSurfaceInTension == true) { //(K1-5a) Qf = 1.0; } else { ISteelSection s = Chord.Section; double U = GetUtilizationRatio(s, RequiredAxialStrenghPro, RequiredMomentStrengthMro); //(K1-5b) Qf = 1.0 - 0.3 * U * (1.0 + U); } return(Qf); }
public ISteelCompressionMember GetChsShape(ISteelSection Section, double L_x, double L_y, double L_z, ICalcLog CalcLog) { ISteelCompressionMember column = null; IShapeCompactness compactnessX = new ShapeCompactness.HollowMember(Section, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Top, Common.Entities.MomentAxis.XAxis); IShapeCompactness compactnessY = new ShapeCompactness.HollowMember(Section, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Top, Common.Entities.MomentAxis.YAxis); ICalcLog Log = new CalcLog(); CompactnessClassAxialCompression webCompactnessX = compactnessX.GetWebCompactnessCompression(); CompactnessClassAxialCompression webCompactnessY = compactnessY.GetWebCompactnessCompression(); if (webCompactnessX == CompactnessClassAxialCompression.NonSlender && webCompactnessY == CompactnessClassAxialCompression.NonSlender) { return(new ChsNonSlender(Section, L_x, L_y, L_z, CalcLog)); } else { return(new ChsSlender(Section, L_x, L_y, L_z, CalcLog)); } return(column); }
public ISteelCompressionMember GetRhsShape(ISteelSection Section, double L_ex, double L_ey, double L_ez, ICalcLog CalcLog) { ISteelCompressionMember column = null; IShapeCompactness compactnessX = new ShapeCompactness.HollowMember(Section, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Top, Common.Entities.MomentAxis.XAxis); IShapeCompactness compactnessY = new ShapeCompactness.HollowMember(Section, Common.Section.Interfaces.FlexuralCompressionFiberPosition.Top, Common.Entities.MomentAxis.YAxis); ICalcLog Log = new CalcLog(); CompactnessClassAxialCompression webCompactnessX = compactnessX.GetWebCompactnessCompression(); CompactnessClassAxialCompression webCompactnessY = compactnessY.GetWebCompactnessCompression(); if (webCompactnessX == CompactnessClassAxialCompression.NonSlender && webCompactnessY == CompactnessClassAxialCompression.NonSlender ) { return new RhsNonSlender(Section, L_ex, L_ey, L_ez, CalcLog); } else { return new RhsSlender(Section, L_ex, L_ey, L_ez, CalcLog); } return column; }
public FlexuralMemberRhsBase(ISteelSection section, ICalcLog CalcLog) : base(section, CalcLog) { //sectionTube = null; if (Section.Shape is ISectionTube || Section.Shape is ISectionBox) { this.Section = section; if (Section.Shape is ISectionTube) { ShapeTube = Section.Shape as ISectionTube; } else { ShapeBox = Section.Shape as ISectionBox; } } else { throw new ShapeTypeNotSupportedException(" flexural calculation of box or rectangular HSS beam"); } }
public FlexuralMemberTeeBase(ISteelSection section, ICalcLog CalcLog) : base(section, CalcLog) { sectionTee = null; this.Section = section; ISectionTee sTee = section as ISectionTee; if (sTee == null) { ISectionDoubleAngle sDL = section as ISectionDoubleAngle; if (sDL == null) { throw new Exception("Section must be of type SectionTee or SectionDoubleAngle"); } } else { sectionTee = sTee; Compactness = GetShapeCompactness(); } }
public FlexuralMemberTeeBase(ISteelSection section, ICalcLog CalcLog) : base(section, CalcLog) { sectionTee = null; this.Section = section; ISectionTee sTee = section as ISectionTee; if (sTee == null) { ISectionDoubleAngle sDL = section as ISectionDoubleAngle; if (sDL ==null) { throw new Exception("Section must be of type SectionTee or SectionDoubleAngle"); } } else { sectionTee = sTee; Compactness = GetShapeCompactness(); } }
public AffectedElement(ISteelSection Section, ICalcLog CalcLog) : base(CalcLog) { this.section = Section; }
public ColumnFlexuralAndTorsionalBuckling(ISteelSection Section, double L_ex, double L_ey, double L_ez, ICalcLog CalcLog) : base(Section,L_ex,L_ey, CalcLog) { this.L_ez = L_ez; }
public ColumnFlexuralAndTorsionalBucklingSinglySymmetric(ISteelSection Section, double L_x, double L_y, double L_z, ICalcLog CalcLog) : base(Section,L_x,L_y, L_z, CalcLog) { }
// public CompressionMemberRectangle(ISteelSection Section, double L_x, double L_y, double K_x, double K_y, ICalcLog CalcLog) : //base(Section, L_x,L_y,K_x,K_y, CalcLog) public CompressionMemberRectangle(ISteelSection Section, double L_x, double L_y, double L_z, ICalcLog CalcLog) : base(Section, L_x,L_y, L_z, CalcLog) { }
//public ColumnDoublySymmetric(ISteelSection Section, double L_x, double L_y, double K_x, double K_y, ICalcLog CalcLog) // : base(Section,L_x,L_y,K_x,K_y, CalcLog) public ColumnDoublySymmetric(ISteelSection Section, double L_x, double L_y, double L_z, ICalcLog CalcLog) : base(Section,L_x,L_y,L_z, CalcLog) { }
public BeamINoncompactWebCompactFlange(ISteelSection section, bool IsRolledMember, ICalcLog CalcLog) : base(section, IsRolledMember, CalcLog) { }
// public ColumnTee(ISteelSection Section, double L_x, double L_y, double K_x, double K_y, ICalcLog CalcLog) // : base(Section, L_x, L_y,K_x,K_y, CalcLog) //{ public ColumnTee(ISteelSection Section, double L_x, double L_y, double L_z, ICalcLog CalcLog) : base(Section, L_x, L_y, L_z, CalcLog) { //(E4-2) }
public BeamIWeakAxis (ISteelSection section, bool IsRolledMember, ICalcLog CalcLog) : base(section, IsRolledMember, CalcLog) { }
public AffectedElementInShear(ISteelSection Section,ICalcLog CalcLog) : base(Section, CalcLog) { }
public ColumnFlexuralBuckling(ISteelSection Section, double L_ex, double L_ey, ICalcLog CalcLog) : base(Section, L_ex, L_ey, CalcLog) { }
public FlexuralMember(ISteelSection section, ICalcLog CalcLog) : base(section, CalcLog) { }