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
_42for 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_impedanceto compute complex solutions of impedance problems such asKz U = Fwhere: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_flagto forces the stabilization of the system by replacing null or negative factorization pivots with (arbitrary) positive ones.
AFEM_PIVOT_WARNINGis then issued (instead of aFEM_PIVOT_ERROR). But the solutions usually contain combinations (possibly non reproducible) of rigid-body motion modes. - New
FEM_Zmatrixsimilar toFEM_matrixbut forstd::complex<double>.
Matrices of this class are used insolver_modal_gyroscopicandsolver_Z_impedance. - New
symmetryparameter 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_matrixandset_pos_matrixmembers.- New
context::set_LLC_sizeto 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_ERRORwhen 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 ERRORis 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_modeswith respect to prior versions. - The velocities matrix
D2_modesis removed (still computed internally but released after the computations).
If needed, the user can easily compute the velocities multiplying the displacementD_modeswithi * omega. - The damping correction to velocities matrix
DD_modesis removed also.