!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');
21 minutes read
27 July 2020

Mesh convergence with examples

21 minutes read

I must confess, that I haven’t always pay attention to mesh size. At the beginning of my career, I simply build my models and was happy when they converged. I was vaguely (and I mean vaguely!) aware, that the element size does “something”. But I was absolutely happy with whatever default options were set! Now I’m a bit wiser, and I will show you a few important things about mesh convergence!

Deciding on the correct mesh size is a rather difficult thing. Sure, you can base that on your experience in any given analysis type. But this experience has to come from somewhere, right? The most accurate approach would be doing a mesh convergence check. I will show you an example of how to do it.

If you are interested in the general principles of how this works, you may want to read my older post. Here, I want to show you how to apply this method, in a simple example (so you can follow along).

A problem we can solve…

I admit, that what I will do here, is a trick to some degree. Mostly, because I will do the example where we can actually know the correct answer (I will calculate it later). I know that you most likely won’t have the luxury like that in your “actual” work. And this is pretty obvious too! If you could easily calculate the outcome by hand… why do FEA in the first place?!

My advice would be, to try doing the same thing, with a different example anyway. Preferably, one that you can easily solve by hand! Maybe even something that is more similar to things you usually solve in FEA? This way, you can check for yourself if this works. I won’t hide I’m a big fan of “check if works first” approach to FEA stuff. So doing simple examples at the start is actually how I learn stuff.

Of course, you can always say: “yea, I saw Łukasz did this, and I’m sure it will work, so let’s just do it”. I can’t (and won’t!) stop you. But I think that learning is best when you are doing simple examples. Mostly because you can easily and quickly “tweak” them just to see “what happens if…”. The “what happens if…” part and simply “experimenting” with various things, will teach you the most!

This is why I’ve selected two simple cantilevers for our problem. We will do them one, by one as I want to show you something neat!

First things first!

The first one is the “classical” cantilever with the load on the tip. I will use plate elements to model this problem. It’s basically a cantilever plate (0.2 x 0.5m) with only 10mm thickness.

To make this more interesting, I will be doing QUAD4 and QUAD8 elements (so the 4-node and 8-node quad elements). This way, we can see how fast the answer converges in both cases. This will also give us an opportunity to learn some other interesting things!

The model is of course super simple, but there is a small thing I did to make my life easier.  You see if I would model the support “only” as fixed at the supported end, the stress distribution I would get would look like this:

This is not what we would expect right? I mean, with the load on the “tip”, one would expect a nice “smooth” stress increase toward the support. And here, we get some weird “stress concentration” near the support, seemingly for no actual reason.

Well, there is a reason of course, and if you already took my awesome FEA Quiz, you know the answer already! This is caused by the fact, that our cantilever wants to change its width under the load as well (Hooke’s law), and near support, it “cannot”, since it is supported. Without going into details, we can fix this quickly by assuming that our “plate” is actually “infinite” in width. This way, we will get a nice “smooth” stress distribution like this:

Important note:

All of the stresses I will display here are NOT von Misses stress. Instead, I’m displaying the normal stress in the “length direction” of the cantilever. This normal stress will “resist” the bending! Please note, that such stress is usually called “normal X” or “normal Y” or something similar… BUT this is in your Finite Element orientation, so it doesn’t have to follow “global coordinate system direction”.

In my case, all finite elements have their Coordinate System with Y axis “to the right” on the picture above. So I’m displaying “Normal Stress Y”. Even thoug the global UCS would suggest that it should be “X” not “Y’. As I wrote before It’s the local element axis, not the global UCS, deciding which normal stress is in which direction!

It may seem counterintuitive at first, I know. But imagine the same cantilever, that is oriented 45 deg between axis X and Y. Global UCS would not be aligned with elements at all! but still you could display the “normal stress” along and across the cantilever!

With this small trick, we are ready to rumble!

Crouching Accuracy, Hidden Mesh Convergence!

With the model set up already, we can finally start. Let’s just say, that we do not know the maximal stress in our element yet. So we want to answer a question: What is the maximal normal stress in our element?

So, what we could do, is to model out a piece, use the auto mesher and press calculate. This is precisely what I did! Below you can see the mesh size Femap would assume automatically based on the model size. This is what we would get for QUAD4 elements:

