!function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '366319058984917'); fbq('track', 'PageView');
3 minutes read
2 June 2018

How to approach a snap-through problem

3 minutes read

Today’s post is a video : ) In it, I will discuss various approaches to snap through problems with nonlinear FEA analysis. Understanding this was a stepping stone in my career. I really hope it will be just as useful for you!


Let’s sum up what I talked about:

  • What is steering? When you load your model with an active force, the solver will increment this force in nonlinear analysis. This would be the “force steering” – the force is being incremented. If you load the same model with displacement then the solver will increment that displacement. That would be “displacement steering”. You can also use an “arc”. This is neither force nor displacement steering, it’s more like “both at the same time” approach. A really useful thing in snap-through problems : )
  • Steering with force in buckling problems isn’t the best idea. There will always be a local maximum where the model capacity is reached. It is very probable that you will get a non-convergence message in that place. Sure, if it happens much after the load you need to apply to your model, that this is a good indicator of capacity… But do you really want to use solver error messages as guides in your design? I know I did for some time, but it’s not the most pleasant way of doing engineering. Especially since you are losing some useful data (like where the model failed and how the failure looks like).
  • Steering with displacement can help. It won’t always help, but often it will. It only depends on the post-critical behavior of your model. If the stability path goes smoothly forward after failure – you are good to go. However, in some problems (like shell buckling) stability path may want to decrease both load and displacement at the same time. In those cases, arc length methods are your only option.
  • Switching between force and displacement steering. Sadly, this is not as simple as it sounds. I mean, all you need to do is to implement load as an enforced deformation or as an active load. This alone makes it. But how to switch from one to another? For a single concentrated force this is easy… for anything else: read this post about it : )
  • Arc length methods. When you deal with complex buckling problems those will come in handy! There are many algorithms you can use. The most popular one would be Riks (or modified Riks). In Femap, I also have Crisfield algorithm implemented. In all honesty, they produce very similar results. To the point where is some software, it is simply called “arc length” without even showing which algorithm will be used 🙂

Kids, try this at home!

As I mentioned in the video, by all means, try to do this in your favorite FEA soft. If you manage to complete that, please let me know (and send me a gif with the failure mode!). This would be great.

On another hand, if you get stuck at something, you can always ask for help here: [email protected]!

Just so it’s more convenient – Model data:

Hall of fame!

I must admit that I haven’t expected that! Big shout out to Boris Jakimov, who sent me his model in hours after I posted the challenge!

Awesome job man!

The model Boris made:

Want to learn more about nonlinear FEA?

Great! I have a free nonlinear FEA course for you! You can get it by signing up below this post!

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

Join the discussion

Comments (16)

Ian - 2021-10-01 17:58:16

Hi Łukasz,

Thanks for the blog.

I have just been going through the tutorial and managed to recreate the case pretty quickly but did take some time to tweak the parameters in the non-linear analysis section of the NX-Nastran input to get it to not jump too far.

The only other comment that I have is that we routinely use the CQUADR elements for linear analysis as it prevents the use of artificial stiffness using K6ROT. For others who routinely run linear analysis it is worth pointing out that the CQUADR and CTRIAR SHOULD NOT be used for non-linear analysis as it produce completely different results.

I would have thought that it should convert to a CQUAD4/CTRIA3 automatically giving an appropriate warning or give a fatal error and stop. Carrying on running and giving a completely different different answer is not a good default option!

(It may be worth adding information on the CQUADR/CTRIAR elements to your element blog page as they do have their uses especially for dynamics/vibration).

Best Wishes,

Łukasz Skotny Ph.D. - 2021-10-01 18:01:56

Hey Ian!

Thank you for a great comment!

I don't think I ever used CQUADR elements, at least I don't recall I did - but I will definitely take a look - this sounds interesting for sure!

All the best!

Sai - 2021-03-16 05:07:52

Hi all,

First, thanks to Lukasz for this wonderful resource. It has been very useful.

Second, regarding the example for snap-through/snap-back chosen here, I would like to share this interesting literature:

Wardle, B.L., 2008. Solution to the incorrect benchmark shell-buckling problem. AIAA journal, 46(2), pp.381-387.

This work demonstrates that the effect of imperfections has a very big role to play in deciding the nature of response after instability. The snap response is specific to a perfect shell. In case there exist any imperfections, the structure undergoes a bifurcation (instability) exhibited at a load lower than snapping load.

I guess that Mike's response (in the previous comments) depicts a bifurcation response. In this case, the imperfection could be due to an eccentricity in the applied load (maybe not at the exact mid-point). Anyway, the response curves are strikingly similar to that shown via experiments and numerical methods in literature given above.

On a side-note, we have also observed similar results of bifurcation for imperfect structures via our in-house codes.

In any case, I just wanted to mention the interesting possibilities of nonlinearities and also imperfections in a stability analysis.

Once again, thanks Lukasz for this blog!


Łukasz Skotny Ph.D. - 2021-03-17 08:39:57

Hey Sai!

