It’s been a long time since the last time I wrote on the blog, but FEA is an area where there are a lot of things to explain and I will continue to explain the contents which interest most of FEA engineers.
Thanks to Fisible for proposing today’s subject ;-) I am waiting for your feedback in the comments…
So, let’s begin the topic by some elementary notions… what is an FEA solver ?
Well, basically, every FEA software is composed of 3 parts the Pre, the Post and the solver. As the pre and the post can be found through the user interface, we understand generally easily what it represents, but the solver remains a bit mysterious…hidden behind the interface to solve all the problems ;-)
The job of the PRE (process) is to create the model, the preparation of the geometry, of the mesh, the definition of the properties, the materials, the loads and the boundary conditions.
Then, a text file which includes all these data under a specific standard format (generally Nastran) is generated and send to the solver.
The job of the solver is to take these input data, to process them using specific algorithms (I will detail that a bit later) and to give an output that correspond to the result of the analysis.
These data are then sent back to the POST (process) which will “open the package” and display the data in a form that will be understandable for the user (contours, graphs, tables,…).
So in fact the solver is kind of the “Brain” of the software. It contains all the algorithms that will be able to decompose and process the input data to get the results needed.
Ok this is nice to explain all that….but how does it work ?
Here finally comes an interesting question ;-)
Let me explain how it works in midas NFX !
A system of equation solver is used not only for linear static structural analysis, but also for all other types of analyses such as eigenvalue, buckling, dynamic and nonlinear analyses.
Generally, two types of solvers exist: a direct solver, which is based on the Gauss elimination or LU decomposition; and an iterative solver in which errors are minimized and solutions are converged through iterative calculations.
A direct solver is widely used in structural analysis because finding solutions is stable without being affected by the numerical characteristics of the matrix. But it rapidly tends to demand a significant memory space and a large amount of calculations for a large problem in which case an iterative solver requiring relatively less memory is more desirable.
For structural analysis, however, it must be cautioned that an iterative solver may not provide the desired solutions due to the numerical characteristics of the matrix, or the amount of iterative calculations may become significant in arriving at converged solutions. midas NFX provides a function that automatically selects between the direct solver and iterative solver depending on the scale of the problem required to be analyzed.
A direct solver obtains the solutions to a system of equations in two steps. The first step involves matrix decomposition, and the second step pertains to the forward-backward substitution (FBS) process. The LU decomposition method, which is applied to a general asymmetrical matrix, can be applied to decompose a matrix in the following form in the case of symmetrical stiffness matrix, K , generated in the process of finite element analysis.
The important aspect of using a direct solver is to properly use the sparsity of a matrix. Generally, the stiffness matrix, K , generated in the process of finite element analysis is a sparse matrix containing numerous 0 terms, and the amount of calculations and required memory space significantly change depending on the method of utilizing the sparsity. midas NFX supports a dense solver for solving a general dense matrix, which does not utilize the sparsity of the matrix. In addition, midas NFX supports a multi-frontal solver as the basic direct solver, which can remarkably reduce the amount of calculations and memory space while appropriately utilizing the sparsity of the matrix.
The multi-frontal solver orders the degrees of freedom to minimize the amount of calculations and memory space utilizing the sparsity of the matrix. The matrix is then divided into a number of frontal matrices based on the ordering data, which are subsequently decomposed. The algorithm of recursive bisection is used to implement the ordering of the degrees of freedom. The forward substitution takes place in the same order as the matrix decomposition while the backward substitution is calculated in the reverse order.
An iterative solver uses a method, which reduces errors in approximate solutions obtained through an iterative process leading to convergence. It is crucial to rapidly reduce the convergence errors in a small number of iterations. Generally, the number of iterative calculations depends on the preconditioning technique. midas NFX uses the SA (smoothed aggregation) AMG (algebraic multi-grid) method, which is known as a stable preconditioning technique, irrespective of element shapes.The AMG method uses multi-grids so the number of iterations is not greatly influenced by the number of degrees of freedom. It also exhibits stable convergence when using elements consisted of displacement and rotational degrees of freedom at each node such as shell elements. The iterative solver using the AMG method automatically composes multi-grids, which are created by the sets of neighboring nodes and the degrees of freedom representing each set of nodes.
As explained earlier, the performance of a direct solver or an iterative solver changes with the scale of the problem to be analyzed for which midas NFX provides a function making an automatic selection between the two. When the function of automatic selection of an equation solver is opted, an appropriate solver is used on the basis of the problem size. The direct solver using the dense matrix is selected for a small scale problem. The multi-frontal solver is selected for a mid-scale problem. And the AMG iterative solver is selected for a large scale problem. The criteria for automatic selection are determined by considering the following aspects:
► If the empirical condition is known: determined on the basis of the nodes or the number of elements specified by the user
► If the empirical condition is unknown: determined by the program based on the number of degrees of freedom of the model and the system memory size
There is still a lot more to explain but it will be for another article ;-)
I hope the FEA solver is not anymore a mystery for you !
Let me know your comments about this article by leaving a message in the comments :)