MeshKernelPy is a library for creating and editing meshes.
It supports 1D and 2D unstructured meshes.
The underlying C++ library MeshKernel can be found here.
The library can be installed from PyPI by executing
pip install meshkernelUnder Windows, If you encounter any issues importing the pip wheels, you may need to install the Visual C++ Redistributable for Visual Studio 2019.
In this example a mesh is created by discretizing the polygon perimeter with the desired edge length.
Finite volume staggered flow solvers require the mesh to be as orthogonal as possible. MeshKernel provides an algorithm to adapt the mesh and achieve a good balance between mesh orthogonality and smoothness.
A mesh can be refined in areas based on samples or polygon selections.
In order to install MeshKernelPy locally, please execute the following line inside your virtual environment
pip install -e ".[tests, lint, docs]"Then add a compiled MeshKernelApi.dll into your src folder.
Also make sure that your editor is configured to format the code with black and isort.
When modifying Jupyter notebooks, the jupyterlab-code-formatter can be used.
A setup script is provided for building the wheel. The script is known to work under Windows, Linux and macOS.
To install the dependencies, use
python -m pip install --upgrade pip
python -m pip install wheel numpy matplotlib pytest
The environment variable BACK_END_BRANCH must be set prior to building the wheel. It specifies which MeshKernel branch should be built during the generation of the wheel. If one is on the main branch of MeshKernelPy, BACK_END_BRANCH must be either set to master. If one is an a release branch, BACK_END_BRANCH should be set to release. The version of the MeshKernel release branch is hardcoded in meshkernel/version.py.
While in the project's root directory, to build the wheel use
python setup.py build_ext
python setup.py sdist bdist_wheelTo install use: The wheel is installed
python -m pip install <meshkernel_wheel_name>where <meshkernel_wheel_name> is the name of the generated wheel.
To test, simply run pytest.
To deploy Linux wheels to PyPI, we provide a Docker image that is based on manylinux_2_28_x86_64. This image includes cmake and boost, which are necessary for compiling the native MeshKernel library (written in C++). To build the Docker image, use:
docker build --progress=plain ./scripts -t build_linux_libraryOnce the Docker image has been built, build the manylinux wheel using the following command:
docker run -e BACK_END_BRANCH=<meshkernel_back_end_branch_name> -v $(pwd):/root --rm build_linux_librarywhere <meshkernel_back_end_branch_name> is either master or release, as described in Platform-specific build.
The deployable manylinux wheels will be located in dist/wheelhouse.
MeshKernelPy uses the MIT license.
However, the wheels on PyPI bundle the LGPL licensed MeshKernel.
Please make sure that this fits your needs before depending on it.


