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.
Hi Jude, I am keeping your request in mind and will look at it over the weekend.
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.:
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.
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.
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.
nodes=True|False: are you sure you know what that means? True|False is logical disjunction and evaluates to True.
To create box from walls, use woo.dem.Wall.makeBox.
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.