Skip to content

[GeoMechanicsApplication] Modify the Coulomb model such that it accepts sigma and tau as well as principal stresses #14180

@avdg81

Description

@avdg81

So far, yield surfaces had an interface in terms of Vectors, which didn't allow for distinguishing between principal stresses, $\sigma$ and $\tau$, and $p$ and $q$. Now that we (almost) have our hands at classes that represent these stress invariants, we can rewrite the Coulomb model in terms of these new classes. We can largely follow the prototype that was created earlier, see the branch geo/14156-prototype-of-coulomb-model-with-several-stress-state-types.

Required changes

  • Replace member function CoulombWithTensionCutOffImpl::IsAdmissibleSigmaTau by two overloads IsAdmissibleStressState, where one overload receives a SigmaTau object, and the other one a PrincipalStresses object. Under the covers, they will call the same template member function.
  • Replace member function CoulombWithTensionCutOffImpl::DoReturnMapping by two overloads DoReturnMapping, where one overload receives a SigmaTau object, and the other one a PrincipalStresses object. Under the covers, they will call the same template member function.
  • As for the previous two member functions, also create pairs of overloads for the following member functions:
    • CalculateCornerPoint
    • ReturnStressAtTensionApexReturnZone
    • ReturnStressAtTensionCutoffReturnZone
    • ReturnStressAtRegularFailureZone
  • The member functions IsStressAtTensionApexReturnZone, IsStressAtTensionCutoffReturnZone, IsStressAtCornerReturnZone, CalculatePlasticMultiplier, and CalculateEquivalentPlasticStrainIncrement need to be rewritten, receiving a SigmaTau object only.
  • The Coulomb yield surface needs to be extended with overloads for YieldFunctionValue, DerivativeOfFlowFunction, and CalculateEquivalentPlasticStrainIncrement. The first one requires two overloads (one receiving a SigmaTau object, and another one a PrincipalStresses object). The second overload only requires an overload that receives a SigmaTau object. And the third overload needs to receive a PrincipalStresses object. Similar changes are needed for the tension cut-off.
  • Constitutive laws InterfaceCoulombWithTensionCutOff and MohrCoulombWithTensionCutOff need minor changes to connect them to the new API.
  • Add a new static member function to and modify some existing members of class StressStrainUtilities: CalculatePrincipalStressesAndRotationMatrix (new), TransformPrincipalStressesToSigmaTau (modify), and TransformSigmaTauToPrincipalStresses (modify).

We need to add new unit tests for the new public API (not done on the prototype branch). In a few existing unit tests, the types need to be changed (using SigmaTau and PrincipalStresses rather than Vector).

Recall that the majority of the work has already been done on the prototype branch, so we don't need to start from scratch.

Metadata

Metadata

Assignees

Labels

GeoMechanicsIssues related to the GeoMechanicsApplication

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions