-
Notifications
You must be signed in to change notification settings - Fork 286
Description
So far, yield surfaces had an interface in terms of Vectors, which didn't allow for distinguishing between principal stresses, geo/14156-prototype-of-coulomb-model-with-several-stress-state-types.
Required changes
- Replace member function
CoulombWithTensionCutOffImpl::IsAdmissibleSigmaTauby two overloadsIsAdmissibleStressState, where one overload receives aSigmaTauobject, and the other one aPrincipalStressesobject. Under the covers, they will call the same template member function. - Replace member function
CoulombWithTensionCutOffImpl::DoReturnMappingby two overloadsDoReturnMapping, where one overload receives aSigmaTauobject, and the other one aPrincipalStressesobject. 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:
CalculateCornerPointReturnStressAtTensionApexReturnZoneReturnStressAtTensionCutoffReturnZoneReturnStressAtRegularFailureZone
- The member functions
IsStressAtTensionApexReturnZone,IsStressAtTensionCutoffReturnZone,IsStressAtCornerReturnZone,CalculatePlasticMultiplier, andCalculateEquivalentPlasticStrainIncrementneed to be rewritten, receiving aSigmaTauobject only. - The Coulomb yield surface needs to be extended with overloads for
YieldFunctionValue,DerivativeOfFlowFunction, andCalculateEquivalentPlasticStrainIncrement. The first one requires two overloads (one receiving aSigmaTauobject, and another one aPrincipalStressesobject). The second overload only requires an overload that receives aSigmaTauobject. And the third overload needs to receive aPrincipalStressesobject. Similar changes are needed for the tension cut-off. - Constitutive laws
InterfaceCoulombWithTensionCutOffandMohrCoulombWithTensionCutOffneed 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), andTransformSigmaTauToPrincipalStresses(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.