Skip to contents

fmesher (development version)

fmesher 0.7.0

CRAN release: 2026-02-19

Improved features

  • Speed up of fm_int() for 2D meshes by internally storing the barycentric coordinate information during the integration scheme construction (version 0.6.1.9002)
  • Add face_edge (for 2D meshes), cell_face, and cell_edge (for 3D meshes) information to fm_sizes() output (version 0.6.1.9004)
  • Eliminate explicit zero entries from fm_basis() matrices (version 0.6.1.9005)
  • Add spherical mesh support to fm_sizes() (version 0.6.1.9006)

Bug fixes

  • Fix fm_subdivide() to handle 2-column coordinate storage inputs. (version 0.6.1.9001)
  • Fix triangle area calculations in fm_sizes() that caused calculated areas to be 1/3 of the actual areas (version 0.6.1.9003)
  • Use expect_setequal() in package tests for checking that integration output objects contain the correct columns. Some tests were not using sort() on the names, causing them to fail when external object merges and constructors changed behaviour. Thanks to Edzer Pebesma for the initial PR, #30 (version 0.6.1.9007)
  • Regenerated the fmexample objects with the latest version of the package, to ensure they have up-to-date structure, and use the current boundary construction methods. (version 0.6.1.9008)

fmesher 0.6.1

CRAN release: 2025-12-12

New features

  • Add fm_subset() method for constructing a subset of a mesh based on a set of triangle (for fm_mesh_2d) or tetrahedron (for fm_mesh_3d) indices. (version 0.5.0.9003)
  • Add fm_zm()/fm_zm_input()/fm_zm_target() methods for adding/removing/unifying the Z/M dimensions of coordinate matrices and sf objects (version 0.5.0.9012)
  • New method new_fm_int() to construct tibbles with the same output format as the fm_int() method, for user-defined integration schemes (version 0.5.0.9013)

Improved features

  • Add bary=fm_bary() information to fm_subdivide() output, mapping the new mesh locations to the original mesh locations, e.g. for interpolating functions from the original mesh to the new mesh (version 0.5.0.9002)
  • Speed up fm_int() for polygons by bulk pre-computing fm_bary() information instead of separate calls in fm_vertex_projection() (version 0.5.0.9004)
  • Handle heterogeneous sf geometry XY/XYZ dimensions in fm_bary()/fm_basis() via fm_zm() method that is called by fm_onto_mesh() and fm_unify_coords() to promote XY to XYZ when needed, before calling sf::st_coordinates(), as sf::st_coordinates() otherwise fails. (version 0.5.0.9005)
  • Allow fm_int.fm_mesh_1d() to handle lists of matrices (for interval integration) and vectors (sums over point sets), for more flexible blockwise integration and summation schemes. (version 0.5.0.9007)
  • Allow fm_int.list() to include non-domain variables in the output object, e.g. for including per-transect covariates in the integration scheme. (version 0.5.0.9008)
  • Allow fm_int() for numeric/character/factor/fm_mesh_1d to handle nested list samplers (version 0.5.0.9009)
  • Drop gsl package dependency by using a native C++ implementation of the associated Legendre polynomials and spherical harmonics via fm_raw_basis() (version 0.5.0.9014)

Bug fixes

  • Make fm_subdivide() store the indexing information for the original mesh locations in $idx$loc (version 0.5.0.9001)
  • Correct off-by-one indexing error in $graph$vt triangle indices (version 0.5.0.9002)
  • Propagate correct crs information in fm_bary_loc() for 2D spaces (version 0.5.0.9005)
  • Fix bugs in fm_mesh_intersection() and fm_bary() C++ code that caused incorrect behaviour for locating points on meshes on subsets of the sphere. Also allow fm_mesh_intersection() to generate non-Delaunay triangles, allowing the generated meshes to be used for stable integration schemes (version 0.5.0.9006)
  • Handle the weights argument in fm_basis.matrix() and fm_basis.Matrix() when full = FALSE (version 0.5.0.9013)

