Mesh size is one of the most common problems in FEA. There is a fine line here: bigger elements give bad results, but smaller elements make computing so long you don’t get the results at all. You never really know where exactly is your mesh size on this scale. Learn how to choose the correct size of mesh and estimate at which mesh size accuracy of the solution is acceptable.

As an example, I will use a simple discretely supported shell. As an “outcome” I will use the critical load multiplier of the first eigenvalue.

It’s perhaps worth mentioning that the “outcome” can be anything that interests you. If you want to know the certain stress component in a certain node, or a displacement of selected DOF that is ok. Whatever you choose goes, as long as it is actually influenced by the mesh size! I took the multiplier simply as it is easy to obtain, and linear buckling computes very fast 🙂

**Choose a correct mesh size**

You can see the model I used below. Notice how deformation shape and outcomes changes with the mesh refinement. I should write that mesh refinement check (often called mesh convergence) should be made for each problem. This is somewhat true but let’s face it, you won’t make it for each problem most likely… it simply takes a lot of time! I would suggest you do such a study for some of the most important projects/parts and based on that experience you can extrapolate the knowledge to similar problems.

In this example, I am using QUAD4 elements (normal 4 node quadrilateral elements, sometimes referred to as “S4”).

In order to establish suitable finite element size:

- Perform chosen analysis for several different mesh sizes.
- Notice where high deformations or high stresses occur, perhaps it is worth to refine mesh in those regions.
- Collect data from analysis of each mesh: outcome, number of nodes in the model, computing time

For our shell, I have performed some analysis for different element sizes. On the drawing above you can see the outcome for few selected meshes. Please notice, that for biggest elements actual *eigenvalue shape* is different than in the case of models with more refined mesh.

**What mesh size is “small enough”**

Usually smaller mesh means more accurate results, but the computing time gets significant as well.

You should search for a balance between computing time and accuracy. In some instances you can increase computing time over 2 times to improve accuracy by 1% – for me, that seems unreasonable. Knowing your problem you will know best what makes sense and what doesn’t, based on what accuracy do you need.

When mesh density is being discussed in tutorials, different problems are solved with known analytical solution. You can then easily compare the FEA outcome to a known solution – you get an error value without trouble. This is a fantastic approach that can teach you a lot, but unfortunately in reality you don’t know the correct answer… so you can’t really do that can you?

Unfortunately in almost all analysis performed for commercial or scientific purposes the solution of the problem is unknown. In those cases the “typical” approach doesn’t work. Instead, you will have to “guess” the correct answer basing on the models with different meshes you have done. This is done with the following chart:

Reduction of finite element size leads to more elements, which in turn leads to more nodes in the model. If we build a chart showing the outcome (in this case *first eigenvalue*) dependence on node count in the model, this chart will be asymptotically reaching for the correct answer (in this case 0.6947). Node count is only one of the parameters possible here. Since I simply decreased the element size in the entire model it made sense. You can just as easily use a number of elements on the width of your part, or size of the “typical” element. If you refine mesh only in a small area (i.e. where the stress concentration is) you can easily use a node count in that area instead of entire model etc.

Whatever metric you will use, will depend on the problem you are solving. Node count is the most popular one, simply since it is the easiest one to do 🙂

**Make it a bit easier**

Exact estimation of asymptotic value on the chart above may be problematic or time-consuming. There is a simple trick to make things easier to calculate: instead of node count on horizontal axis let us use 1 / node count. This way the correct answer will be where the horizontal axis value reaches 0. This means that if we approximate our curve with the equation (in most cases linear approximation is sufficient, Excel does this automatically) it is very easy to calculate “y” value for x = 0.

Note that the obtained curve is almost linear which is usually the case in most models. From the equation provided by Excel, it is easy to derive the correct answer when x = 0. At this stage, since we know the correct answer, we can calculate how big errors were made in the estimation of result for each finite element size. Below is a chart showing dependence between error and computing time, and between error and finite element size:

From the above chart it is easy to notice that after a certain point, any significant increase in accuracy will “cost” enormous additional computing time. When I am asked to do a convergence check on mesh refinement those 2 charts are the real answer (you can easily change the mesh element size with node count if you like). Now you know the errors each mesh size gives and computing time it costs 🙂

