\chapter{Command Input} \label{c:commands}

Each command in \numbers\ is described below.  The commands are divided
into four categories: (1)~operational commands, (2)~parameter-setting
commands, (3)~database display commands, and (4)~miscellaneous commands.
Operational commands are the commands that actually perform the utility
functions of \numbers, such as calculating the mass properties, or
verifying the correct definition of contact surfaces.  The
parameter-setting commands are used to initialize or modify the
parameters required by the operational commands such as the material
density which is required to calculate the mass properties. The database
display commands echo information contained on the database to the
terminal.  Miscellaneous commands are simply commands that do not fit
into any of the previous categories. 

\input{cominput}

\newpage
\section{Operational Commands}\label{sec:oper}

\cmddef{\cmdverb{MASS} 
      \param{nquad} \default{1 or previous value},
      \optparam{density}
\cmdnext \cmdverb{PROPERTIES} 
      \param{nquad} \default{1 or previous value},
      \optparam{density}
} {
\cmd{mass} or \cmd{properties} calculates several mass properties of the
body.  The calculated properties are the volume and mass of each element
block; the mass or area moments of inertia; the location of the center
of gravity; the minimum, maximum, and average element volume for each
element block; and the number of elements in each element block.   

The parameter \param{nquad} selects the number of quadrature (numerical
integration) points used to calculate the mass properties. It must be 1
or 4 for a two-dimensional mesh, and 1 or 8 for a three-dimensional
mesh.  If it is not entered, it will be set to the last entered value,
or to 1 if it has never been set.  If all of the material densities are
equal, they can be set by entering a positive value for the optional
parameter \param{density}. If the densities are not equal, they must be
input through the \cmd{density} command. 

If the \cmd{exodus} switch is \cmd{ON}\footnote{See command
\cmd{EXODUS}}, the mass properties will be calculated for the deformed
geometry of the body at each selected time step; if \cmd{exodus} is
\cmd{OFF}\footnotemark[1], values will be calculated for the undeformed
geometry. Section~\ref{sec:mass} describes the algorithms used in this
calculation, and the resulting output. 
} 

\cmddef{\cmdverb{LOCATE} \cmd{\{NODES$|$ELEMENTS\}} 
      \param{locate\_option}
} {
\cmd{LOCATE} is used to locate \cmd{NODES} or \cmd{ELEMENTS} that are
within a specified distance from a user-defined point, line, or plane.
The available options are defined below.  The algorithms used are
described in Section~\ref{sec:locate}.  If \cmd{ELEMENTS} is specified,
distance is measured to the element centroid.  In the descriptions of
the \param{locate\_options} below, the $z$ coordinates are omitted for
two-dimensional bodies.  \cmd{LOCATE} calculates distances only for the
undeformed geometry regardless of the setting of the \cmd{EXODUS}
switch. 

\cmdoption{\cmd{LOCATE \{NODES$|$ELEMENTS\} POINT} 
   \param{$x_0$, $y_0$, $z_0$}, 
   \optparam{distance},
   \param{toler}
} {
outputs all \cmd{nodes} or \cmd{elements} located a
distance of \param{distance}$\pm$\param{toler} from the
point \param{$x_0$, $y_0$, $z_0$}.  If no nodes or elements are
located in the specified range, the minimum calculated distance
is printed.  The output includes the node or element number, the
coordinates of the node or the element center, the distance to the
point, and the angles $\theta$ and $\phi$\footnote{$\phi$ is defined for
three-dimensional bodies only} for each node or element in the specified
range.  The angles are defined in
Section~\ref{sec:plocate}. 
}

\cmdoption{\cmd{LOCATE \{NODES$|$ELEMENTS\} LINE} 
   \param{$x_0$, $y_0$, $z_0$}, 
   \param{$x_1$, $y_1$, $z_1$}, 
   \optparam{distance},
   \param{toler}, \\
   \optparam{\cmd{BOUNDED$|$UNBOUNDED}} \default{\cmd{UNBOUNDED}}
} {
outputs all \cmd{nodes} or \cmd{elements} located a distance of
\param{distance}$\pm$\param{toler} from the line defined by the two
points \param{$x_0$, $y_0$, $z_0$}, and \param{$x_1$, $y_1$, $z_1$}. If
\cmd{bounded} is specified, the node or element center must lie between
the two end points.  If no nodes or element centers are located in the
specified range, the minimum calculated distance is printed.  The output
includes the node or element number, the coordinates of the node or the
element center, and the normal and parametric distances from the node or
element center to the line for each node or element in the specified
range.  The distances are defined in Section~\ref{sec:llocate}. 
}

\cmdoption{\cmd{LOCATE \{NODES$|$ELEMENTS\} PLANE} 
   \param{$x_0$, $y_0$, $z_0$},
   \param{$i$, $j$, $k$},
   \optparam{distance}, 
   \param{toler}
} {
outputs all \cmd{nodes} or \cmd{elements} located a 
distance of \param{distance}$\pm$\param{toler} from the plane that
passes through the point \param{$x_0$, $y_0$, $z_0$} and has a normal
defined by the vector \param{$i$, $j$, $k$}. This command is only
defined for three-dimensional bodies.  If no nodes or elements are
located in the specified range, the minimum calculated distance is
printed.  The output includes the node or element number, the
coordinates of the node or the element center, and the normal and
radial distances to the plane for each node or element in the specified
range.  The distances are defined in
Section~\ref{sec:slocate}.
}
}