As you can see on the right, the max normal stress is 283MPa. There are 2 questions you need to answer in such a case:

  • Do I believe that the answer is accurate *enough*? If that is the case, then great – you have your answer! At the start of my career, I would have not chance to answer such a question myself. My answer should be back then “I just don’t know”. “Luckily” for me, it didn’t occur to me to ask such a question, so everything was just “fine”…
  • If the above is true, isn’t the mesh too small? This is a problem I encounter years later. You see, it’s simple to mesh your model with super small elements. But computing and storing data start to be a super big problem. So you don’t only want to be certain that the answer is accurate enough. You also want to know that you are using as little resources as possible to receive this acceptable answer! This is a way trickier question to answer I think…

Those two questions are the cornerstone of mesh convergence. In essence, if you are certain about your answers in FEA, and you know that you are using “optimal” mesh size… then you are set! However, if you have doubts, you are in the right place! Let’s go deeper into this subject together to find those answers!

Mesh convergence: Take 1

We don’t know if the above answer (from the “default mesh”) is correct or not. This means that we need to assume 2 things (at once!) and consider a third:

  • This may not be a correct answer! Simply put default mesh size may be too big, and the accuracy is not satisfactory in this particular case. We need to check if we will get a better answer with smaller elements!
  • This may be a way too accurate answer! Perhaps this is spot on… but it would be just as awesome with way bigger elements. In such a case the answer itself is ok. But… we will be wasting precious resources to compute and store outcomes for similar problems in the future. A check should be made if the smaller mesh makes sense as well!
  • Perhaps a different element type? This is an additional consideration. Each element type will converge – this is a super obvious thing. However, in different situations, some elements can be “better” than others. Note, that the fact that elements can be “bigger” to produce a decent answer doesn’t necessarily mean that they are better. If they are “super complex” then the computing time may actually be longer than in the case of smaller but “less complex” elements!

Knowing that I’ve decided to test QUAD4 against QUAD8 elements for this problem. This is a super small task, so it will be hard to measure time. Most runs are “well below 1sec”, and at such times, it’s hard to measure time accurately. But we can see how the model converges anyway!

Since it won’t cost me much, I can start from the single element (!) and move toward smaller and smaller mesh. Of course, you don’t have to be so “precise” in mesh convergence studies. You can comfortably start from the mesh size you feel “makes sense”.

Let’s deal with the QUAD4 elements first. I won’t show you all of the models I did (this is quite boring, to be honest). Below you can see several of those:

If we would put all of those outcomes on a simple chart, it would look like this:

You can clearly see, that the answer we are getting nicely converges. What I mean by this is, that with the increase in the number of elements answer is “stabilizing”. Seeing the chart, we could also say, that it “looks” like the answer is around 300MPa.

For me, that is enough. But if need be, you could do some math “hurt” to the chart to see what is the precise value this converges to. But since I know that the difference between 297MPa (50 elements) and 299.7MPa (500 elements) is only 0.9%. I’m just “fine” with the outcome from the model with 50 elements.

Personally, I wouldn’t dig deeper unless perhaps I would be doing fatigue analysis. 1-2% of accuracy always satisfies me. Heck! One could argue that the outcome from a model with 10 elements along the length (285MPa) that produces around 5% error is still reasonable! It only depends on how big a model you really have. Waiting an additional 3 weeks for computing to increase accuracy from 5% to 1% may not be the best idea. But of course, it can be a great idea as well… this really depends on what you are doing!

Mesh convergence: Take 2

Now it will go quicker since we already know what’s going on! Below, you can see the outcomes for QUAD8 elements. Those are, of course, the same conditions and all.

I’m not sure if you noticed… but the answer is always 300MPa! I mean, starting from the 1 element, up to the 500 elements along the length… it’s constantly 300MPa! I guess we don’t need to plot the chart in this case, as it would be an awesome horizontal like! This clearly shows that the answer “converged”, and that the correct result is 300MPa.

I must admit, that even knowing this, and understanding why… I still would not feel comfortable with 1-3 elements along the length!

Checking what we already know!

This is a place, where we can stop for a second, and wonder what we already got (and why). Also, I would like to clear, why QUAD8 elements “always knew” the correct answer!

