The Plastic3DBA class creates a triaxial material class. The underlying model is a total stress bounding surface plasticity model with vanishing elastic region. The rate of the constitute equation has the form of:
\[ \dot{\sigma} = K\text{tr}(\dot{\epsilon})\textbf{1} + 2\mu (1+\frac{3\mu}{H'})^{-1}\dot{\epsilon}' \nonumber \]
where \(\sigma\) and \(\epsilon\) are stress and strain tensors, respectively and \(\epsilon'\) is the deviatoric strain tensor. \(K\) is the elastic bulk modulus, \(\mu\) is the shear modulus, \(H'\) is the hardening function, \(\textbf{1}\) is rank two identity tensor, and tr is the trace operator.
The hardening function is defined as:
\[ H' = h\kappa^m \nonumber \]
where \(h\) is a modulus parameter that controls the rate of shear stiffness reduction, and \(m\) is a dimensionless quantity that controls the shape of the secant modulus as function of the strain. \(\kappa\) is a dimensionless scalar quantity that satisfies
\[ ||\sigma'+\kappa (\sigma' - \sigma'_0) || = R \nonumber \]
where \(\sigma'\) is the deviatoric stress and \(\sigma'_0\) is the stress at a point where the material experience the most recent elastic unloading. \(R\) is the radius of the the Mises cylinder about the hydrostatic axis and can be related to the undrained shear strength $S_u$ as follows:
\[ R = \sqrt{8/3}S_u \nonumber \]
The symmetric consistent tangent stiffness is
\[ \mathbb{C} = K\textbf{1}\otimes\textbf{1} + \psi \left(\textbf{I}-\frac{1}{3}\textbf{1}\otimes\textbf{1} \right) \nonumber \]
where \(\psi\) is a positive scalar defined such that \(\Delta \sigma' = \psi \Delta \epsilon'\).
REFERENCE:
The python Pre-Analysis in the 01-Pre_Process/Method/Attach.py file provides with an interface to populate the Entities
dictionary. This file contains several functions to populate specific fields. For example, to create a Plastic3DBA material using json format, use:
addMaterial(tag, name='Plastic3DBA', attributes):
Example
A PLASTIC3DBA material can be defined using the python interface as follows:
SVL.addMaterial(tag=1, name='Plastic3DBA', attributes={'K': 100.0, 'G': 20.0, 'h': 50E5, 'm': 1.5, 'Su': 50E5})
Application
Please refer to the J04-DY_Lin_3DPointLoad_BA_Hexa8.py file located at 03-Validations/01-Debugging/ to see an example on how to define a Plastic3DBA material.
On the contrary, the 01-Pre_Process/Method/Remove.py file provides with an interface to depopulate the Entities
dictionary. For example, to remove an already define Material, use:
The C++ Run-Analysis in the 02-Run_Process/02-Materials/02-NonLinear/Plastic3DBA.cpp file provides the class implementation. A Plastic3DBA material is created using the built-in json parse-structure provided in the Driver.hpp. A Plastic3DBA is defined inside the "Materials" json field indicating its "Tag" as follows,
{ "Materials": { "Tag": { "name" : "PLASTIC3DBA", "attributes": { "K": double, "G": double, "rho": double, "h": double, "m": double, "Su": double, "beta": double } } } }
Variable | Description |
---|---|
Tag | Unique material object identifier. |
K | Represents the bulk modulus. |
G | Represents the shear modulus. |
rho | Represents the material density. |
h | Exponential hardening modulus parameter. |
m | Exponential hardening modulus parameter. |
Su | Undrained shear strength. |
beta | Integration parameter between 0.0 (explicit) and 1.0 (implicit). |
A triaxial PLASTIC3DBA material with bulk modulus 100, shear modulus 20, density 2000 is defined as:
{ "Materials": { "1": { "name" : "PLASTIC3DBA", "attributes": { "K": 100.0, "G": 20.0, "rho": 2000.0, "h": 50E5, "m": 1.5, "Su": 50E5, "beta": 0.5 } } } }