A Python package for generating high-quality 2D/3D triangular meshes for finite element simulations, with parallel support and seismology applications.
SeismicMesh is a Python package for generating high-quality triangular and tetrahedral meshes in 2D and 3D, primarily for finite element simulations. It solves the problem of creating simulation-ready meshes from complex geometries or seismic velocity models, ensuring geometric quality and numerical stability. The tool is an implementation of the DistMesh algorithm, enhanced with parallel processing and integration with the Computational Geometry Algorithms Library (CGAL).
Researchers and engineers in computational seismology, geophysics, and finite element analysis who need to generate high-quality meshes from velocity models or complex geometric domains. It is also suitable for developers in scientific computing requiring robust, parallel mesh generation capabilities.
Developers choose SeismicMesh for its focus on mesh quality, parallel performance, and direct integration with seismic data formats. Unlike some generic mesh generators, it offers specialized sizing functions from velocity models, sliver removal for 3D meshes, and the ability to handle complex domain operations like unions and differences.
2D/3D serial and parallel triangular mesh generation tool for finite element methods.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Leverages MPI for parallel mesh generation, achieving up to 6-8x speedups on 11 cores for large models like the EAGE velocity mesh, as documented in the README.
Implements DistMesh with CGAL integration to ensure bounded minimum dihedral angles, which is crucial for numerical stability in finite element simulations.
Directly creates mesh-density functions from SEG-Y velocity models, automating domain-specific sizing for seismology applications without manual conversion.
Supports unions, intersections, and differences of signed distance functions, enabling intricate geometries like the EAGE salt model or custom shapes.
Requires non-Python dependencies like CGAL and MPI, which can complicate installation, especially on systems without package managers or for users unfamiliar with C++ libraries.
Prioritizes mesh quality over raw speed, making it slower than tools like Gmsh for analytical sizing functions, as noted in the performance comparison section.
Admits imperfect parallel performance due to simple domain decomposition, with speed-ups plateauing around 6-8x on 11 cores, which may not scale linearly for very large problems.