← Back to team overview

yade-users team mailing list archive

[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.