As you can see, there are plenty of cool tricks you can do while meshing! Want to learn more? Definitely check my **Meshing Online Course**!

**Making the choice and sanity check**

Now you know how accurate results you will get with given mesh, and how much time computing will take with such an approach. Making a decision is always problematic. I usually think about how sure I am about loads or boundary conditions – usually, those are just “estimated” and then increased “just to be sure”. When that is a case a mistake of a few percents won’t do any harm.

Time is also a factor to consider here. If you have 100 similar models to calculate increasing computing time 2 times will take A LOT of time… just something to consider.

Notice that this chart is asymptomatically reaching 0%… if you have made all the steps, described here, and your chart does not go toward 0 chances are you used too big elements. Just know that if you are not sure it is wise to make one model with “extremely” small elements – you know… just in case.

**How to speed things up?**

When you first do mesh convergence you will realize, that to have a great accuracy computing time will be significant. That is true, but you are not defenseless. Look at the similar shell below. Coarse mesh gives bad results for sure, but the very fine mesh takes a lot of time to compute. Knowing that the stability failure occurs at the bottom I have made a third model (on the right) that has a very fine mesh where it is important, and coarse mesh where “nothing happens”.

This way I go the accurate outcome without incredible long computing time. Of course, there are limits, since you cannot be sure where failure will occur, etc. in some problems. Regardless it is always a good idea to make a coarse mesh, check when things will go south, and then refine the mesh in those “hot regions” rather than on the entire model. This does not work in all cases, but it works in some 🙂

**To sum this up**

- The too coarse mesh can lead to results with very big errors
- Mesh density analysis helps in the decision how refined mesh should be used in the analysis in order to obtain results with satisfactory accuracy
- Reducing element sizes in places where big deformations/stresses/instabilities take place, allow for greatly increased accuracy without great expense in computing time

**Free FEA course!**

This is one of the topics I teach on my: **free FEA essentials course.** 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 🙂

praveenDecember 6, 2017 at 9:54 amhi, it is bit difficult to understand of ” make it bit easier “. i didn’t understand what you written so please say easier to me sir .

Łukasz SkotnyDecember 6, 2017 at 10:04 amHey Praveen!

I’m sorry to hear that it is too difficult for you. It’s hard for me to describe it simpler in a post format 🙁

I’m not sure how to help you – could you perhaps ask a specific question?

All the best

Ł

Sandeep RaminiJanuary 26, 2018 at 9:32 amCan you please explain about Critical Load Multiplier and why are we using it here? I am unfamiliar with it! Thanks.

Łukasz SkotnyJanuary 26, 2018 at 11:31 amHey Sandeep,

I think you should read those:

https://enterfea.com/linear-buckling-explained/

https://enterfea.com/load-multiplier-basics/

If you will have any more questions be sure to let me know 🙂

All the best

Ł

اخبارFebruary 19, 2018 at 4:44 amWay cool! Some very valid points! I appreciate you penning this write-up and

the rest of the website is extremely good.

Łukasz SkotnyFebruary 19, 2018 at 5:00 amHey!

Thank you for the kind words! I’m really glad that you like it!

All the best!

Ł

AshishSeptember 5, 2020 at 8:39 amCan you explain how to boundary conditions to curved panel?

Łukasz SkotnySeptember 5, 2020 at 5:02 pmI think that there is a video where I do a similar shell on youtube – you can find it on my channel (one of the first videos most likely). I hope that it will help you!

BTW from memory:

Vertical edges have symmetry BC

Both top and bottom are restrained in the radial direction

Support width at the bottom also has supported vertical and circumferential direction blocked

I THINK this was the BC – but it was a long time ago, so maybe I’m off a bit…

All the best

Ł

Anuj somMarch 22, 2018 at 5:12 amHow can we do accurate mashing? What should be the steps for this? Can you provide me the best tutorial for ansys software?

Łukasz SkotnyMarch 22, 2018 at 7:50 amHey!

Tutorials will be of course case dependent. If you are interested you can check my examples library here:

https://enterfea.com/examples/

Especially the lantern example has around 1h of meshing tutorial inside.

But… everything is done in Femap, and I have no experience in Ansys so I won’t be able to help you with “clicking” – only the “how to and why” will be useful to you (luckily I believe this is the most important thing, so I had the audacity to propose the examples).

