RIGIDBODY

RIGIDBODY movement (translation and rotation) due to acting forces of the flow

The geometry with MOVE-flag $MOVE_index$ moves due to the acting forces of the flow as well as additional outer forces and momentum. Note:
  • The physical constants/variables have to be initialized in the MOVE statement (see below).
  • To speed up the calculation, activate %MOVE_InvokeDataCaching%. Ensure that you follow the correct order: It must be the first of the optional arguments.
In particular, we solve the ODE of movement of rigid rotating bodies: \begin{align} \frac{d }{dt} \left( \mathbf{x}_{COG} \right) = \mathbf{v}_{COG}\end{align} \begin{align} \frac{d }{dt} \left( m \cdot \mathbf{v}_{COG} \right) = F_{fluid} + F_{gravity} + F_{outer} + \left( F_{contact} + F_{friction} \right)\end{align} \begin{align} \frac{d}{dt} \left( \mathbf{I} \cdot \mathbf{\omega}_{COG} \right) = M_{fluid} + M_{outer} + \left( M_{contact} + M_{friction} \right)\end{align} The variables are
  • \( t\): time
  • \( m\): mass of the body,
  • \( \mathbf{x}_{COG}\): position of the center of gravity of the body; this can be extracted by the function xCOG(),
  • \( \mathbf{v}_{COG}\): velocity of the center of gravity; this can be extracted by the function vCOG(),
  • \( F_{fluid}\): forces acting from the fluid onto the body (automatically measured and applied!); this can be extracted by the function FCOG(), Note: The pointwise pressure field is averaged using the values from the current and previous timestep. No averaging is done for the stress tensor, esp. PCindices, %ind_Sn(1)%, %ind_Sn(2)%, %ind_Sn(3)% . To skip averaging, please refer to RIGIDBODY_ForceToApplyOnBody_PC .
  • \( F_{gravity}\): the gravity forces deduced from the definition of gravity of the appropriate material,
  • \( F_{outer}\): additional / outer forces other than fluid or gravity/body forces,
  • \( \mathbf{I}\): tensor of rotational inertia,
  • \( \mathbf{\omega}_{COG}\): rotational speed about the center of gravity of the body; this can be extracted by the function omCOG(),
  • \( M_{fluid}\): moment about the center of gravity (automatically measured and applied!); this can be extracted by the function MCOG(),
  • \( M_{outer}\): outer moments other than the moment applied by the fluid,
  • \( F_{contact}, M_{contact}\): if RIGIDBODY_UseCollisionModel > 0, then MESHFREE detects the body-body and body-boundary intersections and automatically applies contact forces and moments \( M_{contact} = \left( \mathbf{x}_{contact} - \mathbf{x}_{COG} \right) \times F_{contact}\).
MOVE($MOVE_index$) = ( %MOVE_rigid%, ... xCenterInit, yCenterInit, zCenterInit, ... Mass, ... xxInertia, xyInertia, xzInertia, yxInertia, yyInertia, yzInertia, zxInertia, zyInertia, zzInertia, ... xVelocityInit, yVelocityInit, zVelocityInit, ... xOmegaInit, yOmegaInit, zOmegaInit, ... xForce, yForce, zForce, ... xMomentum, yMomentum, zMomentum, ... OPTIONAL: %MOVE_InvokeDataCaching%, ... OPTIONAL: %RIGIDBODY_FixVelocity%, v_x, v_y, v_z, ... OPTIONAL: %RIGIDBODY_FixOmega%, omega_x, omega_y, omega_z, ... )
Entry Description
(xCenterInit, yCenterInit, zCenterInit) initial center of gravity \( \mathbf{x}_{COG}\)
Mass mass of RIGIDBODY \( m\)
(xxInertia, xyInertia, xzInertia, yxInertia, yyInertia, yzInertia, zxInertia, zyInertia, zzInertia) initial tensor of inertia \( \mathbf{I}\)
(xVelocityInit, yVelocityInit, zVelocityInit) initial velocity \( \mathbf{v}_{COG}\)
(xOmegaInit, yOmegaInit, zOmegaInit) inital rotational state \( \mathbf{\omega}_{COG}\)
(xForce, yForce, zForce) outer forces \( F_{outer}\)
(xMomentum, yMomentum, zMomentum) outer momentum \( M_{outer}\)
%MOVE_InvokeDataCaching% activate data caching (must be the first optional argument)
%RIGIDBODY_FixVelocity%, v_x, v_y, v_z, fix a velocity vector (that is fix a velocity in a given direction)
The direction of fixation is given by the normalized velocity. So, it becomes clear, that 0 velocity cannot be fixed. In this case a tiny value has to be given.
Be aware that you can provide up to three %RIGIDBODY_FixVelocity% statements.
%RIGIDBODY_FixOmega%, omega_x, omega_y, omega_z fix a rotational speed vector (that is fix the speed around a given axis)
The direction of the axis is given by the normalized rotational speed vector. So, it becomes clear, that 0 rotational speed cannot be fixed. In this case a tiny value has to be given.
Be aware that you can provide up to three %RIGIDBODY_FixOmega% statements.
List of members:
RIGIDBODY_interaction control forces acting on a RIGIDBODY due to collision or joints
RIGIDBODY_ExternalForces define external forces of a RIGIDBODY based on a point source