← Back to team overview

yade-users team mailing list archive

[Question #697093]: Problems encountered in using FrictMat for polyhedron.

 

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

Dear all,

I want to use polyhedra and spheres to make concrete,see[1].When I create a loose packing with spheres and polyhedrons with FrictMat and then compress them,I found that when I use Ig2_Polyhedra_Polyhedra_ScGeom()、Ip2_FrictMat_FrictMat_FrictPhys()、Law2_ScGeom_FrictPhys_CundallStrack(),when  polyhedron contact with  polyhedron,it  will fly out or directly through the bottom.Here is a MWE,see[2].I think it  might be ig2_ Polyhedra_ Polyhedra_ Scgeom() is not working properly.

Thanks in advance.
Jie

[1]https://answers.launchpad.net/yade/+question/692003
[2]MWE:
####################
from yade import polyhedra_utils,pack,utils,qt
import numpy as np

###material
m= FrictMat(density=4800,young=24e9,poisson=0.2,frictionAngle=radians(38.65)) 
O.materials.append(m) 
####Bottom
meanSize = 0.05
wallThickness = 0.5*meanSize
length = 0.150
height=0.6
v1=((-0.5*length,0.5*wallThickness,0.5*length),(0.5*length,0.5*wallThickness,0.5*length),(0.5*length,0.5*wallThickness,-0.5*length),(-0.5*length,0.5*wallThickness,-0.5*length),(-0.5*length,-0.5*wallThickness,0.5*length),(0.5*length,-0.5*wallThickness,0.5*length),(0.5*length,-0.5*wallThickness,-0.5*length),(-0.5*length,-0.5*wallThickness,-0.5*length))
color=[0,0.5,1]
b1 = polyhedra_utils.polyhedra(material=m,v=v1,fixed=True,color=color) # you can set wire at 
b1.state.pos = [0,0,0]    
O.bodies.append(b1)
###makeCloud
sp=pack.SpherePack()
mn,mx=Vector3(-0.5*(length-1*wallThickness),0.5*meanSize,-0.5*(length-1*wallThickness)),Vector3(0.5*(length-1*wallThickness),0.95*height,0.5*(length-1*wallThickness))
###Generate polyhedron
sp.makeCloud(mn,mx,psdSizes=[0.01,0.01,0.04,0.04],psdCumm=(0,0.9,0.9,1),num=-1,distributeMass=False)
for center,radius in sp:
    if radius > 0.015:
        t=polyhedra_utils.polyhedra(material=m,size=(0.02,0.02,0.02),color=(0.2,0.3,0.4))
        t.state.pos = center # sets polyhedron position according to sphere position
        O.bodies.append(t)

###engine
O.engines = [
    ForceResetter(),
    InsertionSortCollider([Bo1_Polyhedra_Aabb()]),
    InteractionLoop(
        [Ig2_Polyhedra_Polyhedra_ScGeom()],
        [Ip2_FrictMat_FrictMat_FrictPhys()],
        [Law2_ScGeom_FrictPhys_CundallStrack()],
    ),
    NewtonIntegrator(gravity=(0,-9.81,0)),
]
O.dt=1e-5
from yade import qt
v=qt.View()
v.sceneRadius=3.0


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