Pin-hole contact

Hi
sorry for asking simple question but i am trying to simulate simple pin pressing on hole, assuming that surfaces are not glued but rather with pressure overclosure behavior.
at first i set up pin and hole with the same diameter but results were so often strange, so i created hole slightly bigger.

even then there are wrong results:


i was trying to tweak using linear surface behavior with low and high K and i still i was able to get high stresses eaven if no force applied
in contact setting i was using both adjust and no adjust space between surfaces

By the way i simulated contact on two simple surfaces and everything seemed ok

has anyone came across similar problem?
link to my simplified case:
https://www.dropbox.com/scl/fi/xg53mrh5hgmjcjsoul0sj/test.inp?rlkey=7llyn56te261a5i876djxtqe2&st=fhq8qz1m&dl=0

Best greetings
Andrzej

Try using linear / hexahedral elements. They can be generated in PrePoMax. There are also other ways to improve contact pressure distribution but mesh improvements should be the first step.

Are you doing an extra step to establish the contact between the pin and the hole?
Have you tried using a displacement instead of a force to press the pin into the hole?

1 Like

Than you for reply
Yes actually i was trying to use displacement once and results were just more impressively unrealistic.
By the way in my case actually using displacement is kind of useless because what i posted is the problematic part of just hinge; at first contact was dealing with momentum rather than force
its just i realised that solutions is mostly mixture of stress peaks on more or less random points on hole/shaft

By the way i am trying to do create some hex mesh but for now netgen i refusing to do so :smiley:

1 Like

Netgen won’t help with that. Gmsh can do it and it’s available in PrePoMax too - you can create extruded, revolved, swept and transfinite hex meshes.

2 Likes
1 Like

Thank you
i created some cases for more regular mesh from gmsh and let calculix think overnight and after that i finished simulation with no results:


https://www.dropbox.com/scl/fi/0ixs9qna92vdzsxwrx20y/SUMMARY-OF-C0NVERGENCE-INFORMATION.txt?rlkey=duz13znc1l5hzhtk03423mwk1&st=r2d52igo&dl=0
https://www.dropbox.com/scl/fi/hg9jjya5hggm5lzy9h7vg/output.txt?rlkey=ppzuwrrqnvliphwzz9075v064&st=e1hs36uc&dl=0

Also i noticed that simulation takes all available RAM (16GB) - quite much as for about 43200 elements

additionally i created some simulation which are kind of similar :

hard contact with friction on plain surface (nlgeom on):
Total CalculiX Time: 12.298199

tied constraint on pin-hole with no gap between them (nlgeom off because it took too long :smiling_face_with_tear: ) :
Total CalculiX Time: 1864.853224

soo i looked at this tutorial for mecway and as far as my case is slightly different (i do not have press fit) i am doing kind of similar. Except that there was suggestion to use nonlinear simulation which takes too long for me.

additionally i was unable to reproduce but during looking for solution i came across oscilation error (and when i read convergence history of too long simulation, it looks like convergence value is oscilating)
For me it looks like plain faces are ok but circular (closed) ones might be a problem :face_with_monocle:

By the way i indeed am using prepomax and strange thing is that it can somewhat crash, than i am clearing up temps and re-unpack folder with software and it usually overcomes problem. But it might be unrelated.

and finally with tied constraint i was able to calculate with nlgeom on:
Total CalculiX Time: 1691.285906


(looks quite similar)
but tied constraint is wrong because it does not allow for separation
and i have red that contact is more grid independent

One solution that I found for such problems is restricting the contact pairs to the parts of the surface that will likely be in contact.

Below is the mesh of a steel tenon in a mortise (which is fixed).
The red nodes are a rigid body constraint where a downward force and moment is applied.
The contact pairs are colored.

The resulting stress is shown below.
The stress concentrations at the free end of the tenon are caused by the rigid body load and can be ignored.

This was a nonlinear calculation using 22565 nodes and 4608 elements.
It took around 92 seconds to finish.

I totally agree with this, algorithm is not reliable enough to auto-detect contact in very complex problems without creating convergence issues, so start restricting contact possibilities is always a way to go forward.
Also, the simpler the surface selected for contact the better the stress distribution, so avoiding surfaces made of several pieces is always better. If one believes may be wrong when selecting contact areas then increase the contact possibilities gradually until convergence issues appear. For example this thread: Contact pressure on hyperelastic material - #34 by JuanP74

1 Like

@pl96andy
I’m not sure if I fully have understood the problem so I just gave it a try, please explain if I’m wrong

I put a steel disk with an oversize of 1 mm into a hole in an aluminum plate with the following contact card
*Surface interaction, Name=pressfit
*Surface behavior, Pressure-overclosure=Linear
3450000, 2.86
*Contact pair, Interaction=pressfit, Type=Surface to surface
master, slave

