← Back to team overview

yade-users team mailing list archive

[Question #684027]: How to use MatchMaker for two Ip2

 

New question #684027 on Yade:
https://answers.launchpad.net/yade/+question/684027

Hi,
I'd like to ask how to use MatchMaker for the case that there are two Ip2. 
For example, in a triaxial simulation, there are 3 kinds of bodies : wall, sand and cement. 
What I want to achieve for the simulation is that cement-cement and cement-sand contacts are CohFrictPhys (with cohesion) and wall-cement, wall-sand, sand-sand contacts are FrictPhys because I suppose adhesion only exists between cement-cement as well as cement-sand. And thanks for Jan's suggestion in [1], "using just CohFrictMat/CohFrictPhys and using MatchMaker for sand-sand contacts to behave like FrictPhys", I set the engines like below:
#########
wall=O.materials.append(FrictMat(young=30e9,poisson=0.5,frictionAngle=0,density=0,label='wall'))
sand=O.materials.append(CohFrictMat(isCohesive=True,young=30e9,poisson=0.5,frictionAngle=radians(30),density=2600.0,normalCohesion=1e6, shearCohesion=1e6,label='sand'))
cement=O.materials.append(CohFrictMat(isCohesive=True,young=30e9,poisson=0.5,frictionAngle=radians(30),density=2600.0,normalCohesion=1e6, shearCohesion=1e6,label='cement'))
##########
O.engines=[
	ForceResetter(),
	InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
	InteractionLoop(
		[Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Box_Sphere_ScGeom()],
		[Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(
			normalCohesion=MatchMaker(matches=((wall,wall,0),(wall,sand,0),(wall,cement,0),(sand,sand,0),(sand,cement,1e6),(cement,cement,1e6))),
			shearCohesion=MatchMaker(matches=((wall,wall,0),(wall,sand,0),(wall,cement,0),(sand,sand,0),(sand,cement,1e6),(cement,cement,1e6))),
			setCohesionNow=True),
		 Ip2_FrictMat_FrictMat_FrictPhys()],
		[Law2_ScGeom6D_CohFrictPhys_CohesionMoment(),Law2_ScGeom_FrictPhys_CundallStrack()]
	),
	triax,
	TriaxialStateRecorder(iterPeriod=100),
	newton
]
My questions are:
1. Is there any conflict between MatchMaker and setCohesionNow=True?  setCohesionNow is for assigning cohesion to all existing contacts in current time-step, I am afraid that MatchMaker makes  normalCohesion of sand-cement equals 1e6 in all steps.
2.Is there any unnecessary coding such as (wall,wall,0) or (wall,sand,0) that I need to remove?

Many thanks
Leonard
[1]https://answers.launchpad.net/yade/+question/683706

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.