← Back to team overview

yade-dev team mailing list archive

[Bug 1767601] [NEW] segmentation fault after erasing some particles

 

Public bug reported:

Dear all,
I built a simple script according to script-session1.py (B.Chareyre). I tried to erase some particles, it was done without any problem. but after finishing the simulation, as soon as  I tried to run more iterations, it showed segmentation fault and quit  yade.
The length of O.bodies is similar to The one before erasing.(Does not change after erasing)
you can see my question in:
https://answers.launchpad.net/yade/+question/668274
I'm using Ubuntu 14.04 LTS and yadedaily version: 2018.02b-85-f861843~trusty

And here is my script:


# -*- coding: utf-8 -*-
from yade import pack, plot
young=1e8
compFricDegree = 5
finalFricDegree = 35
mn,mx=Vector3(0,0,0),Vector3(.005,.005,.005)

O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=radians(compFricDegree),density=2600,label='spheres'))
O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=0,density=0,label='walls'))
walls=aabbWalls([mn,mx],thickness=0,material='walls')
wallIds=O.bodies.append(walls)
psdSizes=[.00001,.00006,.00008,.0002,.0004,.0005,.0008,.001]
psdCumm=[0,.0175,.025,.4,.5,.7,.85,1]
sp=pack.SpherePack()
sp.makeCloud(mn,mx,psdSizes=psdSizes,psdCumm=psdCumm,distributeMass=True,num=500)
sp.toSimulation(material='spheres')
triax=TriaxialStressController(
	maxMultiplier=1.001,
	finalMaxMultiplier=1.0001,
	thickness = 0,
	stressMask = 7,
	internalCompaction=True,
)

newton=NewtonIntegrator(damping=0.2)
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()],label="iloop"
	),
	triax,
	newton,
]
O.dt=PWaveTimeStep()
triax.goal1=triax.goal2=triax.goal3=-10000

while 1:
  O.run(1000,True)
  unb=unbalancedForce()
  print 'porosity', triax.porosity
  if unb<0.01 and abs(-10000-triax.meanStress)/10000<.01:
    break

bodiesToBeDeleted=[]
for b in O.bodies:
	if b.id in range(6):
		continue
	else:
		if b.state.pos[0]<.002:
			bodiesToBeDeleted.append(b)

for b in bodiesToBeDeleted:
	O.bodies.erase(b.id)

** Affects: yade
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Yade
developers, which is subscribed to Yade.
https://bugs.launchpad.net/bugs/1767601

Title:
  segmentation fault after erasing some particles

Status in Yade:
  New

Bug description:
  Dear all,
  I built a simple script according to script-session1.py (B.Chareyre). I tried to erase some particles, it was done without any problem. but after finishing the simulation, as soon as  I tried to run more iterations, it showed segmentation fault and quit  yade.
  The length of O.bodies is similar to The one before erasing.(Does not change after erasing)
  you can see my question in:
  https://answers.launchpad.net/yade/+question/668274
  I'm using Ubuntu 14.04 LTS and yadedaily version: 2018.02b-85-f861843~trusty

  And here is my script:

  
  # -*- coding: utf-8 -*-
  from yade import pack, plot
  young=1e8
  compFricDegree = 5
  finalFricDegree = 35
  mn,mx=Vector3(0,0,0),Vector3(.005,.005,.005)

  O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=radians(compFricDegree),density=2600,label='spheres'))
  O.materials.append(FrictMat(young=young,poisson=0.5,frictionAngle=0,density=0,label='walls'))
  walls=aabbWalls([mn,mx],thickness=0,material='walls')
  wallIds=O.bodies.append(walls)
  psdSizes=[.00001,.00006,.00008,.0002,.0004,.0005,.0008,.001]
  psdCumm=[0,.0175,.025,.4,.5,.7,.85,1]
  sp=pack.SpherePack()
  sp.makeCloud(mn,mx,psdSizes=psdSizes,psdCumm=psdCumm,distributeMass=True,num=500)
  sp.toSimulation(material='spheres')
  triax=TriaxialStressController(
  	maxMultiplier=1.001,
  	finalMaxMultiplier=1.0001,
  	thickness = 0,
  	stressMask = 7,
  	internalCompaction=True,
  )

  newton=NewtonIntegrator(damping=0.2)
  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()],label="iloop"
  	),
  	triax,
  	newton,
  ]
  O.dt=PWaveTimeStep()
  triax.goal1=triax.goal2=triax.goal3=-10000

  while 1:
    O.run(1000,True)
    unb=unbalancedForce()
    print 'porosity', triax.porosity
    if unb<0.01 and abs(-10000-triax.meanStress)/10000<.01:
      break

  bodiesToBeDeleted=[]
  for b in O.bodies:
  	if b.id in range(6):
  		continue
  	else:
  		if b.state.pos[0]<.002:
  			bodiesToBeDeleted.append(b)

  for b in bodiesToBeDeleted:
  	O.bodies.erase(b.id)

To manage notifications about this bug go to:
https://bugs.launchpad.net/yade/+bug/1767601/+subscriptions


Follow ups