protected override void SolveInstance(IGH_DataAccess DA)
        {
            // Declare a variable for the input
            double heigth = 100;
            double width  = 100;


            // Use the DA object to retrieve the data inside the first input parameter.
            // If the retieval fails (for example if there is no data) we need to abort.
            if (!DA.GetData(0, ref heigth))
            {
                return;
            }
            if (!DA.GetData(1, ref width))
            {
                return;
            }



            GH_RectangularCrossSection crossSection = new GH_RectangularCrossSection(heigth, width);


            DA.SetData(0, crossSection);
        }
        public void Truss()
        {
            model = new GH_Model(ModelType.Full3D);

            GH_CrossSection crossSection = new GH_RectangularCrossSection(100, 100);
            GH_Material     material     = new GH_ElasticMaterial(100, 100, 100, 100);


            Point3d p1 = new Point3d(-10, 0, 0);
            Point3d p2 = new Point3d(0, 0, 0);
            Point3d p3 = new Point3d(10, 0, 0);
            Point3d p4 = new Point3d(-10, 0, 10);
            Point3d p5 = new Point3d(0, 0, 10);
            Point3d p6 = new Point3d(10, 0, 10);



            model.Elements.Add(new GH_Beam(p1, p2, crossSection, material));
            model.Elements.Add(new GH_Beam(p2, p3, crossSection, material));
            model.Elements.Add(new GH_Beam(p4, p5, crossSection, material));
            model.Elements.Add(new GH_Beam(p5, p6, crossSection, material));
            model.Elements.Add(new GH_Beam(p1, p4, crossSection, material));
            model.Elements.Add(new GH_Beam(p2, p5, crossSection, material));
            model.Elements.Add(new GH_Beam(p3, p6, crossSection, material));
            model.Elements.Add(new GH_Beam(p4, p2, crossSection, material));
            model.Elements.Add(new GH_Beam(p2, p6, crossSection, material));
            model.Supports.Add(new GH_NodeSupport(p1, true, true, true, true, true, true));
            model.Supports.Add(new GH_NodeSupport(p3, true, true, true, true, true, true));
            model.Loads.Add(new GH_NodalLoad(p5, new Vector3d(0, 0, -1000), new Vector3d(0, 0, 0)));

            model.AssembleSharpModel();


            Assert.AreEqual(9, model.Model.ElementCount);

            model.Solve();


            Assert.NotNull(model.Results);



            Vector3d displacement = model.GetNodeDisplacement(1);                             //Displacement at point2 (index 1)

            Assert.NotNull(displacement);
            Assert.AreEqual(0.0, displacement.X, 0.001);
            Assert.AreEqual(0.0, displacement.Y, 0.001);
            Assert.AreNotEqual(0.0, displacement.Z);             //TODO Calculate real value
        }
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // Declare a variable for the input
            double heigth = 100;
            double width  = 100;

            // Use the DA object to retrieve the data inside the first input parameter.
            // If the retieval fails (for example if there is no data) we need to abort.
            if (!DA.GetData(0, ref heigth )) { return; }
            if (!DA.GetData(1, ref width)) { return; }

            GH_RectangularCrossSection crossSection = new GH_RectangularCrossSection(heigth, width);

            DA.SetData(0, crossSection);
        }
        public void Setup()
        {
            model        = new GH_Model(ModelType.Full3D, new List <GH_Element>(), new List <GH_Load>(), new List <GH_Support>());
            crossSection = new GH_RectangularCrossSection(0.5, 0.2);
            material     = new GH_ElasticMaterial(0, 2000, 0.1, 1000);

            force  = new Vector3d(10, 0, 0);
            moment = new Vector3d(0, 0, 0);

            point1 = new Point3d(0, 0, 0);
            point2 = new Point3d(0, 0, 1);
            point3 = new Point3d(1, 0, 1);
            point4 = new Point3d(1, 0, 0);

            beam1 = new GH_Beam(point1, point2, crossSection, material);
            beam2 = new GH_Beam(point2, point3, crossSection, material);
            beam3 = new GH_Beam(point3, point4, crossSection, material);

            nodalLoad1   = new GH_NodalLoad(point2, force, moment);
            nodeSupport1 = new GH_NodeSupport(point1, true, true, true, true, true, true);
            nodeSupport2 = new GH_NodeSupport(point4, true, true, true, true, true, true);
        }
        public void Truss()
        {
            model = new GH_Model(ModelType.Full3D);

                    GH_CrossSection crossSection = new GH_RectangularCrossSection(100,100);
                    GH_Material material = new GH_ElasticMaterial(100,100,100,100);

                    Point3d p1 = new Point3d(-10,0,0);
                    Point3d p2 = new Point3d(0,0,0);
                    Point3d p3 = new Point3d(10,0,0);
                    Point3d p4 = new Point3d(-10,0,10);
                    Point3d p5 = new Point3d(0,0,10);
                    Point3d p6 = new Point3d(10,0,10);

                    model.Elements.Add(new GH_Beam(p1,p2, crossSection, material));
                    model.Elements.Add(new GH_Beam(p2,p3, crossSection, material));
                    model.Elements.Add(new GH_Beam(p4,p5, crossSection, material));
                    model.Elements.Add(new GH_Beam(p5,p6, crossSection, material));
                    model.Elements.Add(new GH_Beam(p1,p4, crossSection, material));
                    model.Elements.Add(new GH_Beam(p2,p5, crossSection, material));
                    model.Elements.Add(new GH_Beam(p3,p6, crossSection, material));
                    model.Elements.Add(new GH_Beam(p4,p2, crossSection, material));
                    model.Elements.Add(new GH_Beam(p2,p6, crossSection, material));
                    model.Supports.Add(new GH_NodeSupport(p1, true, true, true, true, true,true));
                    model.Supports.Add(new GH_NodeSupport(p3, true, true, true, true, true,true));
                    model.Loads.Add(new GH_NodalLoad(p5, new Vector3d(0,0,-1000), new Vector3d(0,0,0)));

                    model.AssembleSharpModel();

                    Assert.AreEqual(9, model.Model.ElementCount);

                    model.Solve();

                    Assert.NotNull(model.Results);

                    Vector3d displacement = model.GetNodeDisplacement(1); //Displacement at point2 (index 1)

            Assert.NotNull(displacement);
            Assert.AreEqual(0.0, displacement.X, 0.001);
            Assert.AreEqual(0.0, displacement.Y, 0.001);
            Assert.AreNotEqual(0.0, displacement.Z); //TODO Calculate real value
        }
        public void Setup()
        {
            model = new GH_Model(ModelType.Full3D);
            crossSection = new GH_RectangularCrossSection(0.5,0.2);
            material = new GH_ElasticMaterial(0, 2000,0.1,1000);

            force = new Vector3d(10,0,0);
            moment = new Vector3d(0,0,0);

            point1 = new Point3d(0,0,0);
            point2 = new Point3d(0,0,1);
            point3 = new Point3d(1,0,1);
            point4 = new Point3d(1,0,0);

            beam1 = new GH_Beam(point1, point2, crossSection, material);
            beam2 = new GH_Beam(point2, point3, crossSection, material);
            beam3 = new GH_Beam(point3, point4, crossSection, material);

            nodalLoad1 = new GH_NodalLoad(point2, force, moment);
            nodeSupport1 = new GH_NodeSupport(point1, true, true, true, true, true, true);
            nodeSupport2 = new GH_NodeSupport(point4, true, true, true, true, true, true);
        }