Firstly, let’s calculate the stress by hand. I guess you already know it should be 300MPa, but it never hurts to check right?

Awesome! So, now we know, how much stress we should get. And, both QUAD4 and QUAD8 converged to a proper solution (yea!). But it was absolutely clear, that QUAD8 elements converged instantly, while QUAD4 elements struggled quite a bit. Let’s take a closer look.

You see, QUAD8 elements can “easily” do linear stress distribution along their length. This is thanks to the additional nodes they have on their edges. You may think about those as “data points”. Those points allow us to better calculate what is going on inside the element (thanks to shape functions). If this topic fascinates you, you can read more here, and also take a look at one of my YouTube Live sessions about this topic. What this means, is that the QUAD8 element has no issues with the fact that the out-of-plane bending causes linear changes in the stress distribution on the element.

On another hand, QUAD4 elements are “blind” to such actions. If there is an out-of-plane bending causing stress, the QUAD4 element wants this stress to be “constant” on its surface. This is not always the case for QUAD4 elements. For example, in their plane, they would “allow” linear stress distribution. But this is a completely different topic (and not connected to our problem).

The cantilever is set up, to have a nice, linear change in the bending moment. This means, that the stress caused by this bending will be “perfectly” linear as well. You can see this below:

This means, that even a single QUAD8 element can “handle this”. Simply put, it is “well suited” to deal with the linear change of stress across the element. QUAD 4 elements on another side struggled. This is because they want to have a constant stress value across their width. The problem can be easily shown this way:

As you can see, each QUAD4 element simply “gathers up” all the stress from its area, and averages it. Or at least, this is what happens in a super simplistic look. This is why reducing the size of the element changed outcomes. The smaller area of the element you have, the less impact this effect has. To the point that if the element was “infinitely small” the averaged outcome across its minimal area, would actually be precise.

From this example, you could read, that using QUAD8 elements means that you don’t have to worry about mesh convergence. This is of course not the case… and also a reason why there is a second example in this post!

Last but not least!

All right, you already know how to solve a mesh convergence problem! So perhaps you may want to try doing the second example on your own before reading along? This is a good practice for sure!

This time, our cantilever is loaded on its surface. Seemingly a small change, but it will provide us with all the emotions we will need for today’s post! Take a look:

I will use the same boundary conditions (along with symmetry assumption) as in the previous case. And I will use the same finite elements, with the same setup. So I will measure how many elements “along the length” there are in the model. This will be an indicator of the mesh size. Not much more to say here, maybe apart from this:

Small note:

In this example, I’m using the amount of elements along a selected edge as an “indicator” of how small mesh I have. You can always use other mesaures. I admit, that I’m not a fan of element “size” used for this. You know the “width od the element edge” in milimeters. But, you can always go with other “amounts of elements” for mesh convergence. You don’t even have to measure amount of elements in entire model. This can easily be limited to the amount of elements on any particular part of your model. Just use whatever in your mind nicely represent how small elements you have. Preferably in the place where you are searching for an outcome, not necesairly in the entire model.

This also means, that you don’t need to have the mesh of the same size everywhere. It’s completely fine to have bigger elements in a lot of places, and small elements “where it counts”!.

Mesh Convergence: Take 3

Just as in the last example, we will start with QUAD4 elements. Again, below you can see selected cases (I removed element division for 500 FE, so you can actually see something):

If you have an awesome memory (and you pay attention like crazy!) you may notice that the outcomes actually converge “slower”. I mean, in the previous example with 3 QUAD4 the answer was 250MPa, while wow it’s “only” 216.7MPa. For 10 elements, the difference is still there (285 vs 271.5MPa). Heck! Even for 500FE along the length, the difference is still there (299.7 vs 299.4MPa). Clearly, something in this task is more “difficult” to solve. And yes… you guessed it. The final answer is the same in both cases.

The difference can be nicely shown on the convergence chart. The blue chart is the “old one” from the previous case with the load at the tip. The current case is marked in orange.

I think you can easily see, that the orange curve converges “slower” to the proper solution. It still does, but it’s just not as simple. Interestingly in the previous case, 5 QUAD4 elements were more or less as accurate as 10 QUAD4 elements now (around 270MPa). Previously, I’ve mentioned that 10 elements along the edge could be considered decent (5% accuracy). Now it’s unthinkable, at least for me. In this case, the accuracy of 10 elements along the long edge is only 10%. That is a bit too much for me. This shows us, that mesh size doesn’t only depend on the geometry – it also depends on the load. Or, to be more accurate, on the stress state in the region we are calculating.

