(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-5M6SH59');
5 minutes read
22 May 2016

How to set up geometrically nonlinear analysis

5 minutes read

Have you ever performed an analysis that did not converge, or that ended with the result you did not expect? Many of such problems are resolved with correct solver settings, and today I will discuss how to set an arc-length geometrically nonlinear analysis of a shell. This means we will do a nonlinear buckling problem from scratch!

Before we start a checklist of things worth knowing before starting this tutorial:

Since I have already decided that I want to use the arc-length method to trace the stability path now it is time to set things up. Arc-length methods in most solvers require few parameters in order to work properly.

Arc length method parameters

  • Initial step definition – in many solvers this is organised differently but goal is simple: define how big step should be done in the first increment of the analysis, since solver won’t have any history to base on.
  • What are the convergence tolerances for each iteration (usually default settings of your solver suffice)
  • Rules for analysis termination (since you want to trace failure most of the time, reaching target load is rarely an option, as model will be destroyed before that load)
  • Rules about increasing and decreasing load increments

In NX Nastran parameters described above have the following names and meanings:

  • NINC – this is the “initial step definition” parameter. It divides the implemented load by it’s value, and the outcome of the division is the target first increment. In other words if the load is 50kN/m and I pick NINC = 50, first increment will be 50kN/m / 50 = 1kN/m.
  • MAXITER – is a parameter on the border between “rules for analysis termination” and “convergence tolerances”. This is the number of iterations for one increment that are “allowed” before analysis terminates with “no convergence” message.
  • EPSU, EPSP, EPEW – values of tolerances for displacements, forces and work. This are the “convergence tolerances” parameters and I usually use the default values.
  • MXINC – maximal increments – this is the main “analysis termination” tool in NX Nastran. Unfortunately in most cases if you terminate analysis manually you do not have an access to outcome in NX Nastran. Since we wish our analysis to end, the easiest way is to limit maximal number of increments (if enforcing certain deformation is not possible as load). After the amount of increments is reached analysis “cleanly” terminates.
  • MINALR, MAXALR – those parameters control “increasing and decreasing” of load increments. In many cases I do not like to increase increments in my analysis, so I set those as 1.0.

The above parameters are not all of course but are the most important. Also, there are certain things to those parameters I did not mention (like the fact that some of them may have negative values which will be interpreted somehow by the solver). For now, I assume this is enough to perform simple nonlinear analysis. In Femap, those parameters are set in two windows of the “nonlinear analysis options” tab. Those windows are shown below:


Apart from the parameters I described above, I marked a few others. KMETHOD and KSTEP are responsible for stiffness matrix updates during calculation run, and TYPE defines different arc-length strategies (modified Riks is the most popular, but I also use Crisfield). MAXR is a parameter that steers the process of increasing/decreasing load increments – you can limit how big an increase/decrease is acceptable. With [2] I have marked a box that must be checked – otherwise Femap won’t generate the NLPCI keyword and all parameters defined in “Advanced Options” will be ignored (resulting in non Arc-length analysis).

There are of course other parameters but for now, let’s leave them at default values in order to avoid long theoretical discussions. For the same reason I am avoiding going into the NX Nastran input file (the instructions generated in Femap for NX Nastran solver), but with a more complex design, it is actually worth learning the NX Nastran code to some extent (to be honest this is how I learn things – I learn NX Nastran code and when I know what I want I simply search which field in Femap are responsible for parameters I wish to set).

Below parameter values, I used in geometrically nonlinear analysis (note that leaving something “blanc” will use default NX Nastran value, even though most things are already filled in with default values in Femap just in case!). Important thing: the default value of MXINC is only 20 so you almost always want to fill that field since 20 is not enough in most cases).


The outcome of this analysis was already shown previously. I used the vertical displacement of the node on the shell top on a horizontal axis, and a force multiplier multiplied by the load I imputed (50kN/m), meaning that when the “set value” is 0.500 this means the current load is 0.5 x 50kN/m = 25kN/m. Obtained results are below.

GNA summary

As written here results differ from those obtained in LBA.

And finally a video tutorial – I already ordered new gear to play with so there is a chance that the next tutorial will be recorded with my commentary that won’t sound like broken radio 🙂

Have a good one!


Want to learn more?

This is awesome! I’ve prepared a special free FEA course for my subscribers. You can get it below.

Author: Łukasz Skotny Ph.D.

I have over 10 years of practical FEA experience (I'm running my own Engineering Consultancy), and I've been an academic teacher for a decade. Here, I gladly share my engineering knowledge through courses, and on the blog!

Read more

10 Lessons I’ve Learned in 10 Years!

Get Essential FEA Course for Free!

Comments (6)

Jesner - 2021-07-24 01:49:51

I ran a nonlinear analysis. It says the analysis is complete but it only went through 10% of load step. My stresses and deformation is very low. Why does FEMAP say NL is done.

Łukasz Skotny Ph.D. - 2021-07-24 20:55:35


You most likely applied 100 or 200 steps (in ninc) but you haven't changed the limiting amount of analysis steps (kill me I can't recall if it is 10 or 20 by default). This means that the analysis runs... does 10% of the load, but also does the maximum of 10 (or 20 :P) maximal steps, and the solver gets the message "dude, he only needed this much, it's time to wrap it up".

So you get a message "analysis done", and that is it.

There should be a popup window when the analysis finishing showing you "error messages" - one of those should be (in such a case) NLITER

It can also happen that the analysis did not converge, then the message will be NOCVG or something similar.

And in the end, you could always have messed up the solver setup, and you think that it's 10% of the load, while the solver thinks it's 100%...

All the best, and good luck!

dev - 2018-02-24 13:05:44

Hi Łukasz,
Thank you. Its more clear now.
Do you have an article in this blog about the influence of imperfection on nonlinear buckling?

Łukasz Skotny Ph.D. - 2018-02-26 04:28:56


Glad I could help.

Sure, there is an article about imperfections: https://enterfea.com/imperfections-in-buckling-design/

Have a great day Dev!

dev - 2018-02-22 11:15:53

Hi Łukasz, first of all thank you for this nice article about non linear analysis setup.
I have read your article about linear buckling though eigen value analysis.My doubt is whether nonlinear buckling will be automatically taken care while we do nonlinear static analysis or we should do a separate analysis like linear buckling?

Łukasz Skotny Ph.D. - 2018-02-23 03:56:03

Hey Dev!

It kinds of depending on what do you mean by nonlinear static... In typical FEA application, it is best to use an Arc Length method (Riks, Crisfield) and also define imperfections somewhere along the way (do analysis without them, and then add different imperfections to later analysis to see the influence). With this in mind "nonlinear static" most likely won't cover all of those, but this is a matter of setup rather than a "different" analysis as it is in case of linear buckling.

I hope this clears things a bit. If you have any more questions feel free to let me know :)

All the best


Sign up to newsletter

and get Free FEA Course!