Esempio n. 1
0
        public ColumnBaseResult GetResult(SteelColumnBase columnBase)
        {
            ColumnBaseResult columnBaseResult = new ColumnBaseResult();

            columnBaseResult.LoadCases = BarLoadSetProcessor.GetLoadCases(columnBase.Loads);
            RectCrossSection rect         = new RectCrossSection(columnBase.Width, columnBase.Length);
            MassProperty     massProperty = RectProcessor.GetRectMassProperty(rect);
            double           Bx           = columnBase.WidthBoltDist / 2;
            double           By           = columnBase.LengthBoltDist / 2;
            double           minStress    = double.PositiveInfinity;
            double           maxStress    = double.NegativeInfinity;
            double           minStressTmp;
            double           maxStressTmp;

            foreach (BarLoadSet LoadCase in columnBaseResult.LoadCases)
            {
                StressInRect stress = BarLoadSetProcessor.MinMaxStressInBarSection(LoadCase, massProperty);
                minStressTmp = stress.MinStress;
                maxStressTmp = stress.MaxStress;
                if (minStressTmp < minStress)
                {
                    minStress = minStressTmp;
                }
                if (maxStressTmp > maxStress)
                {
                    maxStress = maxStressTmp;
                }
            }
            columnBaseResult.MinStress = minStress;
            columnBaseResult.MaxStress = maxStress;
            return(columnBaseResult);
        }
        public static StressInRect MinMaxStressInBarSection(BarLoadSet loadCase, MassProperty massProperty)
        {
            StressInRect stress = new StressInRect();
            double       Nz     = loadCase.Force.Force_Nz;
            double       Mx     = loadCase.Force.Force_Mx;
            double       My     = loadCase.Force.Force_My;
            double       A      = massProperty.A;
            double       Wx     = massProperty.Wx;
            double       Wy     = massProperty.Wy;

            stress.MinStress = Nz / A - Math.Abs(Mx / Wx) - Math.Abs(My / Wy);
            stress.MaxStress = Nz / A + Math.Abs(Mx / Wx) + Math.Abs(My / Wy);
            return(stress);
        }
        public static StressInRect MInMaxStressInBarSection(BarLoadSet loadCase, MassProperty massProperty, double dx, double dy)
        {
            StressInRect stress = new StressInRect();
            double       Nz     = loadCase.Force.Force_Nz;
            double       Mx     = loadCase.Force.Force_Mx;
            double       My     = loadCase.Force.Force_My;
            double       A      = massProperty.A;
            double       Ix     = massProperty.Ix;
            double       Iy     = massProperty.Iy;

            stress.MinStress = Nz / A - Math.Abs(Mx / (Ix / dy)) - Math.Abs(My / (Iy / dx));
            stress.MaxStress = Nz / A + Math.Abs(Mx / (Ix / dy)) + Math.Abs(My / (Iy / dx));
            return(stress);
        }