All the best

Ł

Alex AraujoApril 8, 2018 at 9:31 pmDear Lukasz,

my name Alex. Actually, I´m doing some examples to obtain a mesh size and estimate the error related to this mesh size. This is awesome…On your example, you calculate the same model with different mesh size on Linear Buckling Analysis…Whats the strategy for other analysis… in the model with singularities I don’t have a correct result(the infinite maybe)…How manage this issue? Nonlinear approach?

Łukasz SkotnyApril 9, 2018 at 4:08 amHey Alex!

I’m really glad that you find this useful!

Stress singularities are a pain – read this for my thoughts on the subject: https://enterfea.com/stress-singularity-an-honest-discussion/

All the best mate and good luck!

Ł

BRAINJuly 21, 2018 at 11:37 amHi Lukasz, thanks for the explanation. I find it useful. However, I would like to know how the error “values” were obtained in order to plot the curve/chart. Thank you.

Łukasz SkotnyJuly 21, 2018 at 11:59 amHey Brian!

Thanks for the question! I extrapolated the line for the answer I’m willing to call the correct one (0.6947). Knowing the “correct” answer, and the answer for a given mesh I could calculate the percent error. Does this make sense to you? I’m not sure if I understand your question properly.

Have a great day Mate!

Ł

BrianJuly 23, 2018 at 6:42 amHi Lukasz, thanks for the kind response. I understand the concept of extrapolation to obtain the “near correct answer”. My misunderstanding is how to obtain the “correct answer” for a given mesh size. I would appreciate your explanation, please. Thank you!

Łukasz SkotnyJuly 23, 2018 at 8:00 amHey Brian,

I’m not sure if I understand what do you mean by “correct answer for a given mesh”. If you have a mesh it will produce an answer… there is kind of “one” answer for a given mesh… so not much to choose from. It’s the most and the least correct answer at the same time (since it is only one).

I feel that there is something deeper in your question, but I can’t grasp it I think. Do you mean stuff like stress averaging or something?

All the best

Ł

BrianJuly 27, 2018 at 10:37 amThank you very much, Lukasz

Łukasz SkotnyJuly 27, 2018 at 11:07 amSure Mate!

BrianAugust 6, 2018 at 8:44 pmHi Lukasz,

I’ve read through your guide again, carefully and I understand mesh convergence study better now.

Thank you once more!

Łukasz SkotnyAugust 7, 2018 at 4:27 amSure 🙂

KamalAugust 2, 2018 at 6:36 amHi, this is kamal. I have a doubt that whether we can edit the mesh size in 3d means can we give the length width and depth. If we know the proper size of mesh can we do the exact meshing?

Łukasz SkotnyAugust 2, 2018 at 9:45 amHey Kamal!

I’m not sure if I understand your question… If you have a 3D part and you want to do a mesh refinement you should change all 3 dimensions so that cubic elements are… still cubic. You may be interested in learning about the aspect ratio. There are of course ways to change all dimensions of FEA elements, but those differ from software to software.

Was this helpful?

All the best

Ł

KrishnaJanuary 30, 2019 at 9:36 pmThanks for the tutorial. It helped me a lot.

but i got one doubt, once the mesh is converged, how to determine from which element size onwards the mess started converging.

Is there rule that the number of nodes(present element size) should be more than double than the number of nodes of previous element size.

Łukasz SkotnyFebruary 1, 2019 at 3:29 pmHey!

I would say it’s only dependent on the error you are willing to accept. If you get a 98% accuracy with 100k elements that compute 5 hours and 96% accuracy with 40k elements that compute for 1 hour… it’s your call what are you willing to accept. In my opinion, it is always accuracy versus computing time 🙂

Hope this helps!

Ł

Calvin TanMarch 25, 2019 at 5:30 pmHi,

I am doing a balloon expanded stent for my bachalor thesis at NUS. I am doing my mesh convergence now. However the problem I am facing is that when I reduce my element size, my solutions stop converging and the job fails. So how can I solve this problem?

Łukasz SkotnyMarch 25, 2019 at 5:56 pmHey Calvin!

That is an interesting problem – I haven’t encountered this before

