tetgenpy#
tetgenpy is a python wrapper for Hang Si’s TetGen - A Quality Tetrahedral Mesh Generator and a 3D Delaunay Triangulator.
It helps to prepare various types of inputs - points, piecewise linear complexes (PLCs), and tetmesh - for tetrahedron mesh generation based on simple python types, such as list
and numpy.ndarray
.
Install#
pip install tetgenpy
For current development version,
pip install git+https://github.com/tataratat/tetgenpy.git@main
Quick Start#
Following is an example for tetrahedralization of a unit cube defined as PLCs.
Alternatively, you could also use tetgenpy.PLC class to prepare TetgenIO
.
import tetgenpy
import numpy as np
# tetrahedralize unit cube
# define points
points=[
[0.0, 0.0, 0.0],
[1.0, 0.0, 0.0],
[0.0, 1.0, 0.0],
[1.0, 1.0, 0.0],
[0.0, 0.0, 1.0],
[1.0, 0.0, 1.0],
[0.0, 1.0, 1.0],
[1.0, 1.0, 1.0],
]
# define facets - it can be list of polygons.
# here, they are hexa faces
facets = [
[1, 0, 2, 3],
[0, 1, 5, 4],
[2, 0, 4, 6],
[1, 3, 7, 5],
[3, 2, 6, 7],
[4, 5, 7, 6],
]
# prepare TetgenIO - input for tetgen
tetgen_in = tetgenpy.TetgenIO()
# set points, facets, and facet_markers.
# facet_markers can be useful for setting boundary conditions
tetgen_in.setup_plc(
points=points,
facets=facets,
facet_markers=[[i] for i in range(1, len(facets) + 1)],
)
# tetgen's tetraheralize function with switches
tetgen_out = tetgenpy.tetrahedralize("qa.05", tetgen_in)
# unpack output
print(tetgen_out.points())
print(tetgen_out.tetrahedra())
print(tetgen_out.trifaces())
print(tetgen_out.trifacemarkers())
This package also provides access to tetgen’s binary executable. Try:
$ tetgen -h
Working with vedo
#
vedo natively supports tetgenpy.TetgenIO
types starting with version >=2023.5.1
.
It is *A python module for scientific analysis and visualization of эd objects* that can be used to enhance further workflows.
You can find an example (same as above) here or simply try:
pip install vedo
vedo -r tetgen1
Contributing#
Write an issue or create a pull request! A simple guideline can be found at CONTRIBUTING.md
Table of Contents#
- Github
- Contiributing
- API references
- Quick overview of core classes/function
- Python API
- tetgenpy
- tetgenpy.tetgenpy_core
- tetgenpy.tetgenpy_core.main
- tetgenpy.tetgenpy_core.tetrahedralize
- tetgenpy.tetgenpy_core.TetgenIO
TetgenIO
- tetgenpy.tetgenpy_core.TetgenIO.edge2tets
- tetgenpy.tetgenpy_core.TetgenIO.edgemarkers
- tetgenpy.tetgenpy_core.TetgenIO.edges
- tetgenpy.tetgenpy_core.TetgenIO.face2edges
- tetgenpy.tetgenpy_core.TetgenIO.face2tets
- tetgenpy.tetgenpy_core.TetgenIO.load_edge
- tetgenpy.tetgenpy_core.TetgenIO.load_elem
- tetgenpy.tetgenpy_core.TetgenIO.load_face
- tetgenpy.tetgenpy_core.TetgenIO.load_medit
- tetgenpy.tetgenpy_core.TetgenIO.load_mtr
- tetgenpy.tetgenpy_core.TetgenIO.load_node
- tetgenpy.tetgenpy_core.TetgenIO.load_off
- tetgenpy.tetgenpy_core.TetgenIO.load_ply
- tetgenpy.tetgenpy_core.TetgenIO.load_poly
- tetgenpy.tetgenpy_core.TetgenIO.load_stl
- tetgenpy.tetgenpy_core.TetgenIO.load_tet
- tetgenpy.tetgenpy_core.TetgenIO.load_var
- tetgenpy.tetgenpy_core.TetgenIO.load_vol
- tetgenpy.tetgenpy_core.TetgenIO.load_vtk
- tetgenpy.tetgenpy_core.TetgenIO.neighbors
- tetgenpy.tetgenpy_core.TetgenIO.points
- tetgenpy.tetgenpy_core.TetgenIO.save_edges
- tetgenpy.tetgenpy_core.TetgenIO.save_elements
- tetgenpy.tetgenpy_core.TetgenIO.save_faces
- tetgenpy.tetgenpy_core.TetgenIO.save_faces2Smesh
- tetgenpy.tetgenpy_core.TetgenIO.save_neighbors
- tetgenpy.tetgenpy_core.TetgenIO.save_nodes
- tetgenpy.tetgenpy_core.TetgenIO.save_poly
- tetgenpy.tetgenpy_core.TetgenIO.setup_plc
- tetgenpy.tetgenpy_core.TetgenIO.setup_points
- tetgenpy.tetgenpy_core.TetgenIO.setup_tetmesh
- tetgenpy.tetgenpy_core.TetgenIO.tet2edges
- tetgenpy.tetgenpy_core.TetgenIO.tet2faces
- tetgenpy.tetgenpy_core.TetgenIO.tetrahedra
- tetgenpy.tetgenpy_core.TetgenIO.tetrahedronattributes
- tetgenpy.tetgenpy_core.TetgenIO.trifacemarkers
- tetgenpy.tetgenpy_core.TetgenIO.trifaces
- tetgenpy.tetgenpy_core.TetgenIO.voronoi
- tetgenpy.gentet
- tetgenpy.plc
- tetgenpy.tetgenpy_core
- tetgenpy