OpenSees Cloud
OpenSees AMI
Hysteretic Damage Parameters
Original Post - 17 Apr 2022 - Michael H. Scott
Visit Structural Analysis Is Simple on Substack.
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: damfc1
, damfc2
, and beta
.
The 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, \(\mu\). 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 Eo is the initial stiffness. Hysteresis for various
values of beta
are shown below.
Prof. Filippou describes damfc1
and 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.
Both damfc1
and 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, \(d=d_1(\mu-1)\), as shown below for three values
of d1 with d2=0.
Likewise, the second damage factor, damfc2
, increases the target strain
based on dissipated energy, \(d=d_2(\chi_d/\chi_a)\), where \(\chi_a\)
is the area under the backbone functions and \(\chi_d\) is
the dissipated energy at the current time step. The curves below use
d1 and a range of d2 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.