Just to be certain – this is the same task, all BC is identical etc? Maybe with remeshing something went bad with node numbering and you should re-assigned supports? Some systems have such issues. Have you tried bigger mesh, or is solution converging only in one single instance?

It’s hard to help, as I’m not sure what are you doing and what type of analysis are you trying to perform – a description would help!

Does your solver plot how the iterations look like before the convergence fails? Femap does a chart – this would be helpful as well…

Good luck!

Ł

AliJune 18, 2019 at 10:11 amHi Lukas

I am working on a problem that needs the result of elastic stresses as an input. I must obtain elastic solution which underestimate the stresses. in this case by using 8-node quadrilateral elements, is it true to say that coarse meshes comparing to fine meshes, underestimate the results?

or which mesh can cause to get the lower bound of the exact elastic solution?

I would appreciate your explanation. Thank you!

Łukasz SkotnyJune 18, 2019 at 8:13 pmAli, I’m rather afraid to give you a “generic answer”. You know, stuff is usually case-specific (or at least I think it can be), and I don’t want to give any misleading information… after all, we are doing here pretty responsible jobs!

I’m not sure if I get you right… why would you have to provide a “too small stress” (this is what underestimate means right?). I would guess that a “reasonable overestimation” would be a better bet. What kind of analysis are you doing really? If you need too small stress… take 0, you will be correct I guess 🙂

Please, treat what I will write here carefully, and it’s best if you would do a mesh convergence check of your model. However, my experience is, that smaller elements provide higher local stresses. This is mostly because they average stress (ok, it’s more complicated but let’s roll with that!) on a smaller area, so higher local stresses don’t get “diluted”.

This is why smaller mesh is usually considered to be more accurate, but of course, you can go overboard with this approach and accuracy of calculations and rounding up starts to be a problem at some level (I guess I never reached it…).

But again, I’m not sure what you are doing that you need a lower bound estimation…

Cheers

Ł

AliJune 19, 2019 at 6:01 amthanks for your response. I describe my problem with a simple example ( I hope it works)

I have a plate that is under repeated load in two direction. the material is elastic plastic . The behaviour of a structure under repeated loads depends on the intensity or amplitude of the load and can vary from elastic to non-restricted plastic flow behaviour. I want to find a critical load limit below which the plate becomes stable under repeated loading and behaves elastically. one approach is modeling this plate in a general FEM software, the alternative solution is a numerical analysis. This alternative method is based on two theorems of lower bound and upper bound . In this alternative solution, we must first find an elastic solution, then this elastic solution should be used in a mathematical programing and optimized to find the bounds of this limit load.

for some theoretical reasons this elastic solution must underestimate the exact value of elastic stresses, if one wants to find the upper bound of this limit load . this elastic stresses can not be chosen as zero. in the other side, if one wants to find the lower bound of this limit load, the elastic solution must overestimate the exact value of the exact elastic stresses .

My main problem is finding the elastic stresses that their value are less than the exact one. I thought that if I chose a coarse mesh and run elastic analysis, I would underestimate the exact value of elastic stresses. but with regard to your response it seems that it is not a correct procedure. am I true?

and Finlay, I mean by using the word underestimate to say that the stresses lower than exact ones not too small stresses i.e zero.

once again, I appreciate your time and effort to answer my questions.

Regards

Łukasz SkotnyJune 19, 2019 at 5:52 pmHey Ali!

Wow – you must be doing something pretty cool – I don’t recall I ever heard about a procedure like that 🙂

But since we already establish I have no idea what you are doing, let me get on my “expert podium” and give you a few bits of advice 😛

Seriously though… coarse mesh in general shows too low stresses, that is true. But this assumes that mesh quality is ok and all… if you have a “weird mesh” with low quality, outcomes on occasion can literally be out of space!

That being said (and me being pragmatic)… why don’t you use a “good mesh” and reduce the outcomes by 10% to get a lower bound or whatever… which leads to an interesting problem – who decides “how much” lower bound solution do you need to acquire? Let’s say the “correct answer” is 100MPa. I assume that if you use the procedure and input 80MPa and 90MPa the outcomes you will receive will differ right? If that is the case who desides if it should be 80 or 90MPa, since they are both lower bound solution, and a reasonable one I assume.

I get a feeling I seriously not understand what are you doing 🙂

All the best, and good luck!

Ł

