CM2 FEM® SDK /release 5.3.0 Preview 2

by | Oct 7, 2022

  • 5.3.0 Preview 2
  • October, 2022.
  • 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 suffix is _53 for this series.
  • MacOS builds are now universal (support both x86-64 and Apple silicon arm64 architectures).
  • Last version with Visual Studio 2013 builds (deprecated and no longer be supported in future versions).
  • Last version with Win32 and Linux x86-32 builds (deprecated and no longer be supported in future versions).

/new features

stress_mgr

  • Manages not only the thermal strains/loads (stress_mgr::set_thermal_load) as before but now also the initial strains (stress_mgr::set_initial_strains) and the initial stresses (stress_mgr::set_initial_stresses).
    Note that initial strains (aka. pre-strains) are removed from the constitutive laws (see breaking changes below).
    On top of now allowing initial stresses, this fixes several bugs when initial strains were used together with thermal loads or with prescribed displacements (the initial strains were silently discarded).
    Moreover, as there is one stresses manager per load case, different initial strains/stresses are now possible on different load cases.
    Initial strains, stresses and thermal strains can be used together with cumulative effects (additional effects on linear models).
    Initial strains, stresses and thermal strains can be set on whole models (simple non-composite mechanical models) or element by element (thermal strains/loads can also be set on node-by-node basis).
    Thermal strains/loads can be associated to a pseudo-time evolution function (time-dependent temperature).

solver_static_Newton

  • New Displacement-Control (DC) method (single DOF only). Useful for instance to pass so-called snap-through unstable points.
    With DC, the loads (all of them) are driven by a scalar load factor computed so that the value at the displacement-control DOF (solver_static_Newton::settings_type::DC_DOF) follows a user-defined curve (defined with loads_mgr::record_DOF_prescribed_value).

model_rod_gnl

  • Is now fully non-linear: large strains (Green-Lagrange) and large displacements.
    Used to be only small (Cauchy) strains and large displacements which is now supported by the new class model_rod_gnl1.

model_beam_lin, model_beam_gnl

  • New members set_simplified_Kg_flag and get_simplified_Kg_flag to control a new flag for the computation of the geometric stiffness matrix Kg:
    • false (the default): matrix Kg takes into account all forces (N, Q1, Q2) and all momentums (M1, M2, T).
      This allows for torsional buckling for instance.
    • true: matrix Kg takes only the axial force (N) into account (only axial load buckling).

FEM_Zstates

  • New class similar to FEM_states but for complex solutions.

FEM_Zmatrix

  • New real() (resp. imag()) member to return the real (resp. imaginary) part of the matrix as a FEM_matrix.

law_scalar_pow

  • New elastic power scalar constitutive law (no plasticity).

/improvements

solver_least_squares

  • Significant speed-ups (+25%) on shell element-by-element computations.

solver_modal, solver_modal_ldrv, solver_modal_gyroscopic, solver_buckling_models

  • Some speed-ups (up to +10%).

Miscellaneous

  • As usual, doc clean-ups, update of the manuals, update of the tutorials…

/fixes

All constitutive laws with initial strains (pre-strains)

  • The initial strains (aka. pre-strains) were silently discarded when used together with thermal loads or with prescribed displacements.

All solvers

  • The calls to the display handler for the info header miss the pass_thru parameter.

stiffness_diag, stiffness_sym, stiffness_sym_sparse, stiffness_sym_nl

  • Issues with code = 0 and ALM.

contact_plane, contact_cylinder, contact_sphere

  • Issues when lambda was very negative (but greater than -DBL_MAX).

solver_static_Newton

  • Some convergence improvements.

/breaking changes

All constitutive laws with initial strains (pre-strains)

  • Initial strains are removed from the law’s data.
    One should now use stress_mgr::set_initial_strains to set initial strains.

model_rod_gnl

  • Now fully non-linear: large strains (Green-Lagrange) and large displacements.
    The old class (small strains, large displacements) is renamed model_rod_gnl1.

solver_z_impedance

  • Type of data_type::outputs is changed from FEM_Zmatrix to FEM_Zstates (new class).

solver_modal, solver_modal_ldrv, solver_buckling_Euler

  • In case of finite range, these solvers used to prefer the modes near the middle of the range, possibly discarding modes at both extremities of the range.
    Now, the preferred modes are always the modes with lowest frequency or critical value magnitude.