KratosMultiphysics / Kratos

Kratos Multiphysics (A.K.A Kratos) is a framework for building parallel multi-disciplinary simulation software. Modularity, extensibility and HPC are the main objectives. Kratos has BSD license and is written in C++ with extensive Python interface.
https://kratosmultiphysics.github.io/Kratos/
Other
1.03k stars 244 forks source link

[GeoMechanicsApplication] Investigate the UPw elements and identify a more suitable structure #12057

Closed rfaasse closed 8 months ago

rfaasse commented 8 months ago

Image

Image

Geometrically nonlinear behaviour

There are six element classes that consider geometrically nonlinear behaviour by adopting the Updated Lagrange (UL) Formulation:

  1. UPwUpdatedLagrangianElement
  2. UPwUpdatedLagrangianAxisymmetricElement
  3. UPwUpdatedLagrangianFICElement
  4. UPwUpdatedLagrangianAxisymmetricFICElement
  5. UpdatedLagrangianUPwDiffOrderElement
  6. UpdatedLagrangianUPwDiffOrderAxisymmetricElement

Due to how the element classes are related through inheritance, certain parts of the code have been duplicated with only minor modifications. These duplications and differences are detailed below.

UPwUpdatedLagrangianElement

This class derives from class UPwSmallStrainElement and it overrides the following relevant member functions:

UPwUpdatedLagrangianAxisymmetricElement

This class derives from UPwUpdatedLagrangianElement (see the previous section). It appears this class only overrides member functions that need different behaviour to account for the axisymmetric stress state. In other words, when it comes to geometrically nonlinear behaviour, it exhibits the exact same behaviour as its base class (and no code was duplicated to achieve that).

UPwUpdatedLagrangianFICElement

This class derives from class UPwSmallStrainFICElement and it is not related to class UPwUpdatedLagrangianElement. It overrides the following relevant member functions:

UPwUpdatedLagrangianAxisymmetricFICElement

This class derives from class UPwUpdatedLagrangianFICElement (see the previous section). As for class UPwUpdatedLagrangianAxisymmetricElement, this class appears to only override member functions that need different behaviour to account for the axisymmetric stress state. In other words, when it comes to geometrically nonlinear behaviour, it exhibits the exact same behaviour as its base class (and no code was duplicated to achieve that).

UpdatedLagrangianUPwDiffOrderElement

This class derives from class SmallStrainUPwDiffOrderElement and it overrides the following relevant member functions:

UpdatedLagrangianUPwDiffOrderAxisymmetricElement

This class derives from class UpdatedLagrangianUPwDiffOrderElement (see the previous section). As for class UPwUpdatedLagrangianAxisymmetricElement, this class appears to only override member functions that need different behaviour to account for the axisymmetric stress state. In other words, when it comes to geometrically nonlinear behaviour, it exhibits the exact same behaviour as its base class (and no code was duplicated to achieve that).

rfaasse commented 8 months ago

As discussed, this ticket has resulted in 4 issues for further steps:

  1. 12061

  2. 12067

  3. 12068

  4. 12069

Since the high-level plan is clear, we close this issue.