I really hope you are already curious why that is the case! But first…

Mesh Convergence: Take 4

Before we move on, let’s take a look at QUAD8 elements in our small challenge! This time, they won’t perform as awesome as previously:

It’s clear, that they converge nicely, but it’s not a “from the start” thing that happened in the previous example. Here, we would need 3FE along the length to be “decent”, which obviously is way fewer than in the case of QUAD4 elements. Convergence plot can be seen below:

The Grand Finale!

Just as in the previous case, firstly let’s take a look at what the actual answer is:

But knowing the max value in itself isn’t a solution. Just as before, we should also take a look at stress distribution. This is where all the magic happens. You see, since the load is uniformly distributed, the bending moment distribution will be parabolic, just as you can see below:

Knowing the stress distribution, let’s do the trick we did last time. We already know, those QUAD4 elements want to have constant stress on their surface. Well… at least in our case, since it is caused by the out-of-element-plane bending. I guess you can easily imagine what happens next!

I think that after seeing the above schematic, you already know what is going on. QUAD4 elements want to have a constant value of stress in our case. So they work in a way to “make this happen”. Please note, that it’s not as if QUAD4 element “knows” the correct answer, and simply calculate its own value backward (as I showed you above). Instead, the “internal math” of the element is limited, and this limitation produced the outcomes in the elements. And it so happens, that those outcomes are in relation to the “actual” outcome in a way I’ve shown you above.

This also explains, why now it’s more difficult for the answer to converge. The quadratic curve is more difficult to approximate with blocks of “constant values”, than the line from the previous example. A certain amount of elements may be “good enough” to approximate stress that is distributed linearly. But in the same model, if the stress is “quadratic”, the same elements may not suffice! You know, like this:

Funny enough, you won’t know what stress distribution will be in your model. I mean, sure… you can suspect stuff. In simple cases (like this one) you may even be sure. But normally, especially in big and complex models, you just won’t know. So it’s usually better to assume “worse” than “better” and take smaller elements “just in case”.

The only thing that remains, is what “happens” with QUAD8 elements! Of course, this is a similar problem. I’ve already told you that QUAD8 is “well suited” to have the stress change linearly on their surface. Here, the stress change is “quadratic”, so even the QUAD8 doesn’t get the “perfect” answer from the start. But they have a huge advantage: they can have a linear distribution of stress (rather than constant stress as in QUAD4). This makes it way easier for them to “fit” into the actual stress distribution compared to QUAD4.

While the stress changed in a linear way, QUAD8 offered a “perfect fit”. With quadratic distribution, there are some “errors” but, as you can surely imagine, way smaller than in the case of QUAD4. In fact, small enough to make the drawing below a bit awkward…

This is why, QUAD8 had an easier time converging the proper answer, even with the use of a very small amount of elements.

This may suggest that QUAD8 elements are simply better, but there is something else, we need to consider…

Time is of the essence!

When all is said and done, it’s not the “smallest amount of elements needed” that wins! After all, you can get a similar accuracy between the 2 models. One would have fewer QUAD8 elements, the other more of the QUAD4. Since accuracy is similar… the question is, which one is the “better one”?

For me, the victory goes to the model that computes faster! As I wrote at the start, this example is too small to measure time in a reliable way. Most models are computed in under 1s. However, 500 FE along the edge of QUAD4 took 12s… while for QUAD8 it was 52s. Significantly more. Also, those things will “compound” and with bigger models, the difference is even bigger.

What I try to say here is, that there is no easy answer. Sadly, you won’t learn here if it is better for you to use QUAD4 or QUAD8… simply put, I just don’t know!

Checking waht is best for you:

There is a way you could check, which elements are best in most of your cases!

Just select a model, that will represent a “typical problem” you will have to deal with in your work. Then, perform a mesh convergence check for both QUAD4 elements and QUAD8 elements. Heck! You can even throw TRI elements there if you feel fancy.

Measure the time it takes each run to compute.

After all, decide what accuracy level suits you… and simply check which type of elements give you the required accuracy with the shortest computing time!

