# Compression only support

**URL:** <https://prepomax.discourse.group/t/compression-only-support/558>\
**Category:** Feature Requests\
**Created:** [November 18, 2022, 8:55am UTC](https://prepomax.discourse.group/t/compression-only-support/558 "2022-11-18T08:55:36Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![VictorJota](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/victorjota/32/684_2.png) [@VictorJota](https://prepomax.discourse.group/u/VictorJota)\
**Post date:** [November 18, 2022, 8:55am UTC](https://prepomax.discourse.group/t/compression-only-support/558/1 "2022-11-18T08:55:36Z")

</div>

Hi everybody,  
It’s my first post, and I hope I don’t screw up.  
I don’t know if Calculix allows to use “Compression only support” like constraint.  
I know it’s possible with Code Aster as a contact type and non-linear behavior. Other proprietary software such as Ansys, for example, also allow it.  
If Calculix allows it, it would be possible to incorporate it into Prepomax  
Thank you very much

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [November 18, 2022, 9:11am UTC](https://prepomax.discourse.group/t/compression-only-support/558/2 "2022-11-18T09:11:24Z")

</div>

CalculiX supports tension-only and compression-only materials. The definition for the latter looks like this:

```auto
*MATERIAL, NAME=COMPRESSION_ONLY
*USER MATERIAL, CONSTANTS=2
Young's_modulus, max_allowed_tension

```

For now, you can define this using the keyword editor.

A layer of such a material with a very high Young’s modulus could serve as a compression-only support for the structure.

---

<div class="post-metadata">

**Author:** ![ANYS](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/anys/32/7737_2.png) [@ANYS](https://prepomax.discourse.group/u/ANYS)\
**Post date:** [November 18, 2022, 6:53pm UTC](https://prepomax.discourse.group/t/compression-only-support/558/3 "2022-11-18T18:53:19Z")

</div>

Hi @VictorJota , @FEAnalyst

I have done this with calculix but slightly different. I prepared a suporting base (just one element per thickness solid) and set up contact betweeen surfaces that allows separation. Analisys should be nonlinear.

 ![screenshot.15](https://global.discourse-cdn.com/free1/uploads/prepomax/original/1X/ab534875e2552dc612926fc2e5be241effd4c10e.jpeg)

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [November 18, 2022, 7:08pm UTC](https://prepomax.discourse.group/t/compression-only-support/558/4 "2022-11-18T19:08:35Z")

</div>

A base plate with a very stiff compression-only material bonded to the actual structure would be one way to go. Another way would be to model contact with a rigid foundation like you did. And there are also classic gap elements but those require keyword edits too.

---

<div class="post-metadata">

**Author:** ![synt](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/synt/32/4658_2.png) [@synt](https://prepomax.discourse.group/u/synt)\
**Post date:** [November 19, 2022, 10:04am UTC](https://prepomax.discourse.group/t/compression-only-support/558/5 "2022-11-19T10:04:50Z")

</div>

it’s possible with spring element by activated nonlinear keywords.

this can be an improvement of PrePoMax spring support features currently available.

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [November 19, 2022, 10:15am UTC](https://prepomax.discourse.group/t/compression-only-support/558/6 "2022-11-19T10:15:02Z")

</div>

This limitation of nonlinear springs can be problematic here:

> The elongation can be negative, however, it should not be smaller than the initial length of the spring.

---

<div class="post-metadata">

**Author:** ![synt](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/synt/32/4658_2.png) [@synt](https://prepomax.discourse.group/u/synt)\
**Post date:** [November 19, 2022, 10:47am UTC](https://prepomax.discourse.group/t/compression-only-support/558/7 "2022-11-19T10:47:01Z")

</div>

right, t can not easily to set and run, need some adjustment but it seems to be possible. I’ll look back of my personal test examples were it done in several years before.

---

<div class="post-metadata">

**Author:** ![Hyp](https://avatars.discourse-cdn.com/v4/letter/h/db5fbb/32.png) [@Hyp](https://prepomax.discourse.group/u/Hyp)\
**Post date:** [November 21, 2022, 7:32am UTC](https://prepomax.discourse.group/t/compression-only-support/558/8 "2022-11-21T07:32:07Z")

</div>

Hey, just quickly want to share my experience:

In the beginning I also tried with the nonlinear springs through keyword editiing. Exactly regarding the remark in the manual I couldn’t build up enough trust after playing around with it for some time. After some reading I discovered the GAP Element which worked really good and I was able to set it up quite fast. The idea of “A base plate with a very stiff compression-only material bonded to the actual structure” is really good to know. Thanks for pointing it out. I will try it next time. From my experience I would recommend to avoid contact where possible…

Would be great to have one or both of these options (tension-only, compression-only or gap elements) in one of the next PrePoMax releases! As there is already a material library probably the first options is easy to integrate?!

Thanks!

---

<div class="post-metadata">

**Author:** ![ANYS](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/anys/32/7737_2.png) [@ANYS](https://prepomax.discourse.group/u/ANYS)\
**Post date:** [November 21, 2022, 10:25am UTC](https://prepomax.discourse.group/t/compression-only-support/558/9 "2022-11-21T10:25:24Z")

</div>

> [@Hyp](#):
>
> I discovered the GAP Element

@Hyp

Thanks, Hyp, that’s new to me.  
Seems like the GAPUNI elements used to set up the gap condition are internally simulated by a nonlinear spring **of the same type used in node-to-face contact** with a linear pressure-overclosure curve.

Only compression is most of the times challenging. Mainly because of the doubts on how to apply the rest of the BC.

@FEAnalyst . In the approach with only compression material my main concern is that the compression may emerge in the tangential direction which maybe would not allow the model to slip on top of the only compression support. In a test of a simple T bending on top of an only compression material, ¿Are you able to make the T slip like in the picture (Right interface corner)?

 ![screenshot.21](https://global.discourse-cdn.com/free1/uploads/prepomax/original/1X/27f87a9b6d9c4f04810150a7d802b6939f04dc1d.png)

---

<div class="post-metadata">

**Author:** ![Matej](https://avatars.discourse-cdn.com/v4/letter/m/a698b9/32.png) [@Matej](https://prepomax.discourse.group/u/Matej)\
**Post date:** [November 21, 2022, 1:00pm UTC](https://prepomax.discourse.group/t/compression-only-support/558/10 "2022-11-21T13:00:57Z")

</div>

> [@Hyp](#):
>
> After some reading I discovered the GAP Element which worked really good and I was able to set it up quite fast.

I was thinking about supporting the GAP element boundary condition for this purpose a while ago but did not have enough time to test how it works. What is the computational cost of such an approach?

---

<div class="post-metadata">

**Author:** ![lucas\_bueno](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/lucas_bueno/32/1168_2.png) [@lucas\_bueno](https://prepomax.discourse.group/u/lucas_bueno)\
**Post date:** [November 21, 2022, 5:55pm UTC](https://prepomax.discourse.group/t/compression-only-support/558/11 "2022-11-21T17:55:50Z")

</div>

Hello Matej, I would like to propose a collaboration between the users in this forum and PrePoMax development. Is there any way we can help you so you become less overloaded? In this case, for example, we could test the GAP element and bring you some performance reports so you could decide whether or not to implement it, the limitations involved, etc.

I know your time is very scarce and precious for the development of this community, and not just me but many people would like to help you in some way. If successful, we could extend this collaboration to other feature requests as well. What do you think?

---

<div class="post-metadata">

**Author:** ![synt](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/synt/32/4658_2.png) [@synt](https://prepomax.discourse.group/u/synt)\
**Post date:** [November 21, 2022, 6:13pm UTC](https://prepomax.discourse.group/t/compression-only-support/558/12 "2022-11-21T18:13:15Z")

</div>

GAP element is good alternate even not the same behavior as compression only spring. These assumption are in contact with infinite stiffness.

some pre calculation are needed to define element local axes, can be cumbersome for non alignment axes each others. two node spring element does not required the pre calculation, make it less complicated.

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [November 21, 2022, 6:34pm UTC](https://prepomax.discourse.group/t/compression-only-support/558/13 "2022-11-21T18:34:14Z")

</div>

I will try to do some testing, possibly comparing with other approaches to compression-only supports that were mentioned in this thread. The performance of GAP elements should be similar or somewhat better than that of regular contact since they use equivalent formulation.

---

<div class="post-metadata">

**Author:** ![lucas\_bueno](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/lucas_bueno/32/1168_2.png) [@lucas\_bueno](https://prepomax.discourse.group/u/lucas_bueno)\
**Post date:** [November 21, 2022, 7:45pm UTC](https://prepomax.discourse.group/t/compression-only-support/558/14 "2022-11-21T19:45:08Z")

</div>

Very nice, @FEAnalyst. In many cases, I think we could help Matej when it comes to prospecting new features.

---

<div class="post-metadata">

**Author:** ![Matej](https://avatars.discourse-cdn.com/v4/letter/m/a698b9/32.png) [@Matej](https://prepomax.discourse.group/u/Matej)\
**Post date:** [November 22, 2022, 7:23am UTC](https://prepomax.discourse.group/t/compression-only-support/558/15 "2022-11-22T07:23:28Z")

</div>

I would be very happy for such help. Any help is always welcome and appreciated no matter what it is about. It would be useful when support for features is planned and the same features are unknown to me and thus would require testing from my side.

So maybe the first thig I should do is to create a road map of the features to be added or developed in the feature versions of the PrePoMax. Then I could determine where exactly I would need some help and ask for it.

So maybe we would need a new category for that?

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [November 22, 2022, 8:13am UTC](https://prepomax.discourse.group/t/compression-only-support/558/16 "2022-11-22T08:13:04Z")

</div>

> [@Matej](#):
>
> So maybe the first thig I should do is to create a road map of the features to be added or developed in the feature versions of the PrePoMax.

Such roadmap could also have a form of a text file in the source code repository. When it comes to putting it on the forum, adding new category is a good idea but I would suggest creating a pinned post in the Feature Requests subforum so that everyone can see a list of what is already planned before asking for new features. Posts with requests for help/testing could be placed in the current category as well (like it was with hydrostatic and imported pressure features where we discussed the development).

---

<div class="post-metadata">

**Author:** ![lucas\_bueno](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/lucas_bueno/32/1168_2.png) [@lucas\_bueno](https://prepomax.discourse.group/u/lucas_bueno)\
**Post date:** [November 22, 2022, 2:17pm UTC](https://prepomax.discourse.group/t/compression-only-support/558/17 "2022-11-22T14:17:39Z")

</div>

> [@Matej](#):
>
> So maybe the first thig I should do is to create a road map of the features to be added or developed in the feature versions of the PrePoMax. Then I could determine where exactly I would need some help and ask for it.

I think this roadmap would be useful for this purpose.

> [@Matej](#):
>
> So maybe we would need a new category for that?

I think FEAnalyst’s idea is a good one, we could use this category to centralize the help and tests in dedicated threads.

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [November 24, 2022, 3:30pm UTC](https://prepomax.discourse.group/t/compression-only-support/558/18 "2022-11-24T15:30:48Z")

</div>

> [@Matej](#):
>
> What is the computational cost of such an approach?

For now, I made a simple test with a single C3D8 element. Its bottom nodes were fixed directly in one case and via compression-only GAP elements in the other case. The cube was subjected to compression (using prescribed displacement applied to the top nodes). Interestingly, the analysis with gap elements took around 2.4 times longer to complete. But it’s still likely the least computationally expensive approach to model compression-only support in CalculiX.

I will check with more solid elements so that gaps add relatively less DOFs.

---

<div class="post-metadata">

**Author:** ![ANYS](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/anys/32/7737_2.png) [@ANYS](https://prepomax.discourse.group/u/ANYS)\
**Post date:** [November 24, 2022, 5:17pm UTC](https://prepomax.discourse.group/t/compression-only-support/558/19 "2022-11-24T17:17:23Z")

</div>

¿How long did it take in sec?

---

<div class="post-metadata">

**Author:** ![FEAnalyst](https://yyz2.discourse-cdn.com/free1/user_avatar/prepomax.discourse.group/feanalyst/32/688_2.png) [@FEAnalyst](https://prepomax.discourse.group/u/FEAnalyst)\
**Post date:** [November 24, 2022, 6:44pm UTC](https://prepomax.discourse.group/t/compression-only-support/558/20 "2022-11-24T18:44:14Z")

</div>

It varies with each run, now it’s closer to 2.1 times longer for gap elements (around 0.141 s and 0.303 s). Sometimes it almost reaches 3 times longer. But I will try with larger model and maybe variation will be smaller.

[Next page](https://prepomax.discourse.group/t/compression-only-support/558.md?page=2)
