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
_51for 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_toleranceto 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_qualityto 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_qualityto limit the maximum warpage of the quadrangles (over-warped quads are split into triangles).
CM2 Intersect T3
- New
settings_type::anaysis_codeanddata_type::xpartsto 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::centroidsto compute the centroids of elements in a mesh (linear types only). - New
meshtools::FEMAP_inputandmeshtools::FEMAP_outputwithFILE*parameter (in place ofconst char*). - New
meshtools::NASTRAN_inputandmeshtools::NASTRAN_outputwithFILE*parameter (in place ofconst char*). - New
meshtools::STL_inputandmeshtools::STL_outputwithFILE*parameter (in place ofconst char*). - New
meshtools1d::convert_into_quadraticto transform linear edges into quadratic ones (simplified version ofmeshtools1d::convert_into_high_order). - New
meshtools1d::convert_into_linearto transform high-order edges into linear ones (discarding the high-order nodes). - New
meshtools2d::get_connected_elementsto 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::circumcentersto compute the circumcenters of triangle meshes (2-D and 3-D). - New
meshtools2d::convert_into_quadraticto transform linear faces into quadratic ones (simplified versions ofmeshtools2d::convert_into_high_order). - New
meshtools2d::convert_into_linearto 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::circumcentersto compute the circumcenters of tetrahedron meshes. - New
meshtools3d::convert_into_quadraticto transform linear solids into quadratic ones (simplified versions ofmeshtools3d::convert_into_high_order). - New
meshtools3d::convert_into_linearto 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 = trueand 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_qualityrenameddata_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_E2renamed intomeshtools1d::convert_into_high_order.
Note also the newmeshtools1d::convert_into_quadratic(see /new features above).meshtools1d::E3_to_2E2renamed intomeshtools1d::split_into_linear.meshtools1d::mesh_curve_param: the metrics arrayHnow 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_Q4andmeshtools2d::convert_mixedunified 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_Q9andmeshtools2d::convert_Q9T6unified into newmeshtools2d::split_into_linear(accepting pure and mixed meshes).meshtools2d::split_into_Q4: parametersconst UIntMat& connectQ4, const UIntMat& connectT3unified intoconst UIntMat& connectM(accepting pure and mixed meshes).meshtools2d::split_Q4_into_T3: new parametermin_Q4_warp_qualityto set a max limit on the warpage of the quadrangles. Quads with greater warpage are split.meshtools3d::convert_TH4,meshtools3d::convert_P5,meshtools3d::convert_W6andmeshtools3d::convert_mixedunified 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).