Skip to content
A robust cut-cell mesh generator for arbitrary triangle-mesh inputs
C++ CMake Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci asdf Sep 7, 2019
build-utils updates Nov 10, 2019
examples now able to discern whether im in a mesh or not, if a triangulation e… Nov 7, 2019
extern update Nov 23, 2019
include/mandoline minor comment modifications Dec 1, 2019
proto mandoline update Aug 14, 2019
src minor comment modifications Dec 1, 2019
.travis.yml making an optional half-written build Sep 7, 2019
CMakeLists.txt Merge branch 'master' of Nov 24, 2019
LICENSE Initial commit May 27, 2019 Update Nov 13, 2019



A robust cut-cell mesh generator for arbitrary triangle-mesh inputs


In order to simplify the process of installing Mandoline scripts build-utils/''' and build-utils/''' are provided.

Also, note that the scripts install a number of packages through apt/brew respectively, including version 2019.10 of Magnum,Corrade, and Magnum Integration. All this effort for Magnum is built around enabling imgui support within Magnum.

If you're using a different system hopefully these the build-utils will still be useful.


Mandoline depends on a C++17 enabled compiler

  • gcc with version >= 8.2.0 or clang with version >= 8 should work.
  • cmake with version >= 3.10.1 .
apt install git cmake build-essential gcc

as well as a few other annoying things:

Built-in Libraries

Mandoline depends on Michael Tao's messy ``core'' library, libigl.

  • core and libigl are included as submodules, and can be added by:
git submodule update --init --recursive

Required External Libraries

  • A relatively new verison of Eigen3 is required (3.3.7 or the development branch?). The version provided by libigl will not suffice.
  • Boost is required for threads.
  • Google Protobuf is required for the default cutmesh serialization format.
  • Eigen is required for almost every bit of linear algebra. With visualization it currently needs the dev branch (requires mercurial and check build-utils/ for more details on how to build)
apt install libboost-thread-dev  libeigen3-dev protobuf-compiler 

In order to handle self-intersections Mandoline requires, on top of libigl,

apt install libboost-thread-dev libmpfr-dev libmpfrc++-dev libcgal-dev 
libmpfr-dev libmpfrc++-dev libcgal-dev

Optional Libraries

  • OpenMP is a really good idea.
  • Magnum and Corrade (version >= 2019.10) for visualization. If Magnum and Corrade are available, targets that depend on visualization can be enabled by -DUSE_OPENGL ON when running cmake. Installing Magnum and Corrade can be a pain, as I use the imgui plugin and default installations dont have that available. If you want to use it you might want to use the following script with MANDOLINE_DIR with the directory mandoline is stored in:
apt install debhelper libgl-dev libopenal-dev libglfw3-dev libsdl2-dev libbullet-dev libglm-dev

mkdir mosra; pushd mosra;
for repo in corrade magnum magnum-integration;
do git clone$repo; done

pushd magnum-integration;
sed "s|IMDIR|${IMGUI_DIR}|g" ${MANDOLINE_DIR}/build-utils/magnum_integration.patch > magnum_integration_imgui.patch
patch -b ./package/debian/rules  magnum_integration_imgui.patch
popd #magnum integration

for repo in corrade magnum magnum-integration;
do pushd $repo;
    ln -s package/debian .
    # ignoring the dsc errors taht happen from magnum
    dpkg-buildpackage || true
You can’t perform that action at this time.