Example #1
0
        public override string GetStepParameters()
        {
            var parameters = new List <string>();

            parameters.Add(GlobalId != null ? GlobalId.ToStepValue() : "$");
            parameters.Add(OwnerHistory != null ? OwnerHistory.ToStepValue() : "$");
            parameters.Add(Name != null ? Name.ToStepValue() : "$");
            parameters.Add(Description != null ? Description.ToStepValue() : "$");
            parameters.Add(ObjectType != null ? ObjectType.ToStepValue() : "$");
            parameters.Add(ObjectPlacement != null ? ObjectPlacement.ToStepValue() : "$");
            parameters.Add(Representation != null ? Representation.ToStepValue() : "$");
            parameters.Add(Tag != null ? Tag.ToStepValue() : "$");
            parameters.Add(SteelGrade != null ? SteelGrade.ToStepValue() : "$");
            parameters.Add(MeshLength != null ? MeshLength.ToStepValue() : "$");
            parameters.Add(MeshWidth != null ? MeshWidth.ToStepValue() : "$");
            parameters.Add(LongitudinalBarNominalDiameter != null ? LongitudinalBarNominalDiameter.ToStepValue() : "$");
            parameters.Add(TransverseBarNominalDiameter != null ? TransverseBarNominalDiameter.ToStepValue() : "$");
            parameters.Add(LongitudinalBarCrossSectionArea != null ? LongitudinalBarCrossSectionArea.ToStepValue() : "$");
            parameters.Add(TransverseBarCrossSectionArea != null ? TransverseBarCrossSectionArea.ToStepValue() : "$");
            parameters.Add(LongitudinalBarSpacing != null ? LongitudinalBarSpacing.ToStepValue() : "$");
            parameters.Add(TransverseBarSpacing != null ? TransverseBarSpacing.ToStepValue() : "$");
            parameters.Add(PredefinedType.ToStepValue());

            return(string.Join(", ", parameters.ToArray()));
        }
        //=================================
        //To Design We have to First
        //Get the Reruired Zx and we do so by
        public void GetAllowableNormalStress(SteelGrade Grade, Sway swaycondition)
        {
            lmdaMax = (LmdaX > LmdaY) ? lmdaX : LmdaY;
            if (lmdaMax > 100)
            {
                Fc = lmdaMax / 7500;
            }
            else
            {
                switch (Grade)
                {
                case SteelGrade.st37:
                    Fc = 1.4 - 0.000065 * lmdaMax * lmdaMax;
                    break;

                case SteelGrade.st44:
                    Fc = 1.6 - 0.000085 * lmdaMax * lmdaMax;
                    break;

                case SteelGrade.st52:
                    Fc = 2.1 - 0.000135 * lmdaMax * lmdaMax;
                    break;

                default:
                    break;
                }
            }
            double Cmx;
            double Cmy;

            if (Fca / Fc < 0.15)
            {
                A1 = A2 = 1;
            }
            else if (Fca / Fc > 0.15)
            {
                switch (swaycondition)
                {
                case Sway.permitted:
                    Cmx = 0.85;
                    Cmy = 0.85;
                    A1  = ((Cmx / (1 - (Fca / Fex))) < 1) ? (Cmx / (1 - (Fca / Fex))) : 1;
                    A2  = ((Cmy / (1 - (Fca / Fey))) < 1) ? (Cmy / (1 - (Fca / Fey))) : 1;
                    break;

                case Sway.NotPermitted:
                    //not handled
                    break;

                default:
                    break;
                }
            }
        }
        public override string GetStepParameters()
        {
            var parameters = new List <string>();

            parameters.Add(TotalCrossSectionArea != null ? TotalCrossSectionArea.ToStepValue() : "$");
            parameters.Add(SteelGrade != null ? SteelGrade.ToStepValue() : "$");
            parameters.Add(BarSurface.ToStepValue());
            parameters.Add(EffectiveDepth != null ? EffectiveDepth.ToStepValue() : "$");
            parameters.Add(NominalBarDiameter != null ? NominalBarDiameter.ToStepValue() : "$");
            parameters.Add(BarCount != null ? BarCount.ToStepValue() : "$");

            return(string.Join(", ", parameters.ToArray()));
        }
