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®).
  • New Visual Studio 2026 builds.
  • 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) and beyond.

/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

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

COM wrapper

  • Updated.

/improvements

All meshers

  • New OMP parallelism in the regularisation steps (node smoothing and element smoothing).
    But 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 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 step (topological transformations).
  • Improvements in the regularization step to better chase out the worst elements.
    This can show also in CM2 SurfMesh Q4 and CM2 SurfRemesh Q4.

CM2 TriaMesh Iso, CM2 TriaMesh Aniso

/fixes

CM2 SurfRemesh T3, CM2 SurfRemesh Q4

  • Bad gradations 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

  • meshtools::vizir_output (overloads with const UIntVec& refs): could crash on memory error when refs has large values.
  • 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).