yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #21524
[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.