I admit, you will have to do mesh convergence several times for the same problem (for different element types). This will take some time, and surely is impractical in your daily work. But doing this to 1-2 typical examples, can show you which elements are best for you. The time this will save you in the future on computing, is well worth the effort!

But I feel, I should mention something else. Raw time is a great measure, but don’t be too fixated on it as well.

There are other considerations, you may wish to take into account. The one that comes to my mind is, how many small details you have in your model. Usually, the mesh is small near small features you wish to have in your model. But, on the other hand, “better” elements (like QUAD8) can “allow you” to use super big elements in “general”. In such a case, the transition between small elements near details, and super-big elements elsewhere will cause the mesh to be “ugly” with poor quality. I would think about this as well when deciding on the element type.


Well, this is it! I hope that you enjoyed this mesh convergence example and that it helped you learn something about how FEA works! Let’s try to recap what we talked about here:

  • It makes sense to do FEA for problems you can solve by hand. This helps you understand what is going on, and see if your approach to FEA modeling produces proper outcomes!
  • Mesh size isn’t something you can simply ignore. It would be great, but even such a simple problem shows, that the accuracy depends on element size. I wouldn’t freak out about it too much, but don’t ignore this either!
  • It’s actually cool to understand how stuff works. I’m first to admit, that I don’t like learning FEA math. For me, such simple examples are the means of “understanding” how things work. Without all of the equations…
  • Doing mesh convergence for “a typical model” to select the best mesh type is a good idea! I did that a long time ago. But as I write this I feel, that I should get back to this! I’ve learned quite a lot in recent years, and we changed a bit about what problems we solve. Perhaps the conclusions from such a study would be different now… who knows!

Want to learn more? I’ve got you covered!

If you like my teaching style, definitely check my FREE FEA course 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

Join the discussion

Comments (22)

Anton - 2024-06-19 19:17:25

Hi. I would like to know about meshes. In the finite element method there is a concept that a too fine mesh gives a large error. That is, up to a certain point the result is more accurate, and then a large error arises. This is not shown on your graph or modern complexes do not this flaw?

Łukasz Skotny Ph.D. - 2024-06-25 12:24:36

Hey Anton,

I think the issue you are talking about comes with the roundup accuracy - as far as I know you would need to have an INSANELY small mesh to encounter this - I never had the issue. I'm not saying it's not there anymore in "current FEA solvers" but I think that engineers usually do not encounter it. Never investigated this deeply though...

Vaish - 2022-03-05 10:09:22

Hi Dr. Skotny,
I am pursuing my masters in Aerospace Engineering, specializing in Structures and Design, and I am grateful to have come across your blog. I appreciate the time and effort you put in dismantling and explaining the nuances of FEA, particularly those topics that are not emphasized upon in the university. My respects to you and your skills. Thank you very much!

I would also like to know more about the transition between coarse and fine mesh in a model. For example, if I want to use a coarse mesh throughout the model and use finer mesh in the region(s) that I am interested in, how do I make a smooth transition to avoid errors?
What other factors must I take into consideration in the 'transitioning region'?
And the final question: Is it fine if I use one type of element for the coarse mesh and another type of element in the fine mesh (for example, using QUAD4 for coarser mesh and QUAD8 for finer mesh within the same model)?

Thanks in advance!

Łukasz Skotny Ph.D. - 2022-03-10 08:32:15

Hey Vaish!

Thank you for your kind words - I'm glad that you like my work :)

Meshing is a pretty "simple but complex" thing - I mean, the transition between coarse and good mesh should be simple...you just "do it". But as I think on it, there are a lot of nuances to describe, and it's impossible to do it in a single reply to a comment. Realistically... you want to make the transition "sooner" rather than "later" in your model - so the transition is also in the place that isn't so important, and you feel that the coarse mesh will do just fine. I think that this alone should help you quite a bit, and the rest is just the manual "what you can control while meshing in your software" type of thing. Aim for decent jacobian in elements, and you should be fine ;)

