New question #653755 on Yade:
https://answers.launchpad.net/yade/+question/653755
Am new of yade but doing similar work to a post you responded to and provided
the code below. HOWEVER WHEN I RUN IT i get the erroe PWave time step has not
found any spherical body to calculate dt. And the grahical interface do not
show any animation. How can i resolve thjis problem.
Jan Stránský (honzik) said on 2017-07-12: #6
A MWE below. I used polyhedra, but it takes a lot of time. Spheres with high
friction coefficient ma be used to simulate polyhedra and make the simulation
faster. It very much depends on the purpose of the simulations and allowed
level of simplification.
###########
######################################################################
# INPUTS
######################################################################
gravity = 100
# box dimensions
widthl = .3
widthr = .3
widthc = .3
height = .3
thick = .1
deep = -.2
# size of grains
sizeMin = 40e-3
sizeMax = 60e-3
frictionAngle = .5
young = 1e8 # stiffness
dt = 1e-3 # time step
nGravityDeposition = 250 # how long to run initial gravity deposition
nCycles = 3 # how many jumps to run afterwards
nStepsBetweenCycles = 200 # number of time steps between jumps
dspl = 20e-3
# how much larger the initial make cloud box should be
fillBoxHFactor = 3
######################################################################
from yade import polyhedra_utils
width = widthl+widthc+widthr
# mat, engines, ...
mat = PolyhedraMat(young=young,poisson=10,frictionAngle=frictionAngle)
O.materials.append(mat)
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Polyhedra_Aabb(),Bo1_Facet_Aabb()]),
InteractionLoop(
[Ig2_Polyhedra_Polyhedra_PolyhedraGeom(),
Ig2_Facet_Polyhedra_PolyhedraGeom()],
[Ip2_PolyhedraMat_PolyhedraMat_PolyhedraPhys()],
[Law2_PolyhedraGeom_PolyhedraPhys_Volumetric()],
),
NewtonIntegrator(damping=0.4,gravity=(0,0,-gravity)),
PyRunner(iterPeriod=1,command='checker()'),
]
O.dt = dt
def checker():
for i in range(nCycles):
ii = nGravityDeposition+i*nStepsBetweenCycles
if O.iter == ii:
moveBottom()
if O.iter == ii+1:
stopBottom()
if O.iter == nGravityDeposition+nCycles*nStepsBetweenCycles:
O.pause()
def moveBottom():
v = dspl / O.dt
for b in movables:
b.state.vel = (0,0,-v)
def stopBottom():
for b in movables:
b.state.vel = (0,0,0)
# box
p000 = Vector3(0,0,0)
p100 = Vector3(widthl,0,0)
p200 = Vector3(widthl+widthc,0,0)
p300 = Vector3(widthl+widthc+widthr,0,0)
pxs = (p000,p100,p200,p300)
p001,p101,p201,p301 = [p+Vector3(0,0,height) for p in pxs]
p010,p110,p210,p310 = [p+Vector3(0,thick,0) for p in pxs]
p011,p111,p211,p311 = [p+Vector3(0,thick,height) for p in pxs]
p00b,p10b,p20b,p30b = [p+Vector3(0,0,deep) for p in pxs]
p01b,p11b,p21b,p31b = [p+Vector3(0,thick,deep) for p in pxs]
def rect(vs,**kw):
v1,v2,v3,v4 = vs
return [
facet((v1,v2,v3),**kw),
facet((v1,v3,v4),**kw),
]
movables = rect((p100,p200,p210,p110)) # bottom center
rects = (
(p000,p100,p110,p010), # bottom left
(p200,p300,p310,p210), # bottom left
(p000,p010,p011,p001), # left
(p300,p310,p311,p301), # right
(p000,p100,p101,p001), # front left
(p100,p200,p201,p101), # front center
(p200,p300,p301,p201), # front right
(p010,p110,p111,p011), # back left
(p110,p210,p211,p111), # back center
(p210,p310,p311,p211), # back right
(p100,p200,p20b,p10b), # front center below
(p110,p210,p21b,p11b), # back center below
(p100,p110,p11b,p10b), # left below
(p200,p210,p21b,p20b), # right below
)
rects = movables + sum((rect(r) for r in rects),[])
O.bodies.append(rects)
# gravel
polyhedra_utils.fillBox((0,0,0),(width,thick,fillBoxHFactor*height),mat,sizemin=3*[sizeMin],sizemax=3*[sizeMax],seed=1)
###########
cheers
Jan
--
You received this question notification because your team yade-users is
an answer contact for Yade.
_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help : https://help.launchpad.net/ListHelp