foamed concrete, air distribution control

71 views
Hi,

My name is Giao Vu, at the moment I am learning how to use the software to conduct a project in the University. I would like ask if there  is a way to pack two different particle with different parameters ( size, porosity, material properties,distribution) into one prescribed volume. I am trying to learn how to use woo for my master thesis to simulate foamed concrete under compression.

Thanks so much for your support.

Best regards,

Giao Vu

+1 vote
answered Jun 13, 2018 by (49,030 points)
Hi Giao,

this could be done by simply running two overlapping inlets; they would be creating particles in the same volume but inlets avoid particles which exist already. The only thing is that you have to limit mass rate, otherwise the first inlet running will fill the volume and leave no space for the next one.

You can prescribe PSD, shape and material, porosity can only be controlled indirectly - such as by calculating mass which will lead to that porosity for given inlet volume.

Beware though that random inlets create loose packings (by randomly placing particles in free space) and then you typically have to run compaction so that it resembles something like real material with touching particles.

Hope this helps.

Vaclav
commented Jul 23, 2018 by (500 points)

Dear Vaclav,

It's a pleasure to receive a reply from you. It is a great idea and I will try it.

I have tried the randomDensePack2 method to create dense pack of concrete particles in cylinder. It is however for certain radius and distribution, the method create more of the box geometry. Is there any way to avoid this problem?

Besides, I have read the woo documentation and attempt to extract and visualize the damage parameter omega in order to study the crack pattern. So far I have no luck. It would be great if you could help me with this matter. Sorry for my incompetence...

Best regards,
Giao Vu

commented Jul 23, 2018 by (49,030 points)

HI Giao,

I adjusted examples/concrete-uniax.py to use randomDensePack2 (see https://github.com/woodem/woo/blob/9e55e5e509ddbc1fdd1aa07b7888c54985cd87a2/examples/concrete-uniax.py; edit to set sphereRadius=2e-3, otherwise takes way too long).

For mixing two ingredients, you could also generate single-material packing with bi-modal PSD (step-wise PSD) and then re-assign material of particles based on their radius (just a loop over particle, like if p.shape.radius<1e-3: p.mat=mat2). That could also be quite simple. The concrete model takes the initial distance as equilibrium, so it does not matter if you change stiffness.

The packer always works with rectangular volumes but predicate is then used to cut it to desired shape, such as hyperboloid (in that example). For the damage parameter, you have to do in the controller panel:

1. Display/demField: shape=none, disable shape2 (disable spheres so that you see what is in-between)
2. Display/demField/Contact nodes: enable cPhys
3. Display/concretePhys (scroll down to find it) where you can set whether cPhys is rendered as well (normal, shear forces and stuff: doCPhys='also') and play with dmgRange, dmgPow and dmgSlices to see something.

This is at the end of the tensile part of the uniaxial test (discs are damage, lines are normal force, but only for compression, signFilter=-1):

commented Jul 23, 2018 by (500 points)

Dear Vaclav,

Thank you so much for such a quick response! In fact I used the discreted psd to generate particles, it is great to know that, assigning different material to particles is possible without affecting the accuracy of the algorithm. In addition, I have removed "air particles" by simply remove particles with certain radius. In your opinion do you think whether it would cause problem?

Futhermore I am interested in running the compression simulation of foamed concrete such that the outer part of the radius is fixed along z-axis (as in experiment set up), my idea is to block x and y displacements of outer particles along z axis, I wonder if this approach is too primitive?

Thanks for explaining me the packing algorithm, it happened to me that I try to create a cylinder shape out of the method woo.pack.inHyperboloid (as I dont know the argument of woo._packPredicates.inCylinder)

Thanks again for a very detailed steps regarding damage visualization :) . I have follow step 1, 2 easily, for step three, the only similar I have found is 3.Display/Cphys but not concretePhys ... is it because I am running woo on windows?

best regards,
Giao Vu

commented Jul 23, 2018 by (49,030 points)

You can remove particles to simulate air as you like, just do it before the first step of the simulation runs - that way you will not disturb equilibrium. You can also change material, also better before start (contact properties of existing contacts do not update automatically if material changes).

Display/concretePhys is probably missing from the windows build, since the last one predates proper integration of the concrete model. Switch to Linux and be happy. Or try out Windows Subsystem for Linux (no direct experience but read it works).

The predicates are not very well documented (https://woodem.org/woo.pack.html#woo._packPredicates.inCylinder), sorry for that, but you can look in the source https://github.com/woodem/woo/blob/9e55e5e509ddbc1fdd1aa07b7888c54985cd87a2/py/_packPredicates.cpp#L196 to see the constructor arguments are center1, center2 and radius :)

commented Jul 24, 2018 by (500 points)

Thank a lot Vaclav, now everthing works excellently!

Best regards,
Giao