Exemple #1
0
        public override void ToSharpElement(GH_Model model)
        {
            IFiniteElementNode startNode = model.FindOrCreateNode(this.Start);
            IFiniteElementNode endNode   = model.FindOrCreateNode(this.End);

            model.Model.ElementFactory.CreateLinear3DBeam(startNode, endNode, Material.ToSharpMaterial(), CrossSection.ToSharpCrossSection());
        }
        public override void ToSharpElement(GH_Model model)
        {
            IFiniteElementNode startNode = model.FindOrCreateNode(this.Start);
            IFiniteElementNode endNode   = model.FindOrCreateNode(this.End);

            model.Model.ElementFactory.CreateLinearConstantSpring(startNode, endNode, this.SpringConstant);
        }
        public override void ToSharpElement(GH_Model model)
        {
            IFiniteElementNode n0 = model.FindOrCreateNode(this.Points[0]);
            IFiniteElementNode n1 = model.FindOrCreateNode(this.Points[1]);
            IFiniteElementNode n2 = model.FindOrCreateNode(this.Points[2]);

            model.Model.ElementFactory.CreateLinearConstantStrainTriangle(n0, n1, n2, this.Material.ToSharpMaterial(), this.Thickness);
        }
        public override void ToSharpLoad(GH_Model model)
        {
            ForceVector forceVector = null;

            switch (model.ModelType)
            {
            case ModelType.Truss2D:
                forceVector = model.Model.ForceFactory.CreateForTruss(Force.X, Force.Z);
                break;

            case ModelType.Full3D:
                forceVector = model.Model.ForceFactory.Create(Force.X, Force.Y, Force.Z, Moment.X, Moment.Y, Moment.Z);
                break;

            case ModelType.Membrane3D:
                forceVector = model.Model.ForceFactory.Create(Force.X, Force.Y, Force.Z, 0, 0, 0);
                break;

            default:
                throw new Exception("No such model type implemented: " + model.ModelType);
            }

            foreach (Point3d node in Nodes)
            {
                IFiniteElementNode FEnode = model.FindOrCreateNode(node);
                model.Model.ApplyForceToNode(forceVector, FEnode);
            }
        }
        public override void ToSharpSupport(GH_Model model)
        {
            foreach (Point3d node in Nodes)
            {
                IFiniteElementNode FEnode = model.FindOrCreateNode(node);

                switch (model.ModelType)
                {
                case ModelType.Truss2D:
                    if (UX)
                    {
                        model.Model.ConstrainNode(FEnode, DegreeOfFreedom.X);
                    }
                    //	if (UY) {model.Model.ConstrainNode(node, DegreeOfFreedom.Y);}
                    if (UZ)
                    {
                        model.Model.ConstrainNode(FEnode, DegreeOfFreedom.Z);
                    }
                    //	if (RX) {model.Model.ConstrainNode(node, DegreeOfFreedom.XX);}
                    //	if (RY) {model.Model.ConstrainNode(node, DegreeOfFreedom.YY);}
                    //	if (RZ) {model.Model.ConstrainNode(node, DegreeOfFreedom.ZZ);}
                    break;

                case ModelType.Full3D:
                    if (UX)
                    {
                        model.Model.ConstrainNode(FEnode, DegreeOfFreedom.X);
                    }
                    if (UY)
                    {
                        model.Model.ConstrainNode(FEnode, DegreeOfFreedom.Y);
                    }
                    if (UZ)
                    {
                        model.Model.ConstrainNode(FEnode, DegreeOfFreedom.Z);
                    }
                    if (RX)
                    {
                        model.Model.ConstrainNode(FEnode, DegreeOfFreedom.XX);
                    }
                    if (RY)
                    {
                        model.Model.ConstrainNode(FEnode, DegreeOfFreedom.YY);
                    }
                    if (RZ)
                    {
                        model.Model.ConstrainNode(FEnode, DegreeOfFreedom.ZZ);
                    }
                    break;

                case ModelType.Membrane3D:
                    if (UX)
                    {
                        model.Model.ConstrainNode(FEnode, DegreeOfFreedom.X);
                    }
                    if (UY)
                    {
                        model.Model.ConstrainNode(FEnode, DegreeOfFreedom.Y);
                    }
                    if (UZ)
                    {
                        model.Model.ConstrainNode(FEnode, DegreeOfFreedom.Z);
                    }
                    // if (RX) {model.Model.ConstrainNode(FEnode, DegreeOfFreedom.XX);}
                    // if (RY) {model.Model.ConstrainNode(FEnode, DegreeOfFreedom.YY);}
                    // if (RZ) {model.Model.ConstrainNode(FEnode, DegreeOfFreedom.ZZ);}
                    break;

                default:
                    throw new Exception("No such model type: " + model.ModelType);
                }
            }
        }