← Back to team overview

yade-users team mailing list archive

[Question #703081]: Incorrect porosity after predicate filtering

 

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

Hello,
for a material calibration I would like to simulate an oedermeter test.

In the first step, I have set the sphere packing to the correct porosity, which is also present in the laboratory test. This was done according to the method of Bruno Chareyre, which was also often suggested here in the forum. [1]

The porosity is .39 and was then exported as a .txt file to be loaded into the oedometer simulation afterwards. Unfortunately, I get a much higher porosity of the sphere packing when I insert it into my sample geometry using the filterSpherePack function.

At first I thought it was due to the sample geometry being cylindrical. Unfortunately, the problem also occurs when my sample geometry is cubic.

Here are my short scripts to illustrate the problem:

-------------------------------------------------
Script 1: Prove that imported sphere packing has the desired porosity:
-------------------------------------------------
from yade import pack

sp=SpherePack()
sp.load('packtest_rMean0.0012_sig-100.txt')
sp.toSimulation()
print(porosity()) # The output is .39 and corresponds to the exported sphere pack from [1].

---------------------------------------------------
Script 2: Filtering the imported sphere packing to desired sample geometry cylindrical:
----------------------------------------------------
from yade import pack

sp=SpherePack()
sp.load('packtest_rMean0.0012_sig-100.txt')

O.bodies.append(geom.facetCylinder(center=(0, 0, .01), radius=.01, height=.02,segmentsNumber=50, wallMask=6))
pred=pack.inCylinder(centerBottom=(0,0,0), centerTop=(0,0,.02), radius=.01)

spf1=pack.filterSpherePack(predicate=pred,spherePack=sp,returnSpherePack=True)
spf1.toSimulation()
print(porosity()) # The output is .66 which is significantly different from the target porosity

---------------------------------------------------
Script 3: Filtering the imported sphere packing to desired sample geometry cubic:
---------------------------------------------------
from yade import pack

sp=SpherePack()
sp.load('packtest_rMean0.0012_sig-100.txt')

pred=pack.inAlignedBox(minAABB=(-.01,-.01,-.01), maxAABB=(.01, .01, .01))
O.bodies.append(geom.facetBox((0, 0, 0), (.01, .01, .01), wallMask=31))

spf2=pack.filterSpherePack(predicate=pred,spherePack=sp,returnSpherePack=True)
spf2.toSimulation()
print(porosity()) # The output is .56 and thus significantly different from the target porosity


Where could my error be?
Is there anything else to consider?

Any useful advice will be highly appreciated.
Thanks in advance,
Lukas

[1]: https://gricad-gitlab.univ-grenoble-alpes.fr/cailletr/yade/-/blob/b23ee1d2922164cbbcb8038c4db09e52a0c48f5e/examples/triax-tutorial/script-session1.py



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