#### Interaction of Nonlinearities in FEA

At the University I was taught to first check the plastic capacity of the cross-sections. Then I was taught to…

24 October 202213 minutes read

There are various reasons why you may want to use GAP elements to simulate contact problems. Some solvers simply do not support “typical” contact in nonlinear analysis (while still supporting GAP elements), but also GAP elements seem to converge better in certain problems.

**You can’t define contact with GAP elements without defining their rigidity. Since GAPs represent “contact” it’s not obvious what value to use. This rigidity will depend on the material of the elements in contact… and also on the mesh size! Here, I will show you precisely how to calculate it for your case!**

This is a short technical article, so I won’t discuss when and why using GAPs make sense – let’s dive straight into the problem!

I will use an endplate connection to discuss the steps of the procedure using some tangible values. Let’s use a connection that looks like this:

Of course, in FEA, we want to model everything with 2D plates (in the middle of each plate, so in “midsurface”), so our model would look like this:

Normally, you would simply select both plates that will touch each other, and define the contact condition between them. But here, we want to use GAP elements.

This effectively means, that both plates in contact, need to have the same mesh, and from each node on one plate, to each corresponding node on another plate we will define a GAP element that only transfers compression:

This is a very simple idea really. Since each GAP element only transfers compression, if the plates in a given region will really press one against the other – there will be compressions in the GAP elements!

If the plates would like to “come apart”, GAP elements would be in tension, and since they don’t transfer it, they won’t resist this either!

This is why using GAP elements actually works! Realistically, the only drawback here is, that you need to pay attention to meshing, as you need an identical mesh on both parts for this to work!

There is only one problem – the GAP element definition requires a rigidity of the GAP to be provided. So we need it, to make the model work!

Let me start with a devious question! When you use a “real contact” (not with GAPs, but just by defining contact property) – what is the rigidity of that?

Nobody really asks this question, since it’s not required to provide such input in the contact definition. But clearly, we are aiming to provide GAP rigidity that will nicely represent the contact “rigidity”.

Let’s see a closeup of our plates in contact, firstly in reality:

I think it’s very important to understand, that the above is a big simplification. It assumes, that the pressure is applied evenly on both plates “from the outside”.

Usually, the stress is not “perfectly evenly” distributed in the entire surface of contact. In our case, there will be way more stress near flanges and the web, and very little “far away” from those elements.

But let’s assume that we are ok with such simplification to move on!

If we would think about this under the applied load, the plates will deform “a bit”. It’s actually quite easy to calculate how much this “bit” really is!

We want to calculate “linear rigidity”. This means, that the deformation will depend on the contact pressure in a linear way. If this is the case it doesn’t really matter how big the contact pressure we will assume. So just for the sake of simplicity, let’s assume 100MPa.

Now, we can treat our plates, as a “beam” under compression. The length of the “beam” is the sum of plate thicknesses (t_{1} + t_{2} in the figure above). We don’t really know what is the cross-section of our beam… but it won’t matter!

Elastic shortening of a beam under load can be calculated as:

It’s actually quite easy to realize, that when you divide the Force by cross-section Area (F/A above) you get the compression stress. And we already have it – we assumed that the contact stress will be 100MPa!

Things start to be simple now: Assuming that we have two 20mm plates in contact (so “length” is L = 2 x 20mm = 40mm = 0.04m) made of steel (E = 210GPa) the shortening would be:

This means, that if you press two 20mm plates against each other with 100MPa of stress, you get 0.019mm of shortening of those (through their thickness).

This in turn means, that the rigidity of such contact is:

Physical interpretation of this rigidity is:

It would take 5.26 *10^{3} MPa of stress to “push” those plates into each other for 1mm.

While 1mm may seem like a lot, using this parameter you may calculate how much those plates would “crush” into one another under other stress values.

The above would be the “real” contact rigidity, under the conditions we described at the begining.

If you would model such a connection with 3D HEX elements, what we just calculated would simply work. Unless you are expecting crazily high contact stresses that would go beyond yield, but let’s not go there!

In reality, such models are very often simplified to 2D geometry with QUAD elements (and for good reason!).

So let’s take a look at what the situation looks like in a connection that uses 2D plate elements, and GAPs. Of course, we will look at this with a rather big close-up:

First of all, in the 2D model, we would represent our plates with QUAD elements in the midsurfaces of the actual plates. And this means that those plates do not touch each other in the model.

There is a distance between those plate midsurfaces, equal to t_{1}/2 + t_{2}/2. This distance is filled with GAP elements. And those GAPs will represent the “contact rigidity”.

This is where the mesh size comes into play! But firstly, let’s take a look at an even bigger close-up:

Note, that we will connect each node on both plates with a single GAP element. Above, I only marked the “middle” one not to obscure the view.

I assumed that we are using QUAD4 elements (with 4 nodes). Each GAP element has an area “associated” with it. I marked this area in blue, and in this case, it will be more or less equal to an area of a single QUAD element.

And this is important since we already know what is the rigidity of our contract! As we calculated before it’s 5.26*10^{3} MPa/mm.

However, GAP needs rigidity in kN/m since it’s a linear element. And since we know the area “associated” with each GAP element, it’s easy to calculate it!

For the sake of the example, let’s say, that we have QUAD4 elements that are 10x10mm. This means that:

And this is the GAP rigidity you should use in our case!

Of course, now, as you understand this all, there is a simpler formula you could use!

Since the rigidity is force divided by shortening caused by this force, we can write:

This is how you can estimate the GAP rigidity, and of course, you can average the element area. If this is what you were searching for then this is it!

But I feel that we have to discuss a few more things!

I think that to start to dissect this a bit more, we should look at how the same problem is solved if our 2D mesh model actually uses contact!