Example #4
0
        public static void initDesigner(SteelGrade Grade, LoadingType LoadingType, double _LUnsupported, double _LbInPlan, double _LbOutPlan,
                                        SectionI _ColumnSection, /*, HndzISectionProfile _BeamSection, HndzColumnStandardCase _columnTapered,
                                                                  * HndzBeamStandrdCase _beamTapered*/HndzAnalysisResults _AppliedLoadsStart, HndzAnalysisResults _AppliedLoadsEnd)
        {
            switch (LoadingType)
            {
            case LoadingType.Case1:
                CaseStress = 1.0;
                break;

            case LoadingType.Case2:
                CaseStress = 1.2;
                break;
            }
            // LbInPlan = _LbInPlan;
            //LbOutPlan = _LbOutPlan;
            // LUnsupported = _LUnsupported;
            BuiltUpSection    = _ColumnSection;
            AppliedLoadsStart = _AppliedLoadsStart;
            AppliedLoadsEnd   = _AppliedLoadsEnd;
            //BuiltUpSectionRafter = _BeamSection;
            //columnTapered = _columnTapered;
            //beamTapered = _beamTapered;
            switch (Grade)
            {
            case SteelGrade.st37:
                Fy   = 2.4;
                Fu   = 3.6;
                FcP1 = 1.4;
                FcP2 = 0.000065;
                break;

            case SteelGrade.st44:
                Fy   = 2.8;
                Fu   = 4.4;
                FcP1 = 1.6;
                FcP2 = 0.000085;
                break;

            case SteelGrade.st52:
                Fy   = 3.6;
                Fu   = 5.2;
                FcP1 = 2.1;
                FcP2 = 0.000135;
                break;
            }
        }
Example #5
0
        public override string GetStepParameters()
        {
            var parameters = new List <string>();

            parameters.Add(GlobalId != null ? GlobalId.ToStepValue() : "$");
            parameters.Add(OwnerHistory != null ? OwnerHistory.ToStepValue() : "$");
            parameters.Add(Name != null ? Name.ToStepValue() : "$");
            parameters.Add(Description != null ? Description.ToStepValue() : "$");
            parameters.Add(ObjectType != null ? ObjectType.ToStepValue() : "$");
            parameters.Add(ObjectPlacement != null ? ObjectPlacement.ToStepValue() : "$");
            parameters.Add(Representation != null ? Representation.ToStepValue() : "$");
            parameters.Add(Tag != null ? Tag.ToStepValue() : "$");
            parameters.Add(SteelGrade != null ? SteelGrade.ToStepValue() : "$");
            parameters.Add(PredefinedType.ToStepValue());

            return(string.Join(", ", parameters.ToArray()));
        }
        public static void initDesigner(SteelGrade Grade, LoadingType LoadingType, HndzISectionProfile _ColumnSection, HndzISectionProfile _BeamSection, HndzColumnStandardCase _columnTapered,
                                        HndzBeamStandrdCase _beamTapered)
        {
            switch (LoadingType)
            {
            case LoadingType.Case1:
                CaseStress = 1.0;
                break;

            case LoadingType.Case2:
                CaseStress = 1.2;
                break;
            }
            BuiltUpSection       = _ColumnSection;
            BuiltUpSectionRafter = _BeamSection;
            columnTapered        = _columnTapered;
            beamTapered          = _beamTapered;
            switch (Grade)
            {
            case SteelGrade.st37:
                Fy   = 2.4;
                Fu   = 3.6;
                FYX  = 1.4;
                FYXZ = 0.000065;
                break;

            case SteelGrade.st44:
                Fy   = 2.8;
                Fu   = 4.4;
                FYX  = 1.6;
                FYXZ = 0.000085;
                break;

            case SteelGrade.st52:
                Fy   = 3.6;
                Fu   = 5.2;
                FYX  = 2.1;
                FYXZ = 0.000135;
                break;
            }
        }
