What do numerical instability (ill-condition) warnings indicate?
Answer: Numerical instability warnings indicate that digits of accuracy were lost during computation. CSI software performs computation with 16 digits of accuracy, some of which may be lost when analysis involves systems of significantly different stiffness, in which lower-order values are truncated to suit operations with higher-order values. This is normal for any computational software. Different levels of information are provided depending on the solver used:
- Standard solver provides details on the number of digits lost and the location of the joint and degree-of-freedom (DOF) associated with the computation
- Advanced solver This is the program's default solver option and indicates that a significant number of digits were lost but does not provide details on the number of digits or the location
- Multi-threaded solver provides no information on the accuracy of the computations
When using the Standard solver, the number of digits lost for each equation solved is reported as follows:
- Less than 6 lost digits is not reported because the solution is sufficiently accurate.
- Between 6 and 11 lost digits is reported for informational purposes. The results of the analysis may still be acceptable but the user should carefully check the results, especially when the number of digits lost is larger.
- Over 11 digits lost is reported and also generates an instability warning. In this case the structure is either unstable or so poorly conditioned as to produce inaccurate results, and the user should check and revise the model.
The Multi-threaded solver should only be used after the stability of the model has been determined by previous analyses. If the Advanced solver indicates instabilities, re-run with the Standard solver for more details, or consider the methods below to check the model. If the Standard solver or other checks indicate sufficient stability and accuracy, then warnings from the Advanced solver can be ignored.
All three solvers report the number of negative stiffness eigenvalues found during linear equation solving ("number of eigenvalues below the shift"). This should always be zero except when performing an eigen modal analysis with a positive shift, which is not common. If the number of negative stiffness eigenvalues is not zero, a serious problem exists. This could be due to instability, very poor conditioning, or to buckling under P-delta.
A model should always be checked for stability and ill-conditioning without P-delta effects first. If the lost digits or negative stiffness eigenvalues occur only when performing P-delta analysis, please refer to the following information: P-Delta FAQ and troubleshooting.
Certain models may exhibit negative stiffness values even for linear cases in this case Select all deck/shell objects in the model, then select Assign > Shell Elements > Auto Line Constraint and uncheck the Apply to Full Structure option. This will remove auto line constraints and possibly resolve instabilities.
Regardless of the solver used, it is always recommended to carefully review the deformed shape for the gravity load case and the first few eigen-modes of vibration to make sure they are as expected. This can help determine problematic areas. Some situations where numerical instability may occur include:
- When objects of significantly different stiffness connect at a common joint.
- When the rigid-diaphragm assumption is applied to a slab with flexible interconnecting objects.
- When multiple releases are assigned to a joint, causing joint DOF to become orphaned (without stiffness).
- There exist orphan nodes or elements that are not correctly attached to the rest of the structure, laterally un-braced members, or other mechanisms. Reviewing the deformed-shape animation under gravity cases and modal cases usually helps locate these orphan elements, which will be deflecting by large amounts and out-of-phase with rest of the structure
- The auto-merge tolerance may be too small, resulting in different connectivity than expected. The default is 0.1 inch or 1mm, and rarely needs to be changed. It can be reviewed using the command Options>Tolerances.
Note that Eigen modal analysis is recommended for finding instabilities and numerical problems and to better understand your structure, even though Ritz analysis is preferred for performing subsequent dynamic analyses (response-spectrum and modal time-history).
Recommendations for Large Models
In the case of very large models, running the standard solver can take an impractical amount of time. In this case we recommend:
- Make a copy of the model, and add unit mass to all 6 DOF at every joint. Rotational inertial is necessary to pick up torsional modes for frame elements.
- Make sure the mass source is defined as from self-weight and additional masses, includes vertical mass, and is not lumped at stories
- Run an Eigen modal analysis. Use the Advanced or Multi-threaded solver. A dozen modes is enough to detect problems
- Rigid-body modes or mechanisms will usually generate eigen-modes with very large periods (positive or negative). If you cannot see the deformed shape (such as for torsional column modes), generate a table of joint deflections and sort to find the largest values.
- Once the shape of the mechanism or rigid-body mode is determined, correct the connectivity or other contributing problems and check the model again before continuing with further analysis and design.