Deprecation updates

  • Increased deprecation warning and error messages for old unsupported methods (version 0.5.0.9015)
  • Removed exports of deprecated CRSargs methods (version 0.5.0.9015)

fmesher 0.5.0

CRAN release: 2025-07-07

New features

  • Add fm_area() method for fm_segm area calculations (version 0.4.0.9002)
  • Make fm_nonconvex_hull() a unified function for “fm” and “sf” construction methods and input/output formats, with default method “fm” and output format “sf”, making fm_nonconvex_hull_inla() deprecated. (version 0.4.0.9004)

Improved features

  • Rename fm_mesh_components() to fm_components() and add support for fm_segm objects (version 0.4.0.9001)
  • Add support for polygon output in fm_as_sfc() for closed boundary fm_segm objects (version 0.4.0.9002)
  • Add support for fm_segm as boundary input to fm_hexagon_lattice() (version 0.4.0.9005)
  • Add fm_segm integration support for fm_mesh_2d objects in fm_int() (version 0.4.0.9005)

Bug fixes

  • Fix indexing bug in fm_basis.fm_mesh_1d() for degree = 2 and NA locations (version 0.4.0.9003)
  • Detect unnamed sfc objects in fm_int() for multi-domain integration and give an error, as the user must provide a geometry name (version 0.4.0.9005)
  • Check that every fm_int() sampler for domain lists has at least one corresponding domain (version 0.4.0.9007)
  • Remove support for character .block information in fm_int()/fm_cprod(), forcing the use of integer, as character could lead to incorrect block aggregation output ordering. The equivalent information is now available in .block_origin. Also clean up of fm_cprod() and sf handling (version 0.4.0.9006)

fmesher 0.4.0

CRAN release: 2025-06-12

New features

  • Add fm_hexagon_lattice() for creating regular hexagonal lattice points to use with fm_mesh_2d(), from Man Ho Suen (version 0.3.0.9001 and 0.3.0.9006)
  • Add fm_mesh_components() method for extracting (dis)connected components from 2D and 3D meshes (version 0.3.0.9005)
  • Add fm_collect() method for creating a collection of meshes of the same type (version 0.3.0.9009)

Improved features

  • Construct better representative boundary points for mid data of fm_mesh_1d for degree = 2, boundary = "free" (version 0.3.0.9002)
  • Add argument delaunay to allow non-Delaunay mesh construction in fm_subdivide() (version 0.3.0.9003)
  • Better handling of line integration when triangle edges and line transects are co-linear (version 0.3.0.9004)
  • Add support for order > 2 for fm_fem.fm_mesh_1d() (version 0.3.0.9011) and generally for fm_matern_precision() (version 0.3.0.9012)
  • Add argument units to fm_crs() to allow setting the length unit for the CRS on creation/extraction (version 0.3.0.9013)

Bug fixes

  • Improved bug fix in fm_mesh_2d_inla() from 0.2.0.9014 to allow negative offset in the second layer when the inner layer is specified only through a boundary polygon (version 0.3.0.9007)
  • Bug fix for fm_mesh_2d_inla() to ensure S2 manifold meshes covering the entire sphere aren’t accidentally limited to a subset of the globe (version 0.3.0.9008)
  • Handle colour palettes with fewer than requested colours in fm_generate_colors() (version 0.3.0.9008)
  • Fix bug in fm_detect_manifold() that caused it to return "R2" for "S2" and "M2" manifolds (version 0.3.0.9010)
  • Fix bug in fm_as_mesh_3d_list() that caused it to return the mesh surface as an fm_mesh_2d object instead of the full fm_mesh_3d object (version 0.3.0.9014)

fmesher 0.3.0

CRAN release: 2025-03-18