Example #7
0
        public override string GetStepParameters()
        {
            var parameters = new List <string>();

            parameters.Add(GlobalId != null ? GlobalId.ToStepValue() : "$");
            parameters.Add(OwnerHistory != null ? OwnerHistory.ToStepValue() : "$");
            parameters.Add(Name != null ? Name.ToStepValue() : "$");
            parameters.Add(Description != null ? Description.ToStepValue() : "$");
            parameters.Add(ObjectType != null ? ObjectType.ToStepValue() : "$");
            parameters.Add(ObjectPlacement != null ? ObjectPlacement.ToStepValue() : "$");
            parameters.Add(Representation != null ? Representation.ToStepValue() : "$");
            parameters.Add(Tag != null ? Tag.ToStepValue() : "$");
            parameters.Add(SteelGrade != null ? SteelGrade.ToStepValue() : "$");
            parameters.Add(PredefinedType.ToStepValue());
            parameters.Add(NominalDiameter != null ? NominalDiameter.ToStepValue() : "$");
            parameters.Add(CrossSectionArea != null ? CrossSectionArea.ToStepValue() : "$");
            parameters.Add(TensionForce != null ? TensionForce.ToStepValue() : "$");
            parameters.Add(PreStress != null ? PreStress.ToStepValue() : "$");
            parameters.Add(FrictionCoefficient != null ? FrictionCoefficient.ToStepValue() : "$");
            parameters.Add(AnchorageSlip != null ? AnchorageSlip.ToStepValue() : "$");
            parameters.Add(MinCurvatureRadius != null ? MinCurvatureRadius.ToStepValue() : "$");

            return(string.Join(", ", parameters.ToArray()));
        }
Example #8
0
 public MaterialSteel(Project _project, SteelGrade _steelGrade)
 {
     this.project = _project;
     _project.materials.Add(this);
     this.steelGrade = _steelGrade;
 }
Example #9
0
        public static SectionI Design(HndzAnalysisResults resultStart, HndzAnalysisResults resultEnd, SectionI S, double _LUnsupported, double _LbInPlan, double kFactor, double _LbOutPlan, SteelGrade Grade, LoadingType Case, SwayCondtion Sway)
        {
            // List<SectionI> ColumnSections = new List<SectionI>();
            // Column.AnalysisResults.
            //  SectionI S = CrossSectionCalulator.CalculateSection(CrossSectionCalulator.SteelGrade.st37, resultEnd, 9.5);
            //  SectionI End = CrossSectionCalulator.CalculateSection(CrossSectionCalulator.SteelGrade.st37, resultEnd, 9.5);
            // SectionI s = new SectionI("x", 50, 28, 28, 1.4, 1.4, 0.8);

            BeamColumnDesignerBuiltUp.initDesigner(Grade, Case, _LUnsupported, _LbInPlan, _LbOutPlan, S, resultStart, resultEnd);
            do
            {
                bool a = BeamColumnDesignerBuiltUp.CheckIfWebComapact();
                bool b = BeamColumnDesignerBuiltUp.CheckIfFlangIsCompact();
                if (!WebIsCompact)
                {
                    S.d   = S.d * 1.05;
                    S.t_w = S.t_w * 1.05;
                    BeamColumnDesignerBuiltUp.CheckIfWebComapact();
                }
                if (!FlangIsCompact)
                {
                    S.t_fTop = S.t_fTop * 1.05;
                    S.b_fTop = S.b_fTop * 1.05;
                    S.t_fBot = S.t_fBot * 1.05;
                    S.b_fBot = S.b_fBot * 1.05;
                    BeamColumnDesignerBuiltUp.CheckIfFlangIsCompact();
                }
                //  BeamColumnDesignerBuiltUp.CheckIfSectionIsCompact();
            } while (!SectionIsCompact);
            BeamColumnDesignerBuiltUp.CheckColumnBuckling(kFactor);
            BeamColumnDesignerBuiltUp.CheckLateralTortionalBuckling(_LUnsupported);

            BeamColumnDesignerBuiltUp.CheckAllowableStresses(Sway);
            if (!BeamColumnDesignerBuiltUp.CheckAllowableStresses(Sway))
            {
                Design(resultStart, resultEnd, S, _LUnsupported, _LbInPlan, kFactor, _LbOutPlan, Grade, Case, Sway);
            }
            return(S);
        }