all the elements are C3D20 and CCX gave this stress image as result for the press fit only


afterward the disk also was loaded with a movement of 2 mm in X-direction which gave this result. The movement of the disk is provided by a cross-section xz-plane in the middle of the disk so stresses in the disk are not fully true since the xz-plane of the disk is consided totally rigid. The movement should have been attached to the center axis of the disk instead.

CCX data files can be found here

Thank you
the best thing is that your input file works for me
however i have slightly different case - mu shaft(pin) has the same diameter as hole (with loose fit)
and this pin is pressed into side of hole with some force/momentum and displacement for me is rather solution than input
i tried to copy setup for my case but this not helps…
something came to my mind - what if pin somehow gets int oscilation in direction perpedicular to force? it might explain things.

hmm in my case it is just shaft-hole contact - it is supposed to be basic :face_with_diagonal_mouth:
and i tried to use half of contact surface (second half should be separated) and it did not helped
reduction of nodes in contact is supposed to decrease computational costs ore something else?
because just in case i am letting computer think way too long
maybe i should run kind of explicit simulation to know what happens during convergence?

Your loads look kind of strange isn’t it. Loads are normally not applied to the pin but to the plates.
I have built something with a pin in case it helps. It has an imposed rotation. Don’t pay too much attention to stresses as they are way off. I pushed too hard. :rofl:

Yes i simplified my problem to part that actually causes problem
And i looked into your input file and i realized something funny - you have much higher pressure - overclosure constant. I just copied yours to my case and it failed to solve. But still i do not know what units do you use… (i am using N,mm,…)
So i have done something stupid - reduced value of this constant from 10000000 to 10000. and results become reasonable (and i did not found overlapping displaced geometry):


Or at least errors are not so signifficant
https://www.dropbox.com/scl/fi/29lmeli4lmlsh741lii9o/test2.inp?rlkey=u3dxmil1807xs0o9lzy8zcs33&st=oggbr8ml&dl=0

So i was thinking what is conclusion from all of that and please confirm if i am thinking right or wrong :innocent:

So i guess most of problem comes from mesh - because for first and second order mesh, shape is irregular - for some mesh nodes of pin are overlapping with mesh faces on hole:


So that would probably mean that for unfortunate nodes there will be high peak in stress (I guess just like it looked in my case)

So if i am creating contact, there is created gap elements. So if gap elements have high constant (stiffness), problem remains the same - if particular node hits too early hole surface, there is peak of stress on this node. Than if i am using much lower constant value, gap becomes squishy, distributing stress on more nodes.
The problem of unreasonably low required stiffness could be explained with my unconventional units (N, mm, kg,…)
Strangely adjustment feature in contact definition did not helped - and i actually do not know why

Do i get the point ?

I’m using N,m,…

Not at all. Start with low values of pressure-overclosure and check if contact clearance is acceptable for you.

Mesh quality and iniformity arround the edge is important.

I think you could be overlooking the mesh density relationship between master and slave and the recommendations for their assignment.

If possible, avoid putting additional conditions on top of a contact. You might be hindering convergence.

HINT: It may seem like a childish approach but think of it as a blind person trying to accommodate on a chair. If the chair is moving, the ground is slippery and people around is pushing ,…its normal you don’t find your place to sit.

well manual says that it should be similar or higher to young modulus of material (mine is steel) and 10000 on contact is much less (in your case it is much higher than young modulus)

You mean that mesh should be denser at slave part and more deflection should be on slave part?
hmm… in my case both should have more or less same element size…

My model is completely unrealistic. I’m rotating the plates 30º. I warned that I was pushing a lot. More pressure, more contact stiffness is needed to avoid breaking the contact.

Let’s consider something more reasonable:

If I rotate just 1 degree I can start with a typical value as suggested in the Manual (5E/L < K.< 50E/L)
MANUAL : “To obtain good results K should typically be 5 to 50 times the E-modulus of the adjacent materials”.“The units of K are [Force]/[Length]3”. K is the slope of the pressure-overclosure relationship.

Let’s say K(10*E) = 2100GPa/m=2.1E12Pa/m=2100Mpa/mm

Maximum Principal Stress becomes -180 MPa (close to your stress range).
That value gives a contact clearance of 2E-5m.
I think that clearance could still be improved a little without to much computational cost so I try K(100*E) = 21000GPa/m=2.1E13Pa/m=21000Mpa/mm

Contact clearance becomes 8E-6m. Maximum Principal Stress rise to -192 MPa.

The largest the K, the smallest the chair. :grin: