Because the C++ implementation is a straight translation of his FEDEAS subroutine written in FORTRAN, Prof. Filippou receives numerous inquires on the formulation of HystereticMaterial in OpenSees.
According to the comments in the FORTRAN files, the bilinear backbone implementation (
Hyster1.f) was finalized on November 24, 1994 followed by a trilinear backbone implementation (
Hyster2.f) finalized on April 21, 1995.
The comments refer to stress-strain and moment-rotation, reminding us that the use of uniaxial material models in various contexts was not new to OpenSees.
The backbone is straightforward and the pinching parameters are described in a previous post and the links therein. The hysteresis behaviors for unloading and reloading are similar to the Takeda model (thank you, Gustavo, for sending me the paper). The remaining question marks are the three degradation parameters:
beta parameter, added after translating
Hyster2.f to C++, is based on the Takeda unloading rule where the unloading stiffness is reduced as a function of the maximum strain/deformation ductility, . In Equation 1 of the Takeda et al paper, the factor is hard coded to 0.4, but the beta parameter generalizes the unloading stiffness in OpenSees
where is the initial stiffness. Hysteresis for various values of
beta are shown below.
Prof. Filippou describes
damfc2 as “somewhat ad-hoc damage parameters” he inserted into the FEDEAS model. These parameters account for degradation of the reloading stiffness, effectively strength degradation, something that was missing from the original Takeda model.
damfc2 increase the target strain on one side of the envelope when unloading from the opposite side.
The first damage factor,
damfc1, increases the target strain based on maximum ductility, , as shown below for three values of with .
Likewise, the second damage factor,
damfc2, increases the target strain based on dissipated energy, , where is the area under the backbone functions and is the dissipated energy at the current time step. The curves below use and a range of values.
As shown in the cyclic responses above, both damage parameters produce in-cycle degradation.
I’ve glossed over several important, i.e., tedious, details on ductility for positive and negative strain, which conditions trigger the damage calculations, and how the dissipated energy is accumulated. For more information, take a look at the C++ source code for
HystereticMaterial.cpp, which is fairly straightforward.
Dr. Silvia Mazzoni generated the response of HystereticMaterial to various strain histories with a few combinations of damage parameters for one of the OG “pre-wiki” documentation pages. Try these cyclic analyses for yourself and vary the damage parameters to see what works for your model.