CM2 FEM® SDK /release 5.4.0
- 5.4.0
- July 2023.
- Major release of the CM2 FEM® SDK.
- All CM2 FEM® 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
_54
(Windows),5.4.0
with symlinks from5.4
(Linux, macOS). - Win32 and Linux x86-32 builds deprecated. Builds no longer provided.
- Visual Studio 2013 deprecated. Builds no longer provided.
- MacOS Intel x86-64 deprecated. Builds no longer provided. Use the universal builds instead.
/new features
All CM2 FEM classes
- Smart pointers have been removed from the
fem
interface (see Breaking Changes below).
This makes conversions (up-casts) and (down-casts) simpler (and more reliable).
For instance, to test whether a numerical model is a composite or not:
fem::numerical_model_base NMi(NM_mgr.get_NM(0)); // Get the first numerical model in the manager.
if (fem::numerical_model_composite(NMi).is_valid())
... // Cast is fine. NMi is a composite.
else
... // Cast failed. NMi isn't a composite.
Seefem::base_class
. - New heat convection models (
fem::model_heat_convection_1d
,fem::model_heat_convection_2d
andfem::numerical_model_heat_convection
).
Supported types of elements:CM2_EDGE2
,CM2_EDGE3
,CM2_FACET3
,CM2_FACEQ4
,CM2_FACET6
andCM2_FACEQ9
. - New
fem::heat_convection_punctual
for heat convection concentrated on a node. - New
fem::heat_capacity_punctual
for heat capacity concentrated on a node. - New
fem::numerical_model_base::ID()
member (similar toget_ID()
). - New constructors with scalar and scalar copy methods for
fem::FEM_matrix
andfem::FEM_Zmatrix
. - New simplified constructors for
elementary_load
(DERIV_0
,UNIFORM
,global_basis = true
).
/improvements
Plane-strain models
- New formulations in
model_plane_strain_lin
andmodel_plane_strain_gnl
, withCM2_FACEQ4
elements (based on `2D-MITC4` by L. Ko, P.S. Lee, K.J. Bathe, H.G. Choi).
These new formulations improve the (in-plane) shear behaviour of quadrangle elements (especially when distorted) leading to more accurate solutions (or same accuracy with less elements).
Membrane models
- New formulations in
model_membrane_lin
andmodel_membrane_gnl
, withCM2_FACEQ4
elements (based on `Improved MITC4+` by L. Ko, P.S. Lee, K.J. Bathe, H.G. Choi).
These new formulations also improve the membrane shear behaviour of quadrangle elements as in the 2D models but also alleviate the membrane shear locking phenomenon (when the quadrangles are initially warped).
Shell models
- New
model_shell_lin
andmodel_shell_gnl
, withCM2_FACEQ4
elements (based on `Improved MITC4+` by L. Ko, P.S. Lee, K.J. Bathe, H.G. Choi).
These new formulations also improve the membrane shear behaviour of quadrangle elements as in the membrane models above.
The computational costs (in term of assembly times) of these new formulations isn’t significantly higher than before (less than 2%) but the accuracy is usually much better, especially for distorted/warped elements (or same accuracy with less elements). - New shell drilling formulation for shells (linear and non-linear).
The new drilling formulation couples the normal rotations with the in-plane displacements, whereas the former one was only a stiffness on nodal rotation DOFs.
For linear shells, the advantages are:- Lighter dependency upon the raw drilling shell factor (now raised to
1E-3
, see Breaking Changes below). - Better conditioning of the stiffness matrices.
For non-linear shells, the additional advantage are:
- Fewer spurious (artificial) instabilities.
- Better convergence of the Newton solver.
- Lighter dependency upon the raw drilling shell factor (now raised to
Miscellaneous
- Clean-ups and many test cases rewritten.
- Doc fixes, update of the manuals, update of the tutorials.
/fixes
All CM2 FEM classes
- The removal of smart pointers (see Breaking Changes below) and new conversion constructors fix some annoying conversion issues.
solver_least_squares
- Regression in 5.3 vs. 5.2: issues with
FEM_ELEMENT_BASIS
.
solver_buckling_Euler
- Bug when a Sturm sequence was required (i.e. with a finite search range).
solver_modal
- Convergence issues when a Sturm sequence was required (i.e. with a finite search range).
solver_condensation_static
- Bug in
data_type::Fc
with initial strains, initial stresses or thermal stresses.
stress_mgr
- Serious performance issues.
/breaking changes
- Smart pointers have been removed from the
fem
interface.
This means that for instancefem::numerical_model_composite::get_NM
doesn’t return a
Ptr<fem::numerical_model_base>
anymore but now a barefem::numerical_model_base
.
Orfem::numerical_model_base::get_physics_model
doesn’t return a
Ptr<fem::physics_model_base>
anymore but now a barefem::physics_model_base
.
👉 Pointer operator (->
) accesses should be replaced with operator (.
) accesses. - New shell drilling formulation for shells.
Default raw shell drilling factor for shells changed from1E-6
to1E-3
.
Results involving shells may exhibit some small changes vs. 5.3. solver_static_Newton::data_type::DC_factors
renamedsolver_static_Newton::data_type::DC_load_factors
.