[Yade-users] [Question #680662]: Small density sphere in micron size makes segment fault (core dumped)

2019-05-06 Thread gaoxuesong
New question #680662 on Yade:
https://answers.launchpad.net/yade/+question/680662

In my case, the sphere used is in micron size. When i use the real material 
property, especially the density, the calculation crashes after some 
time(Segment fault (core dumped)). Then i try to magnify the density and find 
the run goes well when the density amplified by one million times. 
Following is the testing code where the parameter masscof is the density 
amplification factor,   

from yade import geom,pack
import math
from yade import qt
import os 

os.system('rm -rf plt;mkdir ./plt/')
os.system('rm -rf out;mkdir ./out/')

# PhysicalParameters
muS = 0.57735   # Friction coefficient (30 degree)
FricAngleS = math.atan(muS)

### mass amplification factor ### 
masscof = 1e6  

# PhysicalParameters
matSph = CohFrictMat(
 density = 7990*masscof,
 young = 193e9,
 poisson = 0.3,
 frictionAngle = FricAngleS,
 momentRotationLaw = True)
SMat = O.materials.append(matSph)


# create empty sphere packing
sp = pack.SpherePack()
# generate spheres1 with a certain diameter distribution
sp.makeCloud((0,0,0.35e-3), (1.0e-3,1.0e-3,1.4e-3), 
psdSizes=[0.012e-3,0.0186e-3,0.0312e-3,0.0484e-3,0.053e-3], 
psdCumm=[0,0.1,0.5,0.9,1.0])
# add the sphere pack to the simulation
sp.toSimulation(material=SMat)

# create rectangular box1(Left) from facets
O.bodies.append(geom.facetBox((0.5e-3,0.5e-3,0.5e-3),(0.5e-3,0.5e-3,0.5e-3), 
wallMask=31, material=SMat))
O.bodies.append(geom.facetBox((0.5e-3,0.5e-3,0.15e-3),(0.5e-3,0.5e-3,0.2e-3), 
wallMask=63, color=(0,1,0), wire=False, material=SMat))

O.dt = 0.85*utils.PWaveTimeStep()
  
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
InteractionLoop(
# handle sphere+sphere and facet+sphere collisions
   [Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Facet_Sphere_ScGeom6D()],
   [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()],
   [Law2_ScGeom6D_CohFrictPhys_CohesionMoment()]
),
NewtonIntegrator(damping=0.75, exactAsphericalRot=True, 
gravity=(0,0,-9.81)),
qt.SnapshotEngine(fileBase="./plt/",iterPeriod=200,label='snapshot'),
VTKRecorder(iterPeriod=200, recorders=['spheres','colors'], 
fileName='./out/'),
]

#show geometry:
qtr = qt.Renderer()
qtr.bgColor = [1,1,1]
qt.Controller()
v = qt.View() 
#v.center() 
v.axes=False
v.viewDir=Vector3(0,1,0)
v.eyePosition=Vector3(1.8e-3,-5.2e-3,1.0e-3)

#O.run()


-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #680662]: Small density sphere in micron size makes segment fault (core dumped)

2019-05-06 Thread Jan Stránský
Question #680662 on Yade changed:
https://answers.launchpad.net/yade/+question/680662

Status: Open => Needs information

Jan Stránský requested more information:
Hello,

thanks for the code. I have tried the script for a while without any problem. 
Please provide more info:
- At which iteration the problem occur?
- is the SnapshotEngine and VTKRecorder needed to reproduce the problem? If no, 
please remove them to make the script a true MWE [1]
- please use a 'seed' parameter to sp.makeCloud

thanks
Jan

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

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #680662]: Small density sphere in micron size makes segment fault (core dumped)

2019-05-06 Thread gaoxuesong
Question #680662 on Yade changed:
https://answers.launchpad.net/yade/+question/680662

gaoxuesong posted a new comment:
Hi, Jan. Yes, you are right. I have tried the above code and no segment fault 
occurred. Then I add some lines which i thought were unimportant in the past 
and the problems happened at about 341300 iteration. As you suggested, i leave 
the snap and VTK code out. Also, to make the crash easy to happen, i amplify 
the density by a small factor as 1e3. 
The following is the code, 

from yade import geom,pack
import math
from yade import qt
import os 

#os.system('rm -rf plt;mkdir ./plt/')
#os.system('rm -rf out;mkdir ./out/')

# PhysicalParameters
muS = 0.57735   # Friction coefficient (30 degree)
muLB = 0.0001   # Friction coefficient
muF = 0.17632   # Friction coefficient (10 degree)
FricAngleS = math.atan(muS)
FricAngleLB = math.atan(muLB)
FricAngleF = math.atan(muF)

### mass amplification factor ### 
masscof = 1e3   


# PhysicalParameters
matSph = CohFrictMat(
 density = 7990*masscof,
 young = 193e9,
 poisson = 0.3,
 frictionAngle = FricAngleS,
 momentRotationLaw = True)
SMat = O.materials.append(matSph)


# create empty sphere packing
sp = pack.SpherePack()
# generate spheres1 with a certain diameter distribution
sp.makeCloud((0,0,0.35e-3), (1.0e-3,1.0e-3,1.4e-3), 
psdSizes=[0.012e-3,0.0186e-3,0.0312e-3,0.0484e-3,0.053e-3], 
psdCumm=[0,0.1,0.5,0.9,1.0])
# add the sphere pack to the simulation
sp.toSimulation(material=SMat)