\cmddef{\cmdverb{CAVITY} 
   \param{sset$_{1}$}, \param{sset$_{2}$}, \ldots, \param{sset$_n$},
   \optparam{\cmd{CENTER}},
   \optparam{xcen}, 
   \optparam{ycen}, 
   \optparam{zcen}
\cmdnext \cmdverb{CAVITY} 
   \param{sset$_{1}$}, \param{sset$_{2}$}, \ldots, \param{sset$_n$},
   \optparam{\cmd{CENTROID}}
} {
\cmd{CAVITY} calculates the volume of a cavity defined by the element
sidesets \param{sset$_{1}$} to \param{sset$_n$}.  If the literal string
\cmd{CENTER} is entered, the following values are taken as the
center point in determining the cavity volume. The cavity volume
algorithm, the effect of the center point, the resulting output, and the
rules for defining a valid cavity are described in
Section~\ref{sec:cavity}. 

If the literal string \cmd{CENTROID} is entered, the code will
calculate the centroid of the cavity and use that as the center point
for determining the cavity volume. Note that this should only be used
for a fully enclosed cavity.

If the \cmd{EXODUS} switch is \cmd{ON}\footnote{See command
\cmd{EXODUS}}, the cavity volume, the total change in volume, the volume
change over the last time step, and the rate of volume change are
calculated for each of the selected time steps, else only the undeformed
cavity volume is calculated. 
}

\cmddef{\cmdverb{LIMITS} \optparam{\cmd{ALLTIMES}}
} {
\cmd{limits} determines the minimum, maximum, and range of the 
X, Y, and Z coordinates for each of the selected material blocks.
If \cmd{ALLTIMES} is specified, the limits are determined for each of
the selected time steps.  Note that the \cmd{exodus} switch status does
not affect this command.
}

\cmddef{\cmdverb{OVERLAP }
      \param{flag$_m$}, \param{flag$_s$}
} {
\cmd{overlap} is used to verify contact surfaces or slidelines.  The
command determines whether any of the nodes on the surface defined by
the sideset \param{flag$_s$} penetrate the element faces on the surface
defined by the sideset \param{flag$_m$}.  If a node on the
\param{flag$_s$} surface penetrates the \param{flag$_m$} surface, the
node and element numbers are output along with the connectivity array
for the penetrated element. The algorithm and assumptions used in this
calculation are described in Section~\ref{sec:overlap}.  \cmd{overlap}
checks only the undeformed geometry regardless of the setting of the
\cmd{EXODUS} switch. 
}

