Source code for toughio.meshmaker._triangulate

import numpy

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 (n_points, 3) 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, numpy.ndarray)): raise TypeError() if numpy.ndim(points) != 2: raise ValueError() if numpy.shape(points)[1] not in {2, 3}: raise ValueError() if not isinstance(material, str): raise TypeError() points = numpy.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", numpy.ones(mesh.n_cells, dtype=int)) mesh.field_data[material] = numpy.array([1, 3]) return mesh