CM2 MeshTools® SDK /release 5.1.0 Preview 2
- 5.1.0 Preview 2
- September, 2021
- All CM2 MeshTools® SDK
- Major release of the CM2 MeshTools® SDK
- Due to changes in the API, client applications must be recompiled against the new headers
/caveats
Caveats
- Preview version. API is still subject to changes.
- Major version. Due to changes in the API, client applications must be recompiled against the new headers.
- Lib names suffix is
_51
for this series. - Win32 and Linux x86 (32-bit) builds shall be soon deprecated.
/new features
CM2 SurfMesh T3, CM2 SurfMesh Q4
- New parameter
settings_type::fix_tolerance
to merge (i.e. fix) CAD entities when their maximum distance is below or equal to this value.
Considered only between skeleton vertices so far. - New parameter
settings_type::min_Q4_warp_quality
to limit the maximum warpage of the quadrangles (over-warped quads are split into triangles). - Now able to read BRep files.
CM2 SurfRemesh T3, CM2 SurfRemesh Q4
- New parameter
settings_type::min_Q4_warp_quality
to limit the maximum warpage of the quadrangles (over-warped quads are split into triangles).
CM2 Intersect T3
- New
settings_type::anaysis_code
anddata_type::xparts
to limit the analysis (and the fixes) to inter-domain pathologies.
This saves CPU time when one knows that each part individually is fine but wants to fix only the intersections between the parts.
In addition, this prevents close nodes or small elements in each part to be considered as pathology and modified.
Miscellaneous
- New
meshtools::centroids
to compute the centroids of elements in a mesh (linear types only). - New
meshtools::FEMAP_input
andmeshtools::FEMAP_output
withFILE*
parameter (in place ofconst char*
). - New
meshtools::NASTRAN_input
andmeshtools::NASTRAN_output
withFILE*
parameter (in place ofconst char*
). - New
meshtools::STL_input
andmeshtools::STL_output
withFILE*
parameter (in place ofconst char*
). - New
meshtools1d::convert_into_quadratic
to transform linear edges into quadratic ones (simplified version ofmeshtools1d::convert_into_high_order
). - New
meshtools1d::convert_into_linear
to transform high-order edges into linear ones (discarding the high-order nodes). - New
meshtools2d::get_connected_elements
to compute the IDs (as CSR compressed lists) of the faces (triangles or quads) connected to the nodes.
Similar to the generalmeshtools::get_connected_elements
(which works also for 1-D and 3-D types of element) but element IDs in the lists are returned here counter-clock wise (vs. increasing ID ordering for the general-case function). - New
meshtools2d::circumcenters
to compute the circumcenters of triangle meshes (2-D and 3-D). - New
meshtools2d::convert_into_quadratic
to transform linear faces into quadratic ones (simplified versions ofmeshtools2d::convert_into_high_order
). - New
meshtools2d::convert_into_linear
to transform high-order faces into linear ones (discarding the high-order nodes). - New
meshtools2d::normals
(overloaded) to compute the normals/directors to elements in surface meshes (triangles or quads).
A previous overload was already available for nodal normals. - New
meshtools3d::circumcenters
to compute the circumcenters of tetrahedron meshes. - New
meshtools3d::convert_into_quadratic
to transform linear solids into quadratic ones (simplified versions ofmeshtools3d::convert_into_high_order
). - New
meshtools3d::convert_into_linear
to transform high-order edges into linear ones (discarding the high-order nodes).
/improvements
All meshers
- Massive speed-ups in the optimization step for some corner cases (when the max-min quality imposed by the constraints is very low).
CM2 TriaMesh Iso
- Speed-ups +10% on average.
- Some improvements in mesh quality.
CM2 QuadMesh Iso
- Speed-ups +25% on average.
- Some improvements in mesh quality.
CM2 TriaMesh Aniso
- Speed-ups +10% on average.
- Some improvements in mesh quality.
CM2 QuadMesh Anso
- Speed-ups +25% on average.
- Some improvements in mesh quality.
CM2 SurfMesh T3, CM2 SurfMesh Q4
- Speed-ups +15% on average.
- Port to OCCT 7.5 (Win, Linux and macOS).
CM2 TetraMesh Iso, CM2 TetraMesh Aniso
- More efficient boundary enforcement with much fewer Steiner nodes.
CM2 TetraMesh Iso
- Speed-ups +15% on average.
- Fewer nodes and elements in some cases.
- Some improvements in mesh quality in some cases.
CM2 TetraMesh Aniso
- Speed-ups +5% on average.
- Fewer nodes and elements in some cases.
- Some improvements in mesh quality.
CM2 HexaMesh Iso
- Speed-ups +25% on average.
- More efficient boundary quads enforcement.
- Slightly fewer low-order elements (tetrahedrons and pyramids).
- Some improvements in mesh quality.
CM2 Intersect T3
- Speed-ups +25% on average (much more on multi-domains with
analysis_code < 2
. - Some improvements in difficult cases.
Miscellaneous
meshtools1d::mesh_curve_param
: clean-ups and reduced memory usage.
COM wrapper
- Updated.
/fixes
CM2 QuadMesh Iso, CM2 QuadMesh Aniso
- Failure sometimes when
settings.all_quad_flag = true
and only four edges in boundary.
CM2 TriaMesh Iso, CM2 TriaMesh Aniso
- Similar to the QuadMesh behaviour, structured meshes are not longer forced (with
structured_pattern >= 0
) when a Delaunay mesh is more suitable (for instance with a background mesh, specific mesh sizes or atarget_metric
).
CM2 Intersect T3
- Orientation of some faces could be wrong upon exit (opposite to the initial master faces).
- Nodes of slave faces weren’t always projected on master faces.
CM2 HexaMesh Iso
- Unexpected slow-downs with boundary meshes with small elements sizes.
CM2 SurfRemesh T3, CM2 SurfRemesh Q4
- Some fixes.
Miscellaneous
- Doc fixes and clarifications.
/breaking changes
CM2 TetraMesh Iso, CM2 TetraMesh Aniso
data_type::best_achievable_min_quality
renameddata_type::max_min_quality
.
This output field is now relevant also for CM2 TetraMesh Aniso, although only approximative here (was valid only for CM2 TetraMesh Iso).
Miscellaneous
meshtools1d::convert_E2
renamed intomeshtools1d::convert_into_high_order
.
Note also the newmeshtools1d::convert_into_quadratic
(see /new features above).meshtools1d::E3_to_2E2
renamed intomeshtools1d::split_into_linear
.meshtools1d::mesh_curve_param
: the metrics arrayH
now behaves as the curvilinear coordinates arraypos1D
.
Upon entry: the requested mesh sizes relative tonodes
(used to be relative topos
).
Upon exit: the metrics of the new nodes are appended (as before).meshtools2d::convert_T3
,meshtools2d::convert_Q4
andmeshtools2d::convert_mixed
unified into newmeshtools2d::convert_into_high_order
(accepting pure and mixed meshes).
Note also the newmeshtools2d::convert_into_quadratic
(see /new features above).meshtools2d::convert_T6
,meshtools2d::convert_Q9
andmeshtools2d::convert_Q9T6
unified into newmeshtools2d::split_into_linear
(accepting pure and mixed meshes).meshtools2d::split_into_Q4
: parametersconst UIntMat& connectQ4, const UIntMat& connectT3
unified intoconst UIntMat& connectM
(accepting pure and mixed meshes).meshtools2d::split_Q4_into_T3
: new parametermin_Q4_warp_quality
to set a max limit on the warpage of the quadrangles. Quads with greater warpage are split.meshtools3d::convert_TH4
,meshtools3d::convert_P5
,meshtools3d::convert_W6
andmeshtools3d::convert_mixed
unified into newmeshtools3d::convert_into_high_order
(accepting some pure and mixed meshes).
Note also the newmeshtools2d::convert_into_quadratic
(see /new features above).meshtools3d::split_into_H8
: unified parameters (accepting some pure and mixed meshes, but still no pyramid).