Example #10
0
 public static SectionI DesignStart(double d, double t_w, double b_fTop, double t_fTop, double b_fBot, double t_fBot, double axial, double moment31, double moment32, object fy, int v1, int v2, double v3, int v4, SwayCondtion permitedToSway, SteelGrade st37, LoadingType case2)
 {
     throw new NotImplementedException();
 }
Example #11
0
        public static SectionI DesignEnd(double WebHeight, double WebThickness, double FlangTopWidth, double FlangTopThickness,
                                         double FlangBotWidth, double FlangBotThickness,
                                         double AxialForce, double MxStart, double MxEnd, double Fy,
                                         double LUnsupported, double Kfactor, double LbInPlan, double LbOutPlan, SwayCondtion Sway, SteelGrade Grade, LoadingType Case)
        {
            SectionI Final;
            double   NewWebHeight         = WebHeight;
            double   NewWebThickness      = WebThickness;
            double   NewFlangTopWidth     = FlangTopWidth;
            double   NewFlangBotWidth     = FlangBotWidth;
            double   NewFlangTopThickness = FlangTopThickness;
            double   NewFlangBotThickness = FlangBotThickness;
            //=================
            double Fbcx;
            double Fbcy;
            //===================
            double LmdaIn;
            double LmdaOut;
            double LmdaMax;
            //=====================
            double Stress;
            //====================
            bool SafeForLocalBuckling;
            bool SafeForStress;
            //=============================
            //Section Parameters
            //=====
            double CaseStress;
            //====================
            //====================
            bool webCompact   = CheckIFWebCompactFixed(WebHeight, WebThickness, FlangTopWidth, FlangTopThickness, AxialForce, MxEnd, Fy);
            bool flangCompact = CheckIfFlangisCompactFixed(FlangTopWidth, FlangTopThickness, WebThickness, Fy);

            while (!webCompact || !flangCompact)
            {
                if (!webCompact)
                {
                    IncreaseWebThicknessFixed(WebThickness, out NewWebThickness);
                    WebThickness = NewWebThickness;
                    webCompact   = CheckIFWebCompactFixed(WebHeight, WebThickness, AxialForce, FlangTopWidth, FlangTopThickness, MxEnd, Fy);
                }
                if (!flangCompact)
                {
                    IncreaseFlangThicknessFixed(FlangTopThickness, FlangBotThickness, out NewFlangTopThickness, out NewFlangBotThickness);
                    FlangTopThickness = NewFlangTopThickness;
                    FlangBotThickness = NewFlangBotThickness;
                    flangCompact      = CheckIfFlangisCompactFixed(FlangTopWidth, FlangTopThickness, WebThickness, Fy);
                }
            }
            double Area = ((2 * FlangTopThickness * FlangTopWidth) + (WebThickness * WebHeight));
            double Ix   = ((WebHeight * WebHeight * WebHeight * WebThickness) / 12) + (2 * FlangTopWidth * FlangTopThickness * (((WebHeight / 2) + (FlangTopThickness / 2)) * ((WebHeight / 2) + (FlangTopThickness / 2))));
            double Iy   = ((2 * FlangTopWidth * FlangTopWidth * FlangTopWidth * FlangTopThickness) / 12);
            double Zx   = (Ix / ((WebHeight / 2) + FlangTopThickness));
            double Zy   = (Iy / (FlangTopWidth / 2));
            double Rx   = Math.Sqrt(Ix / Area);
            double Ry   = Math.Sqrt(Iy / Area);

            CheckLateralTortionalBucklingFixed(LUnsupported, MxStart, MxEnd, Fy, WebHeight, WebThickness, FlangTopWidth, FlangTopThickness, true, out Fbcx, out Fbcy);
            SafeForLocalBuckling = CheckColumnBuckling(Kfactor, LbInPlan, LbOutPlan, Rx, Ry, out LmdaIn, out LmdaOut, out LmdaMax);
            SafeForStress        = CheckAllowableStresses(Sway, Grade, Case, MxStart, MxEnd, AxialForce, LmdaIn, LmdaOut, LmdaMax, Area, Zx, Zy, Fbcx, Fbcy, out Stress);

            while (!SafeForLocalBuckling)
            {
                if (!SafeForLocalBuckling)
                {
                    if (LmdaIn > 180)
                    {
                        IncreaseWebHeightFixed(WebHeight, out NewWebHeight);
                        WebHeight = NewWebHeight;
                        Area      = ((2 * FlangTopThickness * FlangTopWidth) + (WebThickness * WebHeight));
                        Ix        = ((WebHeight * WebHeight * WebHeight * WebThickness) / 12) + (2 * FlangTopWidth * FlangTopThickness * (((WebHeight / 2) + (FlangTopThickness / 2)) * ((WebHeight / 2) + (FlangTopThickness / 2))));
                        Iy        = ((2 * FlangTopWidth * FlangTopWidth * FlangTopWidth * FlangTopThickness) / 12);
                        Zx        = (Ix / ((WebHeight / 2) + FlangTopThickness));
                        Zy        = (Iy / (FlangTopWidth / 2));
                        Rx        = Math.Sqrt(Ix / Area);
                        Ry        = Math.Sqrt(Iy / Area);
                    }
                    else if (LmdaOut > 180)
                    {
                        IncreaseFlangWidthFixed(FlangTopWidth, FlangBotWidth, out NewFlangTopWidth, out NewFlangBotWidth);
                        FlangTopWidth = NewFlangTopWidth;
                        FlangBotWidth = NewFlangBotWidth;
                        Area          = ((2 * FlangTopThickness * FlangTopWidth) + (WebThickness * WebHeight));
                        Ix            = ((WebHeight * WebHeight * WebHeight * WebThickness) / 12) + (2 * FlangTopWidth * FlangTopThickness * (((WebHeight / 2) + (FlangTopThickness / 2)) * ((WebHeight / 2) + (FlangTopThickness / 2))));
                        Iy            = ((2 * FlangTopWidth * FlangTopWidth * FlangTopWidth * FlangTopThickness) / 12);
                        Zx            = (Ix / ((WebHeight / 2) + FlangTopThickness));
                        Zy            = (Iy / (FlangTopWidth / 2));
                        Rx            = Math.Sqrt(Ix / Area);
                        Ry            = Math.Sqrt(Iy / Area);
                    }
                    SafeForLocalBuckling = CheckColumnBuckling(Kfactor, LbInPlan, LbOutPlan, Rx, Ry, out LmdaIn, out LmdaOut, out LmdaMax);
                    SafeForStress        = CheckAllowableStresses(Sway, Grade, Case, MxStart, MxEnd, AxialForce, LbInPlan, LmdaOut, LmdaMax, Area, Zx, Zy, Fbcx, Fbcy, out Stress);
                }
            }
            while (!SafeForStress)
            {
                IncreaseFlangWidthFixed(FlangTopWidth, FlangBotWidth, out NewFlangTopWidth, out NewFlangBotWidth);
                FlangTopWidth = NewFlangTopWidth;
                FlangBotWidth = NewFlangBotWidth;

                IncreaseWebHeightFixed(WebHeight, out NewWebHeight);
                WebHeight = NewWebHeight;

                IncreaseWebThicknessFixed(WebThickness, out NewWebThickness);
                WebThickness = NewWebThickness;

                IncreaseFlangThicknessFixed(FlangTopThickness, FlangBotThickness, out NewFlangTopThickness, out NewFlangBotThickness);
                FlangTopThickness = NewFlangTopThickness;
                FlangBotThickness = NewFlangBotThickness;

                Area = ((2 * FlangTopThickness * FlangTopWidth) + (WebThickness * WebHeight));
                Ix   = ((WebHeight * WebHeight * WebHeight * WebThickness) / 12) + (2 * FlangTopWidth * FlangTopThickness * (((WebHeight / 2) + (FlangTopThickness / 2)) * ((WebHeight / 2) + (FlangTopThickness / 2))));
                Iy   = ((2 * FlangTopWidth * FlangTopWidth * FlangTopWidth * FlangTopThickness) / 12);
                Zx   = (Ix / ((WebHeight / 2) + FlangTopThickness));
                Zy   = (Iy / (FlangTopWidth / 2));
                Rx   = Math.Sqrt(Ix / Area);
                Ry   = Math.Sqrt(Iy / Area);
                SafeForLocalBuckling = CheckColumnBuckling(Kfactor, LbInPlan, LbOutPlan, Rx, Ry, out LmdaIn, out LmdaOut, out LmdaMax);
                SafeForStress        = CheckAllowableStresses(Sway, Grade, Case, MxStart, MxEnd, AxialForce, LbInPlan, LmdaOut, LmdaMax, Area, Zx, Zy, Fbcx, Fbcy, out Stress);
            }
            return(Final = new SectionI("BeamColumn", WebHeight, FlangTopWidth, FlangBotWidth, FlangTopThickness, FlangBotThickness, WebThickness));
        }
