yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #22679
Re: [Question #689771]: ptonparticle2 search exceeded 50000 iterations! step:0 0 0
Question #689771 on Yade changed:
https://answers.launchpad.net/yade/+question/689771
Status: Open => Answered
Vasileios Angelidakis proposed the following answer:
Hi Zhiruo,
First of all, in the future, please try to send Minimal Working Scripts,
as described in [1].
Despite this, I can give you some pointers:
1. The main issue with this script, is that you have defined the
particles "g" with huge overlaps, while they are dynamic bodies (i.e.
fixed=False). So, the contact detection algorithm cannot handle this. In
the DEM, we usually deal with small overlaps among the particles. That
is, I would advise you to generate the granular material of the bed in
elevated positions where the particles are non-overlapping, and let them
deposit under gravity inside the box. Then, you can have the ellipsoid
impact on them.
2. The second issue lies in the fact that you have 22258 bodies in your
simulation, all of which interact with each other. The bodies with
mask=3 forming the box are not dynamic, and thus you do not need to
perform primary contact detection among them, while you want them to
interact with the granular material (g) and the ellipsoid (both of which
have a mask=1 by default ). You can stop detecting contact where you
don't need it, by assigning a bitmask: avoidSelfInteractionMask=2 inside
the collider (line 78 of your script), like this:
InsertionSortCollider([PotentialBlock2AABB()],verletDist=0.00,avoidSelfInteractionMask=2),
You can read the documentation [2] to see how this bitmask works. In
essence, using what I suggest, you detect contact between particles with
masks 1-1 and 1-3, but you do not detect contact between particles with
masks 3-3.
3. Also, I would advise you use a non-zero verletDist, as a fraction of
the mean particle dimension, but this is not a critical problem right
now.
4. You use a large timestep: The function O.PWaveTimeStep() only works
for spheres (or its equivalent, for polyhedra). I would advise you
estimate the timestep manually, using the contact stiffness and the mass
of the smallest dynamic body (ellipsoid or granular material).
5. To simulate the box, you don't need all these overlapping particles.
Would advise you to use one cuboid to simulate each face.
6. Also, for the Potential Blocks, you no longer need to assign the
volume and inertia manually. You can have a look in [3].
7. Last, for this number of bodies, I don't think the
PotentialBlockVTKRecorder will manage to cope. Use instead the new
feature export.exportPotentialBlocks [4] inside a PyRunner statement, if
you need a VTK output.
Hope this helps.
All the best,
Vasileios
[1] https://www.yade-dem.org/wiki/Howtoask
[2] https://yade-dem.org/doc/yade.wrapper.html#yade.wrapper.Collider
[3] https://gitlab.com/yade-dev/trunk/-/blob/master/examples/PotentialBlocks/cubePBscaled.py#L70
[4] https://gitlab.com/yade-dev/trunk/-/blob/master/py/export.py#L902
--
You received this question notification because your team yade-users is
an answer contact for Yade.