EQUILIBRIUM

The EQUILIBRIUM statement specifies error tolerances and other parameters for static equilibrium and quasi-static equilibrium analyses.

Format

 

Arguments

 
ALIMIT=r
Specifies the maximum angular increment allowed per iteration during a static or quasi-static equilibrium analysis. The default units for ALIMIT are radians. To specify ALIMIT in degrees, add a D after the value.
Default: 0.17453 (10 D)
Range: ALIMIT > 0
ERROR=r
Specifies the relative correction convergence threshold. The iterative process carried out during the equilibrium analysis can not converge prior to all relevant relative corrections being smaller than this value.
Default: 1.0E-04
Range: ERROR > 0
IMBALANCE=r
Specifies the equation imbalance convergence threshold. The iterative process carried out during the equilibrium analysis can not converge prior to each equation imbalance being smaller than this value.
Default: 1.0E-04
Range: IMBALANCE > 0
MAXIT=i
Specifies the maximum number of iterations allowed for finding static equilibrium.
Default: 25
Range: MAXIT > 0
PATTERN=c1[:...:c10]
Allows you to specify as many as ten character strings that together establish the pattern for evaluating the Jacobian matrix during the modified Newton-Raphson iteration. For each iteration, T or TRUE indicates that Adams Solver (C++) evaluates the Jacobian and F or FALSE indicates that Adams Solver (C++) does not evaluate the Jacobian. Thus, cj determines whether or not Adams Solver (C++) evaluates the Jacobian at the jth iteration. If necessary, Adams Solver (C++) repeats the pattern of evaluations until it reaches the maximum number of iterations (MAXIT). The number of Ts or TRUEs and Fs or FALSEs together must be at least one and no more than ten.
Default: T:T:T:T:T:T:T:T:T:T, which evaluates the Jacobian at every iteration (for example, the unmodified Newton-Raphson algorithm).
STABILITY=r
Specifies the fraction of the mass and damping matrices (subsets of the
equilibrium Jacobian matrix) Adams Solver (C++) adds to the stiffness matrix (a subset of the equilibrium Jacobian matrix) during static simulations performed using static analyses. Adding a fraction of the mass and damping matrices to the stiffness matrix can stabilize the iteration process and prevent the iteration from diverging. Often the stiffness matrix is singular for a system because the system is neutrally stable (for example, the system moves in certain directions without affecting the potential energy). Adding a fraction of the mass and damping matrices to the stiffness matrix removes this singularity and makes it possible to solve for equilibrium positions. The value of STABILITY does not affect the accuracy of the solution, but it does affect the rate of convergence of the iteration process.
Default: 1.0E-05
Range: STABILITY >0
TLIMIT=r
Specifies the maximum translational increment allowed per iteration.
Default: 20
Range: TLIMIT > 0
METHOD=i
Specifies the option which determines the static solver method to be used for equilibrium solution.
1. ORIGINAL, for running only the ORIGINAL Solver
2. ADVANCED, runs, in order, the following methods until one shows progress:
a. ORIGINAL
b. ORIGINAL+Krylov
c. ORIGINAL+UMF
d. Newton+Krylov
e. Tensor-Krylov block-3
f. Tensor-Krylov block-2+
3. AGGRESSIVE, runs, in order, the following methods until one shows progress:
a. ORIGINAL
b. ORIGINAL+Krylov
c. ORIGINAL+UMF
d. Newton+Krylov
e. Tensor-Krylov block-3
f. Tensor-Krylov block-2+
g. Broyden-Armijo
h. Trust-Region
4. ALL, runs, in order, all the available methods, until one shows progress:
a. ORIGINAL
b. ORIGINAL+Krylov
c. ORIGINAL+UMF
d. Newton+Krylov
e. Tensor-Krylov block-3
f. Tensor-Krylov block-2+
g. Broyden-Armijo
h. Trust-Region
i. Hooke-Jeeves
Default: ORIGINAL
ATOL
Specifies the absolute tolerance value
Default: 1.0e-6
Range: 0.0 < ATOL < 1.0
RTOL
Specifies the relative tolerance value
For all solvers, except ORIGINAL and ORIGINAL+Krylov, the tolerance is defined as : TOL=ATOL+||xIC||*RTOL.
For ORIGINAL and ORIGINAL+Krylov solvers the tolerance is equal to ERROR.
Default: 0.0
Range: 0.0 < RTOL < 1.0
MAXITL
Specifies the maximum number of allowed inner loops in all the solvers. ORIGINAL, ORIGINAL+Krylov and ORIGINAL+UMF solver methods ignore this parameter. For Hooke-Jeeves method, allowed budget of function evaluations is set to MAXITL*N, where N is the size of the problem (number of unknowns).
Default: 40
Range: > 0
ETAMAX
Specifies the maximum threshold for the error tolerance of the linear Krylov solver (for Newton+Krylov and Tensor-Krylov methods) that solves the linear systems required by Krylov algorithm. Maximum error tolerance for residual in inner iteration. The inner iteration terminates when the relative linear residual is smaller than eta*| F(x_c) |. eta is determined by the modified Eisenstat-Walker formula if etamax > 0. If etamax < 0, then eta = |etamax| for the entire iteration.
Default: 0.9
Range: 0.0 < ETAMAX < 1.0
ETA
Specifies the initial residual tolerance for the linear Krylov Solver for Tensor_Krylov method. The Tensor-Krylov ETA parameter is maintained adaptively by the Krylov algorithm but ETA is the indicated starting value, while ETAMAX is the maximum threshold for ETA.
Default: 1.0e-4
Range: 0.0 < ETA < 1.0
Specifies the dimensionless radius of the trust-region for Trust-region method. The smaller the value, the more the refinement of Trust-region solution (hence more work).
Range: 0.0 < ETA < 0.25

