Releases: Deltares/MeshKernel
Releases · Deltares/MeshKernel
v4.1.0
v4.0.2
Bug fixes
- Do not throw if an attempt to get unset contacts information is made (
mkernel_contacts_get_dimensions
andmkernel_contacts_get_data
)
v4.0.1
What's Changed
- Add mkernel_mesh2d_refine_ridges_based_on_gridded_samples API function
v4.0.0
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
inmkernel_mesh2d_refine_based_on_samples
.
API changes
- Introduce curvilinear delete block exterior and interior,
mkernel_curvilinear_delete_exterior
andmkernel_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
andmkernel_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
Another minor patch that fixes the nuspec package input configurations. Otherwise identical to v3.0.1.
v3.0.1
What's Changed
Minor patch that fixes the nuspec package input configurations. Otherwise identical to v3.0.0.
v3.0.0
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
andmkernel_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 responsibilitiesmkernel_curvilinear_make_rectangular_mesh
: for making a curvilinear mesh based on origin, rows and columnsmkernel_curvilinear_make_rectangular_mesh_from_polygon
: for making an curvilinear mesh inside a polygon with defined block sizesmkernel_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 responsibilitiesmkernel_mesh2d_make_rectangular_mesh
: for making an unstructured mesh based on origin, rows and columnsmkernel_mesh2d_make_rectangular_mesh_from_polygon
: for making an unstructured mesh inside a polygon with defined block sizesmkernel_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
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 inMakeGridParameters
- 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
- @HiddeElzinga made their first contribution in #111
- @evetion made their first contribution in #112
- @ahmad-el-sayed made their first contribution in #127
- @BillSenior made their first contribution in #182
Full Changelog: v1.0.0...v2.0.0
v1.0.0
- First stable release
- Features:
- 1d meshes
- 2d meshes
- Contacts
- Curvilinear Grids
- Polygons
- Mesh creation routines