Relationship between Material parameters and Interaction parameters

Asked by Henry

Hi all,
    I have set the material parameters through the following scripts.

SoilMat=O.materials.append(CohFrictMat(young=E0,poisson=Pois,density=2350,frictionAngle=Fric,normalCohesion=coh,shearCohesion=Pois*coh,isCohesive=True,momentRotationLaw=True,etaRoll=0.1,label='soil'))

O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(aabbEnlargeFactor=intRadius,label='is2aabb'),Bo1_Box_Aabb()],verletDist=.05*sphereRadius),
 InteractionLoop(
        [Ig2_Sphere_Sphere_ScGeom6D(interactionDetectionFactor=intRadius,label='ss2sc'),Ig2_Box_Sphere_ScGeom6D()],
        [Ip2_FrictMat_FrictMat_FrictPhys(),
        Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(label='cohesiveIp')],
        [Law2_ScGeom_FrictPhys_CundallStrack(),Law2_ScGeom6D_CohFrictPhys_CohesionMoment(
   useIncrementalForm=True,
   always_use_moment_law=True,
   label='cohesiveLaw')]
 ),
 NewtonIntegrator(damping=0.4, label='Newton'),
]

However when I check the normalAdhesion between the interactions throngh the follow function, the value of coho is zero.

def change_para():
    for i in O.interactions:
            coh0=i.phys.normalAdhesion
            print "cohension:",coh0
change_para()

Which indicated that there is no relationship between Material parameters and Interaction parameters. It is true?

For one simulation, am i only set the material parameters or Interaction parameters?
And if I want to set the particle's parameters throught Interaction ( Ip2_CohFrictMat_CohFrictMat_CohFrictPhys), how can I define the same simulation parameters as that throught Mateials parameters, for example:

SoilMat=O.materials.append(CohFrictMat(young=E0,poisson=Pois,density=2350,frictionAngle=Fric,normalCohesion=coh,shearCohesion=Pois*coh,isCohesive=True,momentRotationLaw=True,etaRoll=0.1,label='soil'))

Thanks a lot!

Henry

Question information

Language:
English Edit question
Status:
Answered
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Kneib François (francois-kneib) said :
#1

Hi,

Your first problem is due to the cohesion activation logic : there is two booleans you should look at (see the online class reference) : Ip2_CohFrictMat_CohFrictMat_CohFrictPhys.setCohesionNow and Ip2_CohFrictMat_CohFrictMat_CohFrictPhys.setCohesionOnNewContacts
If you wish to activate cohesion for all new contacts during your simulation, you should put "setCohesionOnNewContacts = True" into the ip2. If you prefer activate the cohesion for all existing contact at one time, turn "setCohesionNow" to True. So the answer to your first question is : fortunately no.

2nd question : for a normal simulation, you should only set your parameters into the materials. Then contact physics parameters will be computed at each NEW contact.

3rd question (not sure to understand) : if you change the material parameters, changes will only be applied for new contacts. To my mind, there is no automatic way to re-compute contact physics for "old" contacts without clearing them all (O.interactions.clear(), but you will loose contact history). However, you can do it manually using python. First change your material properties, then loop over all interactions.phys and modify parameters. I highly recommand you to look at the source code to see how physical parameters are computed and do the same in python : https://github.com/yade/trunk/blob/master/pkg/dem/Ip2_CohFrictMat_CohFrictMat_CohFrictPhys.cpp

Revision history for this message
Luis Barbosa (luis-pires-b) said :
#2

Hi Henry,
I'm trying to check the normal adhesion and cohesion in the interactions, but appears some errors. How did you do that? only using change_para()?

Can you help with this problem?

Provide an answer of your own, or ask Henry for more information if necessary.

To post a message you must log in.