Lately, I got several emails with questions about nonlinear analysis convergence. There are a lot of reasons why your analysis could not converge. One of them is a wrong loads/increment strategy which I call “steering”. Take a look at what are the possible options and what are the positive/negative aspects of each approach.
Steering have many names
Let’s start with the basics. I’m used to the term “steering” but I also saw people using “solution strategy” or “analysis approach” instead. When something has several names in use, it is usually a good idea to define the thing to avoid confusion!
As you know in nonlinear analysis solver divides the load into small “pieces” called increments. Solver then applies the load increment after increment (sometimes in a way you described, sometimes it automatically adjust increment size along the way).
Steering consist of 2 parts:
- Load “type” (as active forces or deformations)
- Increment strategy (how solver chooses size of the next increment)
Load “type” is relatively easy to explain. You can either apply active forces to the model or enforced deformations. This is a separate topic I will discuss next week, but in general, you will have one or the other.
This means, that each increment will either increase load (for models loaded with active forces), or displacement (for enforced deformations). Both approaches have positive and negative sides. In general, those can be summarized as follows:
Loading a model with displacements usually helps with convergence. Sometimes it can also solve problems with rigid body motion. Usually this approach is considered to be “better”
Loading with active forces allows to better describe a lot of load patterns. It is true that convergence will be a bigger problem here. However you can’t model certain problems with enforced deformations within reasonable time. If you don’t believe me try modeling a 1×1 square plate loaded with uniform pressure of 1 on entire area with equivalent enforced deformations! It is doable if you know the outcome… but it really is not worth it!
With incremental strategies I will divide them only into 2 groups so we avoid technical details:
“Normal” increments: This is an approach where solver will increase load or displacement (depending on what type of load you have in the model). You can do it in a number of ways. For instance you can specify the increment value (and it stays constant), or there could be an algorithm that chooses the best increment size each analysis step. Whatever is the case the thing is: Either displacements or loads are increased
Arc-lenght methods: Again there are plenty of those. Modified Riks method is the most popular one (with Crisfield method close behind). Usually they work in a similar way, to the point where some solvers simply call it “arc-length” without specifying which one is it. The trick here is that neither load nor displacement is increased (regardless of load type) but a “fictional” parameter. There will be more about it below.
So where is the convergence in that?
I’m pretty certain you have seen animations of FEA models that were loaded beyond capacity. Those tend to look nice for sure:
Such outcomes aren’t obtainable with all the possible approaches. To discuss this further, let’s solve a simple problem of shell buckling.
Such analysis leads to a stability path I show you below. If you don’t know what it is subscribe here to get a free introductory course.
Now let’s analyze outcomes that are obtainable with each approach. To do that I actually calculated a shell using active load (case A), enforced displacement (case B) and arc length method (case C). All the stability paths I obtained are shown below:
- Case A – Active Force: What I asked solver to do is to gradually increase load and based on that search for the deformations that will lead to equilibrium. You can easily see above, that when the load reaches around 31kN… it cannot be increased. This is the shell capacity. This means that solver tried and tried to increase the load, but couldn’t find displacements that would make the thing stable. After a struggle, it gave up and threw up a “no convergence” message. This happened in point A on the chart.
- Case B – Enforced Displacement: This is a bit wiser approach. Solver tried to increase enforced deformations. Since after failure deformations still increase, theoretically this should work. It took the solver substantial amount of time to converge at point A (to move to point B on the chart). This is because solver was “flying blind”. It didn’t see that at certain point deformations decreases… so it had to “randomly” find the point B. Finding it is not always possible (several times I got “no convergence” at point A before I found an incremental approach that made convergence possible). Still, after all the trouble I was able to find more or less a correct approach.
- Case C – Arc Length: This is something just different. What solver does is it increases the “arc length” parameter and tries to find both forces and displacements that will converge. This allows the solution to trace through entire stability path, including the region where both forces and displacements decrease. A very nifty trick if you would ask me 🙂
It can be even worse!
The classical nightmare for the nonlinear analysis is the deformation of a shallow arch plate loaded with a concentrated force. You can see how the deformations look like along the stability path:
I simply love this case – it never stops to amaze me how complicated simple thins are! The stability plot for this example is given below:
This is what would happen in our 3 scenarios:
- Force steering (when using active force in increments): Analysis would throw a “no convergence” message in point A. After that, it would desperately try to follow red line to point C which is more or less impossible.
- Deformation steering (each increment increases deformation): Analysis would safely pass point A. Then in point B it would throw out a “no convergence” message. If we would be patient enough with analysis setup (and computing time!) it is theoretically possible to go from point B to point D along the red line… I never tried to do it in this case.
- Arc length method: This is how I was able to get this stability path in the first place. I use force as input load in arc length method most of the time (simply because usually models I calculate are loaded this way). It is also possible to use enforced deformation, even through some solvers (line NX Nastran SOL 106 instead of SOL 601) do not allow that.
What to do if you have convergence issues
Based on what I have shown you today I would draw such conclusions:
Convergence problems with steering try-to list:
- If you use active forces as loads then convergence problems at a certain stage of analysis may (but don’t have to!) mean that you have reached models capacity. Try to estimate if this is possible. If so, change load to enforce deformations (if it is possible to find a correct pattern of deformations), or use arc-length methods.
- If you use enforced deformations and have convergence problems try to use arc-length method. This is a more rare occurrence, but still happens from time to time.
- Convergence problems in arc length happen as well. Treat them “normally”. If you have them decrease the increment (note that solvers have settings showing if they can increase the arc length or not). You can also split the analysis into several “steps” to have big increments when nothing happens and small increments when it is needed.
- Arc length method have a funny “bug”. It can sometimes happen that in bifurcation points (“sharp” turns on stability paths as point A in the first example) it will get “lost”. The symptoms are that the load starts to decrease to 0 and then proceeds in a different direction (so beams in compression are in higher and higher tension etc.). This is simply because solver found a point on a branch of stability path that was already followed. After the first point method will naturally follow the same path backward! To counter this try to minimize the increments in the bifurcation region, or change something slightly in the model.
I hope you will find this useful. Let me know what you think about it in the comments. Also if you want to help out – share this article with your friends 🙂
Free FEA course!
I have a free nonlinear FEA course just for you! Subscribe below to get it!
If you enjoyed the post you can share it with friends – that would be a great help! If you have a spare 15 seconds write a comment with your thoughts on the matter or any questions you might have. I have a good history of replying to each and every comment 🙂