Changelog
Source:NEWS.md
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 (version0.6.1.9002) - Add
face_edge(for 2D meshes),cell_face, andcell_edge(for 3D meshes) information tofm_sizes()output (version0.6.1.9004) - Eliminate explicit zero entries from
fm_basis()matrices (version0.6.1.9005) - Add spherical mesh support to
fm_sizes()(version0.6.1.9006)
Bug fixes
- Fix
fm_subdivide()to handle 2-column coordinate storage inputs. (version0.6.1.9001) - Fix triangle area calculations in
fm_sizes()that caused calculated areas to be 1/3 of the actual areas (version0.6.1.9003) - Use
expect_setequal()in package tests for checking that integration output objects contain the correct columns. Some tests were not usingsort()on the names, causing them to fail when external object merges and constructors changed behaviour. Thanks to Edzer Pebesma for the initial PR, #30 (version0.6.1.9007) - Regenerated the
fmexampleobjects with the latest version of the package, to ensure they have up-to-date structure, and use the current boundary construction methods. (version0.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 (forfm_mesh_2d) or tetrahedron (forfm_mesh_3d) indices. (version0.5.0.9003) - Add
fm_zm()/fm_zm_input()/fm_zm_target()methods for adding/removing/unifying the Z/M dimensions of coordinate matrices andsfobjects (version0.5.0.9012) - New method
new_fm_int()to construct tibbles with the same output format as thefm_int()method, for user-defined integration schemes (version0.5.0.9013)
Improved features
- Add
bary=fm_bary()information tofm_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 (version0.5.0.9002) - Speed up
fm_int()for polygons by bulk pre-computingfm_bary()information instead of separate calls infm_vertex_projection()(version0.5.0.9004) - Handle heterogeneous
sfgeometry XY/XYZ dimensions infm_bary()/fm_basis()viafm_zm()method that is called byfm_onto_mesh()andfm_unify_coords()to promote XY to XYZ when needed, before callingsf::st_coordinates(), assf::st_coordinates()otherwise fails. (version0.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. (version0.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. (version0.5.0.9008) - Allow
fm_int()for numeric/character/factor/fm_mesh_1dto handle nested list samplers (version0.5.0.9009) - Drop
gslpackage dependency by using a native C++ implementation of the associated Legendre polynomials and spherical harmonics viafm_raw_basis()(version0.5.0.9014)
Bug fixes
- Make
fm_subdivide()store the indexing information for the original mesh locations in$idx$loc(version0.5.0.9001) - Correct off-by-one indexing error in
$graph$vttriangle indices (version0.5.0.9002) - Propagate correct
crsinformation infm_bary_loc()for 2D spaces (version0.5.0.9005) - Fix bugs in
fm_mesh_intersection()andfm_bary()C++ code that caused incorrect behaviour for locating points on meshes on subsets of the sphere. Also allowfm_mesh_intersection()to generate non-Delaunay triangles, allowing the generated meshes to be used for stable integration schemes (version0.5.0.9006) - Handle the
weightsargument infm_basis.matrix()andfm_basis.Matrix()whenfull = FALSE(version0.5.0.9013)
fmesher 0.5.0
CRAN release: 2025-07-07
New features
- Add
fm_area()method forfm_segmarea calculations (version0.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”, makingfm_nonconvex_hull_inla()deprecated. (version0.4.0.9004)
Improved features
- Rename
fm_mesh_components()tofm_components()and add support forfm_segmobjects (version0.4.0.9001) - Add support for polygon output in
fm_as_sfc()for closed boundaryfm_segmobjects (version0.4.0.9002) - Add support for
fm_segmas boundary input tofm_hexagon_lattice()(version0.4.0.9005) - Add
fm_segmintegration support forfm_mesh_2dobjects infm_int()(version0.4.0.9005)
Bug fixes
- Fix indexing bug in
fm_basis.fm_mesh_1d()fordegree = 2andNAlocations (version0.4.0.9003) - Detect unnamed
sfcobjects infm_int()for multi-domain integration and give an error, as the user must provide a geometry name (version0.4.0.9005) - Check that every
fm_int()sampler for domain lists has at least one corresponding domain (version0.4.0.9007) - Remove support for
character.blockinformation infm_int()/fm_cprod(), forcing the use ofinteger, ascharactercould lead to incorrect block aggregation output ordering. The equivalent information is now available in.block_origin. Also clean up offm_cprod()andsfhandling (version0.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 withfm_mesh_2d(), from Man Ho Suen (version0.3.0.9001and0.3.0.9006) - Add
fm_mesh_components()method for extracting (dis)connected components from 2D and 3D meshes (version0.3.0.9005) - Add
fm_collect()method for creating a collection of meshes of the same type (version0.3.0.9009)
Improved features
- Construct better representative boundary points for
middata offm_mesh_1dfordegree = 2, boundary = "free"(version0.3.0.9002) - Add argument
delaunayto allow non-Delaunay mesh construction infm_subdivide()(version0.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 > 2forfm_fem.fm_mesh_1d()(version0.3.0.9011) and generally forfm_matern_precision()(version0.3.0.9012) - Add argument
unitstofm_crs()to allow setting the length unit for the CRS on creation/extraction (version0.3.0.9013)
Bug fixes
- Improved bug fix in
fm_mesh_2d_inla()from0.2.0.9014to allow negative offset in the second layer when the inner layer is specified only through a boundary polygon (version0.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 (version0.3.0.9008) - Handle colour palettes with fewer than requested colours in
fm_generate_colors()(version0.3.0.9008) - Fix bug in
fm_detect_manifold()that caused it to return"R2"for"S2"and"M2"manifolds (version0.3.0.9010) - Fix bug in
fm_as_mesh_3d_list()that caused it to return the mesh surface as anfm_mesh_2dobject instead of the fullfm_mesh_3dobject (version0.3.0.9014)
fmesher 0.3.0
CRAN release: 2025-03-18
New features
- Convert
fm_bary()output to a dedicatedfm_baryclass, with elements ‘index’ (index of the containing simplex) and ‘where’ (matrix of barycentric weights). (version0.2.0.9001) - Add
fm_bary_simplex()generic method to extract the simplex vertex indices for anfm_baryobject. (version0.2.0.9001) - Add
fm_bary_loc()generic method for convertingfm_baryinformation to Euclidean coordinates (version0.2.0.9005) - Add support for
fm_mesh_3dand newfm_lattice_Ndclass (version0.2.0.9008and0.2.0.9011) - Add
fm_assess()method, replicating the oldINLA::inla.mesh.assessment()method (version0.2.0.9010) - Add R implementation of
fm_qinv()for computing sparse matrix partial inverses (version0.2.0.9010)
Improved features
- Handle
NAlocation inputs tofm_basis.fm_mesh_1d()(version0.2.0.9002) - Simplify
fm_basisobject creation, and addcustom_classesdevelopers vignette (version0.2.0.9004) - Add
fm_basis(mesh, loc = fm_bary(mesh, ...))support forfm_mesh_1dandfm_mesh_2dobjects (version0.2.0.9006) - Add
list()input support forfm_int.numeric, to allow multiple integration blocks for discrete domains (version0.2.0.9012) - Add
mappingsanddefssupport to thegeom_fm.fm_mesh_1d()method, allowing separate control of theggplot2aesthetics for basis functions, knots, and function evaluations (version0.2.0.9013) - Add support for
characterblock input tofm_blockmethods, to automate multi-domain integration support fromfm_int()(version0.2.0.9017)
Bug fixes
- Make
fm_try_callstack()more robust against large callstack sizes; solves “C stack” crash issue forinla()error reporting (version0.2.0.9007) - Fix
fm_bbox.fm_mesh_2d()bug for"S2"and"M2"manifold meshes (version0.2.0.9008) - Fix bug in
fm_rcdt_2d_inla()that lead to ignoring thequality.specargument (version0.2.0.9009) - Fix bug in
fm_mesh_2d_inla()that improperly ignored negativeoffsetvalues when creating meshes based on only boundary information (version0.2.0.9014) - Minor bugfix for
print.fm_segm()for emptyfm_segmobjects (version0.2.0.9015) - Bugfix for
fm_mesh_2d_inla(interior = ...)where part of the code incorrectly assumedinteriorwould be a list. Now converts a list into a singlefm_segmobject (version0.2.0.9016)
fmesher 0.2.0
CRAN release: 2024-11-06
New methods
- Add print methods for
fm_basisandfm_evaluatorobjects (version0.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 (version0.1.7.9005) - Add
fm_crs_plot()method for plottingfm_crsobjects with optional graticules and Tissot indicatrices (version0.1.7.9010)
New method options
- Add
fullargument tofm_basis()to toggle between matrix and fullfm_basisobject output (version0.1.7.9002) - Add
locplotting option togeom_fm.fm_mesh_2dand modify theggplotmapping interface for interior and boundary segments in the same method (version0.1.7.9009) - Add
format="loc"argument tofm_as_sfc.fm_mesh_2d()for converting mesh node coordinates tosfc_POINTformat (version0.1.7.9009)
Minor updates
- Update documentation and vector coordinate inputs to
fm_lattice_2d()to clarify input interpretation and ensure correct boundary orientation (version0.1.7.9001) - Add some length unit handling to
fm_crs_bounds()(version0.1.7.9008) - Add control argument
max_batch_sizetofm_bary.fm_mesh_2d(), that can be supplied viafm_basis(), for optional override of the default maximal batch calculation size, see #14 (version0.1.7.9011)
Deprecation updates
- Remove
spobjects fromfmexampledata. Usefmexample_sp()to access them if needed (version0.1.7.9004) - Move
spdependency to Suggests, and removeinlabrudependency (version0.1.7.9006) - Further
spuse protection (version0.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_2dvectorisation bug (version0.1.6.9002) - Add new
fm_subdivide()method forfm_mesh_2dmeshes (version0.1.6.9003)
fmesher 0.1.6
CRAN release: 2024-06-14
- Fix for hiding away-facing triangle edges in
plot.fm_mesh_2d()andlines.fm_segm(). - Fix duplicated
fm_unify_coords.sf()method. Thanks to Pablo Paccioretti for debugging and reporting, see #13 (version0.1.5.9001) - Use batched
fm_bary.fm_mesh_2d()computations for data sizes of2e5and upwards. This improves performance offm_basis()/inla.spde.make.A()for large data sets, see #14 (version0.1.5.9002) - Automatically convert raw
sfcsamplers objects tosfobjects infm_int.list()(version0.1.5.9003) - Detect and warn about unsupported use of
fm_segmobjects infm_int.list()(version0.1.5.9004) - Add
fm_basis()andfm_fem()support forfm_tensorfunction spaces (version0.1.5.9005) - Add
fm_CRS()support forterraobjects (version0.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-NULLlocargument. For earlier versions, the workaround is to make a separate call tofm_evaluate()after callingfm_matern_sample(). - Improve speed of
fm_block_log_shift()by an order of magnitude for multi-block cases. - Fix bug in
plot.fm_mesh_2dfor meshes with 2D coordinate storage (version0.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 theextendandrefinearguments when equal toTRUE, that should be treated the same aslist()(version0.1.2.9001) - Fix bug in
fm_rcdt_2d_inla()to properly updatenbasis counter element when removing unused vertices. (version0.1.2.9002) - Fix bug giving a spurious warning about inconsistent
is.bndfor emptyfm_segmobjects, and inconsistentgrpvector lengths. (version0.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
tvinputs - 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_PolySetmethod - Fix C++ unused-variable warning detected by clang-tidy version 16.0.6
- Add workaround for
sf::st_buffernot supporting negative distance fors2with longlat coordinates. Fixes #5
fmesher 0.1.0
- Full conversion of the fmesher interface from the standalone binary in R-INLA (https://www.r-inla.org) to an interface powered by
Rcpp(https://cran.r-project.org/package=Rcpp) - Tools for 2D and 1D function spaces, see
fm_mesh_2d()andfm_mesh_1d() - Tools for CRS handling see
fm_crs()andfm_transform() - Plotting support for base graphics,
rgl, andggplot2 - Added basic GMRF tools, see
fm_matern_precision()