Hysteretic model

Hysteretic models are mathematical models capable of simulating the complex nonlinear behavior characterizing mechanical systems and materials used in different fields of engineering, such as aerospace, civil, and mechanical engineering. Some examples of mechanical systems and materials having hysteretic behavior are:
Hysteretic models may have a generalized displacement formula_1 as input variable and a generalized force formula_2 as output variable, or vice versa. In particular, in rate-independent hysteretic models, the output variable does not depend on the rate of variation of the input one.
Rate-independent hysteretic models can be classified into four different categories depending on the type of equation that needs to be solved to compute the output variable:
Algebraic models.
In algebraic models, the output variable is computed by solving algebraic equations.
Bilinear model.
Model formulation.
In the bilinear model formulated by Vaiana et al. (2018), the generalized force at time "t", representing the output variable, is evaluated as a function of the generalized displacement as follows:
 formula_3
 formula_4
where formula_5 and formula_6 are the three model parameters to be calibrated from experimental or numerical tests, whereas formula_7 is the sign of the generalized velocity at time formula_8, that is, formula_9. Furthermore, formula_10is an internal model parameter evaluated as:
 formula_11
whereas formula_12 is the internal variable:
 formula_13.
Hysteresis loop shapes.
Figure 1.1 shows two different hysteresis loop shapes obtained by applying a sinusoidal generalized displacement having unit amplitude and frequency and simulated by adopting the Bilinear Model (BM) parameters listed in Table 1.1.
Matlab code.
% June 2020
% Bilinear Model Algorithm
% Nicolò Vaiana, Research Fellow in Structural Mechanics and Dynamics, PhD 
% Department of Structures for Engineering and Architecture 
% University of Naples Federico II
% via Claudio, 21 - 80124, Napoli
clc; clear all; close all;
%% APPLIED DISPLACEMENT TIME HISTORY
dt = 0.001; %time step
t = 0:dt:1.50; %time interval
a0 = 1; %applied displacement amplitude
fr = 1; %applied displacement frequency
u = a0*sin((2*pi*fr)*t(1:length(t))); %applied displacement vector
v = 2*pi*fr*a0*cos((2*pi*fr)*t(1:length(t))); %applied velocity vector
n = length(u); %applied displacement vector length
%% 1. INITIAL SETTINGS
%1.1 Set the three model parameters
ka = 10.0; %model parameter
kb = 1.0; %model parameter
f0 = 0.5; %model parameter
%1.2 Compute the internal model parameters 
u0 = f0/(ka-kb); %internal model parameter
%1.3 Initialize the generalized force vector
f = zeros(1,n);
%% 2. CALCULATIONS AT EACH TIME STEP
for i = 2:n
%2.1 Update the history variable
uj = (ka*u(i-1)+sign(v(i))*f0-f(i-1))/(ka-kb);
%2.2 Evaluate the generalized force at time t
if (sign(v(i))*uj)-2*u0 < sign(v(i))*u(i) && sign(v(i))*u(i) < sign(v(i))*uj
 f(i) = ka*(u(i)-uj)+kb*uj+sign(v(i))*f0;
else
 f(i) = kb*u(i)+sign(v(i))*f0;
end
end
%% PLOT
figure
plot(u,f,'k','linewidth',4)
set(gca,'FontSize',28)
set(gca,'FontName','Times New Roman')
xlabel('generalized displacement'), ylabel('generalized force')
grid
zoom off
Asymmetric Bilinear model.
Model formulation.
In the asymmetric bilinear model formulated by Vaiana et al. (2020), the generalized force at time "t", representing the output variable, is evaluated as a function of the generalized displacement as follows:
 formula_3
 formula_4
where formula_16 and formula_17 are the three model parameters of the generic loading (unloading) case to be calibrated from experimental or numerical tests, whereas formula_7 is the sign of the generalized velocity at time formula_8, that is, formula_9. Furthermore, formula_10 is an internal model parameter evaluated as:
 formula_22
whereas formula_12 is the internal variable:
 formula_24
Matlab code.
% February 2021
% Asymmetric Bilinear Model Algorithm
% Nicolò Vaiana, Research Fellow in Structural Mechanics and Dynamics, PhD 
% Department of Structures for Engineering and Architecture 
% University of Naples Federico II
% via Claudio, 21 - 80124, Napoli
clc; clear all; close all;
%% APPLIED DISPLACEMENT TIME HISTORY
dt = 0.001; %time step
t = 0:dt:1.50; %time interval
a0 = 1; %applied displacement amplitude
fr = 1; %applied displacement frequency
u = a0*sin((2*pi*fr)*t(1:length(t))); %applied displacement vector
v = 2*pi*fr*a0*cos((2*pi*fr)*t(1:length(t))); %applied velocity vector
n = length(u); %applied displacement vector length
%% 1. INITIAL SETTINGS
%1.1 Set the six model parameters
kap = 5.0; %model parameter
kbp = 0.5; %model parameter
f0p = 0.75; %model parameter
kam = 15.0; %model parameter
kbm = 0.1; %model parameter
f0m = 0.25; %model parameter
%1.2 Initialize the generalized force vector
f = zeros(1,n);
%% 2. CALCULATIONS AT EACH TIME STEP
for i = 2:n
%2.1 Update the model parameters, the history variable, and the internal model parameter
if v(i)>0
 ka = kap; kb = kbp; f0 = f0p;
else
 ka = kam; kb = kbm; f0 = f0m;
end
uj = (ka*u(i-1)+sign(v(i))*f0-f(i-1))/(ka-kb);
if v(i)>0
 u0 = ((kbp-kbm)*uj+f0p+f0m)/(2*(kap-kbm));
else
 u0 = ((kbp-kbm)*uj+f0p+f0m)/(2*(kam-kbp));
end
%2.2 Evaluate the generalized force at time t
if (sign(v(i))*uj)-2*u0 < sign(v(i))*u(i) && sign(v(i))*u(i) < sign(v(i))*uj
 f(i) = ka*(u(i)-uj)+kb*uj+sign(v(i))*f0;
else
 f(i) = kb*u(i)+sign(v(i))*f0;
end
end
%% PLOT
figure
plot(u,f,'k','linewidth',4)
set(gca,'FontSize',28)
set(gca,'FontName','Times New Roman')
xlabel('generalized displacement'), ylabel('generalized force')
grid
zoom off
Animation.
The following gif shows the nonlinear response of a Single-Degree-Of-Freedom (SDOF) mechanical system, with unit mass and asymmetric rate-independent hysteretic behavior, subjected to an external random force. To simulate its response, the following ABM parameters have been used: formula_25.
Algebraic model by Vaiana et al. (2019).
Model formulation.
In the algebraic model developed by Vaiana et al. (2019), the generalized force at time formula_8, representing the output variable, is evaluated as a function of the generalized displacement as follows:
 formula_27
 formula_28
where formula_29, formula_30 and formula_31 are the five model parameters to be calibrated from experimental or numerical tests, whereas formula_7 is the sign of the generalized velocity at time formula_8, that is, formula_9. Furthermore, formula_10and formula_6 are two internal model parameters evaluated as:
 formula_37
 formula_38
whereas formula_12 is the internal variable:
 formula_40
Hysteresis loop shapes.
Figure 1.2 shows four different hysteresis loop shapes obtained by applying a sinusoidal generalized displacement having unit amplitude and frequency and simulated by adopting the Algebraic Model (AM) parameters listed in Table 1.2.
Matlab code.
% September 2019
% Algebraic Model Algorithm
% Nicolò Vaiana, Post-Doctoral Researcher, PhD 
% Department of Structures for Engineering and Architecture 
% University of Naples Federico II
% via Claudio, 21 - 80125, Napoli
clc; clear all; close all;
%% APPLIED DISPLACEMENT TIME HISTORY
dt = 0.001; %time step
t = 0:dt:1.50; %time interval
a0 = 1; %applied displacement amplitude
fr = 1; %applied displacement frequency
u = a0*sin((2*pi*fr)*t(1:length(t))); %applied displacement vector
v = 2*pi*fr*a0*cos((2*pi*fr)*t(1:length(t))); %applied velocity vector
n = length(u); %applied displacement vector length
%% 1. INITIAL SETTINGS
%1.1 Set the five model parameters
ka = 10.0; %model parameter
kb = 1.0; %model parameter
alfa = 10.0; %model parameter
beta1 = 0.0; %model parameter
beta2 = 0.0; %model parameter
%1.2 Compute the internal model parameters 
u0 = (1/2)*((((ka-kb)/10^-20)^(1/alfa))-1); %internal model parameter
f0 = ((ka-kb)/2)*((((1+2*u0)^(1-alfa))-1)/(1-alfa)); %internal model parameter
%1.3 Initialize the generalized force vector
f = zeros(1, n);
%% 2. CALCULATIONS AT EACH TIME STEP
for i = 2:n
%2.1 Update the history variable
uj = u(i-1)+sign(v(i))*(1+2*u0)-sign(v(i))*((((sign(v(i))*(1-alfa))/(ka-kb))*(f(i-1)-beta1*u(i-1)^3-beta2*u(i-1)^5-kb*u(i-1)-sign(v(i))*f0+(ka-kb)*(((1+2*u0)^(1-alfa))/(sign(v(i))*(1-alfa)))))^(1/(1-alfa)));
%2.2 Evaluate the generalized force at time t
if (sign(v(i))*uj)-2*u0 < sign(v(i))*u(i) || sign(v(i))*u(i) < sign(v(i))*uj
 f(i) = beta1*u(i)^3+beta2*u(i)^5+kb*u(i)+(ka-kb)*((((1+2*u0+sign(v(i))*(u(i)-uj))^(1-alfa))/(sign(v(i))*(1-alfa)))-(((1+2*u0)^(1-alfa))/(sign(v(i))*(1-alfa))))+sign(v(i))*f0;
