\chapter{\SLAP\ User's Manual}

\SLAP\  is a computer program written to help analysts determine the
behavior of a body impacting onto an unyielding surface.  The program
models the body as a three degree-of-freedom system.  The deformation of
the body is approximated by nonlinear springs at each end of the model.
The program was written primarily to model the \SLAP\  behavior of
nuclear waste transportation casks subjected to the regulatory 30-foot
drops onto an unyielding surface. 

The theory and algorithms used within the program are described in
Chapter~\ref{theory}.  This Appendix describes the \SLAP\ user interface
and program execution. 

\section{Execution of the \SLAP\  program}

The \SLAP\ executable and source files are located on the 1500
VAXCluster. The \SLAP\ program is run by typing:\hbox{\ {\sf SLAP
}{\em input\_file}}\quad where {\em input\_file} is the name of the
file containing the input data.  The file extension for this file must
be {\tt .INP}. To run \SLAP\ interactively type:\quad{\sf SLAP}\quad
and input the required data from the terminal. 

\section{Description of \SLAP\  Input Data}

The input data to \SLAP\ is a free field form using keywords.  The
keywords are intended to define a user friendly program language input.
The input is order independent.  The free field input allows the user to
delimit entries by either a blank, a comma, or an equals sign.  A dollar
sign indicates that whatever follows on the line of input is a comment
and is ignored.  Although it is seldom necessary, an asterisk indicates
that the current input line is to be continued on the next line. 

The keyword input parsing is designed to allow the user to create
readable input files.  The parsing system used in \SLAP\ examines only
the \underline{first} keyword and the \underline{last} numerical
constant found in the input line.  For example, the two sample input
lines below are both equivalent to the \SLAP\ parser. 
\begin{verbatim}
VERTICAL -527.5
VERTICAL VELOCITY IS -527.5 INCHES PER SECOND
\end{verbatim}
Both of these lines set the initial vertical velocity to the value
$-527.5$.  Note that all of the words in the second line except for {\tt
VERTICAL} and {\tt -527.5} are ignored by \SLAP. 

Tables \ref{tgeom} and~\ref{tglob} list the keywords recognized by
\SLAP. Normally, \SLAP\  is run in a batch mode where the input data are
read from the specified input file.  In this mode the program prints an
error message and then aborts if an incorrect keyword is entered. If
\SLAP\ is run interactively and an incorrect keyword is entered, the
program prints a warning message and then returns to input mode so that
the correct value may be entered.  In both the interactive and batch
mode, the program checks that all required values have been input.  If
it detects any undefined quantities, they are listed and the program
terminates. A complete echo of the input data is written to the output
file. 

In the keyword list, the nose of the body refers to the part
of the body in contact with the rigid surface at the beginning of the
analysis. The tail of the body is the opposite end.  The input
quantities are divided into two types---geometric and global.
Geometric quantities must be defined for both the nose and tail of the
body. To select the correct end of the body in the input file type
\cmd{NOSE} or \cmd{TAIL}, and then input the geometric quantities for
that end.  The global quantities are items, such as mass and moment of
inertia, where only one value is required to describe the body.  Global
quantities may be input at any time.  The first line of the input file
must be a title which is used to identify the problem.  The input phase
is terminated by inputting either \cmd{EXIT} or \cmd{END}.  A sample
input file is shown in Figure~\ref{sampinput}. 
\begin{table}
\caption{Keywords for \SLAP---Geometric}\label{tgeom}
\begin{center}
\begin{tabular}{lct{4in}} 
\multicolumn{1}{c}{\em Keyword} & \multicolumn{1}{c}{\em Default\N1} & 
  \multicolumn{1}{c}{\em Description}\\ \hline 
\cmd{HELP}  & --- & {Lists all keywords and their values.
Required quantities that have not yet been assigned values are given the
value {\tt -9.999E0}.}\\[1ex] 

\cmd{NOSE}  & --- & {Indicates that the geometric
quantities following this line refer to the nose end of the body.  
If \cmd{SYMMETRIC} is the second field, the geometric quantities that
have been defined for the tail are copied to the nose quantities. If
\cmd{SQUARE} is the second field, the nose is treated as square (See
Section~\ref{s:ideal}).}\\[1ex] 

\cmd{TAIL}  & --- & {Indicates that the geometric
quantities following this line refer to the tail end of the body.
If \cmd{SYMMETRIC} is the second field, the geometric quantities that
have been defined for the tail are copied to the nose quantities. If
\cmd{SQUARE} is the second field, the tail is treated as square (See
Section~\ref{s:ideal}).}\\[1ex] 

\cmd{LENGTH} & \REQ & {The length along the
longitudinal axis from the center of gravity to a point perpendicular to
the contact point of the current end of the body. This distance is
designated as $L_n$ and $L_t$ in Figure~\ref{f:geom}. }\\[1ex] 

\cmd{RADIUS} & \REQ & {The distance from the
longitudinal axis to the contact point of the current end of the body
measured perpendicular to the longitudinal axis. This distance is
designated as $R_n$ and $R_t$ in Figure~\ref{f:geom}.} \\[1ex]

\cmd{MU}     & 0.0 & {Coefficient of friction between
body and rigid surface at contact point}\\[1ex] 

\cmd{SPRING} & \REQ & {Indicates the beginning of the spring
definition, spring data are input as pairs of data with one pair per
record.  Each record consists of the displacement and the force exerted
by the spring at that displacement.  Terminate the spring definition with 

\cmd{END}}\\[1ex] 

\cmd{UNLOAD} & 0.0 & {Spring unloading modulus.  If this
value is zero, the spring unloads elastically along the
force-displacement curve input for the spring. }\\ \hline
\end{tabular}
\end{center}
NOTE:\\
\Q1{{`\REQ'} Indicates that a value must be input for this quantity; no
default is supplied. {\sf `---'} Indicates that this field is not
applicable.}
\end{table}

\begin{table}
\caption{Keywords for \SLAP---Global}\label{tglob}
\begin{center}
\begin{tabular}{lct{4in}} 
\multicolumn{1}{c}{\em Keyword} & \multicolumn{1}{c}{\em Default\N1} & 
  \multicolumn{1}{c}{\em Description}\\ \hline 

\cmd{HELP}  & --- & {Lists all keywords and their values.
Required values that have not yet been input appear as
{\tt-9.999E0}.}\\[1ex] 

\cmd{MASS}   & \REQ & {Body mass}\\[1ex]

\cmd{MOMENT} & \REQ & {Mass moment of inertia about the
center of gravity. }\\[1ex] 

\cmd{VERTICAL}& 0.0 & {Initial vertical velocity, positive
upward.}\\[1ex] 

\cmd{HORIZONTAL}& 0.0 & {Initial horizontal velocity
(positive towards tail)}\\[1ex] 

\cmd{THETA}   & 0.0 & { Initial angle in degrees.  Positive
counterclockwise if the nose is to the left of the tail.  Theta is
shown positive in Figure~\ref{f:geom}.}\\[1ex] 

\cmd{OMEGA}   & 0.0 & { Initial angular velocity
(radians/time)}\\[1ex] 

\cmd{GRAVITY} & 0.0 & {Constant vertical acceleration
applied to body, positive upward. (length/time$^2$)}\\[1ex]

\cmd{TIME}    & 0.1 & {Time step scale factor applied to
the internally calculated time step.}\\[1ex] 

\cmd{TERMINATION} &  & {Time to terminate the analysis. 
If \cmd{TERMINATION} is not specified, the calculation will
continue until either both springs have unloaded, or the velocities of
both the \cmd{NOSE} and \cmd{TAIL} are positive.}\\[1ex]

\cmd{PLOT}    & 1   & {The Plot data output interval
specifies the number of time steps between output of the plot data to the
\EXO\ database file.  Plot data are always output at the beginning and
end of the problem.}\\[1ex] 

\cmd{FRICTION}& 1.0 & {The friction factor is used to
smooth the applied friction force. The use of friction is being
investigated and does not always work correctly. }\\ \hline 
\end{tabular}
\end{center}
NOTE:\\
\Q1{{`\REQ'} Indicates that a value must be input for this quantity; no
default is supplied. {\sf `---'} Indicates that this field is not
applicable.}
\end{table}

\section{\SLAP\  Output Description}

Two output files are created during the execution of the \SLAP\ program:
a text file containing an echo of the input data and a summary of the
output data, and a binary plot file written in the \EXO~\cite{EXODUS}
format. 

\subsection{Text Output File}

The text file written during execution of \SLAP\  consists
of four main sections.  The first section describes the name of the
program, the date of the latest program revision, the system hardware
and software, and the time and date of execution. 

The second section is a formatted echo of the input data. All input data
appears in this section so that the input data file can be reconstructed
at a later time. 

The third section summarizes the sequence of events that occur during
the analysis.  The times at which the nose and the tail hit the impact
surface and begin to rebound, the impact velocities, and the ratio
of the impact and rebound velocities to the initial velocity are output.

The fourth section summarizes the results of the analysis.  The minimum and
maximum displacements, velocities, and accelerations of the nose, tail, and
center of gravity are reported.  These values provide an indication of the
magnitude of the \SLAP\  effect.  Note that, unless a gravitational
acceleration is specified, the acceleration of the center of gravity should
always be greater than or equal to zero and therefore, the minimum velocity of
the center of gravity should equal the initial velocity.  Also, the maximum
strain energy in each of the springs during the impact event is output. These
values are important in determining the severity of the slapdown effect since
for some geometries the second impact will occur at a velocity greater than the
initial velocity; however, due to the bodies angular position and velocity, the
strain energy in the spring will be less than that caused by a flat impact. 
The opposite effect will also occur (higher strain energy at lower impact
velocity).


The name of this file is the same as the input data file except that the
extension is {\tt .OUT}.   The file is named {\tt SLAP.OUT} if the program is
run interactively.  Figures~\ref{sampout1} through \ref{sampout4} illustrate
the four sections of the output file resulting from the input shown in
Figure~\ref{sampinput}. 

\subsection{\EXO\ Database File}

A binary plot file is written to simplify postprocessing the results of
the analysis.  The file is written in the \EXO\ database format.  This
database provides a link to the postprocessing codes used in
Department~1520.  Appendix~\ref{exodus} is a description of the \EXO\ database
format.

The output of \SLAP\  consists of plot data for 8 nodal variables, 2 element
variables and 6 global variables.  The nodal variables are the positions,
displacements,  velocities, and accelerations in the horizontal and vertical
directions  of the nose, center of gravity, tail, and left and right spring
contact points;  the element variables are the normal and friction forces in
the nose and tail springs; and the global variables are angular quantities
(position, velocity and acceleration) and energies.  The nose, center of
gravity, and tail are designated as nodes 1, 2, and~3; the left and right
spring contact points are designated as nodes 4 and~5; and the nose and tail
springs are designated as elements 1 and~2, respectively. The variable names
written to the \EXO\ file are listed in Table~\ref{seatab}.

\begin{table}
\begin{center}
\caption{\EXO\ Variable Names}\label{seatab}
\begin{tabular}{|r|l|}\hline
\multicolumn{2}{|c|}{Nodal variables:}\\ \hline
\sf DISY      & Vertical displacement\\
\sf POSY      & Vertical position\\
\sf VELY      & Vertical velocity\\
\sf ACCY      & Vertical acceleration\\
\sf DISX      & Horizontal displacement\\
\sf POSX      & Horizontal position\\
\sf VELX      & Horizontal velocity\\
\sf ACCX      & Horizontal acceleration\\ \hline\hline
\multicolumn{2}{|c|}{Element variables:}\\ \hline
\sf FORCE     & Normal force in the spring\\
\sf FRICTION  & Frictional force in the spring\\ \hline\hline
\multicolumn{2}{|c|}{Global variables:}\\ \hline
\sf THETA     & Angular position, Degrees\\
\sf OMEGA     & Angular velocity, Radians/time\\
\sf ALPHA     & Angular acceleration, Radians/time${}^2$\\
\sf KE        & Kinetic energy\\
\sf INTE      & Internal strain energy in the spring\\ 
\sf DAMKE     & Damaging kinetic energy 
                $=\sfrac1/2 \left(m v_y^2 + I \omega^2\right)$ \\ \hline
\end{tabular}
\end{center}
\end{table}
The name of this file is the same as the input data file with the suffix
{\tt .EXO}.  The file is named {\tt SLAP.EXO} if the program is run
interactively. 

\begin{figure}
\hrule\small
\begin{verbatim}
CASK - TOP END HIT - LIN ELAS NOSE SPRING
NOSE, SQUARE
LENGTH 80
RADIUS 59.95 
SPRING 
  10.0 5.75E8
END

TAIL
LENGTH 88.35
RADIUS 49
SPRING
   0.1 2.28E7
  10.0 1.E8
END

MASS      839.8
MOMENT      3.287E+06
VERTICAL -527.5
THETA      10.00
TIME         .010
PLOT     1000
EXIT
\end{verbatim}
\hrule
\caption{Sample input file for \SLAP.}\label{sampinput}
\end{figure}

\begin{figure}
%\begin{center}
\unitlength 1in
\begin{picture}(6.0,4)
\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, 3.1250){\makebox(0,0)[b]{$V_{Y0}$}}
\put(3.50, 2.6250){\vector(1, 0){.5}}
\put(4.000,2.6250){\makebox(0,0)[l]{$V_{X0}$}}
%
\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
%
\end{picture}
%\end{center}
\caption{\SLAP\ Geometry Idealization ({\sf SQUARE} end)}\label{f:geom}
\end{figure}

\begin{figure}
\parskip0pt
\hrule
\small
\begin{verbatim}
 SLAPDOWN, Version 1.0
 Run on 11/05/87 at 16:17:55
 Compiled on a VAX 8600 using VMS 4.3.
\end{verbatim}
\hrule
\caption{Sample output file for \SLAP---Program Description}\label{sampout1}
\end{figure}
\begin{figure}
\parskip0pt
\hrule\small
\begin{verbatim}
 TITLE: CASK - TOP END HIT - LIN ELAS NOSE SPRING
 ****** NOSE PROPERTIES ******
 LENGTH FROM NOSE TO CG (Z1)            8.000E+01
 RADIUS OF CASK AT NOSE (R1)            5.995E+01
 SQUARE END
 COEFFICIENT OF FRICTION AT NOSE (CF1)  0.000E+00

        NOSE SPRING DEFINITION
        DISPLACEMENT     FORCE
          0.000E+00    0.000E+00
          1.000E+01    5.750E+08

 UNLOAD ELASTICALLY ALONG SPRING CURVE

 ****** TAIL PROPERTIES ******
 LENGTH FROM TAIL TO CG (Z2)            8.835E+01
 RADIUS OF CASK AT TAIL (R2)            4.900E+01
 COEFFICIENT OF FRICTION AT TAIL (CF2)  0.000E+00

        TAIL SPRING DEFINITION
        DISPLACEMENT     FORCE
          0.000E+00    0.000E+00
          1.000E-01    2.280E+07
          1.000E+01    1.000E+08

 UNLOAD ELASTICALLY ALONG SPRING CURVE

 ****** MASS, MOMENT OF INERTIA, AND INITIAL CONDITION DATA ******
 MASS OF BODY                           8.398E+02
 MOMENT OF INERTIA                      3.287E+06
 RADIUS OF GYRATION                     6.256E+01
 INITIAL VERTICAL VELOCITY (pos. up)   -5.275E+02
 INITIAL ANGLE (positive CCW)           1.000E+01
 TIME STEP SCALE FACTOR                 1.000E-02
 FRICTION SCALE FACTOR                  0.000E+00
 WRITE PLOT DATA EVERY 1000 STEPS
 TIP VELOCITY RATIO ESTIMATE            1.612E+00
\end{verbatim}
\hrule
\caption{Sample output file for \SLAP---Formatted Input
Data Echo}\label{sampout2} 
\end{figure}

\begin{figure}
\parskip0pt
\hrule\small
\begin{verbatim}
 ****** S L A P D O W N ******

 CASK - TOP END HIT - LIN ELAS NOSE SPRING 

 ****** SEQUENCE OF EVENTS ******

 ** NOSE HIT     AT TIME  0.000E+00, VELOCITY = -5.275E+02
 ** NOSE REBOUND AT TIME  4.036E-03, VELOCITY =  4.421E+01
 ** NOSE UNLOAD  AT TIME  8.006E-03, VELOCITY =  6.133E+02
 ** TAIL HIT     AT TIME  5.108E-02, VELOCITY = -7.763E+02
 ** TAIL REBOUND AT TIME  5.742E-02, VELOCITY =  1.754E+00
\end{verbatim}
\hrule
\caption{Sample output file for \SLAP---Event Sequence}\label{sampout3}
\end{figure}
\begin{figure}
\parskip0pt
\hrule\small
\begin{verbatim}
 ****** RESULTS ******

 Event over at time    5.744E-02, Time step size  2.193E-05
 Time step multiplier  1.000E-02,    4 Plot times written to database


            DISPLACEMENT     VELOCITY     ACCELERATION

    NOSE      1.358E+00      6.200E+02      2.226E+05 (MAX)
                            -5.275E+02     -3.553E+04 (MIN)

    TAIL      2.706E+00      4.983E+00      1.473E+05 (MAX)
                            -7.943E+02     -5.022E+04 (MIN)

      CG                     2.178E+02      9.299E+04 (MAX)
                            -5.275E+02      0.000E+00 (MIN)

 ANGULAR                     0.000E+00      1.121E+03 (MAX)
                            -8.401E+00     -1.641E+03 (MIN)
\end{verbatim}
\hrule
\caption{Sample output file for \SLAP---Results Summary}\label{sampout4}
\end{figure}

