# Snap-fit contact snagging problem

**URL:** <https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277>\
**Category:** Analysis issues\
**Created:** [May 16, 2024, 2:49pm UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277 "2024-05-16T14:49:09Z")\
**Posts on this page:** 20\
**Page:** 2

<div class="post-metadata">

**Author:** ![JuanP74](https://avatars.discourse-cdn.com/v4/letter/j/b5a626/32.png) [@JuanP74](https://calculix.discourse.group/u/JuanP74)\
**Post date:** [May 16, 2024, 7:24pm UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/22 "2024-05-16T19:24:27Z")

</div>

what about this:

```auto
*STEP,NLGEOM=YES,INC=100,AMPLITUDE=STEP
*STATIC,DIRECT
0.01,1,0,0

```

---

<div class="post-metadata">

**Author:** ![SergioP](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/sergiop/32/10_2.png) [@SergioP](https://calculix.discourse.group/u/SergioP)\
**Post date:** [May 16, 2024, 7:26pm UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/23 "2024-05-16T19:26:58Z")

</div>

I would try:

1. Removing the friction from the contact
2. Switching the automatic increment to fixed increment. Most of my models runs better with fixed than automatic (most, some were impossible to solve with fixed)
3. Refining the mesh in the radius of the small part
4. Running a model with only one element in the thickness and lineal elements for diagnosting. I have solved this first with lineal and after with second order hexas
5. If this is to know the stress in the part, I would add a small radius at the base of the beam (if that is pressent in the real part).

---

<div class="post-metadata">

**Author:** ![SergioP](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/sergiop/32/10_2.png) [@SergioP](https://calculix.discourse.group/u/SergioP)\
**Post date:** [May 16, 2024, 7:29pm UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/24 "2024-05-16T19:29:01Z")

</div>

By default I use fixed time increment in my models, I feel more comfortable having a straigh division of the applied load.

---

<div class="post-metadata">

**Author:** ![JuanP74](https://avatars.discourse-cdn.com/v4/letter/j/b5a626/32.png) [@JuanP74](https://calculix.discourse.group/u/JuanP74)\
**Post date:** [May 16, 2024, 7:36pm UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/25 "2024-05-16T19:36:17Z")

</div>

I understand, but is a difference with Calc\_em’s model. Sometimes makes models more difficult to converge than with automatic incrementation, maybe here is the opposite.

---

<div class="post-metadata">

**Author:** ![JuanP74](https://avatars.discourse-cdn.com/v4/letter/j/b5a626/32.png) [@JuanP74](https://calculix.discourse.group/u/JuanP74)\
**Post date:** [May 16, 2024, 7:58pm UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/26 "2024-05-16T19:58:21Z")

</div>

you changed a lot of things…

---

<div class="post-metadata">

**Author:** ![SergioP](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/sergiop/32/10_2.png) [@SergioP](https://calculix.discourse.group/u/SergioP)\
**Post date:** [May 16, 2024, 8:11pm UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/27 "2024-05-16T20:11:39Z")

</div>

In fact, I just import the geometry step file and create a new model without seing how it was made in Prepomax. I made with my standard tools and procedures that works razonably well 🙂 at least in my models.

---

<div class="post-metadata">

**Author:** ![JuanP74](https://avatars.discourse-cdn.com/v4/letter/j/b5a626/32.png) [@JuanP74](https://calculix.discourse.group/u/JuanP74)\
**Post date:** [May 16, 2024, 8:17pm UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/28 "2024-05-16T20:17:01Z")

</div>

seems a solid approach, I learned a lot, however it does not provide a hint about why Calc\_em’s approach does not work.

---

<div class="post-metadata">

**Author:** ![SergioP](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/sergiop/32/10_2.png) [@SergioP](https://calculix.discourse.group/u/SergioP)\
**Post date:** [May 16, 2024, 8:22pm UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/29 "2024-05-16T20:22:25Z")

</div>

There are some extra bc like rigid bodies that add extra complexity to the model, and the use of a full model where it can be solved for a smaller one leads to a model hard to debug. Start with a simple model and then add more details.

---

<div class="post-metadata">

**Author:** ![Calc\_em](https://avatars.discourse-cdn.com/v4/letter/c/43a26b/32.png) [@Calc\_em](https://calculix.discourse.group/u/Calc_em)\
**Post date:** [May 16, 2024, 8:46pm UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/30 "2024-05-16T20:46:12Z")

</div>

> [@SergioP](#):
>
> - Removing the friction from the contact

I need friction in this model but I can change its value. It hasn’t helped previously though.

> [@SergioP](#):
>
> - Switching the automatic increment to fixed increment. Most of my models runs better with fixed than automatic (most, some were impossible to solve with fixed)

I tend to avoid fixed incrementation because its use is heavily discouraged in Abaqus. But Abaqus has better auto incrementation algorithms.

> [@SergioP](#):
>
> - Refining the mesh in the radius of the small part

I’ve tried that but it didn’t help. Maybe even made it worse, probably due to master-slave mismatch.

 ![refined_fillet](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/a/a5fa738022bac06b4d999c2cac33fbfe0485bbc1.jpeg)

![snap-fit refined](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/a/a0aa8ed64d76893c84fc2e2fb2552ca975511659.gif)

> [@SergioP](#):
>
> - Running a model with only one element in the thickness and lineal elements for diagnosting. I have solved this first with lineal and after with second order hexas

I already use linear elements but I haven’t tried 1 layer yet.

> [@SergioP](#):
>
> - If this is to know the stress in the part, I would add a small radius at the base of the beam (if that is pressent in the real part).

I don’t need accurate stresses, it will be more about forces.

---

<div class="post-metadata">

**Author:** ![Calc\_em](https://avatars.discourse-cdn.com/v4/letter/c/43a26b/32.png) [@Calc\_em](https://calculix.discourse.group/u/Calc_em)\
**Post date:** [May 16, 2024, 8:58pm UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/31 "2024-05-16T20:58:40Z")

</div>

The model is already quite simple. One rigid body makes it even simpler in a way (by reducing the number of DOFs) and the other one is far from the problematic area and included mostly for convenience. The issue seems to be caused by a combination of unfortunate geometries in contact and contact conditions/algorithms themselves. I’ve tried several different variants of the geometries though and to no avail.

---

<div class="post-metadata">

**Author:** ![Disla](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/disla/32/3548_2.png) [@Disla](https://calculix.discourse.group/u/Disla)\
**Post date:** [May 17, 2024, 7:34am UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/32 "2024-05-17T07:34:50Z")

</div>

I have a solution to your problem (reduce your maximum time step to 0.01s)

 ![imagen](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/0/01f3dd43fa7b2a7d25bb7b0d04a6b8c99f6e4f25.png)

But not sure about the source of the issue.  
It must probably be related with JuanP74 crucial question : How can it be ccx declares this increment as converged?  
I could explain some penetration but not sustained contact gap (specially during flat top run).

 ![imagen](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/5/5a56b3cee86b25120e82f01da74538e149dfa93c.png)

---

<div class="post-metadata">

**Author:** ![Disla](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/disla/32/3548_2.png) [@Disla](https://calculix.discourse.group/u/Disla)\
**Post date:** [May 17, 2024, 8:16am UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/33 "2024-05-17T08:16:11Z")

</div>

Contact stiffness changes during the step, probably to help convergence.

Adjustment only takes place if the “waters are calm”

Give it a try. Provide a large initial time step to get a nice separation.  
Stop the block at the middle of the run for a few time steps before continuing and the gap closes.  
Kind of Contact stiffness relaxation. Known that, there could be different solutions to get good results.

---

<div class="post-metadata">

**Author:** ![Calc\_em](https://avatars.discourse-cdn.com/v4/letter/c/43a26b/32.png) [@Calc\_em](https://calculix.discourse.group/u/Calc_em)\
**Post date:** [May 17, 2024, 9:39am UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/34 "2024-05-17T09:39:45Z")

</div>

> [@Disla](#):
>
> I have a solution to your problem (reduce your maximum time step to 0.01s)

Thanks. Sounds reasonable (otherwise, CalculiX may jump through equilibrium configurations) but did you change anything else (like contact settings, for instance) ? Did you recreate the model in Mecway ? Because when I only change the initial and maximum increment to 0.01 in my original file, it runs until 0.466250 and then fails with:

```auto
 *ERROR: too many cutbacks
 best solution and residuals are in the frd file

```

---

<div class="post-metadata">

**Author:** ![Disla](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/disla/32/3548_2.png) [@Disla](https://calculix.discourse.group/u/Disla)\
**Post date:** [May 17, 2024, 10:48am UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/35 "2024-05-17T10:48:27Z")

</div>

As suggested by Sergio I recreated the model in Mecway reducing a lot the number of elements. Just for debugging purposes. One element in depth from your mesh and removing the large base.  
The complete model was too much time, but I think I can help anyway.  
Look at Juan formula 0.5\*(E\_stiff+E\_less\_stiff)/L\_char  
Around 0.46s the contact area has L\_char=0 as it is only sustained by the edge. I would increase your K \*10.

 ![imagen](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/c/ca8257181c5b5aa03dad00edbc87c48a03461f5e.png)

---

<div class="post-metadata">

**Author:** ![Calc\_em](https://avatars.discourse-cdn.com/v4/letter/c/43a26b/32.png) [@Calc\_em](https://calculix.discourse.group/u/Calc_em)\
**Post date:** [May 17, 2024, 2:24pm UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/36 "2024-05-17T14:24:03Z")

</div>

> [@Disla](#):
>
> I would increase your K \*10.

I’ve tried that (K=100000000 N/mm^3) but it failed even earlier - at 0.1925. I guess that a combination of changes is needed to get my actual model running. I simplified it to have just a single layer of elements in the thickness direction by replacing the transfinite mesh with extruded one (had to replace the geometry with the one having surface partitions instead of volume partitions):

[https://www.dropbox.com/scl/fo/vpq79zmquamhi7s6ryuh5/ANYdTcHNdQSpnRNqsek2x6g?rlkey=rrz9noxzi5w6rjhp7kbxo8ex2&st=raefifnn&dl=0](https://www.dropbox.com/scl/fo/vpq79zmquamhi7s6ryuh5/ANYdTcHNdQSpnRNqsek2x6g?rlkey=rrz9noxzi5w6rjhp7kbxo8ex2&st=raefifnn&dl=0)

Should be easier to do the tests in PrePoMax or directly with the input file.

---

<div class="post-metadata">

**Author:** ![xyont](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/xyont/32/3553_2.png) [@xyont](https://calculix.discourse.group/u/xyont)\
**Post date:** [May 18, 2024, 3:47pm UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/37 "2024-05-18T15:47:54Z")

</div>

since many reported a problem, i recreate another similar cases.

![anim1](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/9/93beeed3a5637e2574e6d768a99096ec6781acf3.gif)

 ![2024-05-18 22_41_32-](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/d/d81812e7fc1944a5b3f3657c56879b832d1863af.png)

 ![2024-05-18 22_42_29-](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/6/6431df43077dcb1b0da812d38295de91b3ec45eb.png)

p.s plot deformations are in true scale.

![anim1c](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/d/de9085f8bbfc2725bd2d59de6f9dceee87844e34.gif)

---

<div class="post-metadata">

**Author:** ![Disla](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/disla/32/3548_2.png) [@Disla](https://calculix.discourse.group/u/Disla)\
**Post date:** [May 18, 2024, 10:59pm UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/38 "2024-05-18T22:59:14Z")

</div>

This would be my approach keeping the original geometry.  
I still don’t have answer to JuanP74 question.

Max time step to 0.005 s  
Reduced K=80000 N/mm3  
Reduce Stick Slope.

```auto
*Surface interaction, Name=Surface_Interaction-1
*Surface behavior, Pressure-overclosure=Linear
80000, 2.86
*Friction
0.3, 1

```

C3D8R  
Add back surface of the brick to the contact pair definition.  
Swap Master Slave.  
Tabulated Amplitude to invest more time steps into difficult transition areas.  
Remove Rigid Bodies. (Too Stiff and I don’t like Rigid bodies on top of contacts).  
Increased maximum overall number of iterations and particular to 150 by means of CONTROL (Some itrs reached U value).

![Clearance](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/0/0f7bd2308f9997a234656a76df6d036d820a6d7f.gif)

---

<div class="post-metadata">

**Author:** ![xyont](https://yyz2.discourse-cdn.com/free1/user_avatar/calculix.discourse.group/xyont/32/3553_2.png) [@xyont](https://calculix.discourse.group/u/xyont)\
**Post date:** [May 19, 2024, 7:50am UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/39 "2024-05-19T07:50:26Z")

</div>

the problems are in unexpected additional bending due to kickback action and post deformed configuration at end steps increment. Both of the problems may be caused by friction definition and displacement control, smooth transition seems not really a problem since it did not change overall behavior.

it could be interesting when sketch of problems are provided, all output generate by Abaqus including displacement, stress and contact pressure. Original example geometry is quite simple to recreate, another user may need to check by reduced mesh or element type, contact type, etc. I have seen the part has been partitioned and needed further editing to clean up.

below my previous simplified models with hard contact, friction and rigid bodies.

![anim1e](https://global.discourse-cdn.com/free1/uploads/calculix/original/2X/9/948d4e7e9f8671bf69fa914edff3a7e3ff3b9fb8.gif)

---

<div class="post-metadata">

**Author:** ![JuanP74](https://avatars.discourse-cdn.com/v4/letter/j/b5a626/32.png) [@JuanP74](https://calculix.discourse.group/u/JuanP74)\
**Post date:** [May 19, 2024, 9:18am UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/40 "2024-05-19T09:18:16Z")

</div>

Very nice job! congrats. Swapping master-slave and removing rigid bodies also improved situation a lot for me but still had some issues despite refining the mesh.

---

<div class="post-metadata">

**Author:** ![JuanP74](https://avatars.discourse-cdn.com/v4/letter/j/b5a626/32.png) [@JuanP74](https://calculix.discourse.group/u/JuanP74)\
**Post date:** [May 19, 2024, 9:32am UTC](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277/41 "2024-05-19T09:32:52Z")

</div>

One thing I was wondering is if it would work better if there was contact in the initial configuration.

[Previous page](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277.md?page=1)

[Next page](https://calculix.discourse.group/t/snap-fit-contact-snagging-problem/2277.md?page=3)
