CM2 FEM® SDK /release 5.4.0

by | Jul 6, 2023

  • 5.4.0
  • July 2023.
  • 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 _54 (Windows), 5.4.0 with symlinks from 5.4 (Linux, macOS).
  • Win32 and Linux x86-32 builds deprecated. Builds no longer provided.
  • Visual Studio 2013 deprecated. Builds no longer provided.
  • MacOS Intel x86-64 deprecated. Builds no longer provided. Use the universal builds instead.

/new features

All CM2 FEM classes

  • Smart pointers have been removed from the fem interface (see Breaking Changes below).
    This makes conversions (up-casts) and (down-casts) simpler (and more reliable).
    For instance, to test whether a numerical model is a composite or not:

    fem::numerical_model_base NMi(NM_mgr.get_NM(0)); // Get the first numerical model in the manager.
    if (fem::numerical_model_composite(NMi).is_valid())
    ... // Cast is fine. NMi is a composite.
    else
    ... // Cast failed. NMi isn't a composite.

    See fem::base_class.
  • New heat convection models (fem::model_heat_convection_1d, fem::model_heat_convection_2d and fem::numerical_model_heat_convection).
    Supported types of elements: CM2_EDGE2, CM2_EDGE3, CM2_FACET3, CM2_FACEQ4, CM2_FACET6 and CM2_FACEQ9.
  • New fem::heat_convection_punctual for heat convection concentrated on a node.
  • New fem::heat_capacity_punctual for heat capacity concentrated on a node.
  • New fem::numerical_model_base::ID() member (similar to get_ID()).
  • New constructors with scalar and scalar copy methods for fem::FEM_matrix and fem::FEM_Zmatrix.
  • New simplified constructors for elementary_load (DERIV_0, UNIFORM, global_basis = true).

/improvements

Plane-strain models

  • New formulations in model_plane_strain_lin and model_plane_strain_gnl, with CM2_FACEQ4 elements (based on `2D-MITC4` by L. Ko, P.S. Lee, K.J. Bathe, H.G. Choi).
    These new formulations improve the (in-plane) shear behaviour of quadrangle elements (especially when distorted) leading to more accurate solutions (or same accuracy with less elements).

Membrane models

  • New formulations in model_membrane_lin and model_membrane_gnl, with CM2_FACEQ4 elements (based on `Improved MITC4+` by L. Ko, P.S. Lee, K.J. Bathe, H.G. Choi).
    These new formulations also improve the membrane shear behaviour of quadrangle elements as in the 2D models but also alleviate the membrane shear locking phenomenon (when the quadrangles are initially warped).

Shell models

  • New model_shell_lin and model_shell_gnl, with CM2_FACEQ4 elements (based on `Improved MITC4+` by L. Ko, P.S. Lee, K.J. Bathe, H.G. Choi).
    These new formulations also improve the membrane shear behaviour of quadrangle elements as in the membrane models above.
    The computational costs (in term of assembly times) of these new formulations isn’t significantly higher than before (less than 2%) but the accuracy is usually much better, especially for distorted/warped elements (or same accuracy with less elements).
  • New shell drilling formulation for shells (linear and non-linear).
    The new drilling formulation couples the normal rotations with the in-plane displacements, whereas the former one was only a stiffness on nodal rotation DOFs.
    For linear shells, the advantages are:

    • Lighter dependency upon the raw drilling shell factor (now raised to 1E-3, see Breaking Changes below).
    • Better conditioning of the stiffness matrices.

    For non-linear shells, the additional advantage are:

    • Fewer spurious (artificial) instabilities.
    • Better convergence of the Newton solver.

Miscellaneous

  • Clean-ups and many test cases rewritten.
  • Doc fixes, update of the manuals, update of the tutorials.

/fixes

All CM2 FEM classes

  • The removal of smart pointers (see Breaking Changes below) and new conversion constructors fix some annoying conversion issues.

solver_least_squares

  • Regression in 5.3 vs. 5.2: issues with FEM_ELEMENT_BASIS.

solver_buckling_Euler

  • Bug when a Sturm sequence was required (i.e. with a finite search range).

solver_modal

  • Convergence issues when a Sturm sequence was required (i.e. with a finite search range).

solver_condensation_static

  • Bug in data_type::Fc with initial strains, initial stresses or thermal stresses.

stress_mgr

  • Serious performance issues.

/breaking changes

  • Smart pointers have been removed from the fem interface.
    This means that for instance fem::numerical_model_composite::get_NM doesn’t return a
    Ptr<fem::numerical_model_base> anymore but now a bare fem::numerical_model_base.
    Or fem::numerical_model_base::get_physics_model doesn’t return a
    Ptr<fem::physics_model_base> anymore but now a bare fem::physics_model_base.
    👉 Pointer operator (->) accesses should be replaced with operator (.) accesses.
  • New shell drilling formulation for shells.
    Default raw shell drilling factor for shells changed from 1E-6 to 1E-3.
    Results involving shells may exhibit some small changes vs. 5.3.
  • solver_static_Newton::data_type::DC_factors renamed solver_static_Newton::data_type::DC_load_factors.