Example #12
0
        public static bool CheckAllowableStresses(SwayCondtion Sway, SteelGrade Grade, LoadingType Case, double MxStart, double MxEnd, double AxialForce,
                                                  double LmdaIn, double LmdaOut, double LmdaMax, double Area, double Zx, double Zy, double Fbcx, double Fbcy, out double Stress)
        {
            bool   SectionSafe;
            double Cm;
            double A1 = 0;
            double A2 = 0;
            double Fc;
            double FcP1       = 0;
            double FcP2       = 0;
            double Fca        = AxialForce / Area;
            double CaseStress = 0;

            switch (Case)
            {
            case LoadingType.Case1:
                CaseStress = 1.0;
                break;

            case LoadingType.Case2:
                CaseStress = 1.2;
                break;
            }
            double AlphaMoment = Math.Min(MxStart, MxEnd) / Math.Max(MxStart, MxEnd);

            if (LmdaMax <= 100)
            {
                switch (Grade)
                {
                case SteelGrade.st37:
                    FcP1 = 1.4;
                    FcP2 = 0.000065;
                    break;

                case SteelGrade.st44:
                    FcP1 = 1.6;
                    FcP2 = 0.000085;
                    break;

                case SteelGrade.st52:
                    FcP1 = 2.1;
                    FcP2 = 0.000135;
                    break;
                }
                Fc = FcP1 - FcP2 * LmdaMax * LmdaMax;
            }
            else
            {
                Fc = 7500 / (LmdaMax * LmdaMax);
            }
            double FcaFc = Fca / Fc;
            double Fex   = 7500 / (LmdaIn * LmdaIn);
            double Fey   = 7500 / (LmdaOut * LmdaOut);

            if (FcaFc < 0.15)
            {
                A1 = 1;
                A2 = 1;
            }
            else
            {
                switch (Sway)
                {
                case SwayCondtion.PermitedToSway:
                    Cm = 0.85;
                    A1 = Cm / (1 - (Fca / Fex));
                    A2 = Cm / (1 - (Fca / Fey));
                    break;

                case SwayCondtion.PreventedFromSway:
                    Cm = 0.6 - (0.4 * AlphaMoment);
                    if (Cm < 0.4)
                    {
                        Cm = 0.4;
                    }
                    A1 = Cm / (1 - (Fca / Fex));
                    A2 = Cm / (1 - (Fca / Fey));
                    break;
                }
            }
            double fbxActual = (MxEnd * 100) / Zx;

            Stress = (Fca / Fc) + ((fbxActual / Fbcx) * A1);
            if (Stress < CaseStress)
            {
                return(SectionSafe = true);
            }
            else
            {
                return(SectionSafe = false);
            }
        }
        public static SectionI CalculateBeamSection(SteelGrade Grade, double BeamLength, double AxialForce, double MxEnd)
        {
            double Fy = 0;

            switch (Grade)
            {
            case SteelGrade.st37:
                Fy = 2.4;
                break;

            case SteelGrade.st44:
                Fy = 2.8;
                break;

            case SteelGrade.st52:
                Fy = 3.6;
                break;

            default:
                break;
            }
            dw1 = (BeamLength * 100) / 20;
            dw2 = (BeamLength * 100) / 40;
            double Dw = ((dw1 + dw2) / 2);

            tw1 = Dw / (190 / Math.Sqrt(Fy));
            double Tw = Math.Max(tw1, 5) + 2;

            Tw = Tw / 10;
            double C             = (Math.Abs(AxialForce) / 2) + (Math.Abs(MxEnd) * 100 / Dw);
            double AssumedFc     = 1.3;
            double FlangArea     = C / AssumedFc;
            double AssumedTflang = Math.Round(Math.Sqrt(FlangArea / 20), 1);
            double AssumedBflang = 20 * AssumedTflang;

            AssumedBflang = (int)AssumedBflang;

            double CondA = Dw / Tw;                       // <=180
            double CondB = AssumedTflang / Tw;            // <=2
            double CondC = Dw / AssumedBflang;            // <= 4.5
            double CondD = AssumedBflang / AssumedTflang; // <= 20

            if (CondA > 180 || CondB > 2 || CondC > 4.5 || CondD > 20)
            {
                if (CondA > 180)
                {
                    Dw = 180 * Tw;
                }
                if (CondB > 2)
                {
                    AssumedTflang = 2 * Tw;
                    AssumedTflang = 2 * Tw;
                }
                if (CondC > 4.5)
                {
                    Dw = AssumedBflang * 4.5;
                }
                if (CondD > 20)
                {
                    AssumedBflang = 20 * AssumedTflang;
                    AssumedBflang = 20 * AssumedTflang;
                }
            }

            return(AssumedSection = new SectionI("AssumedBeamSection", Dw, AssumedBflang, AssumedBflang, AssumedTflang, AssumedTflang, Tw));
        }
