Пример #1
0
        private StatCrossSection GetHSSRectangleStatCrossSection(sFrame jb, StatMaterial mat)
        {
            double w; ///list of variables
            double d;
            double t;
            double ar;
            double ix;
            double sx;
            double rx;
            double zx;
            double iy;
            double sy;
            double ry;
            double zy;
            double jt;
            double ct;
            double nw;

            jb.crossSection.GetHSSRecDimensions(jb.crossSection.shapeName, out w, out d, out t, out ar, out ix, out sx, out rx, out zx, out iy, out sy, out ry, out zy, out jt, out ct, out nw);

            StatCrossSection cs = new StatCrossSection(jb.crossSection.shapeName, mat);

            //cs.RectangleHollow(w * 0.0254, d * 0.0254, t * 0.0254);
            double ijFac   = 4.162314256E-07;
            double areaFac = 0.00064516;

            cs.Generic(ar * areaFac, ix * ijFac, iy * ijFac, jt * ijFac);

            return(cs);
        }
Пример #2
0
        private StatCrossSection GetWbeamStatCrossSection(sFrame jb, StatMaterial mat)
        {
            double a;
            double tw;
            double d;
            double tf;
            double bf;
            double nw;
            double ix;
            double sx;
            double rx;
            double zx;
            double iy;
            double sy;
            double ry;
            double zy;
            double rts;
            double ho;
            double j;
            double c;

            var t = jb;

            jb.crossSection.GetWBeamDimensions(jb.crossSection.shapeName, out a, out tw, out d, out tf, out bf, out nw, out ix, out sx, out rx, out zx, out iy, out sy, out ry, out zy, out rts, out ho, out j, out c);

            StatCrossSection cs = new StatCrossSection(jb.crossSection.shapeName, mat);

            //cs.Wbeam(d * 0.0254, bf * 0.0254, tf * 0.0254, tw * 0.0254);
            double ijFac   = 4.162314256E-07;
            double areaFac = 0.00064516;

            cs.Generic(a * areaFac, ix * ijFac, iy * ijFac, j * ijFac);

            return(cs);
        }
Пример #3
0
        public StatCrossSection ToStatCrossSection(sFrame jb, bool minuteDensity = false)
        {
            StatCrossSection cs  = null;
            StatMaterial     mat = GetStatMaterial(jb, minuteDensity);

            if (jb.crossSection.sectionType == eSectionType.AISC_I_BEAM)
            {
                cs = GetWbeamStatCrossSection(jb, mat);
            }
            else if (jb.crossSection.sectionType == eSectionType.HSS_REC)
            {
                cs = GetHSSRectangleStatCrossSection(jb, mat);
            }
            else if (jb.crossSection.sectionType == eSectionType.HSS_ROUND)
            {
                cs = GetHSSRoundStatCrossSection(jb, mat);
            }
            else if (jb.crossSection.sectionType == eSectionType.SQUARE)
            {
                cs = GetSquareStatCrossSection(jb, mat);
            }
            else if (jb.crossSection.sectionType == eSectionType.RECTANGLAR)
            {
                cs = GetRectangleStatCrossSection(jb, mat);
            }
            else if (jb.crossSection.sectionType == eSectionType.ROUND)
            {
                cs = GetRoundCrossSection(jb, mat);
            }

            return(cs);
        }
