CM2 MeshTools® SDK /release 5.7.0 Preview 1

by | Mar 4, 2026

  • 5.7.0 Preview 1
  • March 2026.
  • 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 _57 (Windows®), 5.7.0 with symlinks from 5.7 (Linux®, macOS®).
  • Visual Studio 2017 deprecated.
  • Last version with Visual Studio 2010 builds.
  • The Visual Studio 2015 builds shall be the legacy/oldest builds for the next series (5.8).

/new features

All meshers

  • The settings_type::save and the data_type::save members now return an error indicator (int, negative value in case of error) like the settings_type::load and the data_type::load members.

All meshers accepting a background mesh

  • The meshers now adapt to the user-defined node numbering scheme of the background mesh (need not to be the default CM2 local node ordering scheme anymore).

CM2 SurfMesh T3, CM2 SurfMesh Q4

  • Surfaces can now be masked (not meshed) by setting a negative value in data_type::surface_H.
    This is a breaking change vs. previous versions since negative values used to be replaced with the default (setting_type::target_h) mesh size and the surfaces were meshed (see Breaking Changes below).

Core MeshTools libs

  • cm2::meshtools::NASTRAN_input and cm2::meshtools::NASTRAN_output now support the QUAD9/CQUAD9 element types (cm2::CM2_FACEQ9).

COM wrapper

  • Updated.

/improvements

All meshers

  • New OMP parallelism in the regularisation steps (node smoothing and element smoothing).
    Only beneficial when several subdomains.

CM2 HexaMesh Iso

  • Gradations to settings_type::target_metric are much better honored.

CM2 TetraMesh Iso, CM2 TetraMesh Aniso

  • Improvements in the boundary enforcement step (again) to recover the boundary faces in even more difficult cases (reducing the risk of CM2_FACE_ERROR).
    In addition, this is achieved with usually fewer Steiner nodes.
  • Improvements in the regularization step to better chase out the worst elements.

CM2 QuadMesh Iso, CM2 QuadMesh Aniso

  • New OMP parallelism in the regularisation steps (topological transformations).
  • Improvements in the regularization step to better chase out the worst elements.
    This can show also in see CM2 SurfMesh Q4 and CM2 SurfRemesh Q4.

CM2 TriaMesh Iso, CM2 TriaMesh Aniso

/fixes

CM2 SurfRemesh T3, CM2 SurfRemesh Q4

  • No gradation towards settings_type::max_h along skeleton lines under specific conditions.
  • The final optimization step (settings_type::final_optimization_flag) could strangely coarsen meshes (especially with high settings_type::optim_level).
  • Strange/hallucinated non-regular meshes despite very regular/symmetric initial meshes (such as cylinders).
  • Fortified remeshing (again) with fewer CM2_REMESHING_ERROR.

CM2 HexaMesh Iso

  • Rare cases of infinite processing (could happen with several subdomains).

Core MeshTools libs

  • cm2::meshtools::vizir_output (overloads with const UIntVec& refs): could crash on memory error when refs has large values.
  • cm2::meshtools::NASTRAN_input failed to read BAR/CBAR, ROD/CROD, BEAM/CBEAM.

/breaking changes

CM2 SurfMesh T3, CM2 SurfMesh Q4

  • Negative values in the data_type::surface_H array used to be replaced with the default (setting_type::target_h) mesh size and the surfaces were meshed.
    Now, negative values indicate masked surfaces (i.e. surfaces not to be meshed).
    The default (setting_type::target_h) mesh size is now applied only to null and missing values in data_type::surface_H.

CM2 TriaMesh Iso, CM2 TriaMesh Aniso, CM2 TetraMesh Iso, CM2 TetraMesh Aniso

  • settings_type::no_edge_with_nodes_below renamed into settings_type::no_edge_between_nodes_below for better clarity (same functionality).