Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/meshpro/meshplex
:spider_web: Compute interesting points, areas, and volumes in simplex meshes of any dimension.
https://github.com/meshpro/meshplex
mathematics mesh pypi python voronoi-diagram
Last synced: 2 months ago
JSON representation
:spider_web: Compute interesting points, areas, and volumes in simplex meshes of any dimension.
- Host: GitHub
- URL: https://github.com/meshpro/meshplex
- Owner: meshpro
- Created: 2017-01-30T19:58:31.000Z (almost 8 years ago)
- Default Branch: main
- Last Pushed: 2024-06-14T08:08:40.000Z (8 months ago)
- Last Synced: 2024-11-05T23:49:54.106Z (3 months ago)
- Topics: mathematics, mesh, pypi, python, voronoi-diagram
- Homepage:
- Size: 4.81 MB
- Stars: 104
- Watchers: 3
- Forks: 22
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
- awesome-scientific-computing - meshplex - Fast tools for simplex meshes. (Meshing / Mesh tools)
README
Fast tools for simplex meshes.
[![PyPi Version](https://img.shields.io/pypi/v/meshplex.svg?style=flat-square)](https://pypi.org/project/meshplex/)
[![PyPI pyversions](https://img.shields.io/pypi/pyversions/meshplex.svg?style=flat-square)](https://pypi.org/project/meshplex/)
[![GitHub stars](https://img.shields.io/github/stars/nschloe/meshplex.svg?style=flat-square&logo=github&label=Stars&logoColor=white)](https://github.com/nschloe/meshplex)
[![PyPi downloads](https://img.shields.io/pypi/dm/meshplex.svg?style=flat-square)](https://pypistats.org/packages/meshplex)[![Discord](https://img.shields.io/static/v1?logo=discord&label=chat&message=on%20discord&color=7289da&style=flat-square)](https://discord.gg/hnTJ5MRX2Y)
Compute all sorts of interesting points, areas, and volumes in simplex (triangle,
tetrahedral, n-simplex) meshes of any dimension, with a focus on efficiency. Useful in
many contexts, e.g., finite-element and finite-volume computations.### Installation
Install meshplex [from PyPI](https://pypi.org/project/meshplex/) with
```
pip install meshplex
```For full usage of meshplex, you require a license. Licenses for personal and
academic use can be purchased
[here](https://buy.stripe.com/5kA3eV8t8af83iE9AE). For more info, see
[here](https://github.com/meshpro).### Quickstart
meshplex can compute the following data:
```python
import meshplex# create a simple Mesh instance
points = [[0.0, 0.0], [1.0, 0.0], [0.0, 1.0]]
cells = [[0, 1, 2]]
mesh = meshplex.Mesh(points, cells)
# or read it from a file
# mesh = meshplex.read("pacman.vtk")# triangle volumes, heights
print(mesh.cell_volumes)
print(mesh.signed_cell_volumes)
print(mesh.cell_heights)# circumcenters, centroids, incenters
print(mesh.cell_circumcenters)
print(mesh.cell_centroids)
print(mesh.cell_incenters)# circumradius, inradius, cell quality
print(mesh.cell_circumradius)
print(mesh.cell_inradius)
print(mesh.q_radius_ratio) # d * inradius / circumradius (min 0, max 1)# control volumes, centroids
print(mesh.control_volumes)
print(mesh.control_volume_centroids)# covolume/edge length ratios
print(mesh.ce_ratios)# count Delaunay violations
print(mesh.num_delaunay_violations)# removes some cells
mesh.remove_cells([0])
```For triangular meshes (`MeshTri`), meshplex also has some mesh manipulation routines:
```python
mesh.show() # show the mesh
mesh.angles # compute angles
mesh.flip_until_delaunay() # flips edges until the mesh is Delaunay
```For a documentation of all classes and functions, see
[readthedocs](https://meshplex.readthedocs.io/).(For mesh creation, check out
[this list](https://github.com/nschloe/awesome-scientific-computing#meshing)).### Plotting
#### Triangles
```python
import meshplexmesh = meshplex.read("pacman.vtk")
mesh.show(
# show_coedges=True,
# control_volume_centroid_color=None,
# mesh_color="k",
# nondelaunay_edge_color=None,
# boundary_edge_color=None,
# comesh_color=(0.8, 0.8, 0.8),
show_axes=False,
)
```#### Tetrahedra
```python
import numpy as np
import meshplex# Generate tetrahedron
points = np.array(
[
[1.0, 0.0, -1.0 / np.sqrt(8)],
[-0.5, +np.sqrt(3.0) / 2.0, -1.0 / np.sqrt(8)],
[-0.5, -np.sqrt(3.0) / 2.0, -1.0 / np.sqrt(8)],
[0.0, 0.0, np.sqrt(2.0) - 1.0 / np.sqrt(8)],
]
) / np.sqrt(3.0)
cells = [[0, 1, 2, 3]]# Create mesh object
mesh = meshplex.MeshTetra(points, cells)# Plot cell 0 with control volume boundaries
mesh.show_cell(
0,
# barycenter_rgba=(1, 0, 0, 1.0),
# circumcenter_rgba=(0.1, 0.1, 0.1, 1.0),
# circumsphere_rgba=(0, 1, 0, 1.0),
# incenter_rgba=(1, 0, 1, 1.0),
# insphere_rgba=(1, 0, 1, 1.0),
# face_circumcenter_rgba=(0, 0, 1, 1.0),
control_volume_boundaries_rgba=(1.0, 0.0, 0.0, 1.0),
line_width=3.0,
)
```