PyHOPE


NamePyHOPE JSON
Version 0.8.0 PyPI version JSON
download
home_pageNone
SummaryPython High-Order Preprocessing Environment
upload_time2025-10-22 11:21:46
maintainerNone
docs_urlNone
authorNumerics Research Group (NRG)
requires_python>=3.10
licenseGPL-3.0-only
keywords pyhope mesh generator
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            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.

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.

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.

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).

# Installation
PyHOPE is built using standard Python packages. You can install PyHOPE by following these steps. 

1.  **Optional: Create and activate a virtual environment**  
    Creating a virtual environment is a recommended practice to manage project dependencies. It isolates the packages required for PyHOPE and prevents potential conflicts between different package versions. To create and activate a virtual environment named `venv`, use the following commands.
    ```bash
    python -m venv venv
    source venv/bin/activate
    ```
    If you choose not to use a virtual environment, skip this step and proceed directly to the installation of PyHOPE.

> [!IMPORTANT]  
> For new shell sessions, the virtual environment must be re-sourced using `source venv/bin/activate` before using `pyhope` commands.

2.  **Install PyHOPE**  
    PyHOPE is installed using `pip`, the Python package installer. This command fetches the PyHOPE package and its dependencies from PyPI (Python Package Index) and installs them.
    ```bash
    python -m pip install pyhope
    ```

# Testing
PyHOPE features internal health checks to verify that everything works as expected. The checks can be invoked directly from the terminal.
```bash
pyhope --verify [tutorials]          # Run all health checks
pyhope --verify-health               # Run Python health checks
pyhope --verify-install [tutorials]  # Run PyHOPE mesh generation checks
```

> [!NOTE]  
>  By default, PyHOPE looks for the `tutorials` directory relative to the current working directory or the git root. If neither exists, PyHOPE downloads the tests from GitHub while using available authentication methods.

