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

    Status: Open => Answered

Jan Stránský proposed the following answer:
> porrr=utils.voxelPorosity(200,(0.75,0.75,0.75),(1.25,1.25,1.25))

The problem here is voxelPorosity and its parameters.
resolution=200 might be too little, you can try higher values.

More importantly, you are using some random region for evaluation, porosity 
computed there has (or at least may have) no relation to the true total 
porosity. Randomly omitting / adding some border parts of spheres influence 
significantly the result.
You can play with shifting the region.

If I use an analytical formula
###
def porosity():
    volTot = O.cell.volume
    r = 0.09
    volSphs = len(O.bodies) * 4/3. * pi * r**3
    ds = [2*r - i.geom.penetrationDepth for i in O.interactions]
    # https://mathworld.wolfram.com/Sphere-SphereIntersection.html
    volContactss = [1/12.*pi*(4*r+d)*(2*r-d)**2 for d in ds]
    volContacts = sum(volContactss)
    volSolid = volSphs - volContacts
    volVoid = volTot - volSolid
    return volVoid / volTot
###
I get consistent results:
0.47577 (isotropic pressure -1e5)
0.47326 (isotropic pressure -5e5)
0.47202 (isotropic pressure -7e5)

Cheers
Jan

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

_______________________________________________
Mailing list: https://launchpad.net/~yade-users
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yade-users
More help   : https://help.launchpad.net/ListHelp

Reply via email to