In one form or another, Finite Element Analysis (FEA) comes down to solving a set of equations. Take the simple two spring model shown below, where F1 and F2 are the applied loads, K1 and K2 are the stiffness of the springs, and X1 and X2 are the deflections of each end. Keep in mind that either of the applied loads can be zero, but each one is a known value. The force developed in each spring due to elongation is unknown, but it can be calculated from the direct formula F = k*x. Considering that spring 1 elongates by the amount X1 and spring 2 elongates by the amount (X2-X1), we can write the equation for the sum of the forces at each node:
F1 - K1*X1 + K2*(X2-X1) = 0 | node 1 |
F2 - K2*(X2-X1) = 0 | node 2 |
Rearranging the equations gives:
F1 = (K1 + K2)*X1 - K2*X2 | node 1 |
F2 = -K2*X1 + K2*X2 | node 2 |
These equations can be expressed in matrix form as follows:
or in shorthand notation, {F} = [K]{X}.
How the matrix of equations is solved in FEA is the task of the solver. As computer hardware and computational techniques evolve, new solvers are added to the software. Each analysis type has various solvers to choose from. In many cases, the default option is Automatic, in which case the software chooses the solver best suited for the analysis (usually based on the size of the model (the number of equations). The following discussion gives the general methodology of each type of solver.
Depending on how the elements are connected together, the stiffness matrix [K] is generally very sparse. Many of the entries are zero. Since a value of zero does not contribute to the solution, most solution techniques are programmed in some fashion or another to ignore the zero terms. One method may use a small amount of memory to store the matrix but require optimization to achieve the least amount of memory, where as another method uses more variables to store the matrix (and hence require more memory) but be faster overall.
Next, the solution to the set of equations will determine how long the analysis requires. There are direct solution methods that are guaranteed to give a solution, provided the model is set up properly (static stress model is properly constrained, steady state heat transfer model has a source of heat and way to remove the heat, and so on). Techniques such as Gauss Elimination and matrix inversion are simple examples of direct solution methods. Then there are indirect solution methods in which the solution is assumed. By substituting the assumed solution into the system of equations, a better estimate is obtained for each unknown. This process is repeated until the solution no longer changes; hence, these techniques are known as iterative solution.
Finally, the stiffness matrix is generally symmetric in FEA. In these cases, only the terms on and above the diagonal need to be stored. This reduces the memory requirements and number of operations to solve the matrix. When an effect is included which causes the matrix to be unsymmetric (such as body-to-body radiation in a heat transfer analysis, or an actuator element in a Mechanical Event Simulation), the entire matrix needs to be stored and operated upon. The solution will be longer in such cases.
Below are the general solvers available. Each one may have variations for a particular analysis type. For example, modal analysis has an iterative solver (subspace) which is a variation of the iterative solver available in linear static stress (AMG, or Algebraic MultiGrid). The type of solver used in the analysis is set from the Setup Model Setup
Parameters(or right-click the Analysis Type entry in the tree view and choose Edit Analysis Parameters).