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

The user can issue a command whenever an equation is expected.
\input{../include/cominput}

The commands are summarized in Appendix~\ref{appx:command}.

\section{Database Editing Commands} \label{cmd:dbedit}

\cmddef{\cmdverb{TITLE}
} {
\cmd{TITLE} sets the title to be written to the output database. The
title is input on the next line. If no \cmd{TITLE} command is issued,
the input database title is written to the output database.
}

\newpage
\section{Variable Selection Commands} \label{cmd:varsel}

\cmddef{\cmdverb{SAVE}
   \param{variable$_{1}$}, \param{variable$_{2}$}, \ldots\
   or \param{option$_{1}$}, \param{option$_{2}$}, \ldots\
      \nodefault
} {
\cmd{SAVE} transfers variables from the input database to the output
database. An individual variable may be transferred by listing its name
as a parameter. For example,
\cenlinesbegin
\cmd{SAVE Y, Z}
\cenlinesend
has the same effect as the equations (with the exception noted below):
\cenlinesbegin
\cmd{Y = Y} \\
\cmd{Z = Z}.
\cenlinesend
Assigned variables are affected by the \cmd{BLOCKS} command; \cmd{SAVE}d
variables are not.

The following \param{option}s transfer sets of variables:
\cmdoption{\cmd{SAVE GLOBAL}
} {
transfers all input database global variables.
}
\cmdoption{\cmd{SAVE NODAL}
} {
transfers all input database nodal variables.
}
\cmdoption{\cmd{SAVE ELEMENT}
} {
transfers all input database element variables.
}
\cmdoption{\cmd{SAVE ALL}
} {
transfers all input database global, nodal, and element
variables.
}

The \cmd{SAVE} command causes the variables to be output in the same
order they would be if they were assigned by equations at that point.

If a \cmd{SAVE}d variable is also an assigned variable, the assigned
value is written to the output database, regardless of whether the
\cmd{SAVE} is done before or after the assignment.
}

\newpage %%%
\cmddef{\cmdverb{DELETE}
   \param{variable$_{1}$}, \param{variable$_{2}$}, \ldots\ \nodefault
} {
\cmd{DELETE} marks an assigned variable as a temporary variable that
will not be written to the output database. A variable must be assigned
(or \cmd{SAVE}d) before it is listed in a \cmd{DELETE} command.
}

\newpage
\section{Time Step Selection Commands} \label{cmd:timesel}

\caps{\PROGRAM} allows the user to restrict the time steps from the
input database that are written to the output database. By default, all
the time steps from the input database are written to the output
database.

\input{../include/timemode}

\input{../include/timeintro}

\input{../include/timecmd}

\input{../include/timeexample}

Another example is given in Appendix~\ref{appx:example}.

\newpage
\section{Mesh Limiting Commands} \label{cmd:meshlimit}

These commands limit the mesh that is written to the output database by
deleting nodes and elements that do not satisfy the limiting conditions.
A deleted node or element is entirely removed from the output database
and is ignored in all equation evaluations. Deleting nodes and elements
may cause the nodes and elements on the output database to be numbered
differently than those on the input database.

If both the \cmd{ZOOM} and \cmd{VISIBLE} commands are in effect, the
nodes and elements must satisfy both the limiting conditions to be
written to the output database.

By default, the entire mesh is written to the output database.

\cmddef{\cmdverb{ZOOM}
   \param{xmin}, \param{xmax}, \param{ymin}, \param{ymax},
      \param{zmin}, \param{zmax} \nodefault [\cmd{OUTSIDE}]
} {
\cmd{ZOOM} sets the limits of the mesh to be written to the output
database. Limits \param{xmin} to \param{xmax} apply to the first
coordinate, \param{ymin} to \param{ymax} to the second coordinate, and
\param{zmin} to \param{zmax} to the third coordinate (if any). A node is
deleted if it is not within the rectangle (or brick) defined by these
limits. An element is deleted if all of its nodes are deleted.

If \cmd{OUTSIDE} is specified, then all nodes and elements inside the
zoom box will be deleted unless the element contains nodes that are
outside the zoom box.
}

\cmddef{\cmdverb{VISIBLE}
   [\cmd{ADD} or \cmd{DELETE},]
   \param{block\_id$_{1}$}, \param{block\_id$_{2}$}, \ldots\
      \default{all element blocks}
} {
\cmd{VISIBLE} limits the element blocks to be written to the output
database. An element that is not in a ``visible'' element block is
deleted. A node is deleted if all the elements containing the node are
deleted.

The \param{block\_id} refers to the element block identifier (displayed
by the \cmd{LIST BLOCKS} command).

If there is no parameter, all element blocks are visible. If the first
parameter is \cmd{ADD} or \cmd{DELETE}, the element blocks listed are
added to or deleted from the current visible set. Otherwise, only the
element blocks listed in the command are visible.
}

