Welcome to ask.woodem.org. You may post when you login through your GitHub account.

Randomdense packing

0 votes
15 views
asked Sep 21 by trucgiao91 (370 points)

Hi Vaclav,

its me again, I just swichted to use woo on Ubuntu, everything looks great (especially the damage visuallization!). I am running now the biaxial simulation on concrete plate. However I encountered some problem as I supposed package on windows and ubuntu are slightly different:

- is it enough on woo ubuntu if I set: woo.DemField.DistFactor = 1 (after S.one()).

-regarding the randomdensepacking1, I find that it is not possible to make the packing aperiodic as in woo windows version. The porosity is no longer an argument. And when I visuallize the number of contact (distFactor = 1.5) I got significantly low value while on woo window i got around 3 to 20 contacts:

I did some strict to pack the spheres on woo windows version and imported on ubuntu, then add the line:

##PERIODIC:: 0.19 0.05 0.19         -(lengthX lengthY lengthZ)

from that I obtained strange arrangement of contact numbers.

Is there a way to make the packing aperiodic?

It would be great if you could have a look on this.

Giao

1 Answer

0 votes
answered Sep 23 by eudoxos (47,770 points)

Hi Giao,

beware of capitalization (DemField.distFactor, not DistFactor), unfortunately the current python bindings will not warn you that you just created a new (useless) attribute DistFactor instead of setting an existing distFactor attribute. (Improvement of that is underway, but it is a bigger infrastructure change.) The best is to set distFactor when you construct DemField, like DemField(gravity=(...),distFactor=1.5)), then you will get an error about unknown attribute if you make a mistake. And you definitely should set distFactor before you do the first step - that is where contacts get established.

For the line ##PERIODIC:: 0.19 0.05 0.19 my guess is that that the dimensions you set are smaller than those of the spheres really (check their coords) and then they end up wrapping around and overlapping, giving funny contact numbers.

Can you share the randomDensePack code you used on WIndows which is giving different result now? That function should still be giving identical results, I have not touched it for a quite long time IIRC.

Cheers, v.

commented Oct 2 by trucgiao91 (370 points)

Dear Vaclav,

I'm sorry for a late response. Thank you for your correction in the distFactor in ubuntu Woo version. Is it the case after the first step (S.one() to establish initial contact) I reset the distFactor to 1 by the line

DemField.distFactor= 1.0 ?

Normally in windows version I used the below

**DISFACT_=1.6**

S.engines= [
        #ForceResetter(),
        Leapfrog(damping=.2,reset=True,kinSplit=True),
        InsertionSortCollider([Bo1_Sphere_Aabb(distFactor=**DISFACT_**)),        
 ContactLoop([Cg2_Sphere_Sphere_L6Geom(distFactor=**DISFACT_**)
                     [Cp2_ConcreteMat_ConcretePhys(),Cp2_FrictMat_FrictPhys()]                               
                [Law2_L6Geom_ConcretePhys(yieldSurfType='lin',omegaThreshold = 0.99,epsSoft=-0.001,relKnSoft=0.3 ),Law2_L6Geom_FrictPhys_IdealElPl(label='law')]              
            ),   
    DynDt(stepPeriod=100),
    PyRunner(150,'AddPlotData(S)')
    ]

then for resetting distance factor:

for f in S.engines1.boundDispatcher.functors+S.engines[2].geoDisp.functors:
if hasattr(f,'distFactor'): f.distFactor=1.0

for the line ##PERIODIC:: 0.19 0.05 0.19, do you mean the dimension i input is somehow smaller than the true dimensions of the specimen?
here is what I coded for packing in windows version (i used the same line of code for ubunto-woo but only returned periodic packing):

#create cubic volume to pack spheres in:
predicate = woo.pack.inAlignedBox((-0.2*0.5*1.15,-0.05*0.5*1.15,-0.2*0.5*1.15),(0.2*1.15*0.5,0.05*1.15*0.5,0.2*1.15*0.5))

#specify sphere radius and the corresponding percentage:
generator = woo.dem.PsdSphereGenerator(psdPts=[(r*2,1)],discrete = True)

#packing spheres... 
sp =  woo.pack.randomDensePack2(predicate,generator,porosity = PORO_,memoizeDir='.',)

sp.cellSize=(0,0,0) # make aperiodic
sp.toDem(S,S.dem,mat=ConMat)

Further more is it normal to experience crash during simulation in ubuntu? I had it most of the time with warning sign "out of memory" even though the pc has the same RAM size (16GB), which is quite unpleasant... For that I went back to use the windows version of woo.

Anyway, I have tried to conduct the biaxial test on concrete and obtained the yield surface). Thanks a lot for your constant support!

all the best,
Giao

...