This time, the close-up would look like this:

Two things we should observe here:

**2D plates do not deform through thickness!**Notice, that the deformation of contact in the “real” case, came from the fact, that the plates were pushed one into the other, and got “thinner” in the process. Such an effect simply can’t happen in 2D elements!

- There are no elements between plates!

The above means one thing! If the plates themselves won’t deform, and there are no “elements” between midsurfaces. This means that unless we can define something in the contact itself, it will act as “infinitely rigid”.

To change that, we could for instance set contact compliance. It would allow those 2 plates to be pushed one into the other. This would achieve what we want – a certain “give” in the contact rigidity, that we could control.

However, it has to be said, that contact compliance is usually seen as a tool that is used not to make the contact “more realistic”, but rather to help with convergence.

And this is where we have to wonder… does this all make sense?

I think this is a very important question we should ask!

When we define a “real contact” in models, we don’t really think how “rigid” it would be. In many cases, we would treat this setup as a tool to help with convergence, not to increase accuracy.

I’m willing to guess that in most solvers compliance is set to zero as “default”, so if we won’t tweak it… contact will act as infinitely rigid by default. And often, this is completely fine!

**Why is that?**

So far, I’ve shown you the contact modeling in our connection in a huge close-up. Now it’s time to take a step back!

Note, that under the applied load, the endplates themselves will deform.

And the deformations of the model “around” the place where the contact happens are a LOT bigger, than the contact deformation itself.

Sure, the plates will push one into another “a tiny bit”. But this amount is insignificant compared to how much both plates will deform under load in bending!

This means, that if we would treat the contact as “rigid”, we are not making a big mistake. In fact, I wouldn’t call this a mistake at all!

We could simply use the infinitely right GAPs here, and be completely fine. **But it’s not so easy to figure out how big a number is “infinitely big”. **We don’t want it to be “too big”, and at the same time it should not be “too small”. After all, we don’t want to “overshoot this” by several digits in either direction!

So, while the actual value may not be that important, having the order of magnitude right is important. And I feel that this guide nicely shows you, how to calculate it!

This is another important question!

**First of all, we need to have a value! We need to provide it, to make the GAP element work.** So it’s not like you can ignore this altogether.

But at the same time oftentimes a “generic value” with a correct order of magnitude is enough, you don’t have to differentiate this for every connection you may have.

But there are situations where you really want to pay attention to this:

**Contact of a rigid element to a softer element:**

Imagine, that you have an I-section standing on a concrete foundation, and you want to model that support:

If you want to use GAP elements for this, you will simply attach them to the bottom flange, and support them on the other side (to represent the supporting effect of the foundation):

If you would assume super-rigid GAP elements here… all the reaction force would go to the middle one (I marked it in green!).

The bottom flange would have to deform a bit to transfer the load to the blue GAPs. For that to happen, the green GAP would have to “give in” a little bit.

This would not happen if the rigidity of the green GAP would be insanely high!

But you could use the formula I just showed you here. Just imagine that the ground below the foundation is not moving at all (this is conservative in such a case!). Then, each GAP would represent a “column” of concrete!

The length of the beam is of course the foundation depth. The cross-section is the size of the QUAD4 element, just like before. And you should know Young’s Modulus of concrete!

Using those together would allow you to calculate a semi-realistic rigidity of each GAP. And the difference in stress distribution will be there!

This is really important in this case, as you don’t want to exceed the maximum allowed contact stress for concrete! It would be quite easy to get too high values with unrealistically rigid GAPs!

**Contact through something elastic:**

This is another fun one!

I once had to calculate a vessel that had rubber seals in the end-plate connections. It was a rather big and sophisticated model.

I just couldn’t place a 3D HEX hyperelastic pad in every joint… that would never compute. So with some time, I did smaller models to estimate the rubber rigidity.

Knowing the rigidity, I translated it into GAP rigidity that I used in my main model. This way, I was able to solve the problem, which would be pretty difficult to tackle otherwise!

**You need to prove your assumptions:**

This is a tricky one! If you feel that someone will really check your work, will like to know how you did things, and ask about every parameter you use – this would be awesome!

Not many people would think to worry about this rigidity, and if you would demonstrate that you did consider it, and calculate it as needed. Well, you can definitely score some easy points this way!

In this post, you’ve learned how to estimate the GAP rigidity you may want to use as a contact or support.

A few things worth remembering:

**Calculating GAP rigidity is not that bad!**All you need to know is the average size of the area “associated” with each GAP. With QUAD4 elements, that will be an area of a single QUAD element. The rest is simple: Length is the thickness through which the contact is “traveling” (i.e. twice the plate thickness, or foundation depth) and you should know Young’s Modulus. The rigidity is A * E / L

**This is of course a simplification.**But realistically speaking you shouldn’t need a more accurate estimate. In my experience, all you need is to get the order of magnitude of the rigidity correctly. That will be enough for your analysis accuracy!

**You don’t have to calculate it all the time!**It has to be said, that in many cases, this rigidity won’t play a significant role. Mostly, because the elements in contact will deform a lot under load. And compared to that, contact rigidity will be negligible.

**But there are situations where this can really save your life!**Contact of something rigid to something less rigid, contact through elastic pads, and other “softer elements” you can’t model, or even ability to prove that you thought about it. You will encounter those things in your models from time to time. And then, this method will really help you out!

I really hope that you’ve enjoyed this post. Don’t forget to sign up for my Free FEA training below, if you haven’t already!

##### Categories:

- Nonlinear FEA
- Meshing

10 Lessons I’ve Learned in 10 Years!

10 Lessons I’ve learned in 10 Years!

## Share

## Join the discussion