Thank you for dropping in! Indeed, imperfections will always impact the outcomes. And I agree that even in cases like this one, it would be visible. The problem with imperfections is I guess this is much more an "art" than "science" in practical engineering (where you don't have the time to investigate 126 different imperfection patterns to be sure you've got the worst ones in your analysis!) - but this absolutely doesn't mean you shouldn't use any :)

Of course, the example in this post is just a "famous benchmark" - and the aim was for someone to check if they can replicate the analysis. Adding imperfections would make things more complicated, and wouldn't make the challenge "different" in nature I feel.

But, I must admit that maybe I should add some "remarks" in future posts that would say something along the lines of "look, this is much but it's not all, never forget about: X Y Z in your actual designs" or something. I feel that many people would feel as if I'm "babysitting them", but I will think on this more. I don't want to get people in the trouble, that is for sure!

Also, thank you for your awesome comment!

Hammer - 2021-01-17 23:19:31


If you don't mind me asking, which solver (106 or 601) did you use for this analysis? Also, is there any chance you could give us a peek on how you did the load increments or subcases (when not using the arc-length method)? :)

Really cool post, btw. I really enjoy your work. I have spent a majority of my day browsing and reading about nonlinearity on enterfea :)

Best Regards

Łukasz Skotny Ph.D. - 2021-01-19 15:09:08

Hey Man!

I used SOL 106 on this. It's funny, as I actually just finished recording this example with all the setups and some discussion on incrementation for my new nonlinear FEA course. Embarrassingly the course doesn't even have the landing page yet, but if you would be interested you can go and sign up here: https://enterfea.com/nonlinear-fea-project/ (regardless of what you will choose, this is so out of date :P) - it will at least keep you in the loop :P

See you around Mate!

Pete Khaimook - 2020-07-29 09:22:55

Thank you for such a useful content!
Now it seems like the video link is expired. Can you please update the link?

Łukasz Skotny Ph.D. - 2020-07-29 10:58:40

Hey Pete!

This is weird, the link works on my end (IT classic!). The video is hosted on YouTube here: https://www.youtube.com/watch?v=GA9MyT7ax_k

All the best

TAMOGHNO - 2020-06-02 21:49:08

Sir i am new with Non linear FEA and I want to generate the force vs displacement graph for a curved beam for the negative stiffness region. I am performing it in static structural in ANSYS but am unable to get the graph. Can you help me?

Łukasz Skotny Ph.D. - 2020-06-03 06:54:30


I'm not an Ansys user, but this shouldn't be difficult. I mean, there must be some sort of "charting" tool in Ansys. But even without it, you should be able to do it! Since you are performing a nonlinear FEA I assume you have several "outcomes" for different load levels (depending on how many load increments you have set). If that is the case, then simply open each of those steps and read the displacement in the place that you wanted to have on your graph. So you have a pair of data-points (load equal to the load applied in the given step, and "matching" deformations). This is a point on the graph! Do that for each load step and put into excel, and you have the graph!

I'm sure there is an "automated" tool that does this for you, but even this way it's "doable" (but a bit irritating if you have set like 500 load increments or something). If you have a lot of those... you can always use every second, or every tenth or whatever to speed the manual work :)

Hope this helps :)

Jakub Drozdowski - 2020-04-15 09:56:29

Hi. I have to boast a bit :) After few days of trials- here are my results. :)



Łukasz Skotny Ph.D. - 2020-04-15 13:20:29


Congratulations :D

All the best!

Mike Beaumont - 2019-03-29 06:19:29

Hi Łukasz, here is my attempt at modelling the snap-through problem with Strand7


The displacement history of the centre-node is shown below:


Łukasz Skotny Ph.D. - 2019-03-29 07:12:34

Nice work Mike... it's astonishing that you managed to converge that ;)

It looks to me like you are using a "typical" nonlinear analysis with enforced deformations but the vector shows "force" not enforced deformation so I can't be sure.

Clearly, there are some issues in the "unstable part" (as they should, after all, this is why that is an unstable part!), but overall a really solid step!

Nicely done mister!

Paritosh - 2018-07-28 20:44:10

I have used this method for analyzing buckling of shell-pipes under negative internal pressure :) In Abaqus its called Riks (or modified Riks) algorithm. It gave really good results!

Thanks for this lesson, and thank you for making it so much fun! Wish I had access to all the courses. But I am still a student and cannot afford it yet. :(

Nevertheless, I love the blog! Keep up the good work!

Łukasz Skotny Ph.D. - 2018-07-29 07:25:34

Hey Paritosh!

I'm really glad that you like this - there is plenty of free available information here - just look around the blog ;)

All the best


Sign up for my FEA Newsletter!

Each Tuesday you will get awesome FEA Content directly yo your email!

    Your personal data administrator is Enterfea Łukasz Skotny, Skrzydlata 1/7, 54-129 Wrocław/POLAND, Email. By subscribing to the newsletter that includes marketing messages you consent to your personal data processing in accordance with this privacy policy