Error in contact with various shapes of particles with multiple materials

Asked by Xue

Hello everyone,
I am running yade2019 software on ubantu 16.04 system with a model containing spherical particles (frictmat material) and polyhedral particles (polyhedramat material) and the basic model script is as follows:

from libyade import yade
from yade import geom,utils
from yade import polyhedra_utils
from yade import ymport,timing
from yade import pack,export
from yade import *
from math import *

matP1 = PolyhedraMat()
matP1.density = 2500 #kg/m^3
matP1.young = 5.5e7
matP1.poisson = 0.21 # real 0.21
matP1.frictionAngle = 0.65

matF1 = PolyhedraMat()
matF1.density = 2600 #kg/m^3
matF1.young = 5.5e7
matF1.poisson = 0.21 # real 0.21
matF1.frictionAngle = 0.2

gravel = FrictMat()
gravel.density = 1950 #kg/m^3
gravel.young = 7e6 #Pa 1E7
gravel.poisson = 0.33 # 20000/1E7
gravel.frictionAngle = 0.23 #rad

O.materials.append(matP1)
O.materials.append(matF1)
O.materials.append(gravel)

O.bodies.append(utils.facet(((0,0,0),(0.76,0,0),(0.76,0,0.35)),dynamic=None,fixed=True,material=matF1))
O.bodies.append(ymport.text('/home/xue/chongsuan1/sphere.dat',material=gravel,shift=Vector3(0,0,-0.02)))
O.bodies.append(ymport.textPolyhedra('/home/xue/chongsuan/group/ballast.dat',material=matP1,shift=Vector3(0,0,-0.02)))

O.engines =[
 ForceResetter(),
 InsertionSortCollider([Bo1_Polyhedra_Aabb(),Bo1_Wall_Aabb(),Bo1_Facet_Aabb(),Bo1_Sphere_Aabb()],verletDist=.0005),
 InteractionLoop(
 [Ig2_Wall_Polyhedra_PolyhedraGeom(),Ig2_Polyhedra_Polyhedra_PolyhedraGeom(),Ig2_Facet_Polyhedra_PolyhedraGeom(),Ig2_Sphere_Sphere_ScGeom(),Ig2_Sphere_Polyhedra_ScGeom(),Ig2_Facet_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom(),Ig2_Polyhedra_Polyhedra_ScGeom()],
               [Ip2_PolyhedraMat_PolyhedraMat_PolyhedraPhys(),Ip2_FrictMat_PolyhedraMat_FrictPhys(),Ip2_FrictMat_FrictMat_FrictPhys()],
  [Law2_PolyhedraGeom_PolyhedraPhys_Volumetric(),Law2_ScGeom_FrictPhys_CundallStrack()], # contact law -- apply forces #Bo1_Cylinder_Aabb()
 ),
 NewtonIntegrator(damping=0.7,gravity=(0,0,-0.3),label='newton'),
]

But it shows the error reported as follows:

FATAL /home/xue/dem-fem-coupling-master/installation/_build/yade/source/pkg/common/InteractionLoop.cpp:143 action: None of given Law2 functors can handle interaction #3841+1642, types geom:PolyhedraGeom=10 and phys:FrictPhys=3 (LawDispatcher::getFunctor2D returned empty functor)

I have tried many times, the id order of the interactions in this error report is "sphere + polyhedra", which is the opposite order of Ip2_FrictMat_PolyhedraMat_FrictPhys() that I use. Are these two related? How can I fix the error?

Thank you for your attention and support.

xue

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
Jan Stránský (honzik) said :
#1

Hello,

> ubantu 16.04 system

Ubuntu?
Try not to make needless typos.

As the error says, Yade does not know how to deal with PolyhedraGeom and FrictPhys.
Currently such combination is not implemented.

Several options:
1) implement the missing functionality
2) adjust the settings such that the non-existent combination does not occur

concerning option 2), investigate the problematic interaction, the shapes and materials.
According to the script, it should not be "sphere + polyhedra", as this combination should create ScGeom, not PolyhedraGeom (according to Ig2_Sphere_Polyhedra_ScGeom).

> Ig2_Polyhedra_Polyhedra_PolyhedraGeom()
> Ig2_Polyhedra_Polyhedra_ScGeom()

choose one or the other, not both

> Ip2_FrictMat_PolyhedraMat_FrictPhys()

PolhedraMat is derived from FrictMat, so this case should be ok with Ip2_FrictMat_FrictMat_FrictPhys

Cheers
Jan

Revision history for this message
Xue (1q12) said :
#2

Hello jan!
I rechecked the shape of the two particles in the above interaction. As you expected, the contact is not a combination of spherical particles + polyhedral particles.
The above model is a coupling model built with oofem and yade, the id=3841 in the error report exceeds the number of particles I imported via yade, so I deduce that this should be a transformed unit (facet?) on the coupling interface. Therefore, the contact type should be polyhedral particles + transformed unit from FEM.
However, I did not figure out where the contact parameters of the interface unit are defined when it is involved in the contact force calculation (in DEM)? Besides, the above reported error only appears when I defined FrictMat in the script. When I define only PolyhedraMat and use only the following engine, the problem did not occur.

O.engines =[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_Polyhedra_Aabb()],verletDist=.0005),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom(),Ig2_Facet_Sphere_ScGeom(),Ig2_Facet_Polyhedra_PolyhedraGeom(),Ig2_Polyhedra_Polyhedra_PolyhedraGeom(),Ig2_Sphere_Polyhedra_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys(),Ip2_PolyhedraMat_PolyhedraMat_PolyhedraPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack(),Law2_PolyhedraGeom_PolyhedraPhys_Volumetric()],
),
NewtonIntegrator(damping=0.7,gravity=(0,0,-0.3),label='newton'),
]

I apologize for providing wrong information.
xue

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

> the id=3841 in the error report exceeds the number of particles I imported via yade
> However, I did not figure out where the contact parameters of the interface unit are defined when it is involved in the contact force calculation (in DEM)?

The other bodies are imported "via yade", athough not directly.
Still you have access to the bodies as O.bodies[theProblematicID]

> Besides, the above reported error only appears when I defined FrictMat in the script. When I define only PolyhedraMat and use only the following engine, the problem did not occur.

If you use only PolyhedraMat, all the needed dispatchers for material-shape combinations exist.
For FrictMat and PolyhedraMat, you create a FrictPhys (Ip2_FrictMat_PolyhedraMat_FrictPhys) but at the same time from Facet and Polyhedron you create PolyhedraGeom (Ig2_Facet_Polyhedra_PolyhedraGeom).
And there is no Law2 for PolyhedraGeom and FrictPhys..

You have either implement the Law2, or choose such combination of shapes, materials, Ip2 and Ig2 such that all resulting IGeom+IPhys combinations can use existing Law2.

Cheers
Jan

Can you help with this problem?

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

To post a message you must log in.