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.
Files changed (80) hide show
  1. pyhope-0.8.0/README.md → pyhope-0.9.0/PKG-INFO +70 -2
  2. pyhope-0.8.0/PKG-INFO → pyhope-0.9.0/README.md +31 -36
  3. pyhope-0.9.0/pyhope/basis/basis_basis.py +707 -0
  4. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/basis/basis_connect.py +55 -17
  5. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/basis/basis_jacobian.py +87 -42
  6. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/basis/basis_watertight.py +120 -39
  7. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/check/check_health.py +3 -1
  8. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/check/check_install.py +3 -3
  9. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/common/common.py +10 -6
  10. pyhope-0.9.0/pyhope/common/common_numba.py +90 -0
  11. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/common/common_parallel.py +26 -20
  12. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/common/common_progress.py +35 -8
  13. pyhope-0.9.0/pyhope/common/common_unique.py +83 -0
  14. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/common/common_vars.py +2 -2
  15. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/io/formats/meshio.py +97 -71
  16. pyhope-0.9.0/pyhope/io/formats/vtk.py +152 -0
  17. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/io/io.py +34 -25
  18. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/io/io_debug.py +5 -5
  19. pyhope-0.9.0/pyhope/io/io_gmsh.py +70 -0
  20. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/io/io_vars.py +3 -1
  21. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/connect/connect.py +13 -12
  22. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/connect/connect_mortar.py +9 -3
  23. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/fem/fem.py +3 -3
  24. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh.py +2 -1
  25. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh_builtin.py +28 -10
  26. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh_common.py +64 -8
  27. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh_duplicates.py +43 -21
  28. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh_orient.py +57 -34
  29. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh_sides.py +12 -9
  30. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh_sort.py +20 -7
  31. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh_vars.py +3 -1
  32. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/reader/reader_gmsh.py +29 -10
  33. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/reader/reader_hopr.py +1 -1
  34. pyhope-0.9.0/pyhope/mesh/sort/sort_hilbert.py +170 -0
  35. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/topology/mesh_topology.py +27 -6
  36. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/transform/mesh_transform.py +25 -8
  37. pyhope-0.9.0/pyhope/mesh/transform/templates/sphere_box.py +135 -0
  38. pyhope-0.9.0/pyhope/meshio/meshio_convert.py +306 -0
  39. pyhope-0.9.0/pyhope/meshio/meshio_nodes.py +134 -0
  40. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/meshio/meshio_ordering.py +130 -8
  41. {pyhope-0.8.0 → pyhope-0.9.0}/pyproject.toml +18 -7
  42. pyhope-0.8.0/pyhope/basis/basis_basis.py +0 -261
  43. pyhope-0.8.0/pyhope/io/formats/vtk.py +0 -267
  44. pyhope-0.8.0/pyhope/meshio/meshio_convert.py +0 -104
  45. {pyhope-0.8.0 → pyhope-0.9.0}/AUTHORS.md +0 -0
  46. {pyhope-0.8.0 → pyhope-0.9.0}/LICENSE.md +0 -0
  47. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/__init__.py +0 -0
  48. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/__main__.py +0 -0
  49. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/basis/__init__.py +0 -0
  50. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/check/__init__.py +0 -0
  51. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/check/check.py +0 -0
  52. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/common/__init__.py +0 -0
  53. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/common/common_tools.py +0 -0
  54. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/config/__init__.py +0 -0
  55. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/config/config.py +0 -0
  56. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/gmsh/gmsh_install.py +0 -0
  57. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/gmsh/gmsh_override.py +0 -0
  58. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/io/__init__.py +0 -0
  59. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/io/formats/cgns.py +0 -0
  60. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/io/formats/gmsh.py +0 -0
  61. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/io/io_xdmf.py +0 -0
  62. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/__init__.py +0 -0
  63. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/connect/connect_rbtree.py +0 -0
  64. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/elements/elements_ordering.py +0 -0
  65. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/elements/elements_shapefunctions.py +0 -0
  66. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/mesh_external.py +0 -0
  67. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/reader/reader_gambit.py +0 -0
  68. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/topology/mesh_serendipity.py +0 -0
  69. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/topology/mesh_splittohex.py +0 -0
  70. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/transform/templates/convtest.py +0 -0
  71. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/transform/templates/cylinder.py +0 -0
  72. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/transform/templates/default.py +0 -0
  73. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/transform/templates/phill.py +0 -0
  74. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/mesh/transform/templates/sphere.py +0 -0
  75. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/output/__init__.py +0 -0
  76. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/output/output.py +0 -0
  77. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/readintools/__init__.py +0 -0
  78. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/readintools/commandline.py +0 -0
  79. {pyhope-0.8.0 → pyhope-0.9.0}/pyhope/readintools/readintools.py +0 -0
  80. {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
+ ```