Author: Jørgen S. Dokken
This library contains an add-on to FEniCSx enabling the possibilities of enforce multi-point constraints, such as
where
This can be used to for instance enforce slip conditions strongly.
Consider a linear system of the form
We then solve the system
If we include boundary conditions on the form
The library performs custom matrix and vector assembly adding the extra constraints to the set of linear equations. All assemblies are local to the process, and no MPI communication except when setting up the multi point constraints.
These assemblers are written in C++, but have a Python interface.
There are also pure Python-based assemblers in the optional {py:mod}dolfinx_mpc.numba module.
Documentation at https://jorgensd.github.io/dolfinx_mpc
DOLFINx MPC is on spack as both a C++ package (dolfinx-mpc) and a Python package (py-dolfinx-mpc). First, clone the spack repository and enable spack
git clone --depth=2 https://github.com/spack/spack.git
# For bash/zsh/sh
. spack/share/spack/setup-env.sh
# For tcsh/csh
source spack/share/spack/setup-env.csh
# For fish
. spack/share/spack/setup-env.fishNext create an environment:
spack env create mpc_env
spack env activate mpc_envFind the compilers on the system
spack compiler findand install the relevant package
spack add [email protected] ^mpich ^petsc+mumps+hypre
spack concretize
spack installspack add [email protected] ^mpich ^petsc+mumps+hypre ^py-fenics-dolfinx+petsc4py
spack add py-scipy py-pytest py-gmsh
spack concretize
spack installFinally, note that spack needs some packages already installed on your system. On a clean ubuntu container for example one need to install the following packages before running spack
apt update && apt install gcc unzip git python3-dev g++ gfortran xz-utils libzip2 -yThe DOLFINx MPC package is now on Conda. The C++ library can be found under libdolfinx_mpc and the Python library under dolfinx_mpc. If you have any issues with these installations, add an issue at dolfinx_mpc feedstock.
Version 0.9.0 is available as an docker image at Github Packages and can be ran using
docker run -ti -v $(pwd):/root/shared -w /root/shared ghcr.io/jorgensd/dolfinx_mpc:v0.9.0To change to complex mode run source dolfinx-complex-mode.
Similarly, to change back to real mode, call source dolfinx-real-mode.
To install the latest version (main branch), you need to install the latest release of DOLFINx.
Easiest way to install DOLFINx is to use docker. The DOLFINx docker images goes under the name dolfinx/dolfinx.
Remember to use an appropriate tag to get the correct version of DOLFINx, i.e. (:nightly or :vx.y.z).
To install the dolfinx_mpc-library run the following code from this directory:
cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -B build-dir cpp/
ninja -j3 install -C build-dir
python3 -m pip -v install --config-settings=cmake.build-type="Release" --no-build-isolation ./python -U