CM2 FEM® Engines /release 4.3.0
- December, 2017
- 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
- Lib names suffix is
_43for this series.
- New Visual Studio 2017 builds (Win32, Win64, MD, MT).
- New GCC 5 and GCC 6 builds (Linux86, Linux64).
- Visual Studio < 2010 and GCC < 4.8 are deprecated and will be no longer supported in future versions.
In the long term, C++98 will be deprecated. C++11-compliant compilers (for instance Visual Studio >= 2015) will be required to compile the source code of CM2 but also to compile against its API.
- Windows XP is deprecated and will be no longer supported in future versions.
- macOS < 10.9 is deprecated and will be no longer supported in future versions (minimum deployment target will raise to 10.9 Mavericks).
- Can now be initialized also with a mid-surface offset (
initwith 16 parameters, to be consistent with
contact_contact, contact_cylinder, contact_sphere
- New optional penalty parameter
DBL_MAX) to reduce the penalty parameter (the smallest value between
Enand the default context penalty is used).
- New optional
true) to remove the geometric stiffness when negative (happens only with
radius > 0).
- New optional context parameter (used to get the max number of threads among others).
This enables (partial) parallelization of the solver.
solver_Newmark (formerly solver_Newmark_linear)
settings_type::K_update_periodto allow updates of the stiffness matrix (useful only when the stiffness is non-linear with respect to the current solution or when the model is evolving with time).
As the computation and the factorization of the global stiffness matrix K usually outweighs all other computation times, it can be judicious not to update at every time step but only when the current solution has evolved enough to have a significant impact on the stiffness matrix.
The default is
K_update_period = 0(compute and factorize K only at time =
t0and keep this matrix for all the time steps, as in prior versions of CM2 FEM).
- New output vector
data_type::elastic_energiesfor elastic energies after each step.
- New member
- RTTI enabled (except Math1 vector and matrix classes).
- Mechanical model classes: default constructors added.
- Better usage of multi-core CPUs when solving multiple right-hand sides.
This gives very significant speed-ups when the number of DOFs is greater than 100k on the modal solvers (
fem::solver_buckling_Euler) and on
fem::solver_static_linearwith multiple RHS.
- Parallelization of forward-reduction and backward-substitution (i.e. resolution after factorization) for one RHS.
This gives also some noticeable speed-ups in modal solvers (and to a lower extent to all other solvers).
- Some noticeable speed-ups in the assembly step in all solvers.
- The DOFs numbering scheme is now reproducible (i.e. gives the same sequences across platforms/compilers).
Modal solvers (solver_modal, solver_modal_LDRV, solver_buckling_Euler)
- Better parallelization.
- Partial parallelization.
- Port to Visual Studio 2017.
- Doc clarifications.
- Degenerated elements in a mesh caused a crash. Now a
- Doc fixes.
All solvers with an
initial data field
- Considering a computation near a
data_type::initial(assumed equilibrated) displacement solution (such as a modal vibration analysis near an initial solution) and a non-linear model. The initial solution could have been the result of a previous (static) analysis with thermal stresses. In such a case, the solvers didn’t take into account the thermal stresses used to compute the initial solution.
This non-equilibrated initial solution led to invalid results (in the cases of non-linear models).
All these solvers are now equipped with a new
data_type::initial_stressfield. The initial state now takes into account the
data_type::initialdisplacement vector and this new
- Fatal errors with out-of-core management (
data_type::G_requested_memoryupon exit (was always equal to
data_type::G_assemble_timeupon exit (was always equal to
data_type::K_assemble_time(and similar) renamed
- solver_Newmark_linear renamed solver_Newmark as it now allows updates of the stiffness matrix (useful only in the non-linear cases).
- New parameters for the
double E_energy(current elastic energy).
double P_energy(current potential energy).
double duNorm(max norm of the increment solution).
double fNorm(max norm of the residual).
double dE(change of elastic energy).
the_DOFs_mgrremoved from members
get_vectors(was not used indeed).
- The default number of threads for each CM2 solver is now set to the number of _physical_ processors, or the
omp_get_max_threadsvalue whatever the lowest.