As for mixing elements, I'm not a fan. We either do QUAD4 or QUAD8 (recently, almost always it's QUAD8). I know that some FEA packages can "stitch" FEA and connect incompatible elements (QUAD8 has more nodes, so it's not easy to connect it to QUAD4), but still... I would stick to a single type!

All the best!

Nick - 2022-02-09 00:07:02

Hi Lukasz,

Thank you for all your blog posts, your content is really a gem for someone expanding their FEA knowledge. I have a question about mesh convergence studies; say I have a model that I know I want to run in a non-linear static simulation with large displacement and non-linear materials.

Is it sufficient to run a mesh convergence study on a linear static simulation, or should the mesh convergence study be ran in a non-linear static simulation?

Łukasz Skotny Ph.D. - 2022-02-09 17:19:26

Hey Nick!

Ach, this is a killer question! I don't think I will have a satisfying answer for you yet (I'm working on something cool about this topic, but it's a project for the next year at best I think).

As far as I know, linear FEA convergence should be sufficient, since nonlinear analysis should converge easier. This is how we approach this. However, I haven't tested this extensively yet (I'm about to ^^) so you know... it's just an opinion of a random guy form the internet - take it with a grain of salt ;)

All the best!

Ignatius - 2021-10-25 02:14:49

I have learnt so much from your presentation and I hope to dive more into fea analysis. Thanks

Łukasz Skotny Ph.D. - 2021-10-25 10:12:49

Thank you Ignatius!

I'm really glad that you found the article useful!

Also, all the best in learning FEA!

Paul - 2020-12-09 23:53:30

Hi Lukasz,

Thank you for the great article. It helps me a lot. I have a question regarding mesh convergence. For irregular shape, which one is better either mesh convergence of structured mesh or free mesh. I've got one converged solution in structured but I got two 'converged' solutions in free mesh. Why did that happen? Is it because of the irregularity of the finite elements produced in free mesh? Sorry for asking too many questions. I am trying to understand what am I working on in ANSYS. Thanks so much for your help.

Łukasz Skotny Ph.D. - 2020-12-10 08:49:40

Hey Paul!

I think that there is no single "better strategy" in meshing. Sometimes structured mesh produces better meshes (that would be my tool of choice I think) but there are shapes where the free mesh is just better. I'm pretty sure that in most cases both free and structured meshes will converge producing a decent answer (unless the shape is weird and structure mesh will lead to some crazy elements). I usually make the mesh by the eye - and I pick the one I'm more visually happy with :) Perhaps this comes with experience... or I'm just uneducated :)

All the best!

Angus Ramsay - 2020-12-08 10:16:45

Nice article Lukasz! It is often asked which is most efficient to use lower or higher-order elements. It can be shown relatively simply that the rate of convergence is higher for the higher-order element and, therefore, it is likely to reach an acceptable level of engineering accuracy at a lower expense in terms of degrees of freedoms. The following article shows this for p-type equilibrium finite elements but the same applies to displacement elements:


Best regards,


Łukasz Skotny Ph.D. - 2020-12-09 07:55:11

Hey Angus!

Thank you for sharing that! It's funny, as it seems we have different experiences, but I guess this is because I have a tendency to "like" small mesh, and I should not allow "bigger than looks good" higher-order elements :P

I will definitely read your document - I really enjoy your work :)

All the best!

Thomas Rau - 2020-12-17 08:35:41

Hi Angus,

Sadly it is not as simple as that. Having read your article your it seems to me that you are aware of that.

You can only make use of higher order elements if your solution behave locally nicely.
We mathematicians say: "The solution must locally be smooth enough"
I think a rule of thumb would be: If inside a cell there is no stress concentration or even singularity, higher order elements are more efficient, else a h-refinement strategy seems the better choice.

Therefore I agree with you: A mixture, a so called hp-refinement strategy would be optimal.

By the way, there is a branch in numerical math which proves that hp-refinement elements are optimal in therms of DoFs. But such algorithms come with higher computational costs per DoF (and also much more complicated coding). I don't know if that trade of is worth it.
I'd love to hear your opinions on about that question.

Kind regards,

Łukasz Skotny Ph.D. - 2020-12-18 11:02:38

Hey Thomas!

This is a beautifully complex thing, isn't it :)

I also think that as for refinement strategies, it's also worth mentioning what is available. I mean, in Femap if I would want to go "higher-order" I can switch to "quadratic" elements... and that is it. There is no possibility to go further which strongly limits the usability of such an approach. The algorithm you mention, while for sure a cool thing, if completely unavailable for me (unless I code it myself I guess), so this is also a problem.

