Skip to main content

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

Project description

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

joss license readthedoc

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

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

 > 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

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

Using homebrew

 > brew install gcc
 > brew install boost@1.76
 > brew tap brewsci/num
 > brew install brewsci-mumps --without-brewsci-parmetis

If it does not work you can edit url to http://graal.ens-lyon.fr/MUMPS/MUMPS_5.3.5.tar.gz using the command:

  > brew edit brewsci/num

Configuring and compilation

Akantu is a CMake project, so to configure it, you can follow the usual way:

  > 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:

 > 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:

 > cmake .. -DSCOTCH_LIBRARY="/opt/homebrew/lib/libscotch.dylib;/opt/homebrew/lib/libscotcherr.dylib;/opt/homebrew/lib/libscotcherrexit.dylib"

Specify path to all MUMPS libraries:

 > cmake .. -DMUMPS_DIR=/opt/homebrew/opt/brewsci-mumps

In case the above does not work, specify the MUMPS path manually using (e.g.):

 > 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:

  > pip install akantu

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

  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.

Contributing

Contributing new features, bug fixes

Any contribution is welcome, we are trying to follow a gitflow workflow, so the project developers can create branches named features/<name of my feature> or bugfixes/<name of the fix> directly in the main akantu repository. External fellows can Fork the project. In both cases the modifications have to be submitted in the form of a Merge Request.

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 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.

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

akantu-5.0.7.post1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view hashes)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64

akantu-5.0.7.post1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view hashes)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64

akantu-5.0.7.post1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view hashes)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64

akantu-5.0.7.post1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view hashes)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64

akantu-5.0.7.post1-cp39-cp39-macosx_14_0_arm64.whl (6.3 MB view hashes)

Uploaded CPython 3.9 macOS 14.0+ ARM64

akantu-5.0.7.post1-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view hashes)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64

akantu-5.0.7.post1-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view hashes)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64

akantu-5.0.7.post1-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (6.6 MB view hashes)

Uploaded CPython 3.6m manylinux: glibc 2.17+ x86-64

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page