CM2 FEM® SDK /release 5.7.0 Preview 1

by | Mar 4, 2026

  • 5.7.0 Preview 1
  • March 2026.
  • 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 now end with _57 (Windows®), 5.7.0 with symlinks from 5.7 (Linux®, macOS®).
  • New Visual Studio 2026 builds.
  • Visual Studio 2017 deprecated.
  • Last version with Visual Studio 2010 builds.
  • The Visual Studio 2015 builds shall be the legacy/oldest builds for the next series (5.8) and beyond.

/new features

solver_static_Newton

  • New automatic pseudo-time stepping.
    To help convergence in difficult cases (highly non-linear systems), the solver can automatically reduce the pseudo-time increment (settings_type::dt) or on the opposite, increase it in easy cases to reach the final time faster.
    The ratios settings_type::dt_cutback_factor (default = 0.25) and settings_type::dt_increase_factor (default = 1.50) together with the bounds settings_type::dt_min and settings_type::dt_max can be used to control the stepping.
    Automatic pseudo-time stepping also works with Displacement-Control.
    To disable automatic pseudo-time stepping and return to equal increments set the above factors to 1.
  • data_type::potential_energies array (similar to data_type::elastic_energies) to give the potential energies associated to the solution snapshots.
    Potential energy (usually negative) = elastic energy – work of external forces.

post_processor_1d

  • New p-delta corrections based on an iterative scheme with additional ‘p-delta’ momentums (products of the axial force with the deflections).
    These p-delta corrections provide a cost-effective way to get some basic non-linear effects even with linear 2-node beams.
    But note that they usually don’t respect static equilibrium at the nodes (with other connected beams) and don’t account for all geometric non-linearities.
    For static equilibrium and higher accuracy, use fully non-linear beams (model_beam_gnl) and a non-linear solver (solver_static_Newton), meshed segments (at least two elements along each segment) and preferably high-order elements such as CM2_EDGE4.
    Theses p-delta corrections are computed (can be disabled) for linear and non-linear beams models. Null for rods.

law_shell_laminated

  • New member get_integrated_elasticity_matrix to retrieve the elasticity matrix integrated through all plies (all considered in their elastic state).
  • The constructors and initialisation members can now accept multipliers on each diagonal term of the elasticity matrix (multipliers vector of size 8).
    Previously only two transverse-shear factors could be specified.
    Now multipliers can also be specified on the membrane terms and on the bending terms of the elasticity matrix (diagonal terms only).

law_shell_solid

  • The constructors and initialisation members can now accept multipliers on each the diagonal term of the elasticity matrix (multipliers vector of size 8). Same as above for fem::law_shell_laminated.

Elasto-plasticity

  • The former Von-Mises laws have been expanded into Drucker-Prager (associated) laws with an additional beta parameter on the hydrostatic/trace part of the stress tensor (causing some parameters order changes in the initialisation functions, see Breaking Changes below):
    • Scalar laws: law_scalar_ep_perfect, law_scalar_ep_piecewise_linear, law_scalar_ep_power and law_scalar_ep_RambergOsgood.
    • 1-D laws: law_spring_ep_perfect, law_spring_ep_piecewise_linear, law_spring_ep_power and law_spring_ep_RambergOsgood.
    • 3-D laws: law_solid_ep_perfect, law_solid_ep_piecewise_linear, law_solid_ep_power and law_solid_ep_RambergOsgood.

    The Von-Mises behaviour can be retrieved by setting the beta parameters to 0.
    We recall that on top of solid models, all 3-D laws can be used with axi-3d, axi-torsion, plane-strains and plane-stresses (i.e. plate/shell/laminates) models.

Thermal analysis

  • New solver_reactions_heat to compute heat flow imbalances (similar to solver_reactions to compute force/momentum imbalances in mechanical problems).
  • The conductivity/capacity/convection laws (scalar) was considered constant (independent of the temperature).
    Now, you can use law_scalar_nl or law_scalar_power as temperature-dependent conductivity laws in thermal models model_heat_conduction_1d, model_heat_conduction_2d, model_heat_conduction_3d, capacity laws in
    model_heat_capacity_1d, model_heat_capacity_2d, model_heat_capacity_3d and convection laws in model_heat_convection_1d and model_heat_convection_2d.
    Note however that with no thermal non-linear solver available so far, this feature is only useful with successive static linear thermal analyses with updated initial temperature solutions.

/improvements

Elasto-plasticity

  • Very significant improvements in the convergence speed of solver_static_Newton (number of iterations divided by 2 or more) with elasto-plastic plates/shells/laminates models.

/fixes

solver_least_squares

  • Smoothing element by element in elasto-plastic models could trigger a quadratic time complexity with respect to the total number of elements in the model (instead of linear complexity).
    Similar to the fix in 5.5.2, but this time specific to models with elasto-plastic constitutive laws.

solver_reactions, solver_stress_1d

  • Bug with data_type::load_factors.

post_processor_1d

  • Errors in deflection/rotation diagrams on beams with momentums (punctual, uniform, trapeze).

law_shell_solid, law_shell_laminated

  • Bug with thermal loads.
  • Convergence at local Gauss points could fail.

law_beam_StVenant

  • Error on loads with offset in the constitutive law (again).

/breaking changes

solver_static_Newton

  • The default value for the settings_type::output_period has changed from 1 to 0.
    This implies that the solution is no longer stored at each time step but now only at the final time step.
    Set output_period = 1 to get back the previous behaviour.

  • The convergence criterion on energy has changed from elastic energy to potential energy and the setting name settings_type::tol_E has been replaced with settings_type::tol_J.
  • The convergence thresholds settings_type::tol_U, settings_type::tol_F and
    settings_type::tol_J (former settings_type::tol_E) have been relaxed from 1E-6 to 1E-5.
    The former values appeared to be unnecessary too stringent (especially when elasto-plasticity is involved).
    A few Newton iterations can be saved with these relaxed thresholds (sometimes more when elasto-plasticity is involved).
    For the same reason, the settings_type::min_E value has been relaxed from 1E-12 to 1E-10.

Elasto-plasticity

  • The number of expected parameters (one additional beta parameter for Drucker-Prager behaviour) and their order have changed in the initialisation functions (constructors and init members).