Metadata-Version: 2.2
Name: mlhp
Version: 0.2.1
Summary: An efficient finite element library for boundary-conforming and embedded domain methods.
Author: Philipp Kopp
License: MIT License
         
         Copyright (c) 2026 Philipp Kopp
         
         Permission is hereby granted, free of charge, to any person obtaining a copy
         of this software and associated documentation files (the "Software"), to deal
         in the Software without restriction, including without limitation the rights
         to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
         copies of the Software, and to permit persons to whom the Software is
         furnished to do so, subject to the following conditions:
         
         The above copyright notice and this permission notice shall be included in all
         copies or substantial portions of the Software.
         
         THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
         IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
         FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
         AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
         LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
         OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
         SOFTWARE.
         
Classifier: License :: OSI Approved :: MIT License
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Science/Research
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Physics
Classifier: Topic :: Scientific/Engineering :: Mathematics
Classifier: Programming Language :: C++
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Project-URL: Repository, https://gitlab.com/hpfem/code/mlhp
Project-URL: Examples, https://gitlab.com/hpfem/code/mlhp/-/tree/master/examples?ref_type=heads
Project-URL: Issues, https://gitlab.com/hpfem/code/mlhp/issues
Project-URL: Changelog, https://gitlab.com/hpfem/code/mlhp/-/releases
Requires-Python: >=3.8
Description-Content-Type: text/markdown

## About

Mlhp is a C++ library with python bindings that implements multi-level _hp_- and other finite element methods efficiently also for dimensions > 3. A particular strength of mlhp is the support for non-conforming finite elements (e.g. the Finite Cell Method). It provides the technology to directly simulate with implicitly defined geometries, STLs, and voxel-based data without the need to create a conforming mesh. The project is actively developed and documents mostly through examples and comments. Full backward compatibility may occasionally be broken when a refactor or new feature requires API changes. 

## Python package

We provide a substantial subset of mlhp's functionality through pre-compiled wheels available on PyPI:
```
pip install mlhp
```
These wheels are available for most common platforms and for recent Python versions. We require no additional dependencies besides those already baked into the wheels. As a result, you get a fully functioning finite element kernel that can be interfaced with numpy/scipy/cupy relatively easily and provides C-interfaces for extensions similar to Ansys/Abaqus user subroutines that can be compiled directly in Python using cffi/numba.

Use the Python examples as guidance; they are shipped with our wheels (try `mlhp.examples()`), but you can also access them via this repo (examples/). In addition, `help()` provides more granular information and documents overload resolution.

## Submodules

The header-only libraries [pybind11](https://pybind11.readthedocs.io/en/stable/), [Catch2](https://github.com/catchorg/Catch2), and [vtu11](https://github.com/phmkopp/vtu11) are included as git submodules. To clone them recursively, use:
```
git clone --recursive https://gitlab.com/hpfem/code/mlhp.git
```

## Getting started
- [Examples](https://gitlab.com/hpfem/code/mlhp/-/tree/master/examples?ref_type=heads)
- [Compiler and platform support](https://gitlab.com/hpfem/code/mlhp/-/wikis/Compiler%20and%20platform%20support) 
- [Setting up an executable that uses mlhp](https://gitlab.com/hpfem/code/mlhp/-/wikis/Setting%20up%20an%20executable%20that%20uses%20mlhp).
- [Core class structure](https://gitlab.com/hpfem/code/mlhp/-/wikis/Core%20class%20structure)
- [Doxygen documentation](https://hpfem.gitlab.io/code/mlhp)

## References and publications

If you use our code for your scientific research, please acknowledge this by referring to the following publication:

P. Kopp, E. Rank, V. M. Calo, S. Kollmannsberger, 2022: Efficient multi-level hp-finite elements in arbitrary dimensions, Computer Methods in Applied Mechanics and Engineering, Volume 401, Part B, 115575, DOI: [10.1016/j.cma.2022.115575](https://doi.org/10.1016/j.cma.2022.115575)

Here are some of the publications using this project:

- V. Holla, P. Kopp, J. Grünewald; P. Praegla, C. Meier, K. Wudy, S. Kollmannsberger, 2023: Laser beam shape optimization: Exploring alternative profiles to Gaussian-shaped laser beams in powder bed fusion of metals, 2023 International Solid Freeform Fabrication Symposium, 
DOI: [10.26153/TSW/50986](https://doi.org/10.26153/TSW/50986)
- V. Holla, P. Kopp, J. Grünewald, K. Wudy, S. Kollmannsberger, 2023: Laser beam shape optimization in powder bed fusion of metals, Additive Manufacturing, Volume 72, 103609, DOI: [10.1016/j.addma.2023.103609](https://doi.org/10.1016/j.addma.2023.103609)
- P. Kopp, V. M. Calo, E. Rank, S. Kollmannsberger, 2022: Space-time hp-finite elements for heat evolution in laser powder bed fusion additive manufacturing, Engineering with Computers, Volume 38, pages 4879–4893, DOI: [10.1007/s00366-022-01719-1](https://doi.org/10.1007/s00366-022-01719-1)
- S. Kollmannsberger; P. Kopp, 2021: On accurate time integration for temperature evolutions in additive manufacturing, GAMM-Mitteilungen, Volume 44, Issue 4, DOI: [10.1002/gamm.202100019](https://doi.org/10.1002/gamm.202100019)