MihdíJuly 5, 2019 at 6:12 pmGreat post Łukasz!

All the best,

Mihdí.

Łukasz SkotnyJuly 6, 2019 at 3:55 pmThanks Mihdi!

I really appreciate this 🙂

All the best

Ł

Seung LeeSeptember 2, 2019 at 12:14 pmThere is a simple trick to make things easier to calculate: instead of node count on horizontal axis let us use 1 / node count.

Nice tip that I have never though! Thanks a lot

Łukasz SkotnySeptember 2, 2019 at 12:35 pmHey Seung!

Nice, I’m glad that you cound something useful here 🙂

All the best

Ł

Naveen GurrapuSeptember 3, 2019 at 11:19 amHi Lukas,

1. Are there any available software/tools for mesh tool estimator?

2. What is the lowest mesh size you have used in any of your electromagnetic problem?

3.I frequently encounter mesh error at/near the boundary conditions. Can you suggest how to mitigate it?

Łukasz SkotnySeptember 3, 2019 at 11:42 amHey Naveen!

1. Check this: https://5saa6uexu443lbp7.anvilapp.net/

2. I never solved a single electromagnetic problem. I think it’s best to ask Antti – you can find his blog here: https://www.anttilehikoinen.fi/blog/

3. This is a difficult and rather long topic. I don’t think I have a post about it, but maybe this will help you a little bit. There is a video with a case study at the end of the post: https://enterfea.com/what-are-different-boundary-conditions-in-fea/

All the best

Ł

DebeshSeptember 24, 2019 at 3:23 pmHi , how to choose the global mesh size for a thin and long component say 300 mm long and 3 mm thick?

Łukasz SkotnySeptember 24, 2019 at 5:23 pmHey Debesh!

This is an impossible question – there is way too little to give a robust answer! it would be great to know what are you trying to calculate, how the model looks like, what the loads are etc. Without such information, it will be super difficult to answer such a question specifically.

If this is 300mmx300mmx3mm plate loaded uniformly than use 2D mesh and perform a study I just described above (hard to guess exactly, but you can start at 30mmx30mm which will give you a 10×10 mesh grid, and reduce from there). Just assume several mesh sizes and see if the answers are constant if you reduce the mesh size… if it is, you are fine 🙂

All the best

Ł

EnesOctober 19, 2019 at 8:36 pmExcellent job man , just learning abaqus so it helped a lot.

Łukasz SkotnyOctober 21, 2019 at 6:52 amHey Enes!

I’m so glad that you like it! All the best!

Ł

RezaApril 27, 2020 at 4:41 amHi Lukasz

First of all, thank you very much for your explanations about refin mesh size.

Generally, I do mesh convergence based-on von Mises stresses at vertical axis versus mesh sizes at horizontal axis. In this approach, I start from bigger size of mesh to smaller size, then I read von Mises stress for each mesh size. Therefore when the stresses of von Mises in two different mesh sizes that are close to each other reach almost the same value, I will stop test for mesh convergence. Then I will consider that mesh size for analysis. However, may I know your idea about this method.

All the best

Łukasz SkotnyMay 4, 2020 at 2:09 pmHey Reza!

This is more or less what I do, but I draw a chart as you see in the post (so I see if the answers are converging).

What I do not understand is the “von Mises stress at the vertical direction”. von Mises stress is a scalar… it doesn’t have a direction. But of course, the method you mentioned is fine regardless. Unless of course, I did not understand something – in that case, please let me know!

All the best!

Ł

Nithin NayakAugust 31, 2020 at 7:44 amHey Lukasz,

What is the optimum value of the element quality(mesh metrics) in ansys workbench.

Thank You

Łukasz SkotnyAugust 31, 2020 at 8:21 amOh boy…

That is an impossible question Nithin! While there are some “rules” that I’ve developed, those come from us doing a LOT of similar problems… so in your case – just do a mesh convergence several times, and after a while, you will simply know how to mesh problems you are usually solving. But “from the outside” it will be super difficult for anyone to give you an answer – you will have to work it out yourself I’m afraid!

With my best wishes!

Ł

Alexis WilsonOctober 1, 2020 at 9:33 pmHi Lukasz,