Extended Definition

The EQUILIBRIUM statement specifies error tolerances and other parameters for static and quasi-static equilibrium analyses. This statement is used when you want to change one or more of the tolerances or other parameters from the default values.
Use the SIMULATE command to request one of the following:
Single static equilibrium analysis.
Series of static equilibrium analyses over time, for example, a quasi-static equilibrium analysis.
Static and quasi-static equilibrium analyses solve for displacement and static forces, but not for velocity, acceleration, or inertia forces which are all assumed to be zero. To perform a static equilibrium analysis, Adams Solver (C++) finds the configuration and static forces for which all the static forces in the system balance after being evaluated at the current simulation time. This process requires the solution of a set of nonlinear algebraic equations. Adams Solver (C++) uses the modified Newton-Raphson iteration to solve these equations.
If neither an EQUILIBRIUM command nor an EQUILIBRIUM statement is issued in an Adams Solver session, the default values for ALIMIT, ERROR, IMBALANCE, MAXIT, PATTERN, STABILITY, and TLIMITare used when performing a static equilibrium or quasi-static equilibrium analysis.
Currently, there are 8 different types of solvers in addition to the Static Solver that was originally in the code (ORIGINAL solver). ORIGINAL Solver used the Sparse linear solver:
1. ORIGINAL+Krylov has the same logic flow as the ORIGINAL but uses linear GMRES algorithm [1.].
2. ORIGINAL + UMF has the same logic flow as the ORIGINAL but uses linear UMF algorithm [6.].
3. Newton+Krylov nonlinear solver uses a Newton + GMRES algorithm [1.].
4. Tensor-Krylov block 3 solver uses Tensor-Krylov method [2.], flavor block 3.
5. Tensor-Krylov block 2+ solver uses Tensor-Krylov method [2.], flavor block 2+.
6. Broyden-Armijo solver uses Broyden method [1.] with an Armijo line-search [1.] to account for global strategies.
7. Trust-Region method Solver uses the Trust Region optimization algorithm [3.].
8. Hooke-Jeeves solver uses the Hooke-Jeeves optimization method [4.].
 
 
Tip:  
Using the PATTERN argument to request less frequent evaluations of the Jacobian matrix may decrease the computation time. However, infrequent evaluations could also be more expensive since the modified Newton-Raphson algorithm might require more iterations due to the slower convergence rates.
Use the ALIMIT and TLIMIT arguments to limit incrementing displacement variables during an iteration for static equilibrium. Excessive incrementing could prevent Adams Solver (C++) from finding a static equilibrium position.
Use the IMBALANCE argument if the physical units of the problem are such that the default imbalance of 1.0E0-4 is excessively large or excessively small. Changing from an inappropriate to an appropriate value for IMBALANCE saves CPU time.
You can use the MSC_USE_ALTERNATE_SOLVERS environment variable to specify a particular method to be used for equilibrium solution. The variable works as an integer bit-mask with 9 bits, corresponding to the eight solvers above in the order: ORIGINAL (bit0), ORIGINAL+Krylov (bit1), ORIGINAL+UMF (bit2), Newton+Krylov (bit3), Tensor-Krylov block-3 (bit4), Tensor-Krylov block-2+ (bit5), Broyden-Armijo (bit6), Trust-Region (bit7), Hooke-Jeeves (bit8). The lowest order bit, if set to 1, means ORIGINAL solver will be used. The highest order bit, if set to 1, means Continuation method will be used.
For example if the user wants to enforce the exclusive use of only ORIGINAL+Krylov, ORIGINAL+UMF, Broyden-Armijo, and Trust-Region solvers, then the bits that must be set are bit1, bit2, bit5, and bit7. Hence, the binary value of MSC_USE_ALTERNATE_SOLVERS is 10100110, that is, MSC_USE_ALTERNATE_SOLVERS=2^7+2^5+2^2+2^1=128+32+4+2=166.
 
Caution:  
Setting STABILITY=0 results in a singularity if the system is neutrally stable. If the system is neutrally stable, STABILITY must be greater than zero in order for Adams Solver (C++) to compute static equilibrium.
Static equilibrium, or quasi-static equilibrium analyses often have multiple equilibrium solutions. Adams Solver (C++) makes no attempt to converge to a stable position. For example, Adams Solver (C++) may converge to an inverted pendulum position rather than the more common hanging pendulum. Items such as the initial position of parts and the settings for ALIMIT, TLIMIT, and STABILITY can all influence the solution to which Adams Solver (C++) converges.
If MSC_USE_ALTERNATE_SOLVERS is set to a non-zero value, then its value overrides the METHOD setting.

Examples

 
EQUILIBRIUM/ STABILITY=0.01, TLIMIT=10
, IMBALANCE=1.0E-05
This EQUILIBRIUM statement instructs Adams Solver (C++) to use these values instead of the defaults when performing a static or quasi-static equilibrium analysis. It adds 0.01 times the sum of the mass and damping matrices to the stiffness matrix during an equilibrium iteration. It limits the translation in any one iteration to 10 length units. The force imbalance in the system must be less than 1.0E-05 force units for Adams Solver (C++) to consider the system to be in equilibrium.

Bibliography:

1. Iterative Methods for Linear and Nonlinear Equations C.T. Kelley, SIAM 1995
2. Tensor-Krylov Methods for Solving Large-Scale Systems of Nonlinear Equations Brett W. Bader, Ph.D. Thesis, 2003
3. Numerical Optimization Jorge Nocedal, Stephen J. Wright, Springer 1999
4. Iterative Methods for Optimization C.T. Kelley, SIAM 1999
5. Introduction to Numerical Continuation Method E.L. Allgower and K. Georg, 1990
6. MD Nastran Quick Reference Guide.
See other Analysis parameters available.