Time integration¶
Solfec-1.0 implements three variants of time integration of rigid body kinematics:
RIG_POS – a semi–explicit scheme with a positive energy drift, cf. NEW1 in 1
RIG_NEG – a semi–explicit scheme with a negative energy drift, cf. NEW2 in 1
RIG_IMP – a semi–implicit without energy drift (but rather, oscillation), cf. NEW3 in 1
And two variants of time integration for pseudo–rigid and finite–element kinematics:
DEF_EXP – an explicit leap–frog scheme, cf. Section 5.1 in 2
A time integration scheme is selected by modifying the scheme parameter of the BODY object.
Rigid integration¶
Linear motion is integrated like deformable motion. Rigid rotations are integrated as follows
If explicit
otherwise
The scheme ending at (35) is DEF_POS, ending at (36) is DEF_NEG, and using instead (37) and (38) is DEF_IMP. Above, \(\exp\left[\cdot\right]\) is the exponential map defined by the Rodrigues formula
where \(\mathbf{I}\) is the \(3\times3\) identity operator, \(\hat{\mathbf{\Psi}}\) creates the skew symmetric matrix out of a 3-vector \(\mathbf{\Psi}\), and \(\left\Vert \cdot\right\Vert\) stands for the Euclidean norm. The time step is denoted as \(h\).
Deformable integration¶
Deformable time integrator reads
where in the explicit case
and in the linearly implicit case
The time step is denoted as \(h\). See TR1 for technical details.
Implementation¶
Time integration is implement in bod.c (rigid, pseudo–rigid) and fem.c (finite–element) files. Inverse generalized inertia matrix \(\mathbf{A}^{-1}\) is declared in bod.h as follows:
struct general_body
{
/* ... */
MX *inverse; /* generalized inverse inertia oprator */
/* ... */
}
Rigid integration formulae (31)-(34) are in
bod.c:BODY_Dynamic_Step_Begin.
Rigid integration formulae (35)-(38) are in
bod.c:BODY_Dynamic_Step_End.
Pseudo–rigid integration is included in the same routines:
first half–step and
second half–step.
Finite–element, total Lagrangian formulation based, integration formulae (39) and (40)
are in fem.c:TL_dynamic_step_begin.
Finite–element, total Lagrangian formulation based, integration formula (41)
is in fem.c:TL_dynamic_step_end.