MeshKernelPy
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.
Installation
The library can be installed from PyPI by executing
pip install meshkernel
Under Windows, If you encounter any issues importing the pip wheels, you may need to install the Visual C++ Redistributable for Visual Studio 2019.
Examples
Creating a triangular mesh inside a polygon
In this example a mesh is created by discretizing the polygon perimeter with the desired edge length.
Mesh orthogonalization
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.
Mesh refinement
A mesh can be refined in areas based on samples or polygon selections.
Contributing
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.
Building and installing the wheel
Platform-specific build
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_wheel
To 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
.
Manylinux Docker image
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, please follow these steps:
chmod +x scripts/compile_deps.sh
chmod +x scripts/build_deps.sh
docker build --progress=plain ./scripts -t build_linux_library
Once the Docker image has been built, build the linux wheels using the following command:
docker run -e BACK_END_BRANCH=<meshkernel_back_end_branch_name> -v $(pwd):/root --rm build_linux_library
where <meshkernel_back_end_branch_name>
is either master
or release
, as described in Platform-specific build.
The deployable linux wheels will be located in dist/wheelhouse
License
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.