> [!IMPORTANT]  
> Be aware that the PyHOPE repository uses [Git Large File Storage (LFS)](https://git-lfs.com) for some of its larger mesh files.

# Getting Help
PyHOPE help output is formatted to serve as self-hosting [INI format](https://hopr-framework.github.io/PyHOPE/user-guide/parameter-file). A list of all options and the default values can be accessed by running the following command.
```bash
pyhope --help
```

# Documentation
Refer to the [PyHOPE documentation](https://hopr-framework.github.io/PyHOPE) for the getting started guide, examples, and usage instructions. PyHOPE is heavily inspired by [HOPR (High Order Preprocessor)](https://github.com/hopr-framework/hopr) and shares the same input/output format. For technical details and the reference mesh format specification, see the [HOPR documentation](https://hopr.readthedocs.io).

# Usage
PyHOPE can either be invoked directly from the command line or used as a Python library.

## Command Line Usage
PyHOPE can be invoked from the command line. After installation, its functionalities can be accessed directly from the terminal by passing a valid configuration file.
```bash
pyhope [parameter.ini]
```
The following output is obtained when running the example configuration file `tutorials/1-01-cartbox/parameter.ini`.
```
$ pyhope tutorials/1-01-cartbox/parameter.ini
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃ P y H O P E — Python High-Order Preprocessing Environment
┃ PyHOPE version x.x.x
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
│ INIT PROGRAM...
│                        nThreads │ nProcs-2                        │ DEFAULT │
├─────────────────────────────────────────────
│ INIT OUTPUT...
│                     ProjectName │ 1-01-cartbox                    │ *CUSTOM │
│                    OutputFormat │ 0 [HDF5]                        │ *CUSTOM │
│                       DebugMesh │ T                               │ *CUSTOM │
│                       DebugVisu │ F                               │ *CUSTOM │
├─────────────────────────────────────────────
│ INIT MESH...
│                            Mode │ 1 [Internal]                    │ *CUSTOM │
│                            NGeo │ 9                               │ *CUSTOM │
├─────────────────────────────────────────────
│ GENERATE MESH...
├────
│                          nZones │ 1                               │ *CUSTOM │
├── Generating zone 1
│                          Corner │ (/0.,0.,0.,,1.,0.,0.,,1.,1.,... │ *CUSTOM │
│                          nElems │ (/8,8,8/)                       │ *CUSTOM │
│                        ElemType │ 108 [hexahedron]                │ *CUSTOM │
│                     StretchType │ (/0,0,0/)                       │ DEFAULT │
│                         BCIndex │ (/1,2,3,4,5,6/)                 │ *CUSTOM │
├────
├── Setting boundary conditions
├────
│                    BoundaryName │ BC_zminus                       │ *CUSTOM │
│                    BoundaryType │ (/4,0,0,0/)                     │ *CUSTOM │
│                    BoundaryName │ BC_yminus                       │ *CUSTOM │
│                    BoundaryType │ (/2,0,0,0/)                     │ *CUSTOM │
│                    BoundaryName │ BC_xplus                        │ *CUSTOM │
│                    BoundaryType │ (/2,0,0,0/)                     │ *CUSTOM │
│                    BoundaryName │ BC_yplus                        │ *CUSTOM │
│                    BoundaryType │ (/2,0,0,0/)                     │ *CUSTOM │
│                    BoundaryName │ BC_xminus                       │ *CUSTOM │
│                    BoundaryType │ (/2,0,0,0/)                     │ *CUSTOM │
│                    BoundaryName │ BC_zplus                        │ *CUSTOM │
│                    BoundaryType │ (/9,0,0,0/)                     │ *CUSTOM │
├────
│                              vv │ (/1.,0.,0./)                    │ *CUSTOM │
│                              vv │ (/0.,1.,0./)                    │ *CUSTOM │
│                              vv │ (/0.,0.,1./)                    │ *CUSTOM │
├────
├── Generated mesh with 512 cells
├─────────────────────────────────────────────
├── BUILD DATA STRUCTURE...
├────
├── Removing duplicate points
├── Ensuring normals point outward
├────
│             CheckSurfaceNormals │ True                            │ DEFAULT │
│             Processing Elements |█████████████████████████████████| 512/512 [100%] in 0.0s (24000.00/s)
├────
├── Generating sides
├─────────────────────────────────────────────
│ SORT MESH...
├────
│                     MeshSorting │ 1 [SFC]                         │ DEFAULT │
├────
├── Sorting elements along space-filling curve
├─────────────────────────────────────────────
│ CONNECT MESH...
├────
│               doPeriodicCorrect │ False                           │ DEFAULT │
│                       doMortars │ True                            │ DEFAULT │
├────
│  Number of sides                :         3072
│  Number of inner sides          :         2688
│  Number of mortar sides (big)   :            0
│  Number of mortar sides (small) :            0
│  Number of boundary sides       :          384
│  Number of periodic sides       :            0
├─────────────────────────────────────────────
│ CHECK CONNECTIVITY...
├────
│               CheckConnectivity │ True                            │ DEFAULT │
│             Processing Elements |█████████████████████████████████| 512/512 [100%] in 0.0s (24000.00/s)
├─────────────────────────────────────────────
│ CHECK WATERTIGHTNESS...
├────
│             CheckWatertightness │ True                            │ DEFAULT │
│             Processing Elements |█████████████████████████████████| 512/512 [100%] in 0.0s (24000.00/s)
├─────────────────────────────────────────────
│ CHECK JACOBIANS...
├────
│              CheckElemJacobians │ True                            │ DEFAULT │
│             Processing Elements |█████████████████████████████████| 512/512 [100%] in 0.0s (24000.00/s)
├────
│ Scaled Jacobians
├─────────────────
│<0.0      │  0.00
│ 0.0-0.1  │  0.00
│ 0.1-0.2  │  0.00
│ 0.2-0.3  │  0.00
│ 0.3-0.4  │  0.00
│ 0.4-0.5  │  0.00
│ 0.5-0.6  │  0.00
│ 0.6-0.7  │  0.00
│ 0.7-0.8  │  0.00
│ 0.8-0.9  │  0.00
│>0.9-1.0  │ ▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇▇ 512.00
├─────────────────
├─────────────────────────────────────────────
│ OUTPUT MESH...
├────
│         Curved Hexahedra  :          512
├────
├── Writing HDF5 mesh to "1-01-cartbox_mesh.h5"
├── Writing XDMF mesh to "1-01-cartbox_DebugMesh.xdmf"
┢━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
┃ PyHOPE completed in [0.25 sec]
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```

## Python Library Usage
PyHOPE can be included in other Python libraries. PyHOPE exposes its functionally via runtime contexts defined by [Context Managers](https://docs.python.org/3/library/stdtypes.html#typecontextmanager). The following Python code loads a HOPR HDF5 mesh and derived quantities. For a complete list of currently implemented functions, see the [source code](https://github.com/hopr-framework/PyHOPE/blob/main/pyhope/__init__.py).
```python
from pyhope import Basis, Mesh
with Mesh('1-01-cartbox_mesh.h5') as m:
    elems = m.elems
    lobatto_nodes = Basis.legendre_gauss_lobatto_nodes(order=m.nGeo)
```


            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "PyHOPE",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": null,
    "keywords": "PyHOPE, mesh generator",
    "author": "Numerics Research Group (NRG)",
    "author_email": "numerics@iag.uni-stuttgart.de",
    "download_url": "https://files.pythonhosted.org/packages/af/ac/43c61b24469c146b83e2d109fdb59827800577bbd9e4fdce105ca0f9c9da/pyhope-0.8.0.tar.gz",
    "platform": null,
    "description": "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.\n\nPyHOPE 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.\n\nPyHOPE 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.\n\nThis 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).\n\n# Installation\nPyHOPE is built using standard Python packages. You can install PyHOPE by following these steps. \n\n1.  **Optional: Create and activate a virtual environment**  \n    Creating a virtual environment is a recommended practice to manage project dependencies. It isolates the packages required for PyHOPE and prevents potential conflicts between different package versions. To create and activate a virtual environment named `venv`, use the following commands.\n    ```bash\n    python -m venv venv\n    source venv/bin/activate\n    ```\n    If you choose not to use a virtual environment, skip this step and proceed directly to the installation of PyHOPE.\n\n> [!IMPORTANT]  \n> For new shell sessions, the virtual environment must be re-sourced using `source venv/bin/activate` before using `pyhope` commands.\n\n2.  **Install PyHOPE**  \n    PyHOPE is installed using `pip`, the Python package installer. This command fetches the PyHOPE package and its dependencies from PyPI (Python Package Index) and installs them.\n    ```bash\n    python -m pip install pyhope\n    ```\n\n# Testing\nPyHOPE features internal health checks to verify that everything works as expected. The checks can be invoked directly from the terminal.\n```bash\npyhope --verify [tutorials]          # Run all health checks\npyhope --verify-health               # Run Python health checks\npyhope --verify-install [tutorials]  # Run PyHOPE mesh generation checks\n```\n\n> [!NOTE]  \n>  By default, PyHOPE looks for the `tutorials` directory relative to the current working directory or the git root. If neither exists, PyHOPE downloads the tests from GitHub while using available authentication methods.\n\n> [!IMPORTANT]  \n> Be aware that the PyHOPE repository uses [Git Large File Storage (LFS)](https://git-lfs.com) for some of its larger mesh files.\n\n# Getting Help\nPyHOPE help output is formatted to serve as self-hosting [INI format](https://hopr-framework.github.io/PyHOPE/user-guide/parameter-file). A list of all options and the default values can be accessed by running the following command.\n```bash\npyhope --help\n```\n\n# Documentation\nRefer to the [PyHOPE documentation](https://hopr-framework.github.io/PyHOPE) for the getting started guide, examples, and usage instructions. PyHOPE is heavily inspired by [HOPR (High Order Preprocessor)](https://github.com/hopr-framework/hopr) and shares the same input/output format. For technical details and the reference mesh format specification, see the [HOPR documentation](https://hopr.readthedocs.io).\n\n# Usage\nPyHOPE can either be invoked directly from the command line or used as a Python library.\n\n## Command Line Usage\nPyHOPE can be invoked from the command line. After installation, its functionalities can be accessed directly from the terminal by passing a valid configuration file.\n```bash\npyhope [parameter.ini]\n```\nThe following output is obtained when running the example configuration file `tutorials/1-01-cartbox/parameter.ini`.\n```\n$ pyhope tutorials/1-01-cartbox/parameter.ini\n\u250f\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\u2503 P y H O P E \u2014 Python High-Order Preprocessing Environment\n\u2503 PyHOPE version x.x.x\n\u2521\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\u2502 INIT PROGRAM...\n\u2502                        nThreads \u2502 nProcs-2                        \u2502 DEFAULT \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u2502 INIT OUTPUT...\n\u2502                     ProjectName \u2502 1-01-cartbox                    \u2502 *CUSTOM \u2502\n\u2502                    OutputFormat \u2502 0 [HDF5]                        \u2502 *CUSTOM \u2502\n\u2502                       DebugMesh \u2502 T                               \u2502 *CUSTOM \u2502\n\u2502                       DebugVisu \u2502 F                               \u2502 *CUSTOM \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u2502 INIT MESH...\n\u2502                            Mode \u2502 1 [Internal]                    \u2502 *CUSTOM \u2502\n\u2502                            NGeo \u2502 9                               \u2502 *CUSTOM \u2502\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u2502 GENERATE MESH...\n\u251c\u2500\u2500\u2500\u2500\n\u2502                          nZones \u2502 1                               \u2502 *CUSTOM \u2502\n\u251c\u2500\u2500 Generating zone 1\n\u2502                          Corner \u2502 (/0.,0.,0.,,1.,0.,0.,,1.,1.,... \u2502 *CUSTOM \u2502\n\u2502                          nElems \u2502 (/8,8,8/)                       \u2502 *CUSTOM \u2502\n\u2502                        ElemType \u2502 108 [hexahedron]                \u2502 *CUSTOM \u2502\n\u2502                     StretchType \u2502 (/0,0,0/)                       \u2502 DEFAULT \u2502\n\u2502                         BCIndex \u2502 (/1,2,3,4,5,6/)                 \u2502 *CUSTOM \u2502\n\u251c\u2500\u2500\u2500\u2500\n\u251c\u2500\u2500 Setting boundary conditions\n\u251c\u2500\u2500\u2500\u2500\n\u2502                    BoundaryName \u2502 BC_zminus                       \u2502 *CUSTOM \u2502\n\u2502                    BoundaryType \u2502 (/4,0,0,0/)                     \u2502 *CUSTOM \u2502\n\u2502                    BoundaryName \u2502 BC_yminus                       \u2502 *CUSTOM \u2502\n\u2502                    BoundaryType \u2502 (/2,0,0,0/)                     \u2502 *CUSTOM \u2502\n\u2502                    BoundaryName \u2502 BC_xplus                        \u2502 *CUSTOM \u2502\n\u2502                    BoundaryType \u2502 (/2,0,0,0/)                     \u2502 *CUSTOM \u2502\n\u2502                    BoundaryName \u2502 BC_yplus                        \u2502 *CUSTOM \u2502\n\u2502                    BoundaryType \u2502 (/2,0,0,0/)                     \u2502 *CUSTOM \u2502\n\u2502                    BoundaryName \u2502 BC_xminus                       \u2502 *CUSTOM \u2502\n\u2502                    BoundaryType \u2502 (/2,0,0,0/)                     \u2502 *CUSTOM \u2502\n\u2502                    BoundaryName \u2502 BC_zplus                        \u2502 *CUSTOM \u2502\n\u2502                    BoundaryType \u2502 (/9,0,0,0/)                     \u2502 *CUSTOM \u2502\n\u251c\u2500\u2500\u2500\u2500\n\u2502                              vv \u2502 (/1.,0.,0./)                    \u2502 *CUSTOM \u2502\n\u2502                              vv \u2502 (/0.,1.,0./)                    \u2502 *CUSTOM \u2502\n\u2502                              vv \u2502 (/0.,0.,1./)                    \u2502 *CUSTOM \u2502\n\u251c\u2500\u2500\u2500\u2500\n\u251c\u2500\u2500 Generated mesh with 512 cells\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u251c\u2500\u2500 BUILD DATA STRUCTURE...\n\u251c\u2500\u2500\u2500\u2500\n\u251c\u2500\u2500 Removing duplicate points\n\u251c\u2500\u2500 Ensuring normals point outward\n\u251c\u2500\u2500\u2500\u2500\n\u2502             CheckSurfaceNormals \u2502 True                            \u2502 DEFAULT \u2502\n\u2502             Processing Elements |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 512/512 [100%] in 0.0s (24000.00/s)\n\u251c\u2500\u2500\u2500\u2500\n\u251c\u2500\u2500 Generating sides\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u2502 SORT MESH...\n\u251c\u2500\u2500\u2500\u2500\n\u2502                     MeshSorting \u2502 1 [SFC]                         \u2502 DEFAULT \u2502\n\u251c\u2500\u2500\u2500\u2500\n\u251c\u2500\u2500 Sorting elements along space-filling curve\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u2502 CONNECT MESH...\n\u251c\u2500\u2500\u2500\u2500\n\u2502               doPeriodicCorrect \u2502 False                           \u2502 DEFAULT \u2502\n\u2502                       doMortars \u2502 True                            \u2502 DEFAULT \u2502\n\u251c\u2500\u2500\u2500\u2500\n\u2502  Number of sides                :         3072\n\u2502  Number of inner sides          :         2688\n\u2502  Number of mortar sides (big)   :            0\n\u2502  Number of mortar sides (small) :            0\n\u2502  Number of boundary sides       :          384\n\u2502  Number of periodic sides       :            0\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u2502 CHECK CONNECTIVITY...\n\u251c\u2500\u2500\u2500\u2500\n\u2502               CheckConnectivity \u2502 True                            \u2502 DEFAULT \u2502\n\u2502             Processing Elements |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 512/512 [100%] in 0.0s (24000.00/s)\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u2502 CHECK WATERTIGHTNESS...\n\u251c\u2500\u2500\u2500\u2500\n\u2502             CheckWatertightness \u2502 True                            \u2502 DEFAULT \u2502\n\u2502             Processing Elements |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 512/512 [100%] in 0.0s (24000.00/s)\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u2502 CHECK JACOBIANS...\n\u251c\u2500\u2500\u2500\u2500\n\u2502              CheckElemJacobians \u2502 True                            \u2502 DEFAULT \u2502\n\u2502             Processing Elements |\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588| 512/512 [100%] in 0.0s (24000.00/s)\n\u251c\u2500\u2500\u2500\u2500\n\u2502 Scaled Jacobians\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u2502<0.0      \u2502  0.00\n\u2502 0.0-0.1  \u2502  0.00\n\u2502 0.1-0.2  \u2502  0.00\n\u2502 0.2-0.3  \u2502  0.00\n\u2502 0.3-0.4  \u2502  0.00\n\u2502 0.4-0.5  \u2502  0.00\n\u2502 0.5-0.6  \u2502  0.00\n\u2502 0.6-0.7  \u2502  0.00\n\u2502 0.7-0.8  \u2502  0.00\n\u2502 0.8-0.9  \u2502  0.00\n\u2502>0.9-1.0  \u2502 \u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587\u2587 512.00\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u251c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\u2502 OUTPUT MESH...\n\u251c\u2500\u2500\u2500\u2500\n\u2502         Curved Hexahedra  :          512\n\u251c\u2500\u2500\u2500\u2500\n\u251c\u2500\u2500 Writing HDF5 mesh to \"1-01-cartbox_mesh.h5\"\n\u251c\u2500\u2500 Writing XDMF mesh to \"1-01-cartbox_DebugMesh.xdmf\"\n\u2522\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n\u2503 PyHOPE completed in [0.25 sec]\n\u2517\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\n```\n\n## Python Library Usage\nPyHOPE can be included in other Python libraries. PyHOPE exposes its functionally via runtime contexts defined by [Context Managers](https://docs.python.org/3/library/stdtypes.html#typecontextmanager). The following Python code loads a HOPR HDF5 mesh and derived quantities. For a complete list of currently implemented functions, see the [source code](https://github.com/hopr-framework/PyHOPE/blob/main/pyhope/__init__.py).\n```python\nfrom pyhope import Basis, Mesh\nwith Mesh('1-01-cartbox_mesh.h5') as m:\n    elems = m.elems\n    lobatto_nodes = Basis.legendre_gauss_lobatto_nodes(order=m.nGeo)\n```\n\n",
    "bugtrack_url": null,
    "license": "GPL-3.0-only",
    "summary": "Python High-Order Preprocessing Environment",
    "version": "0.8.0",
    "project_urls": {
        "Documentation": "https://hopr-framework.github.io/PyHOPE",
        "Homepage": "https://numericsresearchgroup.org",
        "Repository": "https://github.com/hopr-framework/pyhope"
    },
    "split_keywords": [
        "pyhope",
        " mesh generator"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "b8000b65351afebbf2de992e7b792b084127c82271c71b312e0062358bc0bd8e",
                "md5": "5be67a821c982874217a5f1e2a23610d",
                "sha256": "8b21822ce6e9a0e50dac0cc99216c30183898590075a1651435553e68f9ac5aa"
            },
            "downloads": -1,
            "filename": "pyhope-0.8.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "5be67a821c982874217a5f1e2a23610d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 208925,
            "upload_time": "2025-10-22T11:21:45",
            "upload_time_iso_8601": "2025-10-22T11:21:45.426551Z",
            "url": "https://files.pythonhosted.org/packages/b8/00/0b65351afebbf2de992e7b792b084127c82271c71b312e0062358bc0bd8e/pyhope-0.8.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "afac43c61b24469c146b83e2d109fdb59827800577bbd9e4fdce105ca0f9c9da",
                "md5": "b656c91040c561755a72b77590162934",
                "sha256": "6aa6eacf3d814a7550f5dea8cf57fd86ef8d482711575d51d2ad1a7fad8134e9"
            },
            "downloads": -1,
            "filename": "pyhope-0.8.0.tar.gz",
            "has_sig": false,
            "md5_digest": "b656c91040c561755a72b77590162934",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.10",
            "size": 151604,
            "upload_time": "2025-10-22T11:21:46",
            "upload_time_iso_8601": "2025-10-22T11:21:46.879661Z",
            "url": "https://files.pythonhosted.org/packages/af/ac/43c61b24469c146b83e2d109fdb59827800577bbd9e4fdce105ca0f9c9da/pyhope-0.8.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-10-22 11:21:46",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "hopr-framework",
    "github_project": "pyhope",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "pyhope"
}
        
Elapsed time: 9.30916s