Skip to content

Release of v0.4 (Ganymede)

On our journey to Ikarus v1.0, we've taken another significant step forward. Explore the latest release, v0.4 (Ganymede). This release not only focuses on refactoring various interfaces but also introduces exciting features such as Python bindings, result evaluators, the Kirchhoff-Love shell element, added support for Clang 16, and more.

  • Python for accessibility, PyPi
  • Docker for reproducibility and ease of use, DockerHub
  • Documentation Doxygen class documentation and examples Class documentation
  • Gitter chat For discussions and support, Chat
  • Clang 16 Clang support for more C++ standard compliant code

Python bindings

As mentioned in the blog post of the v0.3 (Prometheus) release, Ikarus is a C++ library for finite element analysis. In this version, we've introduced Python bindings, allowing users to work seamlessly within Python while still using Ikarus' powerful C++ backend. These bindings are now available on PyPi, making it easy to install Ikarus with pip install pyikarus. These Python bindings depend on other DUNE libraries because they are compiled just-in-time (JIT). The easiest way to use the Python bindings is therefore within the provided Docker images Docker image we provide. This addition aims to expand Ikarus's usage in academia for teaching purposes, providing a simpler interface for Python users. Now, Ikarus can thus be integrated with popular libraries like TensorFlow and SciPy for data-driven simulations.

The Rape of Ganymede

The Rape of Ganymede by Peter Paul Rubens

Ganymede

Ganymede photographed by Juno in 2021. Moon of Jupiter and largest moon in the solar system.

Finite element technology

While linear-elastic finite elements and geometrically non-linear elements based on automatic differentiation were already present in Ikarus, this release introduces a more explicit implementation of non-linear elements for increased efficiency. Post-processing capabilities have been enhanced with wrappers for evaluating results like Von-Mises stress, principal stresses, and other stress measures specific to different finite elements. Assemblers now allow the study of raw matrices and vectors before applying any boundary conditions. The release also integrates an interface for a material library, including material models like the St. Venant-Kirchhoff and a Neo-Hookean model. One can directly use these in the finite element analysis, even for plane stress problems, by utilizing a vanishing stress wrapper (Doxygen). Improved control loggers enable static non-linear analysis, providing relevant information to users. Additionally, a non-linear Kirchhoff-Love shell element is now available for studying thin-walled structures.

Documentation

This release includes detailed documentation for all examples in ikarus-examples and adds Doxygen class documentation. Each class and public function now have Doxygen comment blocks that provide comprehensive descriptions.

Miscellaneous

In addition to the mentioned features, some miscellaneous additions have been made. Changes in the directory structure and file naming now follow the convention of using only lowercase letters.

In addition, we've introduced Clang 16 support in this release, giving users the flexibility to choose their preferred compiler. Ikarus continues to support GCC 12, ensuring compatibility with multiple compilers.

Conferences

During 2023, Ikarus gained popularity and was presented at two conferences: the 11th International Conference on Isogeometric Analysis and the Dune User Meeting 2023. A snapshot from the IGA conference is shared, where Ikarus was presented alongside the dune-iga module.

iga2023.png

Ikarus presented at the 11th International Conference on Isogeometric Analysis (Alex (left) and Tarun(right))

What next?

The following are some key milestones that have been completed or are planned to be released as stepping stones to version 1.0.

  • Workflows

    • License and example checks (#107 and #114)
    • Create Docker images
    • Create a workflow to create a "release" and add a version to DaRUS
    • Deploy Python bindings to PyPi and create Python bindings
    • Clang 16 support (#186)
  • Finite element technology

    • Linear elastic finite elements with EAS (#74)
    • Path-following techniques (#80)
    • Efficient implementation of non-linear elasticity (#160)
    • Wrapper to evaluate results (#165)
    • Interface for a mechanical-material library (#154)
    • Kirchhoff-Love shell elements (#177 and #225)
    • Default adaptive step sizing and improved control loggers (#193)
    • Standard plate and beam elements
    • Handling inhomogeneous Dirichlet boundary conditions in all existing solving methods
    • Enhance the mechanical-material library
    • Linear dynamics
    • Local Assemblers
    • Handling of reduced matrices and vectors
    • Advanced adaptive step sizing features
    • Push-forward and pull-back operations for stress measures
    • Advanced locking-free non-linear finite elements
  • Documentation

    • Improving existing documentation and describing examples of Ikarus (#106 and #125)
    • Detailed explanations of examples in Ikarus (#140)
    • Class documentation (#220)
    • More Documentation for Python bindings
    • Document list of dependencies
    • Gallery

Comments