Source code for toughio.meshmaker._triangulate

import numpy as np

from .._mesh._mesh import CellBlock, Mesh

__all__ = [
    "triangulate",
]


[docs]def triangulate(points, material="dfalt"): """ Generate a triangulated mesh from cloud points. Parameters ---------- points : array_like Cooordinates of points. material : str, optional, default 'dfalt' Default material name. Returns ------- toughio.Mesh Output triangulated mesh. """ try: from scipy.spatial import Delaunay except ImportError: raise ImportError("Triangulation requires scipy >= 0.9 to be installed.") if not isinstance(points, (list, tuple, np.ndarray)): raise TypeError() if np.ndim(points) != 2: raise ValueError() if np.shape(points)[1] not in {2, 3}: raise ValueError() if not isinstance(material, str): raise TypeError() points = np.asarray(points) connectivity = Delaunay(points).simplices cell_type = "triangle" if points.shape[1] == 2 else "tetra" cells = [CellBlock(cell_type, connectivity)] mesh = Mesh(points, cells) mesh.add_cell_data("material", np.ones(mesh.n_cells, dtype=np.int64)) mesh.add_material(material, 1) return mesh