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

Having trouble getting facets to move

0 votes
39 views
asked Apr 1, 2016 by JudeNL (150 points)
I'm have a test set up where a 3D rectangular box of randomly-packed spheres is being expanded and compressed by infinite walls anchored on either end.

The problem I'm having is that I want to be able to confine the other sides of the box, but Woo seems to be having an issue with having intersecting infinite walls which causes the simulation not ot move at all. I also have tried replacing the walls with facets but with similar results. Any help would be greatly appreciated!

Cheers,

Jude Murphy

1 Answer

0 votes
answered Apr 3, 2016 by eudoxos (44,890 points)
selected Apr 24, 2016 by eudoxos
 
Best answer
Hi Jude,

> I'm have a test set up where a 3D rectangular box of randomly-packed spheres is being expanded and compressed by infinite walls anchored on either end.

If you want to simulate something like representative volume element without boundary influence, consider using periodic boundary conditions.
 
> The problem I'm having is that I want to be able to confine the other sides of the box, but Woo seems to be having an issue with having intersecting infinite walls which causes the simulation not ot move at all. I also have tried replacing the walls with facets but with similar results. Any help would be greatly appreciated!

Please disclose some more details about your simulation -- the best would be to post your simulation script, or explain in words what exactly are the boundary conditions (if you prescribed force, displacement and how), maybe a sketch. What does it mean that the simulation does not move? Do you get some error message? Or just no movement? There is no issue with walls intersecting each other, that scenario is in fact used rather often. Don't underestimate the code ;)

Cheers, Vaclav
commented Apr 4, 2016 by JudeNL (150 points)

Here is the code I'm working with.

The boundary conditions are such that there are walls on every side of a simulated rectangular prism of spheres of uniform size. Five of these are confining walls with only the wall that force is being imposed upon and the wall opposite being anchored to the particles, such that when expanded, they are unnecessary but when compressed they would confine the movement.

As it currently stands, I am not getting an error if I create the walls using infinite walls , but I do if I create them as facets, and neither will generate movement in the simulation. The error is [ AttributeError: Particle #148 has no Shape, or the shape has no/multiple nodes, or node.dem is None ] which I'm assuming the particle is one of the facet walls.

commented Apr 15, 2016 by eudoxos (44,890 points)

Hi Jude, I am keeping your request in mind and will look at it over the weekend.

commented Apr 17, 2016 by eudoxos (44,890 points)

Hi, I tried to run your simulation. I am not sure what it should do (nothing moves) but I see no error either. Do I understand right that want to have have a prismatic volume filled with spheres and delimited by planes, where one of the planes moves as prescribed, the opposite one is fixed, and the remaining 4 lateral planes have a prescribed force value?

Just a few notes of style, perhaps it could help you in making the code prettier, more readable and easier to debug.:

  1. Use S.plot.addData to collect data you need, and S.plot.saveTxt to write them out. Cooking up custom logging functions in every script costs you lot of energy.

  2. Make your life easier by respecting general python convention that classes are Capitalized and variables are not. The Scene variable shadows woo.core.Scene (from woo.core.Scene import *) and you may see strange errors if you don't keep that in mind at all times.

  3. Avoid using "global" so often. The best you can do is to shove everything under S.lab (loaded/saved with scene) and pass S around as parameter to functions like condition1(...) and so on.

  4. nodes=True|False: are you sure you know what that means? True|False is logical disjunction and evaluates to True.

  5. To create box from walls, use woo.dem.Wall.makeBox.

commented Apr 22, 2016 by JudeNL (150 points)

I made it work after.
Turns out I was imposing force on the wrong "particle" wall which was moving the infinite wall along it's axis which doesn't show up as movement in the 3D display.

...