← Back to team overview

yade-users team mailing list archive

[Question #687386]: "Law2_ScGeom_MindlinPhys_Mindlin ()" engine problem

 

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

Hello,

I would like to consider the van Der van der Waals force between spherical particles using the DMT model in the engines "Ip2_FrictMat_FrictMat_MindlinPhys()" and "Law2_ScGeom_MindlinPhys_Mindlin ()". The code works well when only spherical particles exist. When I add the cylindrical particles into the code, the contact between spherical and cylindrical particles causes the following issues: 


/build/yade-fDuCoe/yade-2018.02b/lib/multimethods/DynLibDispatcher.hpp:344: ambiguous 2d dispatch (arg1=GridCoGridCoGeom, arg2=MindlinPhys, distance=1), dispatch matrix:
AMBIGUOUS: 1+13 -> Law2_ScGeom_MindlinPhys_Mindlin
AMBIGUOUS: 2+5 -> Law2_ScGeom6D_CohFrictPhys_CohesionMoment
AMBIGUOUS: 6+3 -> Law2_GridCoGridCoGeom_FrictPhys_CundallStrack
AMBIGUOUS: 6+13 -> Law2_GridCoGridCoGeom_FrictPhys_CundallStrack
AMBIGUOUS: 7+5 -> Law2_ScGeom6D_CohFrictPhys_CohesionMoment
AMBIGUOUS: 11+3 -> Law2_ScGridCoGeom_FrictPhys_CundallStrack
AMBIGUOUS: 11+13 -> Law2_ScGridCoGeom_FrictPhys_CundallStrack
terminate called after throwing an instance of 'std::runtime_error'
  what():  Ambiguous dispatch.
Aborted (core dumped)


My code is as follows:

#################################################

from yade.gridpfacet import *
from yade import pack, plot,qt,export

fac=1000
radius=4e-6*fac
l=1e-3*fac
th=5e-6*fac
tsart=10
rad=30e-6*fac

#### Material properties #### 
###cylinders###
Df=2590		#Density
Vf=0.21		#Poisson ratio
Ef=7.2e10	#Young's modulus

###powders###
Dp=1020		#Density
Vp=0.393	#Poisson ratio
Ep=1.935e9	#Young's modulus
#Friction coefficient 0.35

###walls###
Dw=8030		#Density
Vw=0.265	#Poisson ratio
Ew=1.90e10	#Young's modulus

O.engines=[
	ForceResetter(),
	InsertionSortCollider([
		Bo1_GridConnection_Aabb(),
		Bo1_PFacet_Aabb(), 
		Bo1_Sphere_Aabb(),
	]),
	InteractionLoop([
		Ig2_GridNode_GridNode_GridNodeGeom6D(),
		Ig2_Sphere_Sphere_ScGeom(),
		#Ig2_Sphere_Sphere_ScGeom6D(),
		Ig2_Sphere_GridConnection_ScGridCoGeom(),
		Ig2_GridConnection_GridConnection_GridCoGridCoGeom(),	# cylinder-cylinder interaction
		Ig2_Sphere_PFacet_ScGridCoGeom(),	# needed for GridNode-pFacet interaction (why is this not included in Ig2_GridConnection_PFacet_ScGeom???)
		Ig2_GridConnection_PFacet_ScGeom(),	# Cylinder-pFcet interaction
	],
	[
		Ip2_CohFrictMat_CohFrictMat_CohFrictPhys(setCohesionNow=True,setCohesionOnNewContacts=True),
		#Ip2_FrictMat_FrictMat_FrictPhys(),
		Ip2_FrictMat_FrictMat_MindlinPhys(gamma=40e-3),
	],
	[
		#Law2_ScGeom_FrictPhys_CundallStrack(),          # contact law for sphere-sphere
		Law2_ScGeom_MindlinPhys_Mindlin(includeAdhesion=True),
		Law2_ScGeom6D_CohFrictPhys_CohesionMoment(),	# contact law for "internal" cylider forces
		Law2_ScGridCoGeom_FrictPhys_CundallStrack(),	# contact law for Cylinder-pFacet interaction
		Law2_GridCoGridCoGeom_FrictPhys_CundallStrack(),# contact law for cylinder-cylinder interaction
	]
	),
	GlobalStiffnessTimeStepper(timestepSafetyCoefficient=0.01,label='ts'), 
	NewtonIntegrator(gravity=(0.,0,-9.8),damping=0.2,label='newton'),
]
O.dt=0.1*PWaveTimeStep()

#cylindrical roller: the IDs of cylinder must be [0, 1, 2] which are used for translation and rotation engines.
O.materials.append( CohFrictMat( young=Ef,poisson=Vf,density=Df,frictionAngle=radians(18),normalCohesion=1e20,shearCohesion=1e20,momentRotationLaw=True,label='cMat' ) )  
O.materials.append( FrictMat( young=Ef,poisson=Vf,density=Df,frictionAngle=radians(18),label='fMat' ) )  # material for general interactions

O.materials.append( FrictMat( young=Ep,poisson=Vp,density=Dp,frictionAngle=radians(18),label='sphereMat' ) )  # material for general interactions
O.materials.append( CohFrictMat( young=Ep,poisson=Vp,density=Dp,frictionAngle=radians(30),normalCohesion=1e10,shearCohesion=1e10,momentRotationLaw=True,label='sphereMatc' ) ) 

O.materials.append( CohFrictMat( young=Ew,poisson=Vw,density=Dw,frictionAngle=radians(30),normalCohesion=1e20,shearCohesion=1e20,momentRotationLaw=True,label='cMatw' ) ) 
O.materials.append( FrictMat( young=Ew,poisson=Vw,density=Dw,frictionAngle=radians(30),label='fMatw' ) )  # material for general interactions

nodesIds=[]
cylIds=[]

cylinder((-l/2,0,1*l),(l/2,0,1*l),radius=radius,nodesIds=nodesIds,cylIds=cylIds,color=[1,0,0],fixed=False,intMaterial='cMat',extMaterial='fMat')

s1=O.bodies.append(sphere([0,0,2*rad],radius=rad,fixed=True,material='sphereMat'))
s2=O.bodies.append(sphere([0,0,0.5*l],radius=rad,fixed=False,material='sphereMat'))

#Bottom surface
color=[255./255.,102./255.,0./255.]
n0=O.bodies.append( gridNode([-l,-l,0],th,wire=False,fixed=True,material='cMatw',color=color) )
n1=O.bodies.append( gridNode([l,-l,0],th,wire=False,fixed=True,material='cMatw',color=color) )
n2=O.bodies.append( gridNode([l,l,0],th,wire=False,fixed=True,material='cMatw',color=color) )
n3=O.bodies.append( gridNode([-l,l,0],th,wire=False,fixed=True,material='cMatw',color=color) )
O.bodies.append( gridConnection(n0,n1,th,color=color,material='fMatw') )
O.bodies.append( gridConnection(n1,n2,th,color=color,material='fMatw') )
O.bodies.append( gridConnection(n2,n0,th,color=color,material='fMatw') )
O.bodies.append( gridConnection(n2,n3,th,color=color,material='fMatw') )
O.bodies.append( gridConnection(n3,n0,th,color=color,material='fMatw') )
O.bodies.append( pfacet(n0,n1,n2,wire=False,material='fMatw',color=color) )
O.bodies.append( pfacet(n0,n2,n3,wire=False,material='fMatw',color=color) )

#### For viewing ####
qt.View()
Gl1_Sphere.stripes=True

#### Allows to reload the simulation ####
O.saveTmp()

##########################################################

Thank you so much for your help!

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