Skip to content

Releases: Deltares/MeshKernel

v4.1.0

15 Feb 13:50
6f3c975
Compare
Choose a tag to compare

What's Changed

  • Reintroduced mesh deletion option of faces including circumcenters (previously deleted feature)

Bug fixes

  • Fixed bug related to rotated samples

v4.0.2

31 Jan 09:02
de62e33
Compare
Choose a tag to compare

Bug fixes

  • Do not throw if an attempt to get unset contacts information is made (mkernel_contacts_get_dimensions and mkernel_contacts_get_data)

v4.0.1

25 Jan 15:25
ce074dc
Compare
Choose a tag to compare

What's Changed

  • Add mkernel_mesh2d_refine_ridges_based_on_gridded_samples API function

v4.0.0

23 Jan 16:24
be72d8c
Compare
Choose a tag to compare

New features

  • Improve the support for spherical meshes by introducing spherical RTrees for searching points in a spherical mesh.
  • Added the generation of a global spherical mesh.
  • Added support for macOS on arm64 architecture.
  • Added the calculation of curvature for curvilinear grids.
  • Added the calculation of smoothness for curvilinear grids.
  • Added throwing exceptions when invalid projection is used in state allocation.
  • GriddedSamples can now accept values of short or float type for reducing memory consumption.
  • Added ridge refinement and RefinementType::RidgeDetection in mkernel_mesh2d_refine_based_on_samples.

API changes

  • Introduce curvilinear delete block exterior and interior, mkernel_curvilinear_delete_exterior and mkernel_curvilinear_delete_interior, respectively.
  • Added mesh rotation with mkernel_mesh2d_rotate.
  • Added mesh translation with mkernel_mesh2d_translate.
  • Added conversion of an unstructured mesh from spherical to Cartesian with mkernel_mesh2d_convert_projection.
  • Added mkernel_contacts_set for setting the contact indices.
  • Added mkernel_mesh1d_add and mkernel_mesh2d_add for adding meshes to existing instances.
  • Added equidistant polygon refinement, where the original corner vertices are not preserved and the new vertices are placed at equally spaced intervals for each polygon segment.
  • Added linear polygon refinement where the original corner vertices are preserved and the spacing of the refined nodes may differ between polygon segments.

Bug fixes

  • Improve the refinement of polygon segments.
  • Solved a bug in mkernel_curvilinear_compute_transfinite_from_splines related to the provided order of the splines.

v3.0.2

20 Dec 11:26
c29e144
Compare
Choose a tag to compare

Another minor patch that fixes the nuspec package input configurations. Otherwise identical to v3.0.1.

v3.0.1

01 Nov 08:40
04fea05
Compare
Choose a tag to compare

What's Changed

Minor patch that fixes the nuspec package input configurations. Otherwise identical to v3.0.0.

v3.0.0

27 Oct 14:49
1147165
Compare
Choose a tag to compare

Major improvements

  • A new efficient mesh deletion algorithm has been introduced, allowing for the deletion of a mesh based on a polygon with two options:
    • Delete faces inside the polygon that are not intersected by the polygon segments.
    • Delete faces inside the polygon that are intersected by the polygon segments.
  • Minimum edge size in meters is now taken into account when refining a mesh based on a polygon or samples, both in spherical and Cartesian coordinates.
  • Mesh refinement based on the Courant criteria now considers the max_courant_time.
  • Improved the generation of rotated curvilinear grids within a polygon.
  • Performance has been enhanced by utilizing 32-bit integers for unsigned indexes.
  • The refinement of a polygon perimeter has been improved.
  • The polygon class has been refactored.
  • The generation of curvilinear grids has been improved by introducing Eigen.
  • Input and parameter range checks are now in place. When invalid values are specified, exceptions are thrown and errors are registered.

API changes

  • Improve performance of search algorithms mkernel_mesh2d_get_edge and mkernel_mesh2d_get_node_index by introducing a bounding box defining the search area.
  • Small, non-contiguous regions of an unstructured mesh can be removed using the mkernel_mesh2d_remove_disconnected_regions function.
  • Quadrangular unstructured meshes can now be connected using the mkernel_mesh2d_connect_meshes API function.
  • Snapping a polygon to a land boundary is now possible with the mkernel_polygon_snap_to_landboundary function.
  • Snapping a spline to a land boundary is now available through the mkernel_splines_snap_to_landboundary function.
  • mkernel_curvilinear_make_uniform is now divided in 3 apis for separating responsibilities
    • mkernel_curvilinear_make_rectangular_mesh: for making a curvilinear mesh based on origin, rows and columns
    • mkernel_curvilinear_make_rectangular_mesh_from_polygon: for making an curvilinear mesh inside a polygon with defined block sizes
    • mkernel_curvilinear_make_rectangular_mesh_on_extension: for making an curvilinear mesh on a defined area using defined block sizes
  • mkernel_mesh2d_make_uniform is now divided in 3 apis for separating responsibilities
    • mkernel_mesh2d_make_rectangular_mesh: for making an unstructured mesh based on origin, rows and columns
    • mkernel_mesh2d_make_rectangular_mesh_from_polygon: for making an unstructured mesh inside a polygon with defined block sizes
    • mkernel_mesh2d_make_rectangular_mesh_on_extension: for making an unstructured mesh on a defined area using defined block sizes
  • Triangular mesh generation functions have been renamed as follows:
    • mkernel_mesh2d_make_mesh_from_polygon -> mkernel_mesh2d_make_triangular_mesh_from_polygon
    • mkernel_mesh2d_make_mesh_from_samples -> mkernel_mesh2d_make_triangular_mesh_from_samples
  • The mkernel_mesh2d_delete function now supports only two options: InsideNotIntersected = 0 and InsideAndIntersected = 1. This algorithm supersedes the previous mesh deletion algorithms.
  • edge_faces and face_edge have been added to the meshkernelapi::Mesh2D structure to allow the reconstruction of the faces

Bug fixes

  • Account for boundary edges in mkernel_mesh2d_get_orthogonality, mkernel_mesh2d_get_smoothness
  • The translation of large polygons in spherical coordinate generates erroneous results when used to inquire if a point is in polygon

v2.0.0

06 Jul 12:51
10817f5
Compare
Choose a tag to compare

What's Changed

API changes

  • Added mesh refinement based on bilinear interpolation: mkernel_mesh2d_refine_based_on_gridded_samples
  • Added a projection factor in mkernel_contacts_compute_single, for generating 1D2D contacts when 1D nodes are not inside the mesh2d
  • Removed block_size parameter in MakeGridParameters
  • Added an API for making uniform curvilinear grids based on extension: mkernel_curvilinear_make_uniform_on_extension
  • Added an API for making uniform mesh2d based on extension: mkernel_mesh2d_make_uniform_on_extension
  • Added an API for retrieving the projection type of the current instance: mkernel_get_projection
  • Add default initialization for several parameters in the API structures

Bugs

  • Fix a bug in creating a MeshKernel instance with spherical coordinates

Improvements

  • Improve speed for Mesh2D::FindFaces algorithm by using a static vector for edges to faces mapping
  • Fixed memory leaks in triangulation
  • Statically linked NetCDF libraries with the script available in scripts/install_netcdf_static.ps1
  • macOS support with GCC
  • Better project tree and CMake build configuration scripts

New Contributors

Full Changelog: v1.0.0...v2.0.0

v1.0.0

18 Jun 11:35
1841307
Compare
Choose a tag to compare
  • First stable release
  • Features:
    • 1d meshes
    • 2d meshes
    • Contacts
    • Curvilinear Grids
    • Polygons
    • Mesh creation routines