public static Model GetRandomFrameModel(int n = 50)
        {
            var buf = new Model();

            var nodes = new Node[n];

            for (var i = 0; i < n; i++)
            {
                nodes[i] = new Node(BriefFiniteElementNet.RandomHelper.GetRandomNumber(0, 10), BriefFiniteElementNet.RandomHelper.GetRandomNumber(0, 10), BriefFiniteElementNet.RandomHelper.GetRandomNumber(0, 10));

                nodes[i].Constraints = BriefFiniteElementNet.RandomHelper.GetRandomConstraint();
            }

            buf.Nodes.Add(nodes);

            for (var i = 0; i < n; i++)
            {
                for (var j = 0; j < n; j++)
                {
                    if (i == j)
                    {
                        continue;
                    }

                    var elm = new FrameElement2Node(nodes[i], nodes[j]);
                    elm.A  = BriefFiniteElementNet.RandomHelper.GetRandomNumber();
                    elm.Iy = BriefFiniteElementNet.RandomHelper.GetRandomNumber();
                    elm.Iz = BriefFiniteElementNet.RandomHelper.GetRandomNumber();
                    elm.J  = BriefFiniteElementNet.RandomHelper.GetRandomNumber();

                    elm.E = BriefFiniteElementNet.RandomHelper.GetRandomNumber();
                    elm.G = BriefFiniteElementNet.RandomHelper.GetRandomNumber();

                    var ld = new UniformLoad1D(BriefFiniteElementNet.RandomHelper.GetRandomNumber(100, 1000), LoadDirection.Z, CoordinationSystem.Global);

                    elm.Loads.Add(ld);

                    buf.Elements.Add(elm);
                }
            }

            for (int i = 0; i < n; i++)
            {
                nodes[i].Loads.Add(new NodalLoad(BriefFiniteElementNet.RandomHelper.GetRandomForce(1000, 10000)));
            }

            return(buf);
        }
示例#2
0
        private static void Example2()
        {
            Console.WriteLine("Example 1: Simple 3D Frame with distributed loads");

            var model = new Model();

            var n1 = new Node(-10, 0, 0);
            var n2 = new Node(-10, 0, 6);
            var n3 = new Node(0, 0, 8);
            var n4 = new Node(10, 0, 6);
            var n5 = new Node(10, 0, 0);

            model.Nodes.Add(n1, n2, n3, n4, n5);

            var secAA = new PolygonYz(SectionGenerator.GetISetion(0.24, 0.67, 0.01, 0.006));
            var secBB = new PolygonYz(SectionGenerator.GetISetion(0.24, 0.52, 0.01, 0.006));

            var e1 = new FrameElement2Node(n1, n2);

            e1.Label = "e1";
            var e2 = new FrameElement2Node(n2, n3);

            e2.Label = "e2";
            var e3 = new FrameElement2Node(n3, n4);

            e3.Label = "e3";
            var e4 = new FrameElement2Node(n4, n5);

            e4.Label = "e4";


            e1.Geometry = e4.Geometry = secAA;
            e2.Geometry = e3.Geometry = secBB;

            e1.E = e2.E = e3.E = e4.E = 210e9;
            e1.G = e2.G = e3.G = e4.G = 210e9 / (2 * (1 + 0.3));//G = E / (2*(1+no))

            e1.UseOverridedProperties     =
                e2.UseOverridedProperties = e3.UseOverridedProperties = e4.UseOverridedProperties = false;

            model.Elements.Add(e1, e2, e3, e4);


            n1.Constraints                 =
                n2.Constraints             =
                    n3.Constraints         =
                        n4.Constraints     =
                            n5.Constraints =
                                Constraints.FixedDY & Constraints.FixedRX & Constraints.FixedRZ;//DY fixed and RX fixed and RZ fixed


            n1.Constraints = n1.Constraints & Constraints.MovementFixed;
            n5.Constraints = n5.Constraints & Constraints.MovementFixed;


            var ll = new UniformLoad1D(-10000, LoadDirection.Z, CoordinationSystem.Global);
            var lr = new UniformLoad1D(-10000, LoadDirection.Z, CoordinationSystem.Local);

            e2.Loads.Add(ll);
            e3.Loads.Add(lr);

            var wnd = WpfTraceListener.CreateModelTrace(model);

            new ModelWarningChecker().CheckModel(model);
            wnd.ShowDialog();

            model.Solve();
        }