You can do a lot with UniaxialMaterials in OpenSees–springs, fibers, trusses, section aggregators, etc. Although over 130 UniaxialMaterials are available, it’s likely that only about a dozen see regular use.
So, with all due respect to Concrete23, my favorite regular is HardeningMaterial. It’s straight out of Simo and Hughes and was the example material for the first installment of How to Add a UniaxialMaterial to OpenSees.
Instead of going through the details of adding a UniaxialMaterial to OpenSees, I would like to demonstrate a common calibration exercise between HardeningMaterial, which is defined by isotropic and kinematic hardening moduli, and other elastoplastic materials like Steel01, whose elastoplastic behavior is defined by a hardening ratio.
The issue is that the hardening ratio times the initial stiffness of Steel01 (or similar model) is not equal to the hardening modulus of HardeningMaterial. Assuming all kinematic hardening, a tension test of these two materials is shown below.
Then, equating the post-yield slopes gives
Solving for b gives . Going the other way, solving for Hk gives . For small values of b, bE and Hk are about the same.
There’s no need for offline calculations–use expressions in Python or Tcl to make the conversions. Just make sure b is not equal to 1.0.
# Tcl set E 29000 set b 0.01 set Hk [expr $b*$E/(1-$b)] # Python E = 29000 b = 0.01 Hk = b*E/(1-b)
For the case of combined isotropic and kinematic hardening, the post-yield stiffness for HardeningMaterial becomes . You, the modeler, get to decide how much isotropic hardening to use relative to kinematic hardening.