Inheritance: GH_Element
        protected override void SolveInstance(IGH_DataAccess DA)
        {
            // Declare a variable for the input
            Line line = new Line();
            GH_CrossSection crossSection = null;
            GH_Material material = null;

            // 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 line )) { return; }
            if (!DA.GetData(1, ref crossSection)) { return; }
            if (!DA.GetData(2, ref material)) { return; }

            GH_Beam beam = new GH_Beam(line.From, line.To, crossSection, material);

            DA.SetData(0, beam);
        }
        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);
        }