NonlinearJ2
Nonlinear General J2 Plasticity Model
Summary
This is an abstract material class thus cannot be used directly. This class defines a general plasticity model using J2 yielding criterion with associated flow rule and mixed hardening rule. The isotropic/kinematic hardening response can be customized.
To use this model, a derived class shall be defined first.
The derived class only needs to implement four pure virtual methods that define the isotropic and kinematic hardening rules.
C++ | |
---|---|
All four methods take equivalent plastic strain as the input argument, on output, the corresponding quantities shall be provided.
The isotropic hardening function \(K(\bar\varepsilon_p)\) defines the isotropic hardening rule, there are some requirements:
- \(K(\bar\varepsilon_p)\) should be non-negative,
- \(K(\bar\varepsilon_p=0)=\sigma_y\) where \(\sigma_y\) is the initial yielding stress.
There is no requirement for the kinematic hardening function \(H(\bar\varepsilon_p)\). Both hardening rules can coexist. However, to successfully solve the trial status, there is an additional constraint that shall be applied on the model:
Otherwise, the local Newton iteration will fail.
Brief On Theory
The NonlinearJ2
abstract class defines an associative plasticity framework using the von Mises yield criterion, which
is defined as follows.
where \(\beta(\bar\varepsilon_p)\) is the back stress depends on the equivalent plastic strain \(\bar\varepsilon_p\) and \(\sigma_y(\bar\varepsilon_p)\) is the yield stress. Note
It is also called J2 plasticity model. A detailed discussion can be seen elsewhere. \(\beta(\bar\varepsilon_p)=H( \bar\varepsilon_p)\) and \(\sigma_y(\bar\varepsilon_p)=K(\bar\varepsilon_p)\).
History Layout
location | paramater |
---|---|
initial_history(0) |
accumulated plastic strain |
initial_history(1-6) |
back stress |
Kinematic Hardening
The back stress \(\beta(\bar{\varepsilon}_p)\) defines a kinematic hardening response. For example a linear kinematic hardening could be defined as:
and the derivative
in which \(E_K\) is the kinematic hardening stiffness.
In this case, user shall override the corresponding two methods with such an implmentation.
C++ | |
---|---|
Of course, a nonlinear relationship could also be defined.
Isotropic Hardening
The isotropic hardening is defined by function \(\sigma_y(\bar\varepsilon_p)\). The value \(\sigma_y(0)\) should be the initial yield stress. Also, for a bilinear isotropic hardening response, user shall override the following two methods.
C++ | |
---|---|
Here another polynomial based isotropic hardening function is shown as an additional example. The function is defined as
where \(a_i\) are material constants. It is easy to see \(\sigma_y|_{\bar\varepsilon_p=0}=\sigma_0\). The derivative is
To define such a hardening behavior, a vector shall be used to store all constants.
The methods could be written as follows.
Example
A few different models are shown as examples. User can define arbitrary models.