fedoo.constraint.RigidTie
- class RigidTie(list_nodes, center=None, name='Rigid Tie')
Constraint that eliminate dof assuming a rigid body tie between nodes.
Create an object that defines a rigid tie coupling between some nodes using several multi-points constraints. Some constraint drivers (cd) dof are used to define rigid body displacement and rotation. By default, the center of rotation is located at the center of the bounding box defined by all nodes tied together. The rotation center move with the rigid displacement. RigidTie constraint add 6 global_dof to the problem: “RigidDispX”, “RigidDispY”, “RigidDispZ”, “RigidRotX”, “RigidRotY”, “RigidRotZ” and two global_dot vectors:
“RigidDisp” = [“RigidDispX”, “RigidDispY”, “RigidDispZ”] for rigid displacement
“RigidRot” = [“RigidRotX”, “RigidRotY”, “RigidRotZ”] for rigid rotation
If several RigidTime constraints are used with the same problem, all the previous variables will contains several dof, the indice of the dof being associated to order in which the constraint has been added. For instance, pb.global_dof[‘RigidDispX’][0] will be associated to the first added RigidTie and dof[‘RigidDispX’][1] to the second one.
- Parameters:
list_nodes (list (int) or 1d np.array) – List of nodes that will be eliminated considering a rigid body tie.
center (int of np.array[float] with shape = (3), optional) – If center is an int, the rotation center will be initialized at the coordinates of the corresponding node in the mesh. If center is an array (or list, …) it contains the initial coordinates of the rotation center. By default, the center is set at the midle of the rigid sets.
name (str, optional) – Name of the created boundary condition. The default is “Rigid Tie”.
Definition of rotations
A convention needs to be defined the orders of rotations. The convention used in this class is: First rotation around X, then rotation around Y’ (Y’ being the new Y afte r rotation around X) and finaly the rotation arould Z” (Z” beging the new Z after the 2 first rotations).
We can note that this convention can also be interpreted using global axis not attached to the solid by applying first the rotation around Z, then the rotation around Y and finally, the rotation around X.
Notes
The node given in list_nodes are eliminated from the system (slave nodes) and can’t be used in other boundary conditions. The boundary conditions should be enforce using the added global dof.
The rigid coupling is highly non-linear and the multi-point constraints are modified at each iteration.
Once created the RigidTie object needs to be associated to the problem using the Problem.add method.
Example
import fedoo as fd mesh = fd.mesh.box_mesh() left_face = mesh.find_nodes('X', mesh.bounding_box.xmin) right_face = mesh.find_nodes('X', mesh.bounding_box.xmax) rigid_tie = fd.constraint.RigidTie(right_face)
- __init__(list_nodes, center=None, name='Rigid Tie')
Methods
RigidTie.generate
(problem[, t_fact, t_fact_old])RigidTie.initialize
(problem)Return a condensed one line str describing the object