But conclusions for such discussions are always interesting, regardless if you can adopt those in your work or not!

All the best, and thank you for sharing your thoughts!

Jesus - 2020-12-06 11:41:56

Great article. As for which one Q4 vs Q8, since FEA is node based in terms of DOF, shouldn't you compare a Q8 with 50elems to a Q4 with 100elems; i.e. same number of nodes? I think that'd be more like to like, rather than number of elements.

Łukasz Skotny Ph.D. - 2020-12-06 19:13:13


To be precise I should be comparing the DoF (Degrees of Freedom). Both element count and node count isn't the optimal comparison, although in the end convergence is as it is. It's more about computing time vs. accuracy really (and DoF would be the best predictor), but I admit I got used to element count, and this is how I do my comparisons :)

All the best!

Guilherme - 2020-11-30 13:11:19

Hi, Thomas and Lukasz!

Yes, that was the point, Thomas! Just now I realized that it would be really better if I had mentioned the distribution of displacement, not the shape ;D.

Thank you both for answering my questions. This blog gathers great contents and discutions.

And, Lukasz, is there any post about which parameter is better to use in evaluation convergence? Does it depend on the problem or do you always consider deformation convergence not the best way?

Best regards,

Guilherme de Paula

Łukasz Skotny Ph.D. - 2020-12-01 15:09:17


No worries Mate! We all have vocabulary problems - I know I had when I started blogging. Since we learn from books written by scientists we are so used to the "proper complex language" :)
I think that part of the popularity of my blog is the fact that I don't use such language anymore :P

I have never written such an article, but I also must admit that I'm using the default settings of convergence. I've heard once from a guy I really respect: "Łukasz, since I know you don't have a PhD in mathematics... never touch those!" :)

All the best!

Thomas - 2020-11-19 14:35:59

Hi Guilherme,

Regarding your second question: Yes, you are right. If your interested in the displacements outputs, Q8-Elements can only recover piecewise quadratic displacements exactly. Since the analytic displacement is cubic, it can only be approximated by Q8-Elements. By adding more elements, you reduce the approximation error until one point, you can't measure any improvements and there you can say, your numerical solution has converged.

Kind regards,


Łukasz Skotny Ph.D. - 2020-11-20 15:31:25

Thank you Thomas for help!

Thanks to your answer I understood the question :P This is about the fact that the quadratic elements (I mean Q8, not the shape) can calculate precisely only the quadratic distribution of displacement and they are "blind" to the cubic portion right? I guess I got "lost" in this question a bit! Thank you for awesome clarification!

All the best!

Guilherme - 2020-08-12 16:52:23

Hey, Lukasz!

Firstly, let me congrat you for your posts. They really turns the scary FEA world into an intuitive way. Your job is making FEA more interesting for me. Your illustrations are so cool too.

After reading this post, I still have two doubts:

1) I heard once that we need to study mesh convergence only in linear static analysis. Does this make sense for you? Admitting nonlinear approaches, could results converge for diferent meshes than that encountered for linear approaches?

2) Along the post, in "Mesh convergence: Take 2", the mesh converged for results in terms of tension using a single element Q8, right? In this case, the function form of tension along the element is linear, ok. But if you used displacements outputs, the funcion form would be different of the analytical one (quadratic vs cubic, respectively), wouldn't it? In this case, would it be needed to add more elements in that same model to say the mesh reached convergence?

Best regards!

Łukasz Skotny Ph.D. - 2020-08-14 07:18:26

Thank you Guilherme!

I'm really glad that you like my work :)

As to your questions:

1. Yes, in nonlinear tasks mesh can converge faster. But this doesn't mean that you can "ignore" mesh convergence in nonlinear problems - that is not true. You still need to do it!

2. Yes, a single Q8 element converged for the stress. As to the rest of your question, this is where I start to "slide" with my answer. I'm not sure about the match behind it, and truthfully, the easiest way to for me to test that... would be to make such a simple plate and check how deformations converge (to me, deformation convergence isn't the biggest issue) - that would give you an ultimate answer - regardless of how math works. Or... ask someone who knows more about the math and all that - they will most likely know the answer intuitively...

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