Software features

SCoPI is a contact solver allowing to simulate collections of rigid particles in 2 or 3 dimensions. It is based on non-smooth contact models: second order differential inclusions in case of mechanical modelling [1,2,3,6] and first order differential inclusions in case of crowd modelling [6]. The algorithms implemented are stable and based on constrained convex optimization problems.


Grains geometry

The rigid particles can be
  • Spheres
  • Made of an assembly of spheres
  • Ellipsoids and super-ellispoids [on-going]

Interactions with the environment

The particles interact with their environment. The built-in physics are
  • Interaction with external forces (gravity, magnetic forces...)
  • Interaction with other particles (attraction forces, cohesive forces...)
  • Interaction with obstacles (motionless or with given movement)
  • Interaction with a suspending fluid (when coupled with a fluid/particle solver)

Contact modelling

The code is based on non-smooth contact models. Several models are available, all of them are inelastic.
  • Inelastic collision without friction
  • Inelastic collision with friction
  • Gley collision [2] (imagine particles coated with a viscous fluid, this model can be coupled with fluid/particles solvers to take lubrication effects into account in numerical simulations of suspensions)

Contact algorithms

The algorithms implemented are based on convex discretizations of the non-smooth models. Their main features are
  • to be stable in time (the constraint on the distance is verified at each time step, whatever is the time step)
  • to be based, at each time step on the computation of the solution to a convex optimization problem with linear (case without friction) [1,3] or conic (with friction) constraints [9, 10]

HPC environment

Written in C++ to optimize for speed, the code allows to run simulations of granular media containing up to 1 million of particles in 3d. It is interfaced with well-known libraries such as
  • xtensor: for multi-dimensional arrays
  • TBB library: for shared memory parallelization
  • MKL: for linear algebra
  • nanoflann: for KD-Trees
  • mosek: to solve the constrained optimization problems (other home-made solvers are also available)

Post-processing features

Post-processing features have been developed to handle the large amount of data from the simulations. This allows us to extract local information in order to study the macroscopic behaviour of the systems.
  • Distribution of contacts, contact network
  • local physical quantities of interest and their temporal mean: density, pressure, deformation tensor, strain tensor...