Build error: no suitable spherical body to calculate dt
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+
# mat, engines, ...
mat = PolyhedraMat(
O.materials.
O.engines=[
ForceResetter(),
InsertionSor
InteractionLoop(
[
[
[
),
NewtonIntegr
PyRunner(
]
O.dt = dt
def checker():
for i in range(nCycles):
ii = nGravityDeposit
if O.iter == ii:
moveBottom()
if O.iter == ii+1:
stopBottom()
if O.iter == nGravityDeposit
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(
p300 = Vector3(
pxs = (p000,p100,
p001,p101,p201,p301 = [p+Vector3(
p010,p110,p210,p310 = [p+Vector3(
p011,p111,p211,p311 = [p+Vector3(
p00b,p10b,p20b,p30b = [p+Vector3(
p01b,p11b,p21b,p31b = [p+Vector3(
def rect(vs,**kw):
v1,v2,v3,v4 = vs
return [
facet(
facet(
]
movables = rect((p100,
rects = (
(p000,
(p200,
(p000,
(p300,
(p000,
(p100,
(p200,
(p010,
(p110,
(p210,
(p100,
(p110,
(p100,
(p200,
)
rects = movables + sum((rect(r) for r in rects),[])
O.bodies.
# gravel
polyhedra_
###########
cheers
Jan
Question information
- Language:
- English Edit question
- Status:
- Answered
- For:
- Yade Edit question
- Assignee:
- No assignee Edit question
- Last query:
- Last reply:
Can you help with this problem?
Provide an answer of your own, or ask henry for more information if necessary.