PyHOPE 0.8.0__tar.gz → 0.9.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- pyhope-0.8.0/README.md → pyhope-0.9.0/PKG-INFO +70 -2
- pyhope-0.8.0/PKG-INFO → pyhope-0.9.0/README.md +31 -36
- pyhope-0.9.0/pyhope/basis/basis_basis.py +707 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/basis/basis_connect.py +55 -17
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/basis/basis_jacobian.py +87 -42
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/basis/basis_watertight.py +120 -39
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/check/check_health.py +3 -1
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/check/check_install.py +3 -3
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/common/common.py +10 -6
- pyhope-0.9.0/pyhope/common/common_numba.py +90 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/common/common_parallel.py +26 -20
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/common/common_progress.py +35 -8
- pyhope-0.9.0/pyhope/common/common_unique.py +83 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/common/common_vars.py +2 -2
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/io/formats/meshio.py +97 -71
- pyhope-0.9.0/pyhope/io/formats/vtk.py +152 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/io/io.py +34 -25
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/io/io_debug.py +5 -5
- pyhope-0.9.0/pyhope/io/io_gmsh.py +70 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/io/io_vars.py +3 -1
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/connect/connect.py +13 -12
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/connect/connect_mortar.py +9 -3
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/fem/fem.py +3 -3
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh.py +2 -1
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh_builtin.py +28 -10
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh_common.py +64 -8
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh_duplicates.py +43 -21
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh_orient.py +57 -34
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh_sides.py +12 -9
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh_sort.py +20 -7
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh_vars.py +3 -1
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/reader/reader_gmsh.py +29 -10
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/reader/reader_hopr.py +1 -1
- pyhope-0.9.0/pyhope/mesh/sort/sort_hilbert.py +170 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/topology/mesh_topology.py +27 -6
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/transform/mesh_transform.py +25 -8
- pyhope-0.9.0/pyhope/mesh/transform/templates/sphere_box.py +135 -0
- pyhope-0.9.0/pyhope/meshio/meshio_convert.py +306 -0
- pyhope-0.9.0/pyhope/meshio/meshio_nodes.py +134 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/meshio/meshio_ordering.py +130 -8
- {pyhope-0.8.0 → pyhope-0.9.0}/pyproject.toml +18 -7
- pyhope-0.8.0/pyhope/basis/basis_basis.py +0 -261
- pyhope-0.8.0/pyhope/io/formats/vtk.py +0 -267
- pyhope-0.8.0/pyhope/meshio/meshio_convert.py +0 -104
- {pyhope-0.8.0 → pyhope-0.9.0}/AUTHORS.md +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/LICENSE.md +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/__init__.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/__main__.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/basis/__init__.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/check/__init__.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/check/check.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/common/__init__.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/common/common_tools.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/config/__init__.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/config/config.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/gmsh/gmsh_install.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/gmsh/gmsh_override.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/io/__init__.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/io/formats/cgns.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/io/formats/gmsh.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/io/io_xdmf.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/__init__.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/connect/connect_rbtree.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/elements/elements_ordering.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/elements/elements_shapefunctions.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh_external.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/reader/reader_gambit.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/topology/mesh_serendipity.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/topology/mesh_splittohex.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/transform/templates/convtest.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/transform/templates/cylinder.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/transform/templates/default.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/transform/templates/phill.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/transform/templates/sphere.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/output/__init__.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/output/output.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/readintools/__init__.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/readintools/commandline.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/readintools/readintools.py +0 -0
- {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/script/pyhope_cli.py +0 -0
|
@@ -1,11 +1,46 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: PyHOPE
|
|
3
|
+
Version: 0.9.0
|
|
4
|
+
Summary: Python High-Order Preprocessing Environment
|
|
5
|
+
License: GPL-3.0-only
|
|
6
|
+
License-File: AUTHORS.md
|
|
7
|
+
License-File: LICENSE.md
|
|
8
|
+
Keywords: PyHOPE,mesh generator
|
|
9
|
+
Author: Numerics Research Group (NRG)
|
|
10
|
+
Author-email: numerics@iag.uni-stuttgart.de
|
|
11
|
+
Requires-Python: >=3.10
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
14
|
+
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
21
|
+
Provides-Extra: numba
|
|
22
|
+
Requires-Dist: alive-progress
|
|
23
|
+
Requires-Dist: gmsh
|
|
24
|
+
Requires-Dist: h5py
|
|
25
|
+
Requires-Dist: hilbertcurve
|
|
26
|
+
Requires-Dist: meshio
|
|
27
|
+
Requires-Dist: numba ; extra == "numba"
|
|
28
|
+
Requires-Dist: numpy (>=2.0.0)
|
|
29
|
+
Requires-Dist: packaging
|
|
30
|
+
Requires-Dist: plotext
|
|
31
|
+
Requires-Dist: scipy
|
|
32
|
+
Requires-Dist: typing-extensions
|
|
33
|
+
Project-URL: Documentation, https://hopr-framework.github.io/PyHOPE
|
|
34
|
+
Project-URL: Homepage, https://numericsresearchgroup.org
|
|
35
|
+
Project-URL: Repository, https://github.com/hopr-framework/pyhope
|
|
36
|
+
Description-Content-Type: text/markdown
|
|
37
|
+
|
|
1
38
|
PyHOPE (Python High-Order Preprocessing Environment) is an open-source Python framework for the generation of three-dimensional unstructured high-order meshes. These meshes are needed by high-order numerical methods like Discontinuous Galerkin, Spectral Element Methods, or pFEM, in order to retain their accuracy if the computational domain includes curved boundaries.
|
|
2
39
|
|
|
3
40
|
PyHOPE has been developed by the Numerics Research Group (NRG) lead by Prof. Andrea Beck at the Institute of Aerodynamics and Gas Dynamics at the University of Stuttgart, Germany.
|
|
4
41
|
|
|
5
42
|
PyHOPE is heavily inspired by [HOPR (High Order Preprocessor)](https://github.com/hopr-framework/hopr) and shares the same input/output format. Furthermore, PyHOPE utilizes [Gmsh](https://gmsh.info) for the initial mesh generation and conversion before converting it to its internal representation. The internal representation is loosely based on [meshio](https://github.com/nschloe/meshio) but augmented with additional information required for high-order meshes.
|
|
6
43
|
|
|
7
|
-
This is a scientific project. If you use PyHOPE for publications or presentations in science, please support the project by citing our publications given at [numericsresearchgroup.org](https://numericsresearchgroup.org/publications.html).
|
|
8
|
-
|
|
9
44
|
# Installation
|
|
10
45
|
PyHOPE is built using standard Python packages. You can install PyHOPE by following these steps.
|
|
11
46
|
|
|
@@ -26,6 +61,12 @@ PyHOPE is built using standard Python packages. You can install PyHOPE by follow
|
|
|
26
61
|
python -m pip install pyhope
|
|
27
62
|
```
|
|
28
63
|
|
|
64
|
+
> [!NOTE]
|
|
65
|
+
> PyHOPE can optionally use [Numba](https://numba.pydata.org) to accelerate some compute-heavy routines. If Numba is not available in your environment, PyHOPE will fall back to pure NumPy implementations.
|
|
66
|
+
> ```bash
|
|
67
|
+
> python -m pip install pyhope[numba]
|
|
68
|
+
> ```
|
|
69
|
+
|
|
29
70
|
# Testing
|
|
30
71
|
PyHOPE features internal health checks to verify that everything works as expected. The checks can be invoked directly from the terminal.
|
|
31
72
|
```bash
|
|
@@ -185,3 +226,30 @@ with Mesh('1-01-cartbox_mesh.h5') as m:
|
|
|
185
226
|
elems = m.elems
|
|
186
227
|
lobatto_nodes = Basis.legendre_gauss_lobatto_nodes(order=m.nGeo)
|
|
187
228
|
```
|
|
229
|
+
|
|
230
|
+
# Cite
|
|
231
|
+
This is a scientific project. If you use PyHOPE for publications or presentations in science, please support the project by citing the following article.
|
|
232
|
+
```bibtex
|
|
233
|
+
@article{kopper2025pyhope:joss,
|
|
234
|
+
title = {{PyHOPE}: A Python Toolkit for Three-Dimensional Unstructured High-Order Meshes},
|
|
235
|
+
author = {Kopper, Patrick and Blind, Marcel P. and Schwarz, Anna and Kurz, Marius and Rodach, Felix and Copplestone, Stephen M. and Beck, Andrea D.},
|
|
236
|
+
journal = {Journal of Open Source Software},
|
|
237
|
+
year = {2025},
|
|
238
|
+
volume = {10},
|
|
239
|
+
number = {115},
|
|
240
|
+
pages = {8769},
|
|
241
|
+
publisher = {The Open Journal},
|
|
242
|
+
doi = {10.21105/joss.08769}
|
|
243
|
+
}
|
|
244
|
+
```
|
|
245
|
+
In addition, you can also directly refer to this repository as
|
|
246
|
+
```bibtex
|
|
247
|
+
@misc{kopper2025pyhope:repo,
|
|
248
|
+
title = {{PyHOPE}: A Python Toolkit for Three-Dimensional Unstructured High-Order Meshes},
|
|
249
|
+
author = {Kopper, Patrick and Blind, Marcel P. and Schwarz, Anna and Kurz, Marius and Rodach, Felix and Copplestone, Stephen M. and Beck, Andrea D.},
|
|
250
|
+
year = {2025},
|
|
251
|
+
howpublished = {\url{https://github.com/hopr-framework/PyHOPE}},
|
|
252
|
+
doi = {10.5281/zenodo.17414843}
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
@@ -1,45 +1,9 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: PyHOPE
|
|
3
|
-
Version: 0.8.0
|
|
4
|
-
Summary: Python High-Order Preprocessing Environment
|
|
5
|
-
License: GPL-3.0-only
|
|
6
|
-
License-File: AUTHORS.md
|
|
7
|
-
License-File: LICENSE.md
|
|
8
|
-
Keywords: PyHOPE,mesh generator
|
|
9
|
-
Author: Numerics Research Group (NRG)
|
|
10
|
-
Author-email: numerics@iag.uni-stuttgart.de
|
|
11
|
-
Requires-Python: >=3.10
|
|
12
|
-
Classifier: Development Status :: 3 - Alpha
|
|
13
|
-
Classifier: Operating System :: POSIX :: Linux
|
|
14
|
-
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
15
|
-
Classifier: Programming Language :: Python :: 3
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
20
|
-
Requires-Dist: alive-progress
|
|
21
|
-
Requires-Dist: gmsh
|
|
22
|
-
Requires-Dist: h5py
|
|
23
|
-
Requires-Dist: hilbertcurve
|
|
24
|
-
Requires-Dist: meshio
|
|
25
|
-
Requires-Dist: numpy (>=2.0.0)
|
|
26
|
-
Requires-Dist: packaging
|
|
27
|
-
Requires-Dist: plotext
|
|
28
|
-
Requires-Dist: scipy
|
|
29
|
-
Requires-Dist: typing-extensions
|
|
30
|
-
Project-URL: Documentation, https://hopr-framework.github.io/PyHOPE
|
|
31
|
-
Project-URL: Homepage, https://numericsresearchgroup.org
|
|
32
|
-
Project-URL: Repository, https://github.com/hopr-framework/pyhope
|
|
33
|
-
Description-Content-Type: text/markdown
|
|
34
|
-
|
|
35
1
|
PyHOPE (Python High-Order Preprocessing Environment) is an open-source Python framework for the generation of three-dimensional unstructured high-order meshes. These meshes are needed by high-order numerical methods like Discontinuous Galerkin, Spectral Element Methods, or pFEM, in order to retain their accuracy if the computational domain includes curved boundaries.
|
|
36
2
|
|
|
37
3
|
PyHOPE has been developed by the Numerics Research Group (NRG) lead by Prof. Andrea Beck at the Institute of Aerodynamics and Gas Dynamics at the University of Stuttgart, Germany.
|
|
38
4
|
|
|
39
5
|
PyHOPE is heavily inspired by [HOPR (High Order Preprocessor)](https://github.com/hopr-framework/hopr) and shares the same input/output format. Furthermore, PyHOPE utilizes [Gmsh](https://gmsh.info) for the initial mesh generation and conversion before converting it to its internal representation. The internal representation is loosely based on [meshio](https://github.com/nschloe/meshio) but augmented with additional information required for high-order meshes.
|
|
40
6
|
|
|
41
|
-
This is a scientific project. If you use PyHOPE for publications or presentations in science, please support the project by citing our publications given at [numericsresearchgroup.org](https://numericsresearchgroup.org/publications.html).
|
|
42
|
-
|
|
43
7
|
# Installation
|
|
44
8
|
PyHOPE is built using standard Python packages. You can install PyHOPE by following these steps.
|
|
45
9
|
|
|
@@ -60,6 +24,12 @@ PyHOPE is built using standard Python packages. You can install PyHOPE by follow
|
|
|
60
24
|
python -m pip install pyhope
|
|
61
25
|
```
|
|
62
26
|
|
|
27
|
+
> [!NOTE]
|
|
28
|
+
> PyHOPE can optionally use [Numba](https://numba.pydata.org) to accelerate some compute-heavy routines. If Numba is not available in your environment, PyHOPE will fall back to pure NumPy implementations.
|
|
29
|
+
> ```bash
|
|
30
|
+
> python -m pip install pyhope[numba]
|
|
31
|
+
> ```
|
|
32
|
+
|
|
63
33
|
# Testing
|
|
64
34
|
PyHOPE features internal health checks to verify that everything works as expected. The checks can be invoked directly from the terminal.
|
|
65
35
|
```bash
|
|
@@ -220,3 +190,28 @@ with Mesh('1-01-cartbox_mesh.h5') as m:
|
|
|
220
190
|
lobatto_nodes = Basis.legendre_gauss_lobatto_nodes(order=m.nGeo)
|
|
221
191
|
```
|
|
222
192
|
|
|
193
|
+
# Cite
|
|
194
|
+
This is a scientific project. If you use PyHOPE for publications or presentations in science, please support the project by citing the following article.
|
|
195
|
+
```bibtex
|
|
196
|
+
@article{kopper2025pyhope:joss,
|
|
197
|
+
title = {{PyHOPE}: A Python Toolkit for Three-Dimensional Unstructured High-Order Meshes},
|
|
198
|
+
author = {Kopper, Patrick and Blind, Marcel P. and Schwarz, Anna and Kurz, Marius and Rodach, Felix and Copplestone, Stephen M. and Beck, Andrea D.},
|
|
199
|
+
journal = {Journal of Open Source Software},
|
|
200
|
+
year = {2025},
|
|
201
|
+
volume = {10},
|
|
202
|
+
number = {115},
|
|
203
|
+
pages = {8769},
|
|
204
|
+
publisher = {The Open Journal},
|
|
205
|
+
doi = {10.21105/joss.08769}
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
In addition, you can also directly refer to this repository as
|
|
209
|
+
```bibtex
|
|
210
|
+
@misc{kopper2025pyhope:repo,
|
|
211
|
+
title = {{PyHOPE}: A Python Toolkit for Three-Dimensional Unstructured High-Order Meshes},
|
|
212
|
+
author = {Kopper, Patrick and Blind, Marcel P. and Schwarz, Anna and Kurz, Marius and Rodach, Felix and Copplestone, Stephen M. and Beck, Andrea D.},
|
|
213
|
+
year = {2025},
|
|
214
|
+
howpublished = {\url{https://github.com/hopr-framework/PyHOPE}},
|
|
215
|
+
doi = {10.5281/zenodo.17414843}
|
|
216
|
+
}
|
|
217
|
+
```
|