Esempio n. 1
0
        static void Main(string[] args)
        {
            /* Static scheme
             *
             *
             *                                       |F=15kN
             *          HEA400            |F=10kN    |
             *       *====================*==========*==========*
             *       /\                                        /\
             *
             *       |                    |          |          |
             *       /--------5.0m--------/---2.5m---/---2.5m---/
             *
             *
             */

            // Proposed consistent units applied in this example are: [Pa], [N], [Nm], [m], [m^4]

            // Create a new instance of Scheme class with static scheme information
            IScheme scheme = new Scheme();

            // Create a new instance of Material class
            IMaterial material = scheme.NewMaterial();

            material.Number = 1;
            material.Name   = "Steel";
            material.E      = 2.1e11;
            material.v      = 0.3;

            // Add an instance of Material class to the list of materials
            scheme.Materials.Add(material);


            // Create a new instance of CrossSection class
            ICrossSection crossSection = scheme.NewCrossSection();

            crossSection.Number = 1;
            crossSection.Name   = "HEA400";
            crossSection.Iy     = 0.00045070;

            // Add an instance of CrossSection class to the list of cross sections
            scheme.CrossSections.Add(crossSection);


            // Create new instances of Node class
            INode node_1 = scheme.NewNode();

            node_1.Number = 1;
            node_1.Name   = "Start node";
            node_1.X      = 0;

            INode node_2 = scheme.NewNode();

            node_2.Number = 2;
            node_2.Name   = "Load node";
            node_2.X      = 5;

            INode node_3 = scheme.NewNode();

            node_3.Number = 3;
            node_3.Name   = "Middle node";
            node_3.X      = 7.5;

            INode node_4 = scheme.NewNode();

            node_4.Number = 4;
            node_4.Name   = "End node";
            node_4.X      = 10.00;

            // Add instances of Node class to the list of nodes
            scheme.Nodes.Add(node_1);
            scheme.Nodes.Add(node_2);
            scheme.Nodes.Add(node_3);
            scheme.Nodes.Add(node_4);


            // Create new instances of Element class
            IElement element_1 = scheme.NewElement();

            element_1.Number             = 1;
            element_1.Name               = "Left element";
            element_1.MaterialNumber     = 1;
            element_1.CrossSectionNumber = 1;
            element_1.StartNodeNumber    = 1;
            element_1.EndNodeNumber      = 2;

            IElement element_2 = scheme.NewElement();

            element_2.Number             = 2;
            element_2.Name               = "Middle element";
            element_2.MaterialNumber     = 1;
            element_2.CrossSectionNumber = 1;
            element_2.StartNodeNumber    = 2;
            element_2.EndNodeNumber      = 3;

            IElement element_3 = scheme.NewElement();

            element_3.Number             = 3;
            element_3.Name               = "Right element";
            element_3.MaterialNumber     = 1;
            element_3.CrossSectionNumber = 1;
            element_3.StartNodeNumber    = 3;
            element_3.EndNodeNumber      = 4;

            // Add instances of Element class to the list of elements
            scheme.Elements.Add(element_1);
            scheme.Elements.Add(element_2);
            scheme.Elements.Add(element_3);

            // Create a new instance of Load class
            ILoad load_1 = scheme.NewLoad();

            load_1.Number     = 1;
            load_1.Name       = "Force 1";
            load_1.NodeNumber = 2;
            load_1.Pz         = -10000;
            load_1.My         = 0;

            // Create a new instance of Load class
            ILoad load_2 = scheme.NewLoad();

            load_2.Number     = 2;
            load_2.Name       = "Force 2";
            load_2.NodeNumber = 3;
            load_2.Pz         = -15000;
            load_2.My         = 0;

            // Add an instance of Material class to the list of materials
            scheme.Loads.Add(load_1);
            scheme.Loads.Add(load_2);


            // Create a new instance of Model class with Finite Element Method model
            IModel model = new Model(scheme);

            model.AssembyModel();

            // ### Display calculated data for model ###
            DisplayResults(model);


            // Create a new instance of Solver class with Finite Element Method solver module
            ISolver solver = new Solver(model);

            solver.AssemblyFiniteElementModel();
            solver.Run();

            // ### Display calculated data for solver ###
            DisplayResults(solver);


            // Create a new instance of PostProcessor class with results of the finite element method calculations
            IPostProcessor postProcessor = new PostProcessor(scheme, model, solver);

            postProcessor.CalculateResults();

            // ### Display calculated data from post processor ###
            DisplayResults(postProcessor);

            Console.ReadKey();
        }