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); } } }