← Back to team overview

yade-users team mailing list archive

Re: [Question #695989]: Packing with two PSD

 

Question #695989 on Yade changed:
https://answers.launchpad.net/yade/+question/695989

    Status: Answered => Open

Othman Sh is still having a problem:
Hi Jan,

I followed your advise and used one SpherePack and 2 makeCloud to avoid
overlapping. I also used box instead of cylinder. My new code is copied
below. I reduced the O.dt to 0.005*utils.PWaveTimeStep() and the young
modulus of the facets to 1e20. I have the following questions:

1- I still have the same issue of spheres passing through the facet. What could be the issue?
2- When you say "box instead of facet", are you referring to geom.facetBox or aabbWalls?
3- How to check if there is sphere overlap at the initial packing (i.e. iteration= 0)?

Thanks a lot,
Othman


---------------------
from yade import pack
import numpy as np


Mat1=O.materials.append(FrictMat(young = 1e6, poisson = 0.45,frictionAngle = 0.00349066, density=2340,label='portlandite'))
Mat2=O.materials.append(FrictMat(young = 7.2e10, poisson = 0.17,frictionAngle = 0.558, density=2650,label='sand')) #update properties for sand
Mat3=O.materials.append(FrictMat(young = 1e20, poisson = 0.1))

##cylinder dimensions
cube_dimensions=100e-6 #micron

##Initial cube dimensions ###
mnx=0
mny=0
mnz=0
mxx=cube_dimensions
mxy=cube_dimensions
mxz=cube_dimensions

box_center=(mxx/2,mxy/2,mxz/2)
box_extents=(mxx/2,mxy/2,mxz/2)
plate_center=(mxx/2,mxy/2,1.05*mxz/2)
plate_extents=(mxx/2,mxy/2,0.98*mxz/2)
############################ spheres #############################
sp1=pack.SpherePack()

sizes1=1e-6*np.array([9,9.16,15.76,22.94,25]) 
passing1=[0,0.5,0.75,0.9,1]
sp1.makeCloud((mnx,mny,mnz),(mxx,mxy,mxz),psdSizes=sizes1,psdCumm=passing1,num=5811)
sp1.toSimulation(color=(0.533, 0.803, 0.780),material=Mat1)

mass1=utils.getSpheresMass()

sizes2=1e-6*np.array([149,150,300,425,600,850]) #Diameters of portlandite
passing2=[0,0.02,0.23,0.675,0.98,1]
sp1.makeCloud((mnx,mny,mnz),(mxx,mxy,mxz),psdSizes=sizes2,psdCumm=passing2,num=51)
sp1.toSimulation(color=(0.152, 0.368, 0.988),material=Mat2)

mass2=utils.getSpheresMass()-mass1

print ('mass 1  mass2  in g',mass1*1000, mass2*1000)
print ('mass2/mass1 ', mass2/mass1)

total_mass=utils.getSpheresMass()

############################# box and plate #############################
yade.qt.View()
box=O.bodies.append(geom.facetBox(box_center,box_extents,wallMask=31,material=Mat3)) #open from one side
plate1IDs=O.bodies.append(geom.facetBox(plate_center,plate_extents,material=Mat3,wallMask=32))


for i in plate1IDs:
 body= O.bodies[i]
 body.state.vel = (0,0,-10)

############################## compaction #############################
O.dt=.005*utils.PWaveTimeStep()

O.engines=[
 ForceResetter(),
 InsertionSortCollider([
  Bo1_Sphere_Aabb(),
  Bo1_Facet_Aabb()
 ]),
 InteractionLoop(
  [
   Ig2_Sphere_Sphere_ScGeom(),
   Ig2_Facet_Sphere_ScGeom(),
  ],
  [

   Ip2_FrictMat_FrictMat_FrictPhys(),
   Ip2_FrictMat_FrictMat_FrictPhys(),
  ],
  [

   Law2_ScGeom_FrictPhys_CundallStrack(),
  ],
 ),

 NewtonIntegrator(damping=.3),

]
O.run()

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