CM2 FEM® Engines /release 4.2.0
- 4.2.0
- June 2016
- All CM2 FEM® Engines
- Major release of the CM2 FEM® Engines
- Due to changes in the API, client applications must be recompiled against the new headers
/caveats
- Lib names suffix is
_42
for this series. - Visual Studio 2008 is deprecated and will be no longer supported in future versions.
- Windows XP is deprecated and will be no longer supported in future versions.
/new features
- New experimental
solver_Z_impedance
to compute complex solutions of impedance problems such asKz U = F
where:Kz = K + i * omega * (D + G) - omega2 * M:
complex impedance matrix.K
,D
,M
: Stiffness, damping and mass matrices (real and usually symmetric, but here can have skew-symmetric contributions also).G
: Gyroscopic damping matrix (real skew-symmetric).
At present this solver uses a global full square complex matrix (memory usage of O(N2) and factorizing time complexity of O(N3)) limiting the practical size of the problems to below a few hundreds DOFs.
- New
solver_static_linear::operating_mode_type::stabilization_flag
to forces the stabilization of the system by replacing null or negative factorization pivots with (arbitrary) positive ones.
AFEM_PIVOT_WARNING
is then issued (instead of aFEM_PIVOT_ERROR
). But the solutions usually contain combinations (possibly non reproducible) of rigid-body motion modes. - New
FEM_Zmatrix
similar toFEM_matrix
but forstd::complex<double>
.
Matrices of this class are used insolver_modal_gyroscopic
andsolver_Z_impedance
. - New
symmetry
parameter in the initialisers offem:stiffness_sym
,fem:mass_sym
(similar todamping_sym
) to allow for skew-symmetric matrices.
At present, skew-symmetric matrices are only taken into account bysolver_Z_impedance
(discarded by other solvers). problem_data
: newget_pos_matrix
andset_pos_matrix
members.- New
context::set_LLC_size
to set manually the last-level cache (LLC) size used by the CM2 solvers. For experimented users only.
/improvements
- All solvers:
- OMP critical sections have been replaced with OMP locks.
The net effect is that concurrent solvers (working on different intern matrices) are no longer blocked by each other, resulting in better parallel efficiency.
- OMP critical sections have been replaced with OMP locks.
solver_stress_nodal
:- Assemblage is now OMP-parallelized.
- CM2 FEM (whole library):
- Port to Intel C++ Composer 16.0, GCC 6.1, clang 3.8.
- Doc fixes and improvements.
/fixes
- All solvers:
- Potential performance issue when OOC is activated.
solver_modal_LDRV
:- Exited with a
FEM_DATA_ERROR
when a load case gave no static nor kinetic energy.
- Exited with a
- Doc typos.
/breaking changes
FEM_matrix
: matrices are now forced to be all in-core (out-of-core management is now disabled for these matrices).
This could have led to data races or crashes when OOC matrices were accessed concurrently by user.
AFEM_MEMORY ERROR
is now raised when such a matrix could not be stored fully in-core.
However, solvers still use OOC internally (when enabled by user throughcontext::memory_management
).solver_modal_gyroscopic
:FEM_matrix D1_modes
(resp. damping correctionsDD1_modes
) replaced with complexFEM_Zmatrix D_modes
(resp. damping correctionsDD_modes
).
I.e., the former real and imaginary columns are merge intostd::complex<double>
columns (halving the number of columns).- The number of requested modes should be halved in
operating_mode_type::nbr_modes
with respect to prior versions. - The velocities matrix
D2_modes
is removed (still computed internally but released after the computations).
If needed, the user can easily compute the velocities multiplying the displacementD_modes
withi * omega
. - The damping correction to velocities matrix
DD_modes
is removed also.