CM2 FEM® SDK /release 5.2.0
- May, 2022.
- 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.
- Major version. Due to changes in the API, client applications must be recompiled against the new headers.
- Lib names suffix is
_52for this series.
- New Visual Studio 2022 builds.
- Visual Studio 2012 and GCC 6.1 builds removed (Visual Studio 2010 and GCC 4.8 builds will remain for some times as legacy builds).
- Visual Studio 2013 is deprecated and will no longer be supported in future versions.
- Win32 and Linux x86-32 builds are deprecated and will no longer be supported in future versions.
- New member
get_nodesto get the nodes (unique) in a model (the nodes of all elements or only the nodes of a specific element).
- New members
get_DOFsto get the DOFs (unique) in a model associated to a specific physics (for all elements or only for a specific element, only the prescribed ones, only the free ones or both).
- Augmented Lagrange Method (ALM) to enforce more precisely the constraints (similar to
solver_static_linear). ALM is enabled by default but can be disabled and return to Pure Penalty Method through the new
- More OMP parallelism.
data_type::Eefor strains averaged over the element (one strain tensor or strain resultants vector per element) or for temperature gradient (one gradient per element), depending on
data_type::Sefor stresses averaged over the element (one stresses tensor or stress resultants vector per element) or for heat flow (one flow per element), depending on
settings_type::avg_strains_stresses_flag(default = true) to able/disable the computation of these element strains/stresses (or temperature gradient/heat flow).
settings_type::express_in_basisto express these elementary strains/stresses (or temperature gradient/heat flow) into the global basis (the default) or the element basis.
stiffness_diag, thermal_diag, thermal_sym
code >= +1: The model is considered as a regular stiffness (the default). The diagonal values are used in the computation of the penalty factors (as before).
code = 0: The model is considered as a constraint. The diagonal values are not used in the computation of the penalty factors. When Augmented Lagrange Algorithm (ALM) is enabled in the solver, the model is considered as infinitely stiff (i.e. vector Ke % U is constrained to zero).
stiffness_sym, stiffness_sym_sparse, stiffness_sym_nl
int symmetryreplaced with
int code(new in
code >= +1: The model is considered as a regular symmetric stiffness (same as
symmetry = +1, the default). The diagonal values are used in the computation of the penalty factors (as before).
code = 0The model is considered also as symmetric but as a constraint. The diagonal values are not used in the computation of the penalty factors. When Augmented Lagrange Algorithm (ALM) is enabled in the solver, the model is considered as a constraint infinitely stiff (i.e. vector Ke % U is constrained to zero).
code <= -1: The matrix is considered as skew-symmetric (same as
symmetry != +1).
- Some speed-ups.
- Wolfe step conditions. This can improve the convergence in some cases.
- Source code ported to C++20 (while still keeping compatibility back to C++98).
- Doc clean-ups.
post_processor_1d, solver_stress_1d, elementary_server
- Global loads (loads defined on a whole model) weren't taken into account.
- Could crash with inputs from
All shell models
- Small inaccuracies on reactions and internal works (
solver_static_Newton) due to drilling stiffness (curved shells only).
- Caveats for methods
insert: any load applied before the
insertwill no longer be affected to the inserted sub-models.
This simplifies the code related to loads (enabling some speed-ups in
and fixes bugs in
- Default effective transverse shear sections are now set to
5/6 * S0(instead of
5/6is the usual factor for rectangular sections.
- Default convergence thresholds
settings_type::tol_Ehave been changed (from
- The residual (unbalanced forces) is now computed after increment of the solution (was before increment).
Note that this value is passed to the
- The change in elastic energy is now exact after each increment (was just a linear approximation).
Sometimes, this saves one iteration per step. Note that this value is also passed to the
int symmetryreplaced with
int codewith a diffferent behaviour now when
code = 0.
See new features above.