RIGID_BODY_UPDATE

Rigid bodies

*RIGID_BODY_UPDATE
type

Parameter definition

Variable
Description
type
Update type
options:
0 $\rightarrow$ linear update when interacting with deformable body
1 $\rightarrow$ linear update if sharing nodes with deformable body
2 $\rightarrow$ always curvilinear update

Description

Optional command to enforce curvilinear update of nodes belonging to rigid bodies.

By default (in order to conserve energy) rigid body nodes follow incremental linear paths during time integration, when interacting with deformable bodies. This can lead to significant geometrical errors if both time step size and the rigid body rotations are large.

Example

Linear/curvilinear update

Two cylinders, one rigid and one deformable are merged. The free end of the deformable cylinder is fixed and the rigid cylinder is rotating around its central axis, creating torsion. Due to both large time step size and rigid body rotations, a geometrical error is appearing.

One way of solving this problem is to reduce time step size. An alternative approach is to change the update type of the rigid body nodes.

Demonstration of differences between the update type options
Demonstration of differences between the update type options
*UNIT_SYSTEM SI *PARAMETER %L1 = 1.0, "Length of deformable cylinder" %L2 = 0.15, "Length of rigid cylinder" %D = 0.1, "Diameter of cylinders" %rot = 4*pi, "Rotation at termination" %tend = 0.01, "Termination time" %dx = 0.05, "Element size in axial direction" %type = 2, "Rigid body update type [0, 1 or 2]" # # --- TIME and OUTPUT --- # *TIME [%tend] *OUTPUT [%tend/5] # # --- MESH --- # *COMPONENT_CYLINDER 1, 1, [%L1/%dx], 4 0, 0, 0, 0, 0, [%L1], [%D/2] *COMPONENT_CYLINDER 2, 2, [%L2/%dx], 4 0, 0, [%L1], 0, 0, [%L1+%L2], [%D/2] *MERGE_DUPLICATED_NODES P, 1, P, 2, 1e-5 # # --- MATERIAL --- # *MAT_ELASTIC 1, 7800, 210e6, 0.3 *MAT_RIGID 2, 7800 *PART 1, 1, , , 50 2, 2, , , 50 *CHANGE_P-ORDER ALL, 0, 3 # # --- BOUNDARY CONDITIONS --- # *BC_MOTION "Fix deformable end" 1 G, 1, XYZ *GEOMETRY_SEED_COORDINATE 1 0, 0, 0 *BC_MOTION "Rotation on rigid part" 2 P, 2, Z D, RZ, 2 *FUNCTION 2 %rot*(t/%tend) # # --- RIGID BODY UPDATE --- # *RIGID_BODY_UPDATE [%type] *END