tulpa_mesh(max_edge = ...) collapsing to zero triangles for some
(max_edge, cutoff) settings and point counts. Vertex deduplication could
merge extended-hull boundary vertices that fell within max_edge * 0.3 of
each other, deleting a constraint edge and leaving the boundary loop open;
the constrained triangulation then erased every triangle. Boundary and hole
vertices are now protected from deduplication so the constraint loop stays
closed.tulpa_mesh() now errors loudly when the triangulation yields zero
triangles (for example a collinear point set) instead of returning an empty
mesh that silently produces all-zero FEM matrices.Initial CRAN release.
tulpa_mesh(): constrained Delaunay triangulation with formula interface,
sf boundary support (POLYGON, MULTIPOLYGON, holes), hexagonal lattice
refinement, Ruppert refinement (min_angle, max_area), and vertex
deduplication.tulpa_mesh_sphere(): icosahedral geodesic meshes with 3D surface FEM.tulpa_mesh_1d(): temporal meshes with tridiagonal FEM matrices.tulpa_mesh_graph(): metric graph meshes for network SPDE models.fem_matrices(): P1 linear FEM producing mass (C), stiffness (G), and
projection (A) sparse matrices. Supports lumped mass, barrier models,
and parallel assembly via RcppParallel.fem_matrices_p2(): P2 quadratic FEM with 6-node triangular elements.fem_matrices_nonstationary(): spatially varying kappa/tau weighting.mesh_quality(), mesh_summary(), plot.tulpa_mesh(): diagnostics.subdivide_mesh(), subset_mesh(), mesh_components(): mesh manipulation.refine_mesh(): adaptive refinement from error indicators.as_tulpa_mesh(): convert fmesher/INLA meshes.barrier_triangles(): identify barrier regions from polygons.mesh_crs(), set_crs(): CRS support.