\cmddef{\cmdverb{TIMESTEP}
      \param{wave\_speed} \default{1.0},
      \optparam{damping\_fraction} \default{0.06}
} {
\cmd{TIMESTEP} estimates the critical time step which will be used in an
explicit transient dynamics finite element program. If all of the
materials have the same dilitational wavespeed, it is entered as
\param{wave\_speed}; else, command \cmd{WAVESPEED} is used to enter the
different wavespeeds for each material.  The optional parameter
\param{damping\_fraction} is the fraction of critical damping in the
highest element. 

The output from this command lists the dilitational wavespeed, the
minimum stable time step, the element number, and the number of
timesteps per millisecond of analysis time for each material block.
Section~\ref{sec:timestep} explains each of these values and the method
used to estimate the timestep. 
} 

\cmddef{\cmdverb{GAP} 
      \param{flag$_m$}, 
      \param{flag$_s$}, 
      \param{d$_{\max}$}, 
      \optparam{\cmd{DISTANCE$|$NORMAL}}
} {
\cmd{gap} calculates the distance between nodes on the surfaces defined
by the sideset flags \param{flag$_m$} and \param{flag$_s$}.  For each
node on the sideset \param{flag$_m$}, the program searches for a
matching node on the sideset \param{flag$_s$}.  A matching node is the
closest node measured according to the method specified by
\param{\cmd{DISTANCE$|$NORMAL}}.  If \cmd{DISTANCE} is specified, the
distance is simply the actual distance between the two nodes; if
\cmd{normal} is specified, the distance is the tangential distance from
the node on the \param{flag$_s$} surface to a line passing through the
node on the \param{flag$_m$} surface and normal to the surface.  The
normal vector is the average of the face normals of the elements
connected to the node.  If the distance to the closest \param{flag$_s$}
node is greater than \param{d$_{\max}$}, then the \param{flag$_m$} node
has no match and is not shown in the output. 

For each  \param{flag$_m$} node with a match, the output shows the
matching  \param{flag$_s$} node, the direction cosines of the surface
normal, and the normal and tangential distance from the
\param{flag$_m$} node to the  \param{flag$_s$} node.

If the \cmd{EXODUS} switch is \cmd{ON}, the above information is output
for each time step.  The node matching process and the determination of
the surface normal are only performed on the undeformed geometry;
therefore, the same nodes are monitored during deformation and the
distances output for subsequent time steps are measured relative to the
undeformed normal. 

This command is normally used to calculate the change in distance
between two surfaces, for example, the closure of a drift in a
geomechanics problem.  Note that unless \param{d$_{\max}$} is specified,
a match will be found for every node on the \param{flag$_m$} surface.
The output from this command can be very large; it is recommended that
\cmd{echo} be turned \cmd{off} prior to executing a \cmd{GAP} command.
The algorithm and assumptions used for this command are described in
Section~\ref{sec:gap}.
}

\section{Parameter-Setting Commands}\label{sec:param}

\cmddef{\cmdverb{AXISYMMETRIC} 
} {
\cmd{AXISYMMETRIC} informs \numbers\ that the two-dimensional body
described in the \EXO\ database is axisymmetric.  All of the relevant
operational commands will calculate values based on an axisymmetric
geometry.  This is the default for two-dimensional bodies.
}

\cmddef{\cmdverb{PLANAR} or \cmdverb{PLANE}
} {
\cmd{PLANAR} informs \numbers\ that the two-dimensional body described
in the \EXO\ database is planar or plane strain. All of the relevant
operational commands will calculate values based on a planar geometry. 
}

