\chapter{Command Input} \label{chap:command}

Each of the commands in \numbers\ are described below.  The commands are
divided into four categories: (1)~operational commands, (2)~parameter
setting commands, (3)~database selection and display commands, and
(4)~miscellaneous commands.  The 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 setup the
parameters required by the operational commands, such as the material
density which is required to calculate the mass properties.  The
database selection and display commands simply 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{PROPERTIES}
      \param{nquad} \default{1},
      [\param{density}]
\cmdnext \cmdverb{MASS}
      \param{nquad} \default{1},
      [\param{density}]
} {
 \cmd{properties} or \cmd{mass} calculates several mass properties of
the body.  The calculated properties are the volume and mass of each
element block; the mass moments of inertia of the body; 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.   A value called the timestep factor is also
calculated.  This value can be used to estimate the timestep which will
be used in an explicit dynamic analysis.

The parameter \param{nquad} sets the number of quadrature (numerical
integration) points which will be used to calculate 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} flag is \cmd{true}, the mass properties will be
calculated for the deformed shape of the body at each time step; if
\cmd{exodus} is \cmd{false}, values will only 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 a
specified distance from a user-defined point, line, or plane.  The
several available options are defined below.  The algorithms used are
described in Section~\ref{sec:locate}.  If \cmd{ELEMENTS} is specified,
the distance is measured to the element centroid.  In the descriptions
of the \cmd{locate} options below, the $z$ coordinates are entered only
for three-dimensional bodies.  \cmd{LOCATE} calculates distances only
for the undeformed geometry regardless of the setting of the
\cmd{EXODUS} flag.

\cmdoption{\cmd{LOCATE \{NODES$|$ELEMENTS\} POINT}
   \param{$x_0$, $y_0$, $z_0$}, \param{distance}, \param{tolerance}
} {
outputs all \cmd{nodes} or \cmd{elements} located a
distance of \param{distance}$\pm$\param{tolerance} 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 centroid, the distance to the
point, and the angles $\theta$ and $\phi$\footnote{$\phi$ is defined for
three-dimensional bodies only}.  The angles are defined in
Section~\ref{sec:locate}
}

\cmdoption{\cmd{LOCATE \{NODES$|$ELEMENTS\} LINE}
   \param{$x_0$, $y_0$, $z_0$},
   \param{$x_1$, $y_1$, $z_1$},
   \param{distance},
   \param{tolerance},
   \cmd{[BOUNDED$|$UNBOUNDED]}\default{\cmd{UNBOUNDED}}
} {
outputs all \cmd{nodes} or \cmd{elements} located a distance of
\param{distance}$\pm$\param{tolerance} from the line defined by the two
points \param{$x_0$, $y_0$, $z_0$}, and \param{$x_1$, $y_1$, $z_1$}. 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 centroid, and the
normal and parametric distances from the node or element centroid to the
line.  The distances are defined in Section~\ref{sec:locate}
}

\cmdoption{\cmd{LOCATE \{NODES$|$ELEMENTS\} PLANE}
   \param{$x_0$, $y_0$, $z_0$},
   \param{$i$, $j$, $k$},
   \param{distance},
   \param{tolerance}
} {
outputs all \cmd{nodes} or \cmd{elements} located a
distance of \param{distance}$\pm$\param{tolerance} 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 a three-dimensional body.  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 centroid, and the normal and
radial distances to the plane.  The distances are defined in
Section~\ref{sec:locate}
}
}

\cmddef{\cmdverb{CAVITY  }
   \param{sset$_{1}$}, \param{sset$_{2}$}, \ldots, \param{sset$_n$}
} {
\cmd{CAVITY} calculates the volume of a cavity defined by the element
sidesets \param{sset$_{1}$} to \param{sset$_n$}.  The cavity volume
algorithm, the resulting output, and the rules for defining a valid
cavity are described in Section~\ref{sec:cavity}.

If the \cmd{EXODUS} flag is \cmd{TRUE}\footnote{See command
\cmd{EXODUS}}, the cavity volume is calculated for each of the selected
time steps, else only the undeformed cavity volume is calculated.
}

\cmddef{\cmdverb{LIMITS} [\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} flag 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} flag.
}

\cmddef{\cmdverb{GAP}
      \param{flag$_m$}, \param{flag$_s$},
      \param{d$_{\max}$}, \param{\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 to
the node on the \param{flag$_s$} surface measured from a line passing
through the node on the \param{flag$_m$} surface and normal to the
surface.  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,
and the normal and tangential distance from the  \param{flag$_m$} node
to the  \param{flag$_s$} node where the normal is defined by the
direction cosine vector.

If the \cmd{EXODUS} flag is \cmd{TRUE}, the above information is output
for each time step.  Note that the node matching process and the
determination of the surface normal are only performed on the undeformed
geometry; therefore, 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.
This 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{EXODUS}
      \cmd{[ON$|$OFF]} \\
      \default{\cmd{ON} if timesteps present, else \cmd{OFF}}
} {
\cmd{EXODUS} sets the \cmd{EXODUS} flag to \cmd{TRUE} which indicates
that the operational commands should calculate values for each of the
selected time steps, or \cmd{FALSE} which indicates that the operational
commands should only calculate values for the basic undeformed geometry.
}

\cmddef{\cmdverb{DENSITY }
} {
\cmd{DENSITY} prompts the user for the density of each of the element
blocks.  The material density is used in the mass properties calculation
(Commands \cmd{MASS} and \cmd{PROPERTIES}).  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.
}

\cmddef{\cmdverb{SELECT}
   \param{option}
} {
\cmd{SELECT} selects the materials or material blocks for the
operational commands.

\cmdoption{\cmd{SELECT BLOCKS}
   [\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}
   [\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.
}

\cmddef{\cmdverb{TMIN}
   \param{tmin} \default{minimum database time}
} {
\cmd{TMIN} sets the minimum selected time \param{tmin} to the specified
parameter value.
}

\cmddef{\cmdverb{TMAX}
   \param{tmax} \default{maximum database time}
} {
\cmd{TMAX} sets the maximum selected time \param{tmax} to the specified
parameter value.
}

\cmddef{\cmdverb{DELTIME}
   \param{$\Delta t$} \default{0.0}
} {
\cmd{DELTIME} sets the selected time interval \param{$\Delta t$} to the
specified parameter value.
}

\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.
}

\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.
}
}

\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.
}

\section{Miscellaneous Commands}\label{sec:misc}

\cmddef{\cmdverb{ECHO}
      \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}.  Error messages and information from a
\cmd{LIST} command are always output to the terminal.
}

\cmddef{\cmdverb{PRINT}
      \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}.
}

\cmddef{\cmdverb{COMMENT }   [\cmd{PAGE,}] \param{ncom}\default{1}
} {
\cmd{COMMENT} prompts the user for a \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).
}

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