# create rectangular box1(Left) from facets
O.bodies.append(geom.facetBox((0.5e-3,0.5e-3,0.5e-3),(0.5e-3,0.5e-3,0.5e-3), 
wallMask=31, material=SMat))
Cylinder1IDs=O.bodies.append(geom.facetBox((0.5e-3,0.5e-3,0.15e-3),(0.5e-3,0.5e-3,0.2e-3),
 wallMask=63, color=(0,1,0), wire=False, material=SMat))

## add these lines, problem happens #
## add these lines, problem happens #

def changeValues():

#  Standstill for stabilization
   if O.time < 0.2:
   O.engines = O.engines + [
   TranslationEngine(dead=False, translationAxis= [0,0,1], 
velocity=0.0, ids=Cylinder1IDs)
   ]
   #  Vibrate Piston1
   elif 0.2 <= O.time < 0.4:
   O.engines = O.engines + [
   HarmonicMotionEngine(A=(0.0,0.0,1.5e-5), f=(0.0,0.0,3600/60.0), 
ids=Cylinder1IDs)
   ]
#  Vibrate Stop
   elif 0.4 <= O.time < 0.5129:
   O.engines = O.engines + [
   HarmonicMotionEngine(A=(0.0,0.0,0.0), f=(0.0,0.0,0.0), 
ids=Cylinder1IDs)
   ]
 
   O.dt = 0.85*utils.PWaveTimeStep()

## add these lines, problem happens #
## add these lines, problem happens #


def print_ite():
print("ite is %d" % O.iter)
 
O.engines=[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb()]),
InteractionLoop(
# handle sphere+sphere and facet+sphere collisions
   [Ig2_Sphere_Sphere_ScGeom6D(),Ig2_Facet_Sphere_ScGeom6D()],
   [Ip2_CohFrictMat_CohFrictMat_CohFrictPhys()],
   [Law2_ScGeom6D_CohFrictPhys_CohesionMoment()]
),
NewtonIntegrator(damping=0.75, exactAsphericalRot=True, 
gravity=(0,0,-9.81)),
 PyRunner(iterPeriod=100,command='changeValues()'),
PyRunner(iterPeriod=100,command='print_ite()'),
#qt.SnapshotEngine(fileBase="./plt/",iterPeriod=200,label='snapshot'),
#   VTKRecorder(iterPeriod=200, recorders=['spheres','colors'], 
fileName='./out/'),
]

#show geometry:
qtr = qt.Renderer()
qtr.bgColor = [1,1,1]
qt.Controller()
v = qt.View() 
#v.center() 
v.axes=False
v.viewDir=Vector3(0,1,0)
v.eyePosition=Vector3(1.8e-3,-5.2e-3,1.0e-3)

O.run()

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #680662]: Small density sphere in micron size makes segment fault (core dumped)

2019-05-06 Thread gaoxuesong
Question #680662 on Yade changed:
https://answers.launchpad.net/yade/+question/680662

gaoxuesong posted a new comment:
Sorry to add the ubuntu and yade version used. 
The ubuntu is Ubuntu 18.04.1 LTS, and the yade is 2018.02b. 
Much thanks.

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #680662]: Small density sphere in micron size makes segment fault (core dumped)

2019-05-07 Thread Jan Stránský
Question #680662 on Yade changed:
https://answers.launchpad.net/yade/+question/680662

Status: Needs information => Answered

Jan Stránský proposed the following answer:
Hello, just running your code and waiting for the result. However, the
changeValues() function should not be used in this form (!)

You are adding new TranslationEngine every 100 iterations. Now I have
O.iter=288300 and if I print len(O.engines), I got 2893.. Furthermore,
what is the meaning of the TranslationEngine with velocity=0.0?

A proper way could be something like:
###
O.engines = [
   ...
   TranslationEngine(...,dead=False,label='transEngine'), # just one engine
   HarmonicMotionEngine(...,dead=True,label='harmEngine'), # just one engine
   NewtonIntegrator(...), # consider pacing it after kinematic engines [1]
   PyRunner(iterPeriod=100,command='changeValues()'),
]

def changeValues():
   if O.time < 0.2:
  pass # probably initialized above
   elif O.time < 0.4: # no need of 0.2 <= O.time, because if so, it would have 
finished in above branch
  transEngine.dead = True
  harmEngine.dead = False
  harmEngine.A = ...
  harmEngine.f = ...
   elif ...
###

could you modify your code and test if it works?

cheers
Jan

[1] https://yade-dev.gitlab.io/trunk/user.html#base-engines

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #680662]: Small density sphere in micron size makes segment fault (core dumped)

2019-05-08 Thread gaoxuesong
Question #680662 on Yade changed:
https://answers.launchpad.net/yade/+question/680662

Status: Answered => Solved

gaoxuesong confirmed that the question is solved:
Thanks. Jan. The adapted code runs well. I think the problem is the
increasing length of O.engines.

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp


Re: [Yade-users] [Question #680662]: Small density sphere in micron size makes segment fault (core dumped)

2019-05-08 Thread gaoxuesong
Question #680662 on Yade changed:
https://answers.launchpad.net/yade/+question/680662

gaoxuesong confirmed that the question is solved:
Thanks Jan Stránský, that solved my question.

-- 
You received this question notification because your team yade-users is
an answer contact for Yade.

___
Mailing list: https://launchpad.net/~yade-users
Post to : yade-users@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp