Before going into the details of how one tells MOSES to perform a stress analysis, it is beneficial to consider the problem in general. The basic solver in MOSES is capable of performing a reduction of a portion of the model, solving a residual model, and expanding the results of a reduction. Since MOSES can consider bodies with different orientation, the question of what coordinate system is used becomes important. When performing a reduction, the body system is used, and when solving a residual model, the global system is used. Thus, one cannot perform a reduction on more than one body at a time.

There are actually two different types of solutions: when the residual model is null and when it is not. In the first case, the minimizer can do a better job of
minimizing the computer cost and thus, is the preferred method. For more than one body, a second method must be used. Also, it is in solving the residual model that
any nonlinearities are taken into account. Therefore, if there are nonlinearities or if more than one body is analyzed, then a nontrivial reduction/expansion must be
performed. All load cases must have been defined prior to any structural solution, i.e. a **LCASE** command cannot be issued after a solution command.

To automate this procedure, one can use one of the two commands:

SSOLVE, -OPTIONS

where the available options are:

-NONLINEAR-MAXITER, ITER_MAX-TOLERANCE, TOL

or

BODSOLVE, :RSEL, -OPTIONS

where the available options are:

-BODIES, :BODY_SEL-MAXITER, ITER_MAX-TOLERANCE, TOL

The **SSOLVE** command can be used to solve a problem involving a single body. If no option is specified, then any nonlinear constraints will be linearized and the
solution will be as computationally efficient as possible. If, however, one specifies **-NONLINEAR** as an option, then the system will be reduced to
the nodes which are connected to nonlinear elements, and the nonlinearities will be resolved in solving the residual model.

If one wishes to consider more than one body, then the **BODSOLVE** command *must* be used. Here, :RSEL is a selector for the restraints which will be applied. The option **-BODIES** instructs MOSES to consider only bodies which match :BODY_SEL during the solution. The options **-MAXITER** and **-TOLERANCE** are applicable to a nonlinear solution. Convergence of a nonlinear solution depends upon the type of nonlinearities involved. For gap
nonlinearites, there is no tolerance to be checked - either the gap conditions are satisfied or they are not. For other types of nonlinearity such a piles, solution
is assumed when the norm of the difference in deflection between two iterations is below TOL. The nonlinear structural solution will iterate ITER_MAX times, or until
the deflection tolerance TOL is met. The default for TOL is .001 and for ITER_MAX is 15.

In general, a model will contain more than one body. To afford one the option of considering only a single body or selected parts, MOSES has the capability of
limiting the model to be analyzed using *SSOLVE*. These next three commands are ignored during a BODSOLVE. To select bodies for inclusion in the analysis, one can use
the command:

S_BODY, BODY_NAME(1), BODY_NAME(n), .....

Here, BODY_NAME(i) are selectors which define the bodies which will be considered in the analysis.

If one wishes to select only some parts for analysis, he may issue:

S_PART, PART_NAME(1), PART_TYPE(1), ... PART_NAME(n), PTYPE(n)

Here, PART_NAME(i) is a selector for parts, and PART_TYPE(i) is a selector for part types. For a part to be selected, both name and type must match one PART_NAME(i)
and the corresponding PART_TYPE(i). When an **S_PART** command is used, the elements which connect to nodes not in the model will be "fixed" at that end. After a solution
command, the results of any selection of the model will be lost. Thus, if one wishes to issue multiple solution commands, he needs to reselect the model each time.

In most cases, one need not worry about selecting restraints for the system because MOSES will automatically do this for you. All elements specified by **REST** commands,
all "active" connectors, and a set of additional springs will be included in the analysis. These additional springs are supposed to represent the water and are
computed as follows: The waterplane area for the body in the initial configuration is computed. The spring value is then taken as the product of the waterplane area
times the specific weight of water, divided by the number of nodes at which the springs will be connected. Springs in all three translational degrees of freedom are
then connected between ground and a set of nodes. This set of nodes is all nodes which are either connected to elements that are below the water, or are associated
with a panel point vertex. Notice that these springs are normally soft so that the inclusion in all degrees of freedom should not harm the validity of the solution.

If one wished to select only a portion of these restraints, then he may use the command:

S_REST,~RESCLS(1), ...,~RESCLS(n)

The values of ~RESCLS are class names for the connectors and restraints. Again, if this command is issued, only the connectors which are selected by the selectors
~RESCLS(i) will be applied, and the burden of properly restraining the body falls upon the user. *A final word of caution is in order*. For some connectors and some
processes, the results for a linear solution will be meaningless, and MOSES has no method of warning you about the situation. This is particularly true for a
structural analysis of a launch. The restraints generated by **&LWAY** are quite nonlinear. If you do not want to generate a nonlinear solution of a launch, it is best to
generate some alternative restraints and to use the **-LAUNCH** option on the **LCASE** command.

In addition to the automated procedure described above, MOSES will allow a user to create and combine his own "super elements" by using the commands:

REDUCE, NAME, *NODE(1), *NODE(2), ......, *NODE(n)EXPAND, NAME

The **REDUCE** command will compute a stiffness matrix and set of load vectors reduced to the nodes which match the selectors NODE(i) and store them for later use as a
super element with name of NAME. To include this super element in a later model, one should specify NAME for the PART_NAME and SUPER for the PART_TYPE on a **S_PART**
command. After super elements have been created, the residual model can be resolved by using the **SSOLVE** command. The **EXPAND** command is used to expand the deflections
and compute the element loads for any super elements combined during the **SSOLVE**.