Woo splits each contact into its geometrical features and the contact model.

The geometry is given by local coordinates (situated at the contact point and having the \(x\)-axis along the contact normal) and is also responsible for computing relative velocity of contacting particles in local coordinates. THis information is stored in woo.dem.L6Geom.

The geometry computation (performed by various woo.dem.CGeomFunctor subclasses) is split in two parts:

  • Algorithm for computing relative velocities (and other features) at the contact point, which is common for all particle shapes:

Additional topics dealing with contact geometry are described in the following sections:

Particle shapes

The following particle shapes are supported:

  1. Simple shapes (1-node): Sphere, Capsule, Ellipsoid;
  2. Multinodal shapes: Truss (2 nodes), Facet (3 nodes); Membrane (same as Facet geometrically, but adds deformability), woo.fem.Tetra (4 nodes; plus deforming woo.fem.Tet4)
  3. Infinite axis-aligned shapes: InfCylinder, Wall.

The following matrix shows which shapes can collide with each other:

  Capsule Ellipsoid Facet InfCylinder Rod Sphere Tetra Truss Wall
Capsule l6g × l6g l6g × l6g × × l6g
Ellipsoid × l6g l6g × × l6g × × l6g
Facet l6g l6g l6g l6g × l6g × × l6g
InfCylinder l6g × l6g × × l6g × × ×
Rod × × × × × l6g × × ×
Sphere l6g l6g l6g l6g l6g l6g, g3g × × l6g, g3g
Tetra × × × × × × × × ×
Truss × × × × × × × × ×
Wall l6g l6g l6g × × l6g, g3g × × ×

The g3g geometry is an algorithm used in Yade’s ScGeom and many other codes including PFC3D; it was only included for comparison purposes and is not to be used otherwise.


Got questions? Ask at Report issues to github.