← Back to team overview

yade-users team mailing list archive

[Question #691193]: Why the sum of TW.volume is not equal to the volume of pack

 

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

Dear all,

I use TesselationWrapper to compute the volume of spheres, but I find that the sum of TW.volume is not equal to the volume of pack. Does the Voronoi cell of each sphere overlap each other? 

I run the MWE and I got 

volume=0.6067921587125377
TW_Volume=0.8510512980654049

Thanks for any suggestion.

####MWE####

import numpy as np
O.periodic=True
O.cell.setBox(1,1,1)
num_spheres=1000 # number of spheres
den_ball=2600    # density of particles from the experimental test
young=1e8
iso_pressure=-1e4

compFricDegree = 30 # initial contact friction during the confining phase

O.materials.append(FrictMat(young=young,poisson=0.5,
                            frictionAngle=radians(compFricDegree),
                            density=den_ball,label='spheres'))

sp=pack.SpherePack()
sp.makeCloud((0,0,0),(1,1,1),
             -1,0.333,num=num_spheres,
             periodic=True,seed=1)# final porosity should be 0.24
sp.toSimulation(material='spheres')

O.engines=[
	ForceResetter(),
	InsertionSortCollider([Bo1_Sphere_Aabb()]),
	InteractionLoop(
		[Ig2_Sphere_Sphere_ScGeom()],
		[Ip2_FrictMat_FrictMat_FrictPhys()],[Law2_ScGeom_FrictPhys_CundallStrack()]),
	NewtonIntegrator(damping=0.2),
	PeriTriaxController(dynCell=True,maxUnbalanced=0.01,relStressTol=0.02,goal=(iso_pressure,iso_pressure,iso_pressure),stressMask=7,globUpdate=5,maxStrainRate=(.1,.1,.1),doneHook='print("Hydrostatic load reached."); O.pause();',label='triax'),
]
O.dt=PWaveTimeStep()
O.run();O.wait()

TW=TesselationWrapper()
TW.triangulate()
TW.setState()
TW.computeVolumes()

TW_Volume=0
for i in range(1000):
    TW_Volume += TW.volume(i)
    
print('volume='+str(O.cell.volume)+'\nTW_Volume='+str(TW_Volume))


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