Akantu: a finite-element code for fracture and contact mechanics
Please login to view abstract download link
Akantu is an open-source finite element library developed in C++. It started in 2010 as a platform for the researchers of the Computational Solid Mechanics Laboratory at Ecole Polytechnique Fédérale de Lausanne to experiment with different methods of resolution for large scale problems of fracture and contact mechanics. As a consequence, the design principles of the code aim to balance readability, extensibility and performance. To achieve this balance, the code is designed as a mixture between two strategies. First, it is object-oriented for the extensibility of high level routines. Second, it uses the structure of arrays paradigm, which allows for performance and vectorization in the critical kernels. The code is also written for distributed memory machines, using state-of-the-art domain decomposition methods. A distinguishing feature is its communication strategy, which relies on a layer of ghost elements instead of the more conventional ghost nodes. This choice simplifies the implementation of algorithms involving topological changes of the meshes in parallel, such as the dynamic insertion of cohesive elements. In addition to the specific design choices made for fracture and contact mechanics simulations, Akantu needs to be extensible enough to implement other classical equations that might be needed in other applications like diffusion mechanisms for heat or liquids, non-local continuum damage, or phase-field. The rapid development of prototypes for new features is made possible through a python interface. All these features make Akantu one of the few open-source finite-element codes suited for large scale dynamic fracture and contact mechanics problems. In this presentation, the fundamental parts of Akantu will be presented as well as the latest features and integrations such as for dynamic fragmentation with non-smooth integrators, for the PETSc+TAO integration and for the HDF5 output/restart format, all employed in a HPC context.
