Elastica is an open-source software package designed to numerically solve systems made up of collections of Cosserat rods. Elastica has been used to analyze a wide range of both natural and artificial systems ranging from single muscle fibers to birds nests to the next generation of soft robots. Details on the numerical methods used in Elastica can be found here.
Elastica has been designed to be modular, extensible and easy to use. It allows the user to define a collection of Cosserat rods subject to both external (i.e. gravity, friction, etc…) and internal (i.e. muscle torque) forces. Rods can account for self contact and can be combined to create assemblies of rods capable of modeling increasingly complex systems.
There are currently two implementations of Elastica.
PyElastica is a Python implementation of Elastica. It is the most user friendly version and we encourage new users to start here. We are actively developing it and continually adding new features and performance improvements.
Elastica++ is a C++ implementation of Elastica. Currently, this is an older version of Elastica which is less documented and developed. We are overhauling this version to be both faster and easier to use. We hope to release the updated version soon, in the meantime we strongly recommend using PyElastica.