CM2 FEM® Engines /release 4.3.0
- 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
/caveats
- Lib names suffix is
_43
for 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).
/new features
law_shell_orthotropic
- Can now be initialized also with a mid-surface offset (
init
with 16 parameters, to be consistent withfem::law_shell_StVenant
).
contact_contact, contact_cylinder, contact_sphere
- New optional penalty parameter
En
(default =DBL_MAX
) to reduce the penalty parameter (the smallest value betweenEn
and the default context penalty is used).
contact_cylinder, contact_sphere
- New optional
stabilize_flag
(default =true
) to remove the geometric stiffness when negative (happens only withradius > 0
).
solver_response_spectrum::data_type
- 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)
- New
settings_type::K_update_period
to 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 isK_update_period = 0
(compute and factorize K only at time =t0
and keep this matrix for all the time steps, as in prior versions of CM2 FEM).
solver_static_Newton
- New output vector
data_type::elastic_energies
for elastic energies after each step.
FEM_matrix, FEM_Zmatrix
- New member
set_vector
.
Miscellaneous
- RTTI enabled (except Math1 vector and matrix classes).
- Mechanical model classes: default constructors added.
/improvements
All solvers
- 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_modal
,fem::solver_modal_LDRV
,fem::solver_buckling_Euler
) and onfem::solver_static_linear
with 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.
solver_response_spectrum, solver_condensation_static
- Partial parallelization.
Miscellaneous
- Port to Visual Studio 2017.
- Doc clarifications.
/fixes
All solvers
- Degenerated elements in a mesh caused a crash. Now a
FEM_MESH_ERROR
is raised. - 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 newdata_type::initial_stress
field. The initial state now takes into account thedata_type::initial
displacement vector and this newdata_type::initial_stress
.
solver_modal_gyroscopic
- Fatal errors with out-of-core management (
CM2_SYSTEM_MEMORY_ERROR
or crash). - Erroneous
data_type::G_requested_memory
upon exit (was always equal todata_type::M_requested_memory
). - Erroneous
data_type::G_assemble_time
upon exit (was always equal todata_type::M_assemble_time
).
/breaking changes
All solvers
- Type
operating_mode_type
renamedsettings_type
. - Field
mode
renamedsettings
. data_type::K_assemble_time
(and similar) renameddata_type::K_assembly_time
.
solver_Newmark_linear
- solver_Newmark_linear renamed solver_Newmark as it now allows updates of the stiffness matrix (useful only in the non-linear cases).
See below.
solver_static_Newton
- New parameters for the
watch_handler_type
: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).
FEM_matrix, FEM_Zmatrix
- Parameter
the_DOFs_mgr
removed from membersget_vector
andget_vectors
(was not used indeed).
Miscellaneous
- The default number of threads for each CM2 solver is now set to the number of _physical_ processors, or the
omp_get_max_threads
value whatever the lowest.
Seecm2::context::set_max_threads
.