ECCOMAS 2024

Ikarus and dune-iga: Easy-To-Use C++ Libraries With Python Bindings for Structural Analysis Within DUNE

  • Jakob, Henrik (University of Stuttgart)
  • Vinod Kumar Mitruka, Tarun Kumar Mitruka (University of Stuttgart)
  • Müller, Alexander (University of Stuttgart)

Please login to view abstract download link

Both Ikarus and dune-iga are C++ open-source libraries built on top of and within the DUNE framework. Ikarus is designed to solve partial differential equations with the finite element method and implements common element formulations for solid and structural mechanics. Furthermore, it provides handy wrappers for functionalities already present in the DUNE framework. Both libraries feature convenient Python bindings for user interaction using just-in-time (JIT) compilation of the template-heavy C++ source code. Due to its modularity, parts of the library can be used standalone or included in third-party software. A major part of the DUNE framework is the dune-grid interface, which lays the groundwork for possible grid implementations. One of the key benefits herein is that the actual analysis code is independent of the grid and can be used with all implementations adhering to the dune-grid interface. Similarly, by utilizing the dune-functions interface, the code achieves independence from any specific selection of ansatz functions. This not only allows for the application of generic code with low-order Lagrange functions but also extends its compatibility to NURBS ansatz functions, as well as Raviart-Thomas or Nédélec ansatz functions. The chosen grid geometry implementation is independent of the choice of ansatz functions. One of these implementations is the dune-iga library, enabling the use of Isogeometric Analysis (IGA) with Ikarus and other software. The code is designed to be as flexible as possible to allow the user to fully customize and extend the library when necessary, while also providing strong default behavior. A key aspect is the general trimming capability for NURBS surfaces. In this work, the computational capabilities of Ikarus and dune-iga are presented. Some benchmark examples are solved using the Python bindings to showcase the convenience of the implementation.