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!

Ł

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

Ł

Sai Kham LeDecember 5, 2019 at 4:09 amThank you for sharing your knowledge

Łukasz SkotnyDecember 5, 2019 at 7:13 amIt’s my pleasure Sai!

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!

Ł