How to make a dense sample of sand with distributemass=False?

Asked by Elham Hosseinkhani on 2020-01-05

Dear all
I'm trying to generate an assembly with PSD and I faced to a problem with distributemass. I want to make a pack with porosity of 0.38 (e=0.62) and when I try with distributemass=True, it take less time and I can make a pack with e=0.62 easily but when I try with distributemass=False, it take more time. I try it with Number of sphere 5000 and distributemass=Flase, it couldn't generate pack because it couldn't reach to porosity of 0.38. I'll appreciate if somebody can help me.

Thanks.

## Define Parameters
num_spheres=5000
compFricDegree=3
finalFricDegree=28
confiningS=-50000 # [Pa]
graindensity=2600
poissonRatio=0.15
youngModulus=400e6 # [Pa]

psdSizes=[0.075,0.105,0.124,0.146,0.171,0.197,0.231,0.266,0.325,0.353,0.476] #(mm)
psdCumm=[0.024,0.034,0.059,0.127,0.244,0.402,0.6,0.768,0.967,0.99,1.0] #cumulative
psdSizesArray=np.array(psdSizes)
psdSizesMeter=psdSizesArray*0.001 #Convert the size of particles to meter
sp=pack.SpherePack()
mn,mx=Vector3(0,0,0),Vector3(0.005,0.005,0.005) #initial box size = 5*5*5 mm
sp.makeCloud(minCorner=mn,maxCorner=mx,num=num_spheres,psdSizes=psdSizesMeter,psdCumm=psdCumm,distributeMass=True,seed=True)
sp.psd(bins=50,mass=True)

O.materials.append(FrictMat(young=youngModulus,poisson=poissonRatio,frictionAngle=radians(compFricDegree),density=graindensity,label='spheres'))
O.materials.append(FrictMat(young=youngModulus,poisson=poissonRatio,frictionAngle=0,density=0,label='frictionless'))

walls=aabbWalls((mn,mx),thickness=0,material='frictionless')
wallIds=O.bodies.append(walls)

O.bodies.append([utils.sphere(center,rad,material='spheres') for center,rad in sp])

triax=TriaxialStressController(
 internalCompaction=False,
 goal1=confiningS,
 goal2=confiningS,
 goal3=confiningS,
 label="triax"
)

O.trackEnergy=True #Evaluating energy data for all components in the simulation (such as plastic dissipation, damping dissipation,gravity work, kinetic energy) can be enabled with trackEnergy

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(traceEnergy=True)]
 ),
 GlobalStiffnessTimeStepper(active=1,timeStepUpdateInterval=100,timestepSafetyCoefficient=0.8),
 triax,
 NewtonIntegrator(damping=0.4,label="newton"),
]

O.dt=utils.PWaveTimeStep()
O.dynDt=False

while 1:
  O.run(1000,True)
  unb=unbalancedForce()
  if unb<0.1 and abs(confiningS-triax.meanStress)/abs(confiningS)<0.01 and e<0.624:
    break

Question information

Language:
English Edit question
Status:
Expired
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
2020-01-05
Last reply:
2020-01-21
Launchpad Janitor (janitor) said : #1

This question was expired because it remained in the 'Open' state without activity for the last 15 days.