OpenSees Cloud

OpenSees AMI

J2 Plasticity Parameters

Original Post - 05 Jan 2025 - Michael H. Scott

Visit Structural Analysis Is Simple on Substack.


Ed “C++” Love wrote the J2Plasticity model in the early days of OpenSees because he needed a nonlinear constitutive model for testing his ShellMITC4 implementation. As far as I know, J2Plasticity was the first multi-axial plasticity model added to OpenSees–or at least the first among models that are relevant today.

As shown in the documentation, the elastic response of J2Plasticity is defined by bulk modulus, K, and shear modulus, G. Although these parameters align with the implementation based on volumetric and deviatoric stresses, they are a cumbersome choice for user inputs compared to elastic modulus, E, and Poisson ratio, \(\nu\). Maybe Ed didn’t realize he could let the user input E and \(\nu\), then have the constructor compute K and G. No big deal.

I’ve seen far worse though, like when the author of ConfinedConcrete23 didn’t realize they could overload the constructor of Concrete23. Instead, the author created a whole new class with massaged input parameters and identical state determination.

Anyway, converting to bulk and shear modulus is easy.

\[{\displaystyle K=\frac{E}{3(1-2\nu)}}\] \[{\displaystyle G = \frac{E}{2(1+\nu)}}\]

Ed’s implementation of J2Plasticity includes both linear and exponential isotropic strain-hardening as a function of accumulated plastic strain, \(\xi\),

\[q(\xi)=\sigma_y + H\xi + (\sigma_{\infty}-\sigma_y)e^{-\delta\xi}\]

where \(\sigma_y\) is the initial yield stress and \(\sigma_{\infty}\) is the saturation yield stress. The parameter \(\delta\) controls the exponential transition from initial to saturation yield. The hardening modulus H controls the amount of linear strain-hardening.

Typical values for \(\delta\) are shown in the stress-strain plots below for uniaixal tension with E=29,000 ksi, \(\nu\)=0.3, \(\sigma_y\)=50 ksi, and \(\sigma_{\infty}\)=65 ksi, and H=0.

delta values for J2Plasticity

Larger values of \(\delta\) will give a faster transition from initial to saturation yield stress.

To turn off exponential strain-hardening, set \(\sigma_{\infty}=\sigma_y\), then you will be left with only the linear strain-hardening term, H, in the hardening function. A range of linear strain-hardening values are shown below with E=29,000 ksi, \(\nu\)=0.3 and \(\sigma_y\)=\(\sigma_{\infty}\)=50 ksi, where \(\alpha=H/(E+H)\), or \(H=E\alpha/(1-\alpha)\) for uniaxial tension, as explained in this post.

H values for J2Plasticity

Although not shown here, you can combine exponential and linear strain-hardening using \(\sigma_{\infty} > \sigma_y\) and H > 0.

Note that the J2Plasticity model does not include kinematic hardening, so the model may not be suitable for simulating the cyclic response of steel members. In addition to the uniaxial stress-strain response shown in this post, the J2Plasticity model can be used in solid elements (bricks, tets, quads), layered shell sections, and beam fiber sections.