There are many shapes supported by the Woo engine.
sphere: Minkowski sum of 0-D simplex (plus) with sphere;
capsule: Minkowski sum of 1-D simplex (segment) with sphere;
rounded facet: Minkowski sum of 2-D simplex (triangle) with sphere;
axis-aligned infinite cylinder and plane (often useful as boundary conditions)
These shapes are uni-nodal (they have all their mass & intertia lumped into a single node). Besides them, there is support for multi-nodal particles (rods, membranes, colume elements), which not only undergo collisions, but also have internal forces (see FEM).
Spheres are the traditional and most frequently used shapes. They are fast to compute (quick distance and contact evaluation) due to their symmetry. This images shows the initial elastic wave (when loading starts) propagating from supports towards the hyperboloidal specimen middle; this simulation can be found in examples/concrete-uniax.py and uses the conrete contact model.
Clumps are rigid aggregates of other shapes (not only spheres). This script (examples/clump-psd.py) creates clumps of predefined configurations, scaled according to a PSD function.
Pharma capsules are generated by PharmaCapsuleGenerator , using real dimension from the manufacturer. Pharmaceutical capsules are composed of two capsule-shaped particles clumped together. This simulation is treated in detail in the tutorial; the bottle is imported from STL and the movement is prescribed in discrete points (Woo interpolates between those so that the motion is smooth).
Capsules triaxial test¶
Capsules in sheared periodic cell¶
This image shows sheared periodic cell with dense packing of capsules which were generated from a given PSD.
Dense packing of ellipsoids, under discaplement-controlled shear loading. Ellipsoids are rather slow to compute (there is no closed-form distance function for them) but very useful due to their smooth roundness function (the theory is of course described in the documentation)
These are ellipsoids under constrained motion (in 2D) colliding in a rectangular area: