Cycling AddToClump example fails

Asked by Zoheir Khademian on 2020-02-03

Hello all,
I was able to successfully run addToClump-example.py example at "https://github.com/yade/trunk/blob/master/examples/clumps/addToClump-example.py "

Hopwver, when I try to settle the clumps under gravity, I get this error:
python3.6: /builds/yade-dev/trunk/deb/yadedaily/core/Clump.cpp:61: void yade::Clump::addForceTorqueFromMembers(const yade::State*, yade::Scene*, yade::Vector3r&, yade::Vector3r&): Assertion `member->isClumpMember()' failed.
Aborted (core dumped)

Your help in this would be appreciated

Zoheir

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Zoheir Khademian
Solved:
2020-02-04
Last query:
2020-02-04
Last reply:
2020-02-03
Jan Stránský (honzik) said : #1

Hello Zoheir,

Your MWE and info about Yade and OS version would be appreciated [1]

cheers
Jan

[1] https://www.yade-dem.org/wiki/Howtoask

Zoheir Khademian (zoheir1928) said : #2

Hi Jan,

Thanks for the quick reply.
My Yade version is 20191220-2907
and Ubuntu version is 18.04.3
and Python version is 2.7.17
Here is the MWE, which is only a "O.run()" different from the trunk example.

from __future__ import print_function

from builtins import range
from yade import pack,export,qt

#define material for all bodies:

#define engines:
O.engines=[
 ForceResetter(),
 InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Box_Aabb()]),
 InteractionLoop(
  [Ig2_Sphere_Sphere_ScGeom(),Ig2_Box_Sphere_ScGeom()],
  [Ip2_FrictMat_FrictMat_FrictPhys()],
  [Law2_ScGeom_FrictPhys_CundallStrack()]
 ),
 NewtonIntegrator(damping=0.7,gravity=[0,0,-10])
]

#create a box:
id_box = O.bodies.append(box((0,0,0),(2,2,.1),fixed=True))

#### show how to use appendClumped():

#create 2 clumps:
clump1=O.bodies.appendClumped([\
sphere([0,0,1], radius=0.5),\
sphere([0.2,0,1], radius=0.5)\
])
clump2=O.bodies.appendClumped([\
sphere([3,1,2], radius=0.5),\
sphere([3.2,1,2], radius=0.5)\
])

#get clump ids:
id_clump1 = clump1[0]
id_clump2 = clump2[0]

#definition for getting informations from all clumps:
def getClumpInfo():
 for b in O.bodies:
  if b.isClump:
   print('Clump ',b.id,' has following members:')
   keys = list(b.shape.members.keys())
   for ii in range(0,len(keys)):
    print('- Body ',keys[ii])
   print('inertia:',b.state.inertia)
   print('mass:',b.state.mass,'\n')

#### show how to use addToClump():

#create a new sphere:
id_new=O.bodies.append(sphere([0,0.2,1], radius=0.5))

print('\nSTATE before adding sphere to clump ------------')
getClumpInfo()

#add a sphere to the clump:
O.bodies.addToClump([id_new],id_clump1)

print('\nSTATE after adding sphere to clump ------------')
getClumpInfo()

#add a clump to a clump:
O.bodies.addToClump([id_clump2],id_clump1)

print('\nSTATE after adding the second clump to clump ------------')
getClumpInfo()

#try to add clump member to a clump (should give error message):
#O.bodies.addToClump(1,id_clump1)
#try to add clump to the same clump (should give error message):
#O.bodies.addToClump(id_clump1,id_clump1)

O.dt=1e-6

print('\nPress Play button ... ')
renderer = qt.Renderer()
qt.View()
O.run()

Jan Stránský (honzik) said : #3

I used 2018.02b and 2020-01-06.git-f6677ba and could not reproduce the problem..
Jan

Jérôme Duriez (jduriez) said : #4

You may anyway forget about github to download stuff

See "The main [Yade] branches [= source code] are currently on GitLab (migrated from GitHub in January 2019)." on https://yade-dem.org/doc/

Zoheir Khademian (zoheir1928) said : #5

Thank you Jan and Jerome. That was a version issue.

Zoheir Khademian (zoheir1928) said : #6

Thank you Jan and Jerome. That was a version issue.