CM2 MeshTools® Suite /release 4.9.0

by | Apr 19, 2019

  • 4.9.0 RC3
  • April, 2019
  • All CM2 MeshTools® Suite
  • Major release of the CM2 MeshTools® Suite
  • Due to changes in the API, client applications must be recompiled against the new headers


  • Lib names suffix is _49 for this series.
  • New GCC 7 and GCC 8 builds (Linux 32/64).
  • Visual Studio < 2010 and GCC < 4.8 are no longer supported (minimum versions raised to Visual Studio 2010 and GCC 4.8).
  • macOS < 10.9 is no longer supported (minimum deployment target raised to 10.9 Mavericks).
  • Windows XP is deprecated and will be no longer supported in future versions.

/new features

CM2 Intersect T3

  • New settings.fix_flag (default = true) to allow for dry-run of the intersector when unset (false) and to only report pathologies without attempting to fix them.

CM2 SurfMesh T3, CM2 SurfMesh Q4 (still experimental)

  • Now able to mesh directly from a TopoDS_Shape.
  • Upgraded to OpenCascade(R) 7.3.0.


  • meshtools2d::interpolate now works with all-quad and mixed meshes (used to work only with all-triangle meshes).
  • meshtools2d::interpolate_metrics now works with all-quad and mixed meshes (used to work only with all-triangle meshes).
  • meshtools3d::duplicate_surface_nodes generalizes the former meshtools3d::duplicate_surface_nodes_TH4 to H8 and mixed solid meshes.


CM2 SurfRemesh T3, CM2 SurfRemesh Q4

  • Proximity detection between skeleton lines leading to finer and better meshes near small geometric features (ridges, fillets, holes…)
    This tends however to generate more elements. To mitigate this, use settings.target_h (set for instance target_h = max_h).
  • Massive speed-ups for some terrain-like surfaces.
  • User-defined mesh sizes better taken into account.
  • Speed-ups with frozen triangles.

CM2 TetraMesh Iso, CM2 TetraMesh Aniso

  • Enforcement of hard constraints fortified further (and sometimes much faster).
  • Better minimum shape quality on difficult cases.
  • In CONVEX_HULL_MODE, optimisations (remeshings only) are now performed in accordance with settings.optim_level (none was performed before).

CM2 Intersect T3

  • Much fewer remaining pathologies on difficult cases.
  • Significant speed-ups.

CM2 HexaMesh Iso

  • Fewer missing wall-quads when settings.make_conformal_flag = false.


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

  • settings.node_smoothing_flag didn’t work in REGULARIZE_MODE.

CM2 TriaMesh Iso, CM2 TriaMesh Aniso, CM2 QuadMesh Iso, CM2 QuadMesh Aniso

  • Fix in convex-hull mode when settings.strict_constraints_flag = true.
    The convex-hull wasn’t always exact, i.e. some (small) concavities could have been left.

CM2 SurfRemesh T3, CM2 SurfRemesh Q4

  • Metrics on user-defined hard nodes were poorly taken into account (when close to some skeleton lines).
  • Skeleton lines poorly remeshed sometimes.
  • settings.node_smoothing_flag didn’t work with settings.refine_flag = false.
  • Some initial elements could be uncolored in data_type::colors_in.
  • Nodes sometimes not on the initial surface with spurious chordal error.

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

  • In all-quad mode, could fail on a simple one-quad mesh.
  • settings_type::min_Q4_angle_quality didn’t work as expected.

CM2 HexaMesh Iso

  • CM2_INTERNAL_ERROR (Wall-triangle missing) sometimes.
  • Uninitialized-read fixed.


  • meshtools1d::metrics_gen_aniso3d: bug when hb < 0.
  • Fixes in meshtools::NASTRAN_input and meshtools::FEMAP_input.
  • Fix in meshtools2d::mesh_surface_param with target_metric and embedded hard nodes (isolated_nodes).
  • Doc fixes and clarifications.

/breaking changes

CM2 SurfRemesh T3, CM2 SurfRemesh Q4

  • Many changes especially in the mesh-partitioning algorithm and new proximity detection between skeleton lines.
    The latter tends however to generate more elements with default setting of target_h = 0.
    To mitigate this, set settings.target_h to a realistic mesh size (such as for instance target_h = max_h).


  • meshtools3d::duplicate_surface_nodes_TH4 replaced with meshtools3d::duplicate_surface_nodes (now generalized to H8 and mixed solid meshes).
  • Now built on Windows with UNICODE encoding setting (used to be MBCS).
    This may impact functions taking a filename as argument (such meshtools::NASTRAN_input, meshtools::NASTRAN_output and siblings).

Computing Objects SARL - 25 rue du Maréchal Foch, 78000 Versailles, France.

Limited Liability Company with a capital of 100 000 €.

Registered at Versailles RCS under SIRET number 422 791 038 00033 - EU VAT registration FR59422791038.