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®).
  • 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).

/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 can be disabled (return to equal increments) when the above factors are set to 1.
    Automatic pseudo-time stepping also works with Displacement-Control.
  • 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) an 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.
    These p-delta corrections are 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 ply laws considered in their elastic state).
  • The constructors and initialisation members can now accept full multipliers on the diagonal terms 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 resultant matrix (diagonal terms only).

law_shell_solid

  • The constructors and initialisation members can now accept full multipliers on the diagonal terms 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 (with 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 previous Von-Mises behaviours 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).

/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

  • When smoothing element by element, another 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 when offset in the constitutive law (again).

Thermal analysis

  • The conductivity 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 all thermal models: model_heat_conduction_1d, model_heat_conduction_2d, model_heat_conduction_3d,
    model_heat_capacity_1d, model_heat_capacity_2d, model_heat_capacity_3d,
    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.

/breaking changes

solver_static_Newton

  • The default value for the settings_type::output_period has changed from 1 to 0.
    This implies that the intermediary solutions (snapshots) are no longer saved at each time step but now only at the final time step.
    Set output_period = 1 to recover 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 ssettings_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) and their order have changed in the initialisation functions (constructors and init members).