What a fascinating read. I’d never seen that trick of inverting the number of nodes and using the trend line equation to extract a “correct” answer. I tried it out on a simple hook example (2D elements, static analysis), with “quick and dirty” mesh refinement and it raised a couple of questions

From the normal Nodes x stress graph, I get nice convergence graph so it looks like a nice direction. Initially, after 3 runs, the 1/nodes x stress graph was linear, with a “correct” value of 271MPa and R^2 of 0.99. However, after 5 runs the correct value was now 298 MPa but with the R^2 down to 0.942.

Because the 1/nodes curve was now looking more like an exponential, I changed the trend line to exp and the R^2 became 0.98 and correct value 304 MPa (which have an error of 0.88% on my second to last run).

Intuitively, changing the curve from linear to exponential seemed a bit of a risk, but again the normal nodes vs stress curve resemble a logarithmic, so the inverse being exponential doesn’t seem so farfetched. I’m just curious on your thoughts on this, and the implications as it were. The elements on my final run were very small and the stress had increased again to 323MPa so it could be a case of reaching a “too small” element size and the stress will keep increasing.

I must say, your site is very inspiring, I teach FEA at a University in the UK and it is so good to see quality content like yours,

Best Regards,

Łukasz SkotnyOctober 2, 2020 at 1:44 pmHey Alexis!

Thank you for writing 🙂

First of all, I’m really glad that you like my work 🙂

As to your question, this is a tricky thing. I’ve talked with Angus Ramsay about it a few years ago, and this method leaves something to be desired. You see, you should not assume that the mesh converges linearly, and I never claimed such a thing – that is the case in some situations of course, but not always the case. What I’m doing is, I’m calculating several meshes, and if I see that “toward the smaller elements” all the values are more or less in a single line, THAN I assume I can extrapolate it in a line. So if the chart is not a line, I would be very careful with this. The R^2 that I’m displaying is for me a measure of “yup, this seems like a reasonable assumption this time”. However, if you start with an ultra coarse mesh (which I never do) you would get a super crazy start of the chart – so be careful with that.

You can read a more recent meshing article I wrote here: https://enterfea.com/mesh-convergence/

Hope this helps, but if you have any followup questions – just let me know… maybe I will be able to help you out 🙂

All the best!

Ł

Alexis WilsonOctober 7, 2020 at 10:28 amHi Lukasz,

Thanks for your reply. I was mulling over it and came to the same conclusion, the starting mesh was perhaps too coarse to use with that method. You raise some very good points about the validity of the method, I still think it has its merits as you mention in the article in the absence an analytical solution or physical testing data. Like many things in FEA, it’s another tool to use with a critical thinking cap on 🙂

I’ve read your other article on the subject, another fascinating read!

Cheers,

Alexis

Łukasz SkotnyOctober 7, 2020 at 1:20 pmHey Alexis!

Thank you a lot for writing. Indeed this is not a perfect method, but it has some uses. The critical cap is always a good thing 🙂

All the best!

Ł

LouiseNovember 23, 2020 at 6:44 pmPlease Can you offer some advice on what to do when you can’t get the mesh to converge when using Abaqus?

Many thanks

Łukasz SkotnyNovember 24, 2020 at 8:24 amHey Louise!

In all honesty, this is a very general question, so without seeing your models and understanding what you are trying to do it’s very hard to give any advice apart from the “generic ones”.

So let’s go with those I guess:

1. I will assume here, that by “can’t get the mesh to converge” you mean that you did several analyses with various meshes and the answer does not converge (i.e. stress is getting higher and higher without any signs of “slowing down”. If that is the case – just to be sure, make a model with much smaller mesh and run it overnight (unless you are already at the 4-5h of computing level). Sometimes things get a bit more to converge, and initially, it seems as if it will never stop, but it eventually does! This is a good example, wherein the first few tries answer didn’t even look as if it will converge: https://enterfea.com/mesh-convergence/

2. If you do the above and it still doesn’t work (or maybe even before you do it) check if this is not a stress/boundary singularity. In such cases it will never converge, as the problem is with the model, not the mesh: https://enterfea.com/stress-singularity-an-honest-discussion/

3. If that is also not the case… maybe a different element formulation. But this is a “blind pick” – at this point, I simply know too little to add anything meaningful I guess.

I hope that this will help you, and good luck!

Ł