\cmddef{\cmdverb{FILTER ELEMENT}
  \param{variable} \param{lt$|$le$|$ge$|$ne$|$gt$|$ge} \param{value} \cmd{TIME} \param{db\_time}
}{
\begin{itemize}
\item \param{variable} is the name of an element variable on the database.
\item \param{value} is the value that this variable will be compared against.
\item \param{lt$|$le$|$ge$|$ne$|$gt$|$ge} is the type of comparison corresponding to: lt -- less than, le == less than or
		equal, \ldots
\item \param{db\_time} is the time on the database where the variable
  will be read. If \param{db\_time} is less than the minimum database time, then the minimum time will be used; if greater than
  the maximum database time, then the maximum time will be used.
\end{itemize}
\cmd{FILTER ELEMENT} will delete all elements that satisfy the specified condition. 
If the \param{variable} doesn't exist on an element block, then all of the elements in that element block will be retained.
}

\cmddef{\cmdverb{REMOVE ELEMENT} 
  [\cmd{GLOBAL} or \cmd{LOCAL}] \param{id$_1$} \param{id$_2$} \ldots\ \param{id$_n$}
} {
  \cmd{REMOVE ELEMENT} will remove the elements with the specified
  global or local id(s). If neither \cmd{GLOBAL} or \cmd{LOCAL} is
  specified, it will default to local ids. A maximum of 1024 ids may
  be specified.
}

\newpage
\section{Element Block Selection Commands} \label{cmd:blocksel}

\cmddef{\cmdverb{BLOCKS}
   [\cmd{ADD} or \cmd{DELETE},]
   \param{block\_id$_{1}$}, \param{block\_id$_{2}$}, \ldots\
      \default{all element blocks}
} {
\cmd{BLOCKS} selects the element blocks which have defined values for
all following equations. An element variable can be defined for an
element block only if that block is selected. This command can only mark
element variables as undefined, it cannot mark previously undefined
variables as defined. It has no effect on nodal variables.

The \cmd{BLOCKS} command affects all following equations unless another
\cmd{BLOCKS} command is entered. The \cmd{BLOCKS} command has no effect
on the output of \cmd{SAVE}d element variables.

The \param{block\_id} refers to the element block identifier (displayed
by the \cmd{LIST BLOCKS} command).

If there is no parameter, all element blocks are selected. If the first
parameter is \cmd{ADD} or \cmd{DELETE}, the element blocks listed are
added to or deleted from the current selected set. Otherwise, only the
element blocks listed in the command are selected.
}

\cmddef{\cmdverb{MATERIAL}
   [\cmd{ADD} or \cmd{DELETE},]
   \param{block\_id$_{1}$}, \param{block\_id$_{2}$}, \ldots\
      \default{all element blocks}
} {
\cmd{MATERIAL} is exactly equivalent to a \cmd{BLOCKS} command.
}

\newpage
\section{Information and Termination Commands} \label{cmd:infoterm}

\cmddef{\cmdverb{SHOW}
   \param{command} \default{no parameter}
} {
\cmd{SHOW} displays the settings of parameters relevant to the
\param{command}. For example, \cmd{SHOW TMIN} displays the time step
selection criteria.

\cmd{SHOW} with no parameters displays any nondefault command parameters
and all input equations.
}

\cmddef{\cmdverb{LIST}
   \param{option} \default{no parameter}
} {
\cmd{LIST} displays database information, depending on the
\param{option}.

\cmdoption{\cmd{LIST VARS}
} {
displays a summary of the database. The summary SEACAS/includes the database
title; the number of nodes, elements, and element blocks; the number of
node sets and side sets; and the number of variables.
}
\cmdoption{\cmd{LIST BLOCKS} or \cmd{MATERIAL}
} {
displays a summary of the element blocks. The summary SEACAS/includes the block
identifier, the number of elements in the block, the number of nodes per
element, and the number of attributes per element.
}
\cmdoption{\cmd{LIST QA}
} {
displays the QA records and the information records.
}
\cmdoption{\cmd{LIST NAMES}
} {
displays the names of the global, nodal, and element variables.
}
\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.
}
}

\newpage %%%
\cmddef{\cmdverb{HELP}
   \param{option} \default{no parameter}
} {
\cmd{HELP} displays information about the \caps{\PROGRAM} program,
depending on the \param{option}.

\cmdoption{\cmd{HELP RULES}
} {
displays a summary of the equation syntax rules.
}
\cmdoption{\cmd{HELP COMMANDS}
} {
displays a summary of the commands.
}
\cmdoption{\cmd{HELP FUNCTIONS}
} {
lists the names of all available functions and displays some useful
equations, such as the equation for effective strain.
}
\cmdoption{\cmd{HELP}
} {
lists the available \cmd{HELP} options and displays any nondefault
command parameters and all input equations.
}
}

\cmddef{\cmdverb{LOG}
} {
\cmd{LOG} requests that the log file be saved when the program is
exited. Each correct equation and command that the user enters
(excluding informational commands such as \cmd{SHOW}) is written to the
log file.
}

\cmddef{\cmdverb{END}
} {
\cmd{END} ends the equation input and begins the equation evaluation.
The word ``\cmd{EXIT}'' may be used in place of ``\cmd{END}''.
}

\cmddef{\cmdverb{QUIT}
} {
\cmd{QUIT} ends the equation input and exits the program immediately
without writing an output database.
}
