CM2 FEM® SDK /release 5.2.0
- 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.
/caveats
- Major version. Due to changes in the API, client applications must be recompiled against the new headers.
- Lib names suffix is
_52
for 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 features
numerical_model_base
- New member
get_nodes
to get the nodes (unique) in a model (the nodes of all elements or only the nodes of a specific element). - New members
get_DOFs
to 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).
solver_static_Newton, solver_condensation_static
- 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 newsettings_type::method_code
.
solver_condensation_static
- More OMP parallelism.
elementary_server
- New
data_type::Ee
for strains averaged over the element (one strain tensor or strain resultants vector per element) or for temperature gradient (one gradient per element), depending onsettings.physics_kind
. - New
data_type::Se
for stresses averaged over the element (one stresses tensor or stress resultants vector per element) or for heat flow (one flow per element), depending onsettings.physics_kind
. - New
settings_type::avg_strains_stresses_flag
(default = true) to able/disable the computation of these element strains/stresses (or temperature gradient/heat flow). - New
settings_type::express_in_basis
to 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
- New
int code
parameter: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
- Code
int symmetry
replaced withint code
(new instiffness_sym_nl
):code >= +1
: The model is considered as a regular symmetric stiffness (same assymmetry = +1
, the default). The diagonal values are used in the computation of the penalty factors (as before).code = 0
The 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 assymmetry != +1
).
/improvements
solver_reactions
- Some speed-ups.
solver_static_Newton
- Wolfe step conditions. This can improve the convergence in some cases.
Miscellaneous
- Source code ported to C++20 (while still keeping compatibility back to C++98).
- Doc clean-ups.
/fixes
post_processor_1d, solver_stress_1d, elementary_server
- Global loads (loads defined on a whole model) weren't taken into account.
solver_energy
- Could crash with inputs from
solver_modal_ldrv
.
All shell models
- Small inaccuracies on reactions and internal works (
solver_reactions
,solver_static_Newton
) due to drilling stiffness (curved shells only).
/breaking changes
numerical_model_composite
- Caveats for methods
insert
: any load applied before theinsert
will no longer be affected to the inserted sub-models.
This simplifies the code related to loads (enabling some speed-ups insolver_reactions
)
and fixes bugs inpost_processor_1d
,solver_stress_1d
andelementary_server
.
law_beam_StVenant
- Default effective transverse shear sections are now set to
5/6 * S0
(instead ofS0
).5/6
is the usual factor for rectangular sections.
solver_static_Newton
- Default convergence thresholds
settings_type::tol_F
,settings_type::tol_U
andsettings_type::tol_E
have been changed (from1E-4
and1E-8
to1E-6
for all). - The residual (unbalanced forces) is now computed after increment of the solution (was before increment).
Note that this value is passed to thewatch_hdl
. - 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 thewatch_hdl
.
stiffness_sym, stiffness_sym_sparse
- Code
int symmetry
replaced withint code
with a diffferent behaviour now whencode = 0
.
See new features above.