yade-users team mailing list archive
-
yade-users team
-
Mailing list archive
-
Message #21582
[Question #687781]: How to make a dense sample of sand with distributemass=False?
New question #687781 on Yade:
https://answers.launchpad.net/yade/+question/687781
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
--
You received this question notification because your team yade-users is
an answer contact for Yade.