How to define a CohFrictPhys bond between two different materials?

Asked by Jingchi Yu

Hi,
everyone,

I just see some previous discussion about the "matchmaker", I am wondering that if I want to make a double-material simulation, and the material A-A interaction is CohFrictPhys, material B-B and A-B are all CohFrictPhys, whether it is ok to use the matchmaker to difine?

If it cannot work, how I can define the cohesive bond between the two different materials?

Thanks!

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Jan Stránský
Solved:
Last query:
Last reply:
Revision history for this message
Jan Stránský (honzik) said :
#1

Hello,

please read [1] and provide a MWE (what you have tried already, what/why did not work...)

> the material A-A interaction is CohFrictPhys, material B-B and A-B are all CohFrictPhys

is there any problem? All interactions being CohFrictPhys sounds OK..
What would you want to make MatchMaker different?

> how I can define the cohesive bond between the two different materials?

Have you tried / studied something? e.g. [2]?

cheers
Jan

[1] https://www.yade-dem.org/wiki/Howtoask
[2] https://gitlab.com/yade-dev/trunk/-/blob/master/examples/test/triax-cohesive.py

Revision history for this message
Jingchi Yu (yujc-17) said :
#2

Dear Jan,
Sorry for the incomplete information before, and I will explain the detail about that:

For instance, My assembly consists of two kinds of material: 1. mortar which is CohFrichMat; 2. cement which is CohFrichMat:
####
mortar =CohFrichMat(……,label='sand')
cement = CohFrictMat(……,label='cement')
O.materials.append(mortar)
O.materials.append(cement)
####
In the simulation, there will be mortar-mortar contact, mortar -cement contact and cement-cement contact.
what I am confused is how to define the engines, maybe it is like this:
#####
O.engines=[
    ForceResetter(),
    InsertionSortCollider([Bo1_Sphere_Aabb()]),
    InteractionLoop(
        [Ig2_Sphere_Sphere_ScGeom(),Ig2_Sphere_Sphere_ScGeom6D()],
        [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(),
         Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow = True,setCohesionOnNewContacts = True)],
        [Law2_ScGeom6D_CohFrictPhys_CohesionMoment()]
    ),
    NewtonIntegrator(damping=0.4),
]
#####
I am wondering if it covers all the interactions? If so, the mortar -cement contact (like E, sigmaT and so on) is taken the average? and then if I want to define the mortar -cement contact manually and arbitrarily, how may I do it?

Many thanks,

Revision history for this message
Best Jan Stránský (honzik) said :
#3

> I am wondering if it covers all the interactions?

yes, only the type of material is important, from the point of view of engines it does not matter that there are more CohFrictMats

> the mortar -cement contact (like E, sigmaT and so on) is taken the average?

depends on the parameter [2]:
- stiffness is taken harmonic mean
- friction angle is taken minimum
- sigmaT does not belong to CohFrict*

> if I want to define the mortar -cement contact manually and arbitrarily, how may I do it?

it depends on your simulation (what is the packing, please provide a MWE [1]) and definition of "manually and arbitrarily". You can use createInteraction [3]. Or you can adjust parameters of existing interactions (unset cohesion, change material properties, ...)

cheers
Jan

[2] https://gitlab.com/yade-dev/trunk/-/blob/master/pkg/dem/CohesiveFrictionalContactLaw.cpp#L314
[3] https://yade-dem.org/doc/yade.utils.html#yade._utils.createInteraction

Revision history for this message
Jingchi Yu (yujc-17) said :
#4

Thanks Jan Stránský, that solved my question.