CM2 MeshTools® SDK /release 5.4.0

by | Jul 6, 2023

  • 5.4.0
  • July, 2023.
  • Major release of the CM2 MeshTools® SDK.
  • All CM2 MeshTools® SDK.
  • Due to changes in the API, client applications must be recompiled against the new headers.

/caveats

  • Major version. Due to changes in the API, client applications must be recompiled against the new headers.
  • Lib names now end with _54 (Windows), 5.4.0 with symlinks from 5.4 (Linux, macOS).
  • Win32 and Linux x86-32 builds deprecated. Builds no longer provided.
  • Visual Studio 2013 deprecated. Builds no longer provided.
  • MacOS Intel x86-64 deprecated. Builds no longer provided. Use the universal builds instead.

/new features

CM2 SurfRemesh T3, CM2 SurfRemesh Q4

  • New toggle settings_type::line_proximity_detection_flag to take into account (true) or not (false) the distance to skeleton lines for the size of the elements.
    Default = true as in previous versions.

COM wrapper

  • Updated.

Miscellaneous

  • meshtools1d::remesh_lines to remesh lines, connected or not, with possibly user-defined hard nodes and colors.
    Similar to CM2 SurfRemesh T3/Q4 but for edge meshes (remeshes with new mesh sizes, max chordal error, colors, hard nodes, hard edges).
    Can be useful to improve contours after intersections fixing by CM2 Intersect E2 for instance.
  • meshtools2d::boolean_ops now works also with CM2 QuadMesh Iso/Aniso (on top of CM2 TriaMesh Iso/Aniso).
  • New meshtools2d::mesh_disk_UR_Q4 and meshtools2d::mesh_disk_UR_T3 to generate pseudo-structured plane meshes on 1/4 of disk.
  • New meshtools2d::mesh_disk_Q4 and meshtools2d::mesh_disk_T3 to generate pseudo-structured plane meshes on a full disk.
  • New meshtools2d::mesh_sphere_UR_Q4 and meshtools2d::mesh_sphere_UR_T3 to generate pseudo-structured surface meshes on 1/8 of sphere.
  • New meshtools2d::mesh_sphere_Q4 and meshtools2d::mesh_sphere_T3 to generate pseudo-structured surface meshes on a full sphere.
  • meshtools::copy_edges: new optional parameter excludedE to exclude some edges.

/improvements

All meshers (except specialized tools)

  • Significant improvements in the node-smoothing algorithms (optimization steps).

CM2 TriaMesh Iso, CM2 TriaMesh Aniso

  • Major improvements in the regularization step with settings_type::no_clamped_edges_flag = true (quality of the meshes, fewer elements).

CM2 QuadMesh Iso, CM2 QuadMesh Aniso, CM2 SurfMesh Q4, CM2 SurfRemesh Q4

  • New topological optimization in the optimization steps.

CM2 SurfMesh T3, CM2 SurfMesh Q4

  • Optimized multi-threading.

CM2 TetraMesh Iso, CM2 TetraMesh Aniso

  • Major improvements in the regularization step with settings_type::no_clamped_edges_flag = true (quality of the meshes, fewer elements).

CM2 HexaMesh Iso

  • Improvements in the quality of the generated meshes (fewer tetrahedrons for instance).

Miscellaneous

  • Clean-ups and many test cases rewritten.
  • Doc fixes, update of the manuals, update of the tutorials.

/fixes

CM2 SurfRemesh T3, CM2 SurfRemesh Q4

  • The settings_type::closed_manifold_flag wasn’t fully honored (some meshes could lose manifold-ness).

CM2 HexaMesh Iso

  • Fixes in the regularization scheme (could lead to rare crashes).

Miscellaneous

  • meshtools::get_elements_on_boundaries: potential erroneous results with orientation_code ≥ 1.
  • meshtools2d::interpolate: failure of the overloads for vectorial fields (DoubleMat).
  • meshtools3d::interpolate: failure of the overloads for vectorial fields (DoubleMat).

/breaking changes

CM2 SurfRemesh T3, CM2 SurfRemesh Q4

  • User-defined colors upon entry: the boundaries between any different colors (including CM2_NONE) was considered as skeleton edges.
    Now, only the boundaries between valid different colors (not equal to CM2_NONE) are considered as skeleton edges.
    The valid user color for the element with lowest ID will be assigned to all elements of the patch this element belongs to (discarding any other user color in the same patch).

Miscellaneous

  • meshtools::get_colors_boundaries: new parameter bool colored_only_flag to consider boundaries between elements with different valid colors only (not equal to CM2_NONE) or any different colors (including CM2_NONE).