Akantu

Akantu: an HPC finite-element library for contact and dynamic fracture simulations - Published in JOSS (2024)

https://gitlab.com/akantu/akantu

Science Score: 89.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
    Found 1 DOI reference(s) in JOSS metadata
  • Academic publication links
    Links to: joss.theoj.org
  • Committers with academic emails
    33 of 49 committers (67.3%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
    Published in Journal of Open Source Software
Last synced: 4 months ago · JSON representation

Repository

Basic Info
  • Host: gitlab.com
  • Owner: akantu
  • License: gpl-3.0
  • Default Branch: master
Statistics
  • Stars: 12
  • Forks: 13
  • Open Issues: 17
  • Releases: 0
Created about 6 years ago

https://gitlab.com/akantu/akantu/blob/master/

# `Akantu`: Swiss-Made Open-Source Finite-Element Library

[![joss](https://joss.theoj.org/papers/3abf3c7945cc9a016a946ce9e02e357f/status.svg)](https://joss.theoj.org/papers/3abf3c7945cc9a016a946ce9e02e357f) [![license](https://img.shields.io/badge/license-LGPLv3-green)](https://www.gnu.org/licenses/lgpl-3.0.en.html) [![readthedoc](https://readthedocs.org/projects/akantu/badge/?version=master)](https://akantu.readthedocs.io/en/latest/?badge=master)

`Akantu` means a little element in Kinyarwanda, a Bantu language. From now on it
is also an open-source object-oriented library which has the ambition to be
generic and efficient. Even though the code is written to be generic, Akantu
strength are in solid mechanics models for fracture and contact simulations.

The full documentation can be found on [ReadTheDocs](https://akantu.readthedocs.io/en/latest/)

# Building `Akantu`

## Dependencies

In order to compile `Akantu`  any compiler supporting fully C++14 should work.
In addition some libraries are required:

 - CMake (>= 3.5.1)
 - Boost (pre-processor and Spirit)
 - Eigen3 (if not present the build system will try to download it)

For the python interface:

 - Python (>=3 is recommended)
 - pybind11 (if not present the build system will try to download it)

To run parallel simulations:

 - MPI
 - Scotch

To use the static or implicit dynamic solvers at least one of the following libraries is needed:

 - MUMPS (since this is usually compiled in static you also need MUMPS dependencies)
 - PETSc

To compile the tests and examples:

 - Gmsh
 - google-test (if not present the build system will try to download it)

### On `.deb` based systems

``` sh
 > sudo apt install cmake libboost-dev gmsh libeigen3-dev
 # For parallel
 > sudo apt install mpi-default-dev libmumps-dev libscotch-dev
 # For sequential
 > sudo apt install libmumps-seq-dev 
```

### Using `conda`

This works only for sequential computation since `mumps` from conda-forge is compiled without MPI support

``` sh
 > conda create -n akantu
 > conda activate akantu
 > conda install boost cmake
 > conda install -c conda-forge mumps
```

### Using `homebrew`

``` sh
 > brew install gcc boost scotch eigen
 > brew tap brewsci/num
 > brew install brewsci-mumps --without-brewsci-parmetis
```

If it does not work you can point "url" to "http://graal.ens-lyon.fr/MUMPS/MUMPS_5.6.2.tar.gz" together with "sha256" to "13a2c1aff2bd1aa92fe84b7b35d88f43434019963ca09ef7e8c90821a8f1d59a" using the command::

``` sh
  > brew edit brewsci/mumps
```

For the brew installation of mumps to work I also had to change in brewsci/num "alllib" -> "all", "-shared" -> "-dynamiclib" and remove all mentions of "-noall_load".

## Configuring and compilation


`Akantu` is a [CMake](https://cmake.org/) project, so to configure it, you can follow the usual way:

``` sh
  > cd akantu
  > mkdir build
  > cd build
  > ccmake ..
  [ Set the options that you need ]
  > make
  > make install

```

### On Mac OS X with `homebrew`

You will need to specify the compiler explicitly:

``` sh
 > CC=gcc-12 CXX=g++-12 FC=gfortran-12 cmake ..
```

Considering the homebrew is installed in `/opt/homebrew`
Define the location of the ``Scotch`` library path:
``` sh
 > cmake .. -DSCOTCH_LIBRARY="/opt/homebrew/lib/libscotch.dylib;/opt/homebrew/lib/libscotcherr.dylib;/opt/homebrew/lib/libscotcherrexit.dylib"
```

Specify path to all ``MUMPS`` libraries:
``` sh
 > cmake .. -DMUMPS_DIR=/opt/homebrew/opt/brewsci-mumps
```

In case the above does not work, specify the ``MUMPS`` path manually using (e.g.):
``` sh
 > cmake .. -DMUMPS_LIBRARY_COMMON=/opt/homebrew/opt/brewsci-mumps/lib/libmumps_common.dylib 
```

If compilation does not work change the path of the failing libraries to brew downloads in `/opt/homebrew/`. 

## Using the python interface


You can install ``Akantu`` using pip, this will install a pre-compiled version, this works only on Linux machines for now:

``` sh
  > pip install akantu
```

You can then import the package in a python script as:

``` python
  import akantu
```

The python API is similar to the C++ one. If you
encounter any problem with the python interface, you are welcome to do a merge
request or post an issue on [GitLab](https://gitlab.com/akantu/akantu/-/issues).

# Contributing

## Contributing new features, bug fixes

Any contribution is welcome, we are trying to follow a [gitflow](https://nvie.com/posts/a-successful-git-branching-model/) workflow, so the project `developers` can create branches named `features/` or `bugfixes/` directly in the main `akantu` repository.
External fellows can [Fork](https://gitlab.com/akantu/akantu/-/forks/new) the project.
In both cases the modifications have to be submitted in the form of a [Merge Request](https://gitlab.com/akantu/akantu/-/merge_requests/new).

## Asking for help, reporting issues

If you want to ask for help concerning Akantu's compilation, usage or problem with the code do not hesitate to open an [Issue](https://gitlab.com/akantu/akantu/-/issues/new) on gitlab. If you want to contribute and don't know where to start, you are also invited to open an issue.


# Examples and Tutorials with the python interface

To help getting started, you can find examples with the source code in the
`examples` sub-folder. If you just want to test the python examples without
having to compile the whole project you can use the following tarball
[akantu-python-examples.tgz](https://gitlab.com/akantu/akantu/-/packages/22034181).

In addition to the examples, multiple tutorials using the python interface are
available as notebooks with pre-installed version of `Akantu` on Renku. The
tutorials can be tested here:

[![renku](https://user-content.gitlab-static.net/52a4794df1236b248c8fc870bd74e9d787c0e2cb/68747470733a2f2f72656e6b756c61622e696f2f72656e6b752d62616467652e737667)](https://renkulab.io/projects/guillaume.anciaux/akantu-tutorials/sessions/new?autostart=1)

JOSS Publication

Akantu: an HPC finite-element library for contact and dynamic fracture simulations
Published
February 22, 2024
Volume 9, Issue 94, Page 5253
Authors
Nicolas Richart ORCID
Civil Engineering Institute, École Polytechnique Fédérale de Lausanne, Switzerland
Guillaume Anciaux ORCID
Civil Engineering Institute, École Polytechnique Fédérale de Lausanne, Switzerland
Emil Gallyamov ORCID
Civil Engineering Institute, École Polytechnique Fédérale de Lausanne, Switzerland
Lucas Frérot ORCID
Civil Engineering Institute, École Polytechnique Fédérale de Lausanne, Switzerland, Department of Microsystems Engineering, University of Freiburg, Germany, Institut Jean le Rond d'Alembert, CNRS UMR 7190, Sorbonne Université, France
David Kammer ORCID
Civil Engineering Institute, École Polytechnique Fédérale de Lausanne, Switzerland, Institute for Building Materials, ETH Zurich, Switzerland
Mohit Pundir ORCID
Civil Engineering Institute, École Polytechnique Fédérale de Lausanne, Switzerland, Institute for Building Materials, ETH Zurich, Switzerland
Marco Vocialta
Civil Engineering Institute, École Polytechnique Fédérale de Lausanne, Switzerland
Aurelia Cuba Ramos
Civil Engineering Institute, École Polytechnique Fédérale de Lausanne, Switzerland
Mauro Corrado
Civil Engineering Institute, École Polytechnique Fédérale de Lausanne, Switzerland, Department of Structural, Geotechnical and Building Engineering, Politecnico di Torino, Italy
Philip Müller
Institute for Building Materials, ETH Zurich, Switzerland
Fabian Barras ORCID
Civil Engineering Institute, École Polytechnique Fédérale de Lausanne, Switzerland, The Njord Centre Department of Physics, Department of Geosciences, University of Oslo, Norway
Shenghan Zhang ORCID
Civil Engineering Institute, École Polytechnique Fédérale de Lausanne, Switzerland, The Hong Kong University of Science and Technology, Department of Civil and Environmental Engineering
Roxane Ferry ORCID
Civil Engineering Institute, École Polytechnique Fédérale de Lausanne, Switzerland
Shad Durussel ORCID
Civil Engineering Institute, École Polytechnique Fédérale de Lausanne, Switzerland
Jean-François Molinari ORCID
Civil Engineering Institute, École Polytechnique Fédérale de Lausanne, Switzerland
Editor
Patrick Diehl ORCID
Tags
cohesive element contact fracture python

Committers

Last synced: 4 months ago

All Time
  • Total Commits: 4,644
  • Total Committers: 49
  • Avg Commits per committer: 94.776
  • Development Distribution Score (DDS): 0.427
Past Year
  • Commits: 54
  • Committers: 5
  • Avg Commits per committer: 10.8
  • Development Distribution Score (DDS): 0.463
Top Committers
Name Email Commits
Nicolas Richart n****t@e****h 2,659
Guillaume Anciaux g****x@e****h 504
Mohit Pundir m****r@e****h 244
Lucas Frérot l****t@e****h 191
Aurelia Cuba Ramos a****s@e****h 163
Mauro Corrado m****o@e****h 91
Marco Vocialta m****a@e****h 81
Nicolas Richart n****s@g****h 81
Kammer David Simon d****r@e****h 71
Lucas Frérot l****t@e****h 63
Fabian Barras f****s@e****h 62
Emil Gallyamov e****v@e****h 58
Philip Mueller, HS p****r@b****h 50
Clement Roux c****x@e****h 42
Philip Mueller p****r@b****h 41
Nicolas Richart n****t@g****m 32
Shad Durussel s****l@e****h 23
Tobias Brink t****k@e****h 22
Gaëtan Cortes g****s@e****h 21
Roxane Ferry r****y@e****h 18
Enrico Milanese e****e@e****h 16
Lucas Frérot l****t@g****m 16
Mohit Pundir t****r@g****m 9
jcho j****o@e****h 8
LSMS Tester l****r@e****h 8
Christen Dana d****n@g****m 7
Thibault Roch t****h@e****h 6
Valerii Hiora v****a@g****m 6
Nicholas Molyneaux n****x@e****h 5
Okan Yilmaz o****z@e****h 5
and 19 more...

Issues and Pull Requests

Last synced: 4 months ago

Packages

  • Total packages: 1
  • Total downloads:
    • pypi 749 last-month
  • Total dependent packages: 0
  • Total dependent repositories: 2
  • Total versions: 15
  • Total maintainers: 1
pypi.org: akantu

Akantu: Swiss-Made Open-Source Finite-Element Library

  • Versions: 15
  • Dependent Packages: 0
  • Dependent Repositories: 2
  • Downloads: 749 Last month
Rankings
Dependent packages count: 10.1%
Dependent repos count: 11.5%
Average: 13.1%
Downloads: 17.6%
Maintainers (1)
Last synced: 4 months ago

Dependencies

dev-requirements.txt pypi
  • cmake * development
  • ninja * development
  • numpy * development
  • pybind11 * development
  • scikit-build * development
doc/dev-doc/requirements.txt pypi
  • breathe ==4.30.0 development
  • gitpython ==3.1.18 development
  • jinja2 ==3.0.1 development
  • sphinx ==3.4.3 development
  • sphinx-rtd-theme ==0.5.2 development
  • sphinxcontrib-bibtex ==2.3.0 development
setup.py pypi
  • numpy *