New features

  • Convert fm_bary() output to a dedicated fm_bary class, with elements ‘index’ (index of the containing simplex) and ‘where’ (matrix of barycentric weights). (version 0.2.0.9001)
  • Add fm_bary_simplex() generic method to extract the simplex vertex indices for an fm_bary object. (version 0.2.0.9001)
  • Add fm_bary_loc() generic method for converting fm_bary information to Euclidean coordinates (version 0.2.0.9005)
  • Add support for fm_mesh_3d and new fm_lattice_Nd class (version 0.2.0.9008 and 0.2.0.9011)
  • Add fm_assess() method, replicating the old INLA::inla.mesh.assessment() method (version 0.2.0.9010)
  • Add R implementation of fm_qinv() for computing sparse matrix partial inverses (version 0.2.0.9010)

Improved features

  • Handle NA location inputs to fm_basis.fm_mesh_1d() (version 0.2.0.9002)
  • Simplify fm_basis object creation, and add custom_classes developers vignette (version 0.2.0.9004)
  • Add fm_basis(mesh, loc = fm_bary(mesh, ...)) support for fm_mesh_1d and fm_mesh_2d objects (version 0.2.0.9006)
  • Add list() input support for fm_int.numeric, to allow multiple integration blocks for discrete domains (version 0.2.0.9012)
  • Add mappings and defs support to the geom_fm.fm_mesh_1d() method, allowing separate control of the ggplot2 aesthetics for basis functions, knots, and function evaluations (version 0.2.0.9013)
  • Add support for character block input to fm_block methods, to automate multi-domain integration support from fm_int() (version 0.2.0.9017)

Bug fixes

  • Make fm_try_callstack() more robust against large callstack sizes; solves “C stack” crash issue for inla() error reporting (version 0.2.0.9007)
  • Fix fm_bbox.fm_mesh_2d() bug for "S2" and "M2" manifold meshes (version 0.2.0.9008)
  • Fix bug in fm_rcdt_2d_inla() that lead to ignoring the quality.spec argument (version 0.2.0.9009)
  • Fix bug in fm_mesh_2d_inla() that improperly ignored negative offset values when creating meshes based on only boundary information (version 0.2.0.9014)
  • Minor bugfix for print.fm_segm() for empty fm_segm objects (version 0.2.0.9015)
  • Bugfix for fm_mesh_2d_inla(interior = ...) where part of the code incorrectly assumed interior would be a list. Now converts a list into a single fm_segm object (version 0.2.0.9016)

Deprecation updates

  • Remove long deprecated inla.mesh etc legacy methods; need to explicitly convert old objects. Retaining the inla.mesh etc class suffixes for now. (version 0.2.0.9001)

fmesher 0.2.0

CRAN release: 2024-11-06

New methods

  • Add print methods for fm_basis and fm_evaluator objects (version 0.1.7.9003)
  • Add fm_manifold_get() generic method to extract manifold information from general objects, so that external objects can implement their own manifold information storage (version 0.1.7.9005)
  • Add fm_crs_plot() method for plotting fm_crs objects with optional graticules and Tissot indicatrices (version 0.1.7.9010)

New method options

  • Add full argument to fm_basis() to toggle between matrix and full fm_basis object output (version 0.1.7.9002)
  • Add loc plotting option to geom_fm.fm_mesh_2d and modify the ggplot mapping interface for interior and boundary segments in the same method (version 0.1.7.9009)
  • Add format="loc" argument to fm_as_sfc.fm_mesh_2d() for converting mesh node coordinates to sfc_POINT format (version 0.1.7.9009)

Minor updates

  • Update documentation and vector coordinate inputs to fm_lattice_2d() to clarify input interpretation and ensure correct boundary orientation (version 0.1.7.9001)
  • Add some length unit handling to fm_crs_bounds() (version 0.1.7.9008)
  • Add control argument max_batch_size to fm_bary.fm_mesh_2d(), that can be supplied via fm_basis(), for optional override of the default maximal batch calculation size, see #14 (version 0.1.7.9011)

