← Back to team overview

yade-users team mailing list archive

[Question #556948]: Radius Expansion Method: yade 1.07 vs 1.2

 

New question #556948 on Yade:
https://answers.launchpad.net/yade/+question/556948

Hi Everyone,

Some time ago I prepared a script destined to generate clouds with a specific size distribution and porosity. It works very good in yade 1.07. The porosity decreases regularly in time, until the target value is reached. However, in yade 1.20 exactly the same script doesn't work. The porosity is always a little less than 1 (but changes a little down and up) or - in other tries - decreases unevenly in time, but never achieves the target porosity. I tried to find a solution, but without success. Can somebody help me to find the reason?

The second problem is that I can't see the porosity plot during a calculation. The frame of the window exists, but I see only the screen behind it.

Best Regards from Poland,

Wojciech Sobieski

---------------------------------------
from yade.pack import *
from yade import utils
from yade import export
from yade import plot

n_s = 5000
e_target = 0.413
mi = 5.0
n_band = 26

psdSizes=[5.8598400e+00,5.8761600e+00,5.8924800e+00,5.9088000e+00,5.9251200e+00,5.9414400e+00,5.9577600e+00,5.9740800e+00,5.9904000e+00,6.0067200e+00,6.0230400e+00,6.0393600e+00,6.0556800e+00,6.0720000e+00,6.0883200e+00,6.1046400e+00,6.1209600e+00,6.1372800e+00,6.1536000e+00,6.1699200e+00,6.1862400e+00,6.2025600e+00,6.2188800e+00,6.2352000e+00,6.2515200e+00,6.2678400e+00]
psdCumm=[0.0,8.4945735e-05,3.5804112e-04,1.1512195e-03,3.2324246e-03,8.1658647e-03,1.8731095e-02,3.9172232e-02,7.4902028e-02,1.3132521e-01,2.1182373e-01,3.1558203e-01,4.3640887e-01,5.6352779e-01,6.8435463e-01,7.8811293e-01,8.6861145e-01,9.2503463e-01,9.6076443e-01,9.8120556e-01,9.9177079e-01,9.9670423e-01,9.9878544e-01,9.9957862e-01,9.9985171e-01,1.0]

i = 0
while i < n_band:
    psdSizes[i]=psdSizes[i]/1000.   #scaling from [mm] to [m]
    print "\r psdSizes:",i,psdSizes[i]
    i = i +1

#If the bed volume is defined, then the average diameter of particles (when the target porosity is reached) is the same like in the measurement.
l =  0.07926574 
vol = l*2*l*l

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)
O.bodies.append([sphere(s[0],s[1],material='spheres') for s in sp])

plot.resetData()

triax = TriaxialStressController(finalMaxMultiplier = 1.0004,maxMultiplier = 1.004,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]),
	PyRunner(command='letPlot()',iterPeriod=10)
	]

def letPlot():
  plot.addData(step=O.iter,e=porosity(vol))
plot.plots={'step':('e')}
plot.plot()

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

export.text('results.yade')


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