# Some contact question in 3DEC

**URL:** <https://forum.itascainternational.com/t/some-contact-question-in-3dec/678>\
**Category:** 3DEC\
**Created:** [July 27, 2022, 9:12am UTC](https://forum.itascainternational.com/t/some-contact-question-in-3dec/678 "2022-07-27T09:12:08Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![HsiehBing](https://avatars.discourse-cdn.com/v4/letter/h/cdc98d/32.png) [@HsiehBing](https://forum.itascainternational.com/u/HsiehBing)\
**Post date:** [July 27, 2022, 9:12am UTC](https://forum.itascainternational.com/t/some-contact-question-in-3dec/678/1 "2022-07-27T09:12:09Z")

</div>

I have two questions for the theory background.

1. In the model we set kn and ks. It defined as the [stress] / [relative displacement]. So, there must have the area if you use stress in the setting. And my question is  
How to determine the sub-contact area when the blocks contact by vertex-face?

2. We know it in 3DEC it has a common plane when block touch to each other. Does it has any size or range of it?

---

<div class="post-metadata">

**Author:** ![jhazzard](https://avatars.discourse-cdn.com/v4/letter/j/4af34b/32.png) [@jhazzard](https://forum.itascainternational.com/u/jhazzard)\
**Post date:** [July 28, 2022, 2:04pm UTC](https://forum.itascainternational.com/t/some-contact-question-in-3dec/678/2 "2022-07-28T14:04:44Z")

</div>

For a vertex-vertex contact, or an edge-edge contact, the subcontact area is set to a calculated minimum area, which is 0.01 x 0.5 x (average face area). Below is a little example.

As far as I know, the common plane doesn’t have a size or range. It is just considered an infinite plane.

* * *

model new  
block create brick -0.5 0.5  
block create tet (0,0,0.5) (1,1,1) (-1,-1,1) (1,-1,1)

block contact mat-tab default prop s-n 1e8 s-s 1e8

block prop dens 2000

model grav 0 0 -10  
block fix range pos-z -0.5 0.5

model large-strain on  
model cyc 1

fish def compute\_area  
avgarea = 0.0  
loop foreach face block.face.list  
avgarea += block.face.area(face)  
end\_loop  
avgarea /= block.face.num

; compare to subcontact area  
cx = block.subcontact.find(1)  
io.out('subcontact area: ‘+string(block.subc.area(cx))+’ calculated area: '+string(avgarea \* 0.5 \* 0.01))  
end  
[compute\_area]

---

<div class="post-metadata">

**Author:** ![HsiehBing](https://avatars.discourse-cdn.com/v4/letter/h/cdc98d/32.png) [@HsiehBing](https://forum.itascainternational.com/u/HsiehBing)\
**Post date:** [July 28, 2022, 3:31pm UTC](https://forum.itascainternational.com/t/some-contact-question-in-3dec/678/3 "2022-07-28T15:31:16Z")

</div>

Thank you very much.  
I have a further question about face-face contact. There are two blocks A and B have face-face contact (contact area is C-a square) and they are rigid blocks. We know that the sub-contact area based on the grid point contact to common plane. So, for the A block there are 4 grid points contact with common plane and the contact area is C-a. But for the B there is no grid point contact on the common plane. As I know 3DEC would pick the smaller one when two blocks have face-face contact. In this case the contact area should be 0? Or is there any theory that I misunderstanding?

 ![image](https://canada1.discourse-cdn.com/flex031/uploads/itasca/original/1X/97473d07ce05226ad9c33f25d3500294b9f23c06.png)

---

<div class="post-metadata">

**Author:** ![jhazzard](https://avatars.discourse-cdn.com/v4/letter/j/4af34b/32.png) [@jhazzard](https://forum.itascainternational.com/u/jhazzard)\
**Post date:** [July 29, 2022, 2:10pm UTC](https://forum.itascainternational.com/t/some-contact-question-in-3dec/678/4 "2022-07-29T14:10:53Z")

</div>

There is currently a bug in the calculation of areas for this case. When gridpoints match, you will have a subcontact for each gridpoint and the calculated areas for each gridpoint are divided by 2 to account for the fact you have 2 subcontacts at each location. In your model, the areas should not be divided by 2, since there are no gridpoints on the bottom block in contact with the top block. We are working on this now.

In the short term, you can zone the blocks to ensure the gridpoints match, or you can cut and join the bottom block so that there are matching gridpoints with the top block.