else
 f(i) = beta1*u(i)^3+beta2*u(i)^5+kb*u(i)+sign(v(i))*f0;
end
end
%% PLOT
figure
plot(u, f, 'k', 'linewidth', 4)
set(gca, 'FontSize', 28)
set(gca, 'FontName', 'Times New Roman')
xlabel('generalized displacement'), ylabel('generalized force')
grid
zoom off
Transcendental models.
In transcendental models, the output variable is computed by solving transcendental equations, namely equations involving trigonometric, inverse trigonometric, exponential, logarithmic, and/or hyperbolic functions.
Exponential models.
Exponential model by Vaiana et al. (2018).
Model formulation.
In the exponential model developed by Vaiana et al. (2018), the generalized force at time formula_8, representing the output variable, is evaluated as a function of the generalized displacement as follows:
 formula_42
 formula_43
where formula_29 and formula_45 are the four model parameters to be calibrated from experimental or numerical tests, whereas formula_7 is the sign of the generalized velocity at time formula_8, that is, formula_9. Furthermore, formula_10and formula_6 are two internal model parameters evaluated as:
 formula_51
 formula_52
whereas formula_12 is the internal variable:
 formula_54
Hysteresis loop shapes.
Figure 2.1 shows four different hysteresis loop shapes obtained by applying a sinusoidal generalized displacement having unit amplitude and frequency and simulated by adopting the Exponential Model (EM) parameters listed in Table 2.1.
Matlab code.
% September 2019
% Exponential Model Algorithm
% Nicolò Vaiana, Post-Doctoral Researcher, PhD 
% Department of Structures for Engineering and Architecture 
% University of Naples Federico II
% via Claudio, 21 - 80125, Napoli
clc; clear all; close all;
%% APPLIED DISPLACEMENT TIME HISTORY
dt = 0.001; %time step
t = 0:dt:1.50; %time interval
a0 = 1; %applied displacement amplitude
fr = 1; %applied displacement frequency
u = a0*sin((2*pi*fr)*t(1:length(t))); %applied displacement vector
v = 2*pi*fr*a0*cos((2*pi*fr)*t(1:length(t))); %applied velocity vector
n = length(u); %applied displacement vector length
%% 1. INITIAL SETTINGS
%1.1 Set the four model parameters
ka = 5.0; %model parameter
kb = 0.5; %model parameter
alfa = 5.0; %model parameter
beta = 1.0; %model parameter
%1.2 Compute the internal model parameters 
u0 = -(1/(2*alfa))*log(10^-20/(ka-kb)); %internal model parameter
f0 = ((ka-kb)/(2*alfa))*(1-exp(-2*alfa*u0)); %internal model parameter
%1.3 Initialize the generalized force vector
f = zeros(1, n);
%% 2. CALCULATIONS AT EACH TIME STEP
for i = 2:n
%2.1 Update the history variable
uj = u(i-1)+2*u0*sign(v(i))+sign(v(i))*(1/alfa)*log(sign(v(i))*(alfa/(ka-kb))*(-2*beta*u(i-1)+exp(beta*u(i-1))-exp(-beta*u(i-1))+kb*u(i-1)+sign(v(i))*((ka-kb)/alfa)*exp(-2*alfa*u0)+sign(v(i))*f0-f(i-1)));
%2.2 Evaluate the generalized force at time t
if (sign(v(i))*uj)-2*u0 < sign(v(i))*u(i) || sign(v(i))*u(i) < sign(v(i))*uj
 f(i) = -2*beta*u(i)+exp(beta*u(i))-exp(-beta*u(i))+kb*u(i)-sign(v(i))*((ka-kb)/alfa)*(exp(-alfa*(sign(v(i))*(u(i)-uj)+2*u0))-exp(-2*alfa*u0))+sign(v(i))*f0;
else
 f(i) = -2*beta*u(i)+exp(beta*u(i))-exp(-beta*u(i))+kb*u(i)+sign(v(i))*f0;
end
end
%% PLOT
figure
plot(u ,f, 'k', 'linewidth', 4)
set(gca, 'FontSize', 28)
set(gca, 'FontName', 'Times New Roman')
xlabel('generalized displacement'), ylabel('generalized force')
grid
zoom off