Пример #4
0
        private void BuildFESystem()
        {
            this.FEsystem = new StatSystem();
            this.FEsystem.PointMergeTolerance = this.systemSettings.mergeTolerance_m;

            this.FEsystem.MergeNewNodes = true;

            sStatConverter conv = new sStatConverter();

            foreach (IFrameSet bs in this.frameSets)
            {
                foreach (sFrame b in bs.frames)
                {
                    StatCrossSection cs = conv.ToStatCrossSection(b, bs.AsMinuteDensity);

                    StatNode n0 = this.FEsystem.AddNode(conv.ToCVector(b.node0));
                    StatNode n1 = this.FEsystem.AddNode(conv.ToCVector(b.node1));

                    C_vector uv = conv.ToCVector(b.upVector);

                    StatBeam sb = this.FEsystem.AddBeam(n0, n1, cs, uv);

                    b.extraData  = sb;
                    sb.ExtraData = b;
                }
            }

            foreach (sNode sn in this.nodes)
            {
                StatNode n = null;
                if (sn.boundaryCondition != null)
                {
                    //n = this.FEsystem.AddNode(sn.location.X, sn.location.Y, sn.location.Z);
                    n = FindStatNode(sn, this.systemSettings.mergeTolerance_m);
                    if (sn.boundaryCondition.supportType == eSupportType.FIXED)
                    {
                        n.SupportType = BOUNDARYCONDITIONS.ALL;
                    }
                    else if (sn.boundaryCondition.supportType == eSupportType.PINNED)
                    {
                        n.SupportType = BOUNDARYCONDITIONS.TRANSLATIONS;
                    }
                    else if (sn.boundaryCondition.supportType == eSupportType.CUSTOM)
                    {
                    }
                }

                if (sn.pointLoads != null && sn.pointLoads.Count > 0)
                {
                    n = FindStatNode(sn, this.systemSettings.mergeTolerance_m);
                }

                if (n != null)
                {
                    sn.extraData = n;
                    n.ExtraData  = sn;
                }
            }
        }
Пример #5
0
        private StatCrossSection GetRectangleStatCrossSection(sFrame jb, StatMaterial mat)
        {
            StatCrossSection cs = new StatCrossSection(jb.crossSection.shapeName, mat);

            //currently cannot trust Millipede
            if (jb.crossSection.dimensions.Count > 0)
            {
                if (jb.crossSection.dimensions.Count == 2)
                {
                    double wid = jb.crossSection.dimensions[0];
                    double dep = jb.crossSection.dimensions[1];

                    double area;
                    double iyy;
                    double izz;
                    double jxx;
                    GetRectangularSolidProperties(wid, dep, out area, out iyy, out izz, out jxx);

                    //no factor as it is calculated in metric
                    cs.Generic(area, iyy, izz, jxx);

                    //cs.RectangleSolid(jb.crossSection.dimensions[0], jb.crossSection.dimensions[1]);
                }
                else if (jb.crossSection.dimensions.Count == 3)
                {
                    double wid = jb.crossSection.dimensions[0];
                    double dep = jb.crossSection.dimensions[1];
                    double th  = jb.crossSection.dimensions[2];

                    double area;
                    double iyy;
                    double izz;
                    double jxx;
                    GetRectangularHollowProperties(wid, dep, th, out area, out iyy, out izz, out jxx);

                    //no factor as it is calculated in metric
                    cs.Generic(area, iyy, izz, jxx);

                    //cs.RectangleHollow(jb.crossSection.dimensions[0], jb.crossSection.dimensions[1], jb.crossSection.dimensions[2]);
                }
            }
            return(cs);
        }
Пример #6
0
        private StatCrossSection GetRoundCrossSection(sFrame jb, StatMaterial mat)
        {
            StatCrossSection cs = new StatCrossSection(jb.crossSection.shapeName, mat);

            if (jb.crossSection.dimensions.Count > 0)
            {
                if (jb.crossSection.dimensions.Count == 1)
                {
                    double or = jb.crossSection.dimensions[0] * 0.5;
                    cs.CircSolid(or);
                }
                else if (jb.crossSection.dimensions.Count == 2)
                {
                    double or = jb.crossSection.dimensions[0] * 0.5;
                    double ir = (jb.crossSection.dimensions[0] * 0.5) - jb.crossSection.dimensions[1];

                    cs.CircHollow(ir, or);
                }
            }
            return(cs);
        }
Пример #7
0
        private StatCrossSection GetHSSRoundStatCrossSection(sFrame jb, StatMaterial mat)
        {
            double od;
            double th;
            double a;
            double i;
            double s;
            double r;
            double z;
            double j;
            double c;
            double nw;

            jb.crossSection.GetHSSRoundDimensions(jb.crossSection.shapeName, out od, out th, out a, out i, out s, out r, out z, out j, out c, out nw);
            StatCrossSection cs = new StatCrossSection(jb.crossSection.shapeName, mat);

            //cs.RectangleHollow(w * 0.0254, d * 0.0254, t * 0.0254);
            double ijFac   = 4.162314256E-07;
            double areaFac = 0.00064516;

            cs.Generic(a * areaFac, i * ijFac, i * ijFac, j * ijFac);

            return(cs);
        }