Radius Expansion Method

Asked by Wojciech Sobieski

Hi,

I use the Radius Expansion Method (REM) to generate a granular bed with a specified particle distribution. I use a discrete form of the cumulative curve of particle distributions. However, after simulation the distribution of particles in the bed differs from the theoretical distribution (see: http://pracownicy.uwm.edu.pl/wojsob/pliki/tmp/yade-distribution.jpg). The effect is independent on the number of bins used to define the discrete distribution function and on the friction angle. I checked also that the initial cloud has correct distribution. Am I doing something wrong (see the code below)? Or maybe such effect it is a feature of the REM?

Best Regards from Poland,

Wojciech Sobieski

--------------------------------------------------------------------------------------------------------------------

from yade.pack import *
from yade import utils
from yade import export
from yade import plot
import sys
import os
import subprocess

file = 'p06_w1_10'
n_s = 10000
e_target = 0.413
mi = 0.5
seed = 5

n_band = sum(1 for line in open(file+'.txt'))
input = open(file+'.txt','r')
psdSizes = []
psdCumm = []
try:
  for line in input:
    psdSizes.append(float(line[0:16]))
    psdCumm.append(float(line[18:]))
finally:
  input.close()
psdCumm[0] = 0.0
psdCumm[n_band-1] = 1.0

subprocess.call('./calc_l.out '+str(file)+' '+str(n_s)+' '+str(e_target),shell=True)
input = open(str(file)+'.l_c','r')
try:
  for line in input:
    l = float(line[0:])
finally:
  input.close()

mn = Vector3(0,0,0)
mx = Vector3(l,2*l,l)

O.materials.append(FrictMat(young=5e6,poisson=0.5,frictionAngle=0,density=0,label='walls'))
O.bodies.append(aabbWalls([mn,mx],thickness=0,material='walls'))
O.materials.append(FrictMat(young=5e6,poisson=0.5,frictionAngle=radians(mi),density=2600,label='spheres'))
sp = yade._packSpheres.SpherePack()
sp.makeCloud(mn,mx,psdSizes=psdSizes,psdCumm=psdCumm,num=n_s,distributeMass=1,seed=seed)
O.bodies.append([sphere(s[0],s[1],material='spheres') for s in sp])

#-------------------------------------------------------------------------------------
# here the particle distribution is correct:
vtkExporter = export.VTKExporter(str(file)+'-init.vtk')
vtkExporter.exportSpheres(what=[('dist','b.state.pos.norm()')])

os.mkdir(str(file))

triax = TriaxialStressController(
   finalMaxMultiplier = 1.0001,
   maxMultiplier = 1.0001,
   stressMask = 7,
   internalCompaction = True,
   goal1 = 10000,goal2 = 10000,goal3 = 10000)

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()]),
 GlobalStiffnessTimeStepper(
   active=1,
   timeStepUpdateInterval=100,
   timestepSafetyCoefficient=0.8),
 triax,
 NewtonIntegrator(damping = 0.2,gravity=[0,0,0]),
 VTKRecorder(fileName=str(file)+'/cloud-',recorders=['all'],iterPeriod=10)
 ]

while triax.porosity > e_target:
  mi = 0.999*mi
  setContactFriction(radians(mi))
  print "\r Friction:",mi
  print "\r Porosity:",triax.porosity
  sys.stdout.flush()
  O.run(500,1)

#-------------------------------------------------------------------------------------
# here the particle distribution in not correct:
vtkExporter = export.VTKExporter(str(file)+'-final.vtk')
vtkExporter.exportSpheres(what=[('dist','b.state.pos.norm()')])

input = open('set_A1.porosity','a')
input.write('\r'+str(file)+' '+str(triax.porosity))
input.close()

export.text(str(file)+'.yade')
subprocess.call('./convert.out '+str(file)+' '+str(n_s), shell=True)
subprocess.call('clear', shell=True)
print "\r --------"
print "\r Final friction:",mi
print "\r Final porosity:",triax.porosity

Question information

Language:
English Edit question
Status:
Solved
For:
Yade Edit question
Assignee:
No assignee Edit question
Solved by:
Wojciech Sobieski
Solved:
Last query:
Last reply:
Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#1

Hi Wojciech! Good to see you here. :)

The reason is you ask a uniform distribution of mass (distributeMass=True) while you plot the distribution of particles (based on your y-axis title).
Script psd.py in examples shows that.

With distributeMass=False it should match your theory (but it is not any better). In addition you seem to have a shift in your plot, with I guess [x,x+dx] interval plotted at position x.

I hope it helps.

Bruno

Revision history for this message
Wojciech Sobieski (wojciech-sobieski) said :
#2

Hi Bruno,

thank you for the answer. It seems that the mentioned effect it is a characteristic feature of the Radius Expansion Method.

Best Regards from Poland,

Wojtek.

Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#3

> a characteristic feature of the Radius Expansion Method

Do you mean that just after sp.makeCloud() the distribution is correct but after growing it is distorded as in your figure?
That would be a real surprize, since the growing is homothetic.
Bruno

Revision history for this message
Wojciech Sobieski (wojciech-sobieski) said :
#4

Hi Bruno,

yes, it is. I saved data two times: before calculations (distribution is correct) and after calculation (distribution is deformed). I tought that the friction angle may be responsible for this efect, but no changes are visible even if this angle is equal zero. Was REM in the past tested in terms of its impact on particle size distrubution? Or, maybe I have somwere a bug in my script.

The same effect was visible in yade 1.07 and 1.2.

Best Regards,

Wojtek.

Revision history for this message
Chareyre (bruno-chareyre-9) said :
#5

I can't imagine that multiplying all radii by a constant will distord psd
but maybe i missed something. I dont think anyone tested this specificaly.
Let us know. :)
B

Le mer. 21 nov. 2018 19:02, Wojciech Sobieski <
<email address hidden>> a écrit :

> Question #676248 on Yade changed:
> https://answers.launchpad.net/yade/+question/676248
>
> Wojciech Sobieski posted a new comment:
> Hi Bruno,
>
> yes, it is. I saved data two times: before calculations (distribution is
> correct) and after calculation (distribution is deformed). I tought that
> the friction angle may be responsible for this efect, but no changes are
> visible even if this angle is equal zero. Was REM in the past tested in
> terms of its impact on particle size distrubution? Or, maybe I have
> somwere a bug in my script.
>
> The same effect was visible in yade 1.07 and 1.2.
>
> Best Regards,
>
> Wojtek.
>
> --
> 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 : <email address hidden>
> Unsubscribe : https://launchpad.net/~yade-users
> More help : https://help.launchpad.net/ListHelp
>
>