\cmddef{\cmdverb{DENSITY }
} {
\cmd{DENSITY} prompts the user for the mass density of each of the
element blocks.  The density is used in the mass properties calculation.
If densities are not entered prior to entering a \cmd{MASS} or
\cmd{PROPERTIES} command, the \cmd{density} command will be executed
automatically.  An optional 16-character label can be entered following
the density.  The label will be used to identify the material blocks in
the mass properties output. The label cannot contain any blanks. 
}
\filbreak
\cmddef{\cmdverb{WAVESPEED} 
} { 
\cmd{WAVESPEED} prompts the user for the dilitational wavespeed of each
of the element blocks.  The wavespeed is used in the critical time step
estimation calculation.  If wavespeeds are not entered prior to entering
a \cmd{TIMESTEP} command, the \cmd{WAVESPEED} command will be executed
automatically.  An optional 16-character label can be entered following
the dilitational wavespeed. The label will be used to identify the
material blocks in the time step estimation output. The label cannot
contain any blanks. 
} 
\filbreak
\cmddef{\cmdverb{SORT}
   \param{sort\_field}
   \optparam{sort\_order}
} {
\cmd{SORT} is used with the \cmd{LOCATE} command to specify which
quantity in the locate output is sorted (\param{sort\_field}) and in
which order (\param{sort\_order}).  The valid entries for
\param{sort\_field} are shown in the following table.

\begingroup\small
\tabcolsep=3pt
\begin{center}
\begin{tabular}{|l|c|  *{8}{l}|  }\hline
\rm Option  &2D/3D &\multicolumn{8}{|c|}{\rm Valid \param{sort\_fields}}\\
\hline\hline
POINT  & 2D &  X  &  Y  &     &   & DISTANCE &            & THETA &     \\
POINT  & 3D &  X  &  Y  &  Z  &   & DISTANCE &            & THETA & PHI \\
LINE   & 2D &  X  &  Y  &     & T & DISTANCE & PARAMETRIC &       &     \\
LINE   & 3D &  X  &  Y  &  Z  & T & DISTANCE & PARAMETRIC &       &     \\
PLANE  & 3D &  X  &  Y  &  Z  &   & DISTANCE &            & RADIUS&     \\
\hline
\end{tabular}
\end{center}
\endgroup

The \param{sort\_order} can be \cmd{UP}, \cmd{ASCENDING}, or
\cmd{INCREASING} for a sort in increasing order; or \cmd{DOWN},
\cmd{DESCENDING}, or \cmd{DECREASING} for a sort in decreasing order.
\cmd{INCREASING} is the default.  The fields are defined in
Section~\ref{sortfields}
}
\filbreak
\cmddef{\cmdverb{SELECT}
   \param{option} 
} {
\cmd{SELECT} selects the materials or material blocks for the
operational commands. 

\cmdoption{\cmd{SELECT BLOCKS} 
   \optparam{\cmd{ALL},}
   \param{block\_id$_{1}$}, \param{block\_id$_{2}$}, \ldots\
      \\ \default{all element blocks}
} {
selects the element blocks. The \param{block\_id} is the element block
identifier displayed by the \cmd{LIST BLOCKS} command. The relevant
operational commands will only calculate values for the selected element
blocks.
} 

\cmdoption{\cmd{SELECT MATERIALS} 
   \optparam{\cmd{ALL},}
   \param{material\_id$_{1}$}, \param{material\_id$_{2}$}, \ldots\
      \\ \default{all materials}
} {
selects the element blocks with the material number corresponding to
\param{material\_id}.  The relevant operational commands will only
calculate values for the selected materials.
}
}
\filbreak
\cmddef{\cmdverb{EXODUS} 
      \optparam{\cmd{ON$|$OFF}} \\
      \default{\cmd{ON} if timesteps present, else \cmd{OFF}}
} {
\cmd{EXODUS} sets the \cmd{EXODUS} switch to \cmd{ON} which indicates
that the operational commands should calculate values for each of the
selected time steps, or \cmd{OFF} which indicates that the operational
commands should only calculate values for the basic undeformed geometry. 

This command is used with the time selection commands defined below.
There is a subtle difference between calculations performed with the
\cmd{EXODUS} switch set to \cmd{off} and the calculations performed at
the first time step since the first time step may have nonzero
displacements that will cause the calculations to be performed on a
deformed geometry.
}

\cmddef{\cmdverb{TMIN}
   \param{tmin} \default{minimum database time}
} {
\cmd{TMIN} sets the minimum selected time \param{tmin} to the specified
parameter value. 
}
\filbreak
\cmddef{\cmdverb{TMAX}
   \param{tmax} \default{maximum database time}
} {
\cmd{TMAX} sets the maximum selected time \param{tmax} to the specified
parameter value. 
}
\filbreak
\cmddef{\cmdverb{DELTIME}
   \param{$\Delta t$} \default{0.0}
} {
\cmd{DELTIME} sets the selected time interval \param{$\Delta t$} to the
specified parameter value.
}
\filbreak
\cmddef{\cmdverb{TIMES}
   \param{tmin} \cmd{TO} \param{tmax} \cmd{BY} \param{$\Delta t$}
} {
\cmd{TIMES} sets \param{tmin}, \param{tmax}, and 
\param{$\Delta t$} with a single command.
}
\filbreak
\section{Database Display Commands}
\label{cmd:display}

\cmddef{\cmdverb{LIST}
   \param{option} 
} {
\cmd{LIST} displays the database information specified by \param{option}
on the user's terminal. The ``selected'' items are specified with the
\cmd{SELECT} command.

\cmdoption{\cmd{LIST \{VARS$|$VARIABLES\}}
} {
displays a summary of the database. The summary includes the database
title; the number of nodes, elements, and element blocks; the number of
node sets and side sets; and the number of each type of
variable.
}

\cmdoption{\cmd{LIST \{BLOCKS$|$MATERIALS\}}
} {
displays a summary of the element blocks. The summary includes
the block identifier, the number of elements in the block, the element
number of the first and last element in the block, and the block status,
either selected or not selected.
}

\cmdoption{\cmd{LIST \{NSETS$|$NODESETS\}}
} {
displays a summary of the node sets. The summary
includes the set identifier and the number of nodes in the set.
}

\cmdoption{\cmd{LIST \{SSETS$|$SIDESETS\}}
} {
displays a summary of the side sets. The summary
includes the set identifier, the number of elements in the set, and the
number of nodes in the set.
}

\cmdoption{\cmd{LIST STEPS}
} {
displays the number of time steps and the minimum and maximum time step
times.
}

\cmdoption{\cmd{LIST TIMES}
} {
displays the step numbers and times for all time steps on the database.
}
}

\filbreak
\cmddef{\cmdverb{HELP}
   \param{command} \default{no parameter}
} {
\cmd{HELP} displays information about the program command given as the
parameter. If no parameter is given, all the command verbs are
displayed. \cmd{HELP} is system-dependent and may not be available on
all systems.
}
\filbreak
\section{Miscellaneous Commands}\label{sec:misc}

\cmddef{\cmdverb{ECHO}
      \optparam{\cmd{ON$|$OFF}} \default{\cmd{ON}}
} {
\cmd{ECHO} controls the output of results to the terminal.  If \cmd{ON},
the results are output to the screen. If \cmd{OFF}, \cmd{PRINT} is
automatically set to \cmd{ON} and results are output to the output file
only.  Error messages and information from a \cmd{LIST} command are
always output to the terminal. 
}

\filbreak
\cmddef{\cmdverb{PRINT}
      \optparam{\cmd{ON$|$OFF}} \default{\cmd{ON}}
} {
\cmd{PRINT} controls the output of results to the output file.  If
\cmd{ON}, the results are printed to the output file. If \cmd{OFF},
\cmd{ECHO} is automatically set to \cmd{ON} and results are output to
the terminal only.
}

\filbreak
\cmddef{\cmdverb{COMMENT }   
      \optparam{\cmd{PAGE},}
      \param{ncom}\default{1}
} {
\cmd{COMMENT} prompts the user for \param{ncom} comment lines which
are written to the output file.  If the optional parameter \cmd{PAGE} is
present, a page eject will be written to the output file prior to
writing the comment line(s). 
}

\filbreak
\cmddef{\cmdverb{EXIT    } 
} {
\cmd{EXIT} exits the program and closes all files.
}

