\chapter{Description of \SLAP\ Idealization}\label{theory} The idealization of the body and the numerical algorithms required to perform the spatial and temporal integration of the equations of motion in \SLAP\ are described in this chapter. The idealized geometry is described in the first section; the next section describes the algorithms used to determine the spring and frictional forces at the impact points. The explicit time integration scheme is explained in the final section. \section{Geometry Idealization}\label{s:ideal} The impact response of a deformable body is idealized in \SLAP\ as a simple three degree-of-freedom body. The three degrees-of-freedom are the vertical, horizontal, and angular velocity at the center of gravity (CG) of the body. The nonlinear force-deformation response of the deformable body is represented by two piecewise linear ``springs'' which apply both a vertical force and a moment to the body. The springs are located at the initial and secondary impact points. A horizontal force and an additional moment are caused by frictional forces at the point(s) of impact. The mass of the body is assumed to be concentrated at the CG, and the idealization has the same mass moment of inertia as the body. Figure~\ref{f:gi} shows a cross-section of the geometry being analyzed and the \SLAP\ idealization. \paragraph*{End Treatment} Two options are available for modeling the spring attachment to the body: {\sf SQUARE} and {\sf ROUND}. If the {\sf SQUARE} option is used, the spring is constrained to be perpendicular to the axis of the rigid body; in the {\sf ROUND} option, the spring is perpendicular to the rigid surface. Figure~\ref{f:square} illustrates these two configurations. In both cases, the force-displacement curve is defined in terms of the displacement normal to the rigid surface. The effect of the different end treatments is only important for large angle impacts; for shallow angle impacts the difference in the response is negligible. \section{Normal and Tangential Force Algorithms} The algorithms used to determine the normal and tangential forces resulting from the body deformation and friction between the body and the rigid surface are described in this section. \subsection{Normal Force---``Springs''} The normal force results from the deformation of the body after impact with the rigid surface. In \SLAP, a piecewise linear spring definition is used to approximate the force-deformation behavior of the actual body. An unloading modulus can also be specified which represents the force-displacement behavior during rebound of the body. In this way a plastic spring can be modeled. If the unloading modulus is not specified, the body unloads along the original loading curve simulating a non-linear elastic spring. The spring reloads along the same path as it unloaded. The algorithm that implements this behavior requires three variables in addition to the spring definition: (1)~the current spring displacement, \var{DISP}, (2)~the maximum spring displacement, \var{DISPMX}, and (3)~a logical variable to determine if the spring has rebounded. If the spring has not yet rebounded and is still loading, the algorithm simply searches the spring definition until the value of \var{DISP} is bounded by the displacement values of one of the piecewise linear spring segments. It then linearly interpolates to find the corresponding force. If the value of \var{DISP} is larger than the maximum displacement in the spring definition, an error message is printed and the program stops. If the value of \var{DISP} is less than the value of \var{DISPMX}, the spring is unloading. Two options are used to determine the spring force. If the unloading modulus (\var{UNLOAD}) is zero, the unloading path is along the spring definition curve, and the force calculation proceeds as described in the previous paragraph. If the unloading modulus is nonzero, the algorithm must unload at that slope from the value of the maximum displacement. The force corresponding to the maximum displacement \var{DISPMX} is calculated using the method described in the previous paragraph. The force is then reduced by the product of the unloading modulus and the rebound from the maximum spring displacement. The spring force must be non-negative at all times; if the calculated force is tensile, then the spring force is set to zero. \subsection{Tangential Force---Friction} The tangential force is the result of friction at the point of impact of the body with the rigid surface. The tangential force is equal to the product of the coefficient of friction, \var{CF}, and the normal force, \var{FRC}. The direction of this force is opposite to the direction of the horizontal velocity at the impact point; no force is applied if the horizontal velocity is zero. The current algorithm has problems with high coefficients of friction and when both ends are in contact with the rigid surface. Methods for more accurately representing the frictional force are being developed and will be implemented when they have been thoroughly tested. \section{Explicit Time Integration} \SLAP\ uses a central difference scheme to integrate the equations of motion through time. Table~\ref{t:explicit} is a flowchart for the explicit algorithm~\cite{Belyt}. In the table, $\dis$, $\vel$, and $\acc$ are the displacements, velocities, and accelerations of the three degrees-of-freedom, respectively; $\fext$ are the external forces due to the deformation of the springs and friction at the impact point; ${\bf M}$ is the mass matrix; $N$ is the step number; and $\Delta t$ is the time increment. A constant time increment $\Delta t$ is used in \SLAP. \begin{table}[ht] \begingroup\itemsep 0pt \hrule \begin{enumerate} \item Set initial conditions: $\dis^0 = \dis(0)$, $\vel^{1/2} = \vel(0)$, $\fext^0 = {\bf 0}$, $N=0$ \item\label{stepbeg} Update displacements: $\dis^{N+1} = \dis^N + \Delta t\vel^{N+1/2}$ \item Compute external forces $\fext^{N+1}$ due to ``springs'' and friction \item Update accelerations: $\acc^{N+1} = {\bf M}^{-1} \fext^{N+1}$ \item $N \leftarrow N+1$ \item Update velocities: $\vel^{N+1/2} = \vel^{N-1/2} + \Delta t\acc$ \item Go to step \ref{stepbeg} \end{enumerate} \hrule \endgroup \caption{Flowchart for explicit integration of equations of motion}\label{t:explicit} \end{table} The central difference method is conditionally stable. The stable time step for this method is: \begin{displaymath} \Delta t \le\min\left[\frac{2}{\omega_n}\left(\sqrt{1+\xi^2_n}-\xi_n\right)\right] = \Delta t_{\rm stab} \end{displaymath} where $\omega_n$ is the natural frequency of the system and $\xi_n$ is the fraction of critical damping in the $n^{\rm th}$ mode. No damping is used in \SLAP\ so the stable time step calculation reduces to: \begin{displaymath} \Delta t_{\rm stab} = \frac{2}{\omega_{\max}} \end{displaymath} The value of $\Delta t_{\rm stab}$ is calculated internally in \SLAP; it is then reduced by the {\sf TIME STEP SCALE FACTOR} read from the input file. The default value of the {\sf TIME STEP SCALE FACTOR} is $0.1$ (see Table~\ref{tglob}, page~\pageref{tglob}). The reduction is not required for stability, rather it is done for added resolution and improved accuracy. The following equation is used to determine the value of $\omega_n$ that is used to calculate the stable time step interval. Note that $\lambda = \omega^2$ and $|\cdot|$ represents the determinant. The horizontal degree-of-freedom is not used in the calculation. \begin{displaymath} \left|\begin{array}{ll} k_n + k_t - M\lambda & k_n l_n - k_t l_t \\ k_n l_n - k_t l_t & k_n l_n^2 + k_t l_t^2 - I\lambda \end{array}\right| = 0 \end{displaymath} where $k$ is the maximum spring constant in the spring definition, $l$ is the length from the CG to the impact point, $M$ is the mass, $I$ is the moment of inertia, and the subscripts $(\cdot)_n$ and $(\cdot)_t$ refer to the nose and tail of the body, respectively. This equation is based on the assumption that both springs remain in contact with the rigid surface and provide a tensile force when stretched. In \SLAP, the springs release from the rigid surface and provide no tensile forces. To accommodate this feature, the above calculation is repeated three times with different values for $k_n$ and $k_t$; the minimum value calculated for $\Delta t_{\rm stab}$ is used. The three calculations are: (1)~both ends in contact, (2)~nose in contact, tail released $(k_t=0)$, and (3)~tail in contact, nose released $(k_n=0)$. The integration is stepped through time using the calculated value of $\Delta t$ until either both springs have unloaded, or the velocities of both the {\sf NOSE} and {\sf TAIL} are positive. Data are written to the {\sf EXODUS} postprocessing file at both the first and last time step and every {\sf PLOT} (see Table~\ref{tglob}, page~\pageref{tglob}) steps throughout the analysis. \begin{figure} %\begin{center} \unitlength 1in \begin{picture}(6.0,8) \thicklines \put(0.25, 2.5){\framebox(.75,.3){Nose}} \put(5.00, 3.5){\framebox(.75,.3){Tail}} \put(3.125,2.0){\framebox(.75,.3){CG}} \put(1.25, 1){\line(-1,4){0.25}} \put(1.00, 2){\line( 4,1){4.0}} \put(5.00, 3){\line(0,-1){1.0}} \put(3.50, 2.6250){\circle*{.1}} \put(5.25, 2.4000){\vector(0,-1){.4}} \put(5.25, 2.5000){\makebox(0,0){$R_t$}} \put(5.25, 2.6000){\vector(0, 1){.4}} % % force vectors % \put(3.50, 2.6250){\vector(0, 1){.5}} \put(3.50, 2.6250){\vector(1, 0){.5}} % \put(5.00, 1.5 ){\vector(0, 1){.5}} \put(5.00, 1.5 ){\makebox(0,0)[t]{$F_N^t$}} \put(4.50, 2.0 ){\vector(1, 0){.5}} \put(4.50, 2.0 ){\makebox(0,0)[r]{$F_T^t$}} % \put(1.25, 0.5 ){\vector(0, 1){.5}} \put(1.25, 0.5 ){\makebox(0,0)[t]{$F_N^n$}} \put(0.75, 1.0 ){\vector(1, 0){.5}} \put(0.75, 1.0 ){\makebox(0,0)[r]{$F_T^n$}} % % Dimensions % \put(1.40, 1.4){\vector(1,-4){.10}} \put(1.375,1.5){\makebox(0,0){$R_n$}} \put(1.35, 1.6){\vector(-1,4){.10}} % \put(2.10, 2.5250){\vector(-4,-1){1.10}} \put(2.25, 2.5625){\makebox(0,0){$l_n$}} \put(2.40, 2.6000){\vector( 4, 1){1.10}} % \put(4.10, 3.0250){\vector(-4,-1){0.60}} \put(4.25, 3.0625){\makebox(0,0){$l_t$}} \put(4.40, 3.1000){\vector( 4, 1){0.60}} % % Rigid surface % \put(1,1){\line(1,0){4.5}} \put(3.5,.8){Rigid Surface} % \put(1.50,2){\line(1,0){0.5}} \put(1.75,2.05){\makebox(0,0)[b]{$\theta$}} \thinlines % % % draw the picture outline % %\thinlines %\put(0,0){\line(1,0){6.0}} %\put(0,1){\line(1,0){6.0}} %\put(0,2){\line(1,0){6.0}} %\put(0,3){\line(1,0){6.0}} %\put(0,4){\line(1,0){6.0}} %\put(0,5){\line(1,0){6.0}} %\put(0,6){\line(1,0){6.0}} %\put(0,7){\line(1,0){6.0}} %\put(0,8){\line(1,0){6.0}} %\put(0.0,0){\line(0,1){8.0}} %\put(1.0,0){\line(0,1){8.0}} %\put(2.0,0){\line(0,1){8.0}} %\put(3.0,0){\line(0,1){8.0}} %\put(4.0,0){\line(0,1){8.0}} %\put(5.0,0){\line(0,1){8.0}} %\put(6.0,0){\line(0,1){8.0}} \end{picture} %\end{center} \caption{\SLAP\ Geometry Idealization ({\sf SQUARE} end)}\label{f:gi} \end{figure} \begin{figure} %\begin{center} \unitlength 1in \begin{picture}(6.0,8) \thicklines \put(0.15, 1.7){\framebox(.75,.3){Nose}} \put(5.10, 2.7){\framebox(.75,.3){Tail}} \put(3.125,2.0){\framebox(.75,.3){CG}} \put(1.25, 1){\line(-1,4){0.25}} \put(1.00, 2){\line( 4,1){4.0}} \put(5.00, 3){\line(0,-1){1.0}} \put(3.50, 2.6250){\circle*{.1}} % % force vectors % \put(3.50, 2.6250){\vector(0, 1){.5}} \put(3.50, 2.6250){\vector(1, 0){.5}} % \put(1.25, 0.5 ){\vector(0, 1){.5}} \put(1.25, 0.5 ){\makebox(0,0)[t]{$F_N^n$}} \put(0.75, 1.0 ){\vector(1, 0){.5}} \put(0.75, 1.0 ){\makebox(0,0)[r]{$F_T^n$}} % % Moment arm dimension % \thinlines \put(1.25,1.2){\line(0,1){1.925}} \thicklines \put(2,2.75){\vector(-1,0){0.75}} \put(2,2.75){\vector( 1,0){1.50}} \put(2.25, 3.0){\makebox(0,0){Moment Arm---{\sf SQUARE}}} \put(1.0, 3.7){\framebox(4.0,.3){{\sf SQUARE} Moment Arm $\leq$ {\sf ROUND} Moment Arm}} % % Rigid surface % \put(1,1){\line(1,0){4.5}} \put(4.5,.8){Rigid Surface} % \put(1.50,2){\line(1,0){0.5}} \put(1.75,2.05){\makebox(0,0)[b]{$\theta$}} % % ROUND End -- Top Half of figure % \thicklines \put(0.15, 5.7){\framebox(.75,.3){Nose}} \put(5.10, 6.7){\framebox(.75,.3){Tail}} \put(3.125,6.0){\framebox(.75,.3){CG}} \put(1.00, 5){\line( 0,1){1.0}} \put(1.00, 6){\line( 4,1){4.0}} \put(5.00, 7){\line(0,-1){1.0}} \put(3.50, 6.6250){\circle*{.1}} % % force vectors % \put(3.50, 6.6250){\vector(0, 1){.5}} \put(3.50, 6.6250){\vector(1, 0){.5}} % \put(1.0, 4.5 ){\vector(0, 1){.5}} \put(1.0, 4.5 ){\makebox(0,0)[t]{$F_N^n$}} \put(0.5, 5.0 ){\vector(1, 0){.5}} \put(0.5, 5.0 ){\makebox(0,0)[r]{$F_T^n$}} % % Moment arm dimension % \thinlines \put(1,6.2){\line(0,1){0.9250}} \thicklines \put(2,6.75){\vector(-1,0){1.00}} \put(2,6.75){\vector( 1,0){1.50}} \put(2.25, 7.0){\makebox(0,0){Moment Arm---{\sf ROUND}}} % % Rigid surface % \put(1,5){\line(1,0){4.5}} \put(4.5,4.8){Rigid Surface} % \put(1.50,6){\line(1,0){0.5}} \put(1.75,6.05){\makebox(0,0)[b]{$\theta$}} \thinlines % % % draw the picture outline % %\thinlines %\put(0,0){\line(1,0){6.0}} %\put(0,1){\line(1,0){6.0}} %\put(0,2){\line(1,0){6.0}} %\put(0,3){\line(1,0){6.0}} %\put(0,4){\line(1,0){6.0}} %\put(0,5){\line(1,0){6.0}} %\put(0,6){\line(1,0){6.0}} %\put(0,7){\line(1,0){6.0}} %\put(0,8){\line(1,0){6.0}} %\put(0.0,0){\line(0,1){8.0}} %\put(1.0,0){\line(0,1){8.0}} %\put(2.0,0){\line(0,1){8.0}} %\put(3.0,0){\line(0,1){8.0}} %\put(4.0,0){\line(0,1){8.0}} %\put(5.0,0){\line(0,1){8.0}} %\put(6.0,0){\line(0,1){8.0}} \end{picture} %\end{center} \caption{Effect of {\sf ROUND} and {\sf SQUARE} End Treatment}\label{f:square} \end{figure}