Deprecation updates

  • Remove sp objects from fmexample data. Use fmexample_sp() to access them if needed (version 0.1.7.9004)
  • Move sp dependency to Suggests, and remove inlabru dependency (version 0.1.7.9006)
  • Further sp use protection (version 0.1.7.9007)
  • Increased deprecation warning and error messages for old unsupported methods

fmesher 0.1.7

CRAN release: 2024-07-01

  • Fix regression bug in fm_manifold() that made it ignore all but the first given type options. See #16 (version `0.1.6.9001)
  • Fix plot.fm_mesh_2d vectorisation bug (version 0.1.6.9002)
  • Add new fm_subdivide() method for fm_mesh_2d meshes (version 0.1.6.9003)

fmesher 0.1.6

CRAN release: 2024-06-14

  • Fix for hiding away-facing triangle edges in plot.fm_mesh_2d() and lines.fm_segm().
  • Fix duplicated fm_unify_coords.sf() method. Thanks to Pablo Paccioretti for debugging and reporting, see #13 (version 0.1.5.9001)
  • Use batched fm_bary.fm_mesh_2d() computations for data sizes of 2e5 and upwards. This improves performance of fm_basis()/inla.spde.make.A() for large data sets, see #14 (version 0.1.5.9002)
  • Automatically convert raw sfc samplers objects to sf objects in fm_int.list() (version 0.1.5.9003)
  • Detect and warn about unsupported use of fm_segm objects in fm_int.list() (version 0.1.5.9004)
  • Add fm_basis() and fm_fem() support for fm_tensor function spaces (version 0.1.5.9005)
  • Add fm_CRS() support for terra objects (version 0.1.5.9006)

fmesher 0.1.5

CRAN release: 2023-12-20

  • Fix bug in fm_matern_sample() that prevented the use of a non-NULL loc argument. For earlier versions, the workaround is to make a separate call to fm_evaluate() after calling fm_matern_sample().
  • Improve speed of fm_block_log_shift() by an order of magnitude for multi-block cases.
  • Fix bug in plot.fm_mesh_2d for meshes with 2D coordinate storage (version 0.1.4.9002)

fmesher 0.1.4

CRAN release: 2023-10-28

  • Work around std::get<variant>() lack of support for MacOS < 10.14.

fmesher 0.1.3

CRAN release: 2023-10-18

  • Fix bug in fm_rcdt_2d_inla() that gave different defaults for the extend and refine arguments when equal to TRUE, that should be treated the same as list() (version 0.1.2.9001)
  • Fix bug in fm_rcdt_2d_inla() to properly update n basis counter element when removing unused vertices. (version 0.1.2.9002)
  • Fix bug giving a spurious warning about inconsistent is.bnd for empty fm_segm objects, and inconsistent grp vector lengths. (version 0.1.2.9003)
  • Convert some of the old potentially unsafe C++ pointer methods to type safe C++17 features

fmesher 0.1.2

CRAN release: 2023-08-25

  • Various documentation improvements, in particular for INLA compatibility
  • Modify mesh refinement tests to directly check the refinement criteria instead of the specific mesh result, to account for differences in floating point behaviour on M1 processors.
  • Modify tests of non-mesh-generation features to use precomputed meshes or meshes with stable properties
  • Protect against invalid tv inputs
  • Revert from \text{} to \textrm{}, as AMS extensions are only supported from R 4.2.2 (https://www.stats.bris.ac.uk/R/doc/manuals/r-devel/R-exts.pdf 2023-08-24, page 90), and CRAN oldrel for macOS is 4.2.0, not 4.2.3

fmesher 0.1.1

CRAN release: 2023-08-18

  • Simplify LICENSE information in the R package DESCRIPTION
  • Fix example for legacy plot_PolySet method
  • Fix C++ unused-variable warning detected by clang-tidy version 16.0.6
  • Add workaround for sf::st_buffer not supporting negative distance for s2 with longlat coordinates. Fixes #5

fmesher 0.1.0

fmesher 0.0.9

  • Basic fmesher library I/O interface
  • Added a NEWS.md file to track changes to the package.