yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #19079
Re: [Question #678645]: Shrinkage of particles
Question #678645 on Yade changed:
https://answers.launchpad.net/yade/+question/678645
Jan Stránský proposed the following answer:
Hello,
thanks for the code (although, as Bruno pointed, it is not very minimal ;-) Why it is not MWE:
- unused or unnecessarry code (import datetime, qtr.bgColor)
- materials are irrelevant to the problem (and you define CohFrictMat and in engines you have just FrictMat)
- facetCylinder is also not needed
- there are quite a lot particles for testing
- but MOST importantly, it is not WORKING example. Your Shrinkage function ends with error and there are several problems:
- for i in O.bodies[Sphere]: # ???
- utils.growParticles(0.5,updateMass=True) # probably you meant just growParticle (without s). growParticles grow all particles. Not what you want and it not very reasonable to use it inside looping over all bodies..
Next time please try to create a MWE specific for the problem.
Quite often you solve the problem yourself this way ;-)
> the radius will be reduced instantly. but I want their reduction in each step.
> PyRunner(command='Shrinkage()', label='Shrink',iterPeriod=700000)
if you want the reduction in each step, use iterPeriod=1
a MWE (demonstration how to shrink particles and an inspiration how true MWE could look like):
###
# you can see particles growing below the wall. For shrinkage, just use multiplier <1
from yade import pack
rMean,num = 1e-3, 100
sp=pack.SpherePack()
sp.makeCloud((-5e-3,-5e-3,0),(5e-3,5e-3,20e-3),rMean=rMean,num=num)
O.bodies.append([utils.sphere(c,r) for c,r in sp])
O.bodies.append(wall((0,0,-5e-3),2))
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb()]),
InteractionLoop(
[Ig2_Sphere_Sphere_ScGeom()],
[Ip2_FrictMat_FrictMat_FrictPhys()],
[Law2_ScGeom_FrictPhys_CundallStrack()]
),
NewtonIntegrator(gravity=(0,0,-9.81),damping=0.4),
PyRunner(iterPeriod=1,command='shrink()'),
]
O.dt=1e-5
def shrink():
for b in O.bodies:
if not isinstance(b.shape,Sphere):
continue
if b.state.pos[2] < -5e-3:
growParticle(b.id,1+1e-4,updateMass=True)
###
cheers
Jan
--
You received this question notification because your team yade-users is
an answer contact for Yade.