Example #14
0
        public static bool CheckAllowableStresses(SwayCondtion Sway, SteelGrade Grade)
        {
            double FcP1 = 0;
            double FcP2 = 0;

            switch (Grade)
            {
            case SteelGrade.st37:
                FcP1 = 1.4;
                FcP2 = 0.000065;
                break;

            case SteelGrade.st44:
                FcP1 = 1.6;
                FcP2 = 0.000085;
                break;

            case SteelGrade.st52:
                FcP1 = 2.1;
                FcP2 = 0.000135;
                break;

            default:
                break;
            }
            double A1 = 0;
            double A2 = 0;
            double Cm = 0;

            double AlphaMoment = Math.Min(MxAtStationStart, MxAtStationEnd) / Math.Max(MxAtStationStart, MxAtStationEnd);

            if (LmdaMax <= 100)
            {
                Fc = FcP1 - FcP2 * LmdaMax * LmdaMax;
            }
            else
            {
                Fc = 7500 / (LmdaMax * LmdaMax);
            }
            double FcaFc = Fca / Fc;
            double Fex   = 7500 / (LmdaIn * LmdaIn);
            double Fey   = 7500 / (LmdaOut * LmdaOut);

            if (FcaFc < 0.15)
            {
                A1 = 1;
                A2 = 1;
            }
            else
            {
                switch (Sway)
                {
                case SwayCondtion.PermitedToSway:
                    Cm = 0.85;
                    A1 = Cm / (1 - (Fca / Fex));
                    A2 = Cm / (1 - (Fca / Fey));
                    break;

                case SwayCondtion.PreventedFromSway:
                    Cm = 0.6 - (0.4 * AlphaMoment);
                    if (Cm < 0.4)
                    {
                        Cm = 0.4;
                    }
                    A1 = Cm / (1 - (Fca / Fex));
                    A2 = Cm / (1 - (Fca / Fey));
                    break;
                }
            }
            double fbxActual = (MxAtStationStart * 100) / Zx;
            double fbyActual = (MyAtStationStart * 100) / Zy;

            Stress = (Fca / Fc) + ((fbyActual / Fbcy) * A2) + ((fbxActual / Fbcx) * A1);
            if (Stress < CaseStress)
            {
                return(SectionIsSafe = true);
            }
            else
            {
                return(SectionIsSafe = false);
            }
        }