Use of Mathematica in the Calculation of Damping in Structures

J.A. López-Aragón, UPM & MITMOS, Spain
M.A. Astiz, UPM & Carlos Fernández Casado, Spain

#WolframTechConf

November 5, 2025

TABLE OF CONTENTS

0. Abstract
1. About the authors
2. Developed studies
3. Some previous steps
4. Calculus of the modal damping ratio
5. Application
6. Conclusions
7. Future studies
8. Acknowledgements
9. References
10. Questions and answers

0. ABSTRACT

At the Wolfram Virtual Technology Conference held in 2023, we showcased the potential of the Mathematica tool in several studies on Structural Dynamics that we were conducting (Use of Mathematica in Some Studies about Structural Dynamics, https://www.wolfram.com/broadcast/video.php?c=513&disp=grid&v=3926&p=4 ).

Specifically, after explaining the physical basis and the objective of the research, the method for identifying the natural frequencies and the modal damping ratio from the recorded accelerograms was exposed. This analysis was exemplified both on the theoretically simulated waves and on the accelerogram corresponding to a real structure, which in this case was a large bridge.

In recent months, the authors have presented a comparative study on modal damping ratio calculation methods, which has been published as a paper in the Journal of Civil Structural Health Monitoring and that has been very well received by the scientific community (Influence of the modal damping ratio calculation method in the analysis of dynamic events obtained in structural health monitoring of bridges, https://link.springer.com/article/10.1007/s13349-023-00760-y ). 

In addition, it has been part of a Doctoral Thesis presented last year at the Polytechnic University of Madrid (Bridge durability parameters based on their dynamic behavior, https://oa.upm.es/81304/1/JUAN_ANTONIO_LOPEZ_ARAGON.pdf ).

The referred paper reviews the theoretical basis of several calculation methods for obtaining the modal damping ratio that can be applied to accelerograms, their behaviour on various theoretically simulated waves, and their application to accelerograms from a real structure. Furthermore, it is proposed an alternative calculation method that yields excellent results and avoids the use of filters in multi-degree-of-freedom systems, which can distort the results.

Since the tool used for this study was Mathematica, this presentation at the Wolfram Virtual Technology Conference will summarise the procedures and code implemented for this particular research.

1. ABOUT THE AUTHORS

Miguel-Ángel Astiz-Suárez, Prof. Dr. Civil Engineer, is a prominent professional in the field of Structural Engineering, Wind Dynamics and Finite Element Analysis, among other areas. He was full professor of Bridge Engineering at the Madrid Polytechnic University (UPM) until his retirement. Now he continues his collaboration at Carlos Fernández
Casado, one of the most important Spanish Project Engineering Firm, specialized in bridges and large scale structures.

Juan-Antonio López-Aragón, Dr. Civil Engineer, is a member of the Corps of Civil Engineers of the Spanish Ministry for Transport and Sustainable Mobility (MITMOS), where he works as a Senior Advisor. In the academic field, he had recently finished his Ph.D. about Structural Dynamics within the Madrid Polytechnic University (UPM) under the direction of M.A. Astiz, having published several scientific papers where Mathematica is used as a powerful tool in the data analysis.

2. DEVELOPED STUDIES

General context: Sustainable Development Goals set by the United Nations for 2030, technological evolution, the Internet of Things and Big Data.

In Civil Engineering, conservation is nowadays more important than the construction of new infrastructures.

Need of preventive maintenance and inspections due to the critical character of bridges.

Morandi Bridge (Italy, 2018) – 43 fatalities
(El País, Stringer, Reuters)

Collapse of L12 (México, 2021) – 25 fatalities
(Gobierno de la Ciudad de México)

The monitoring of bridges allows detecting incidents at an early stage and saving on eventual repair costs.

Our work analyses the behaviuor of several bridges in order to know how can vary dynamic parameters. We try to answer to these questions:

Which is the behaviour of real structures? Which dynamic parameters are stable? How affects the structural typology?

In variations because of damage, do we have to consider ambient variables? Can be modelled?

In the case of the modal damping ratio, which is the influence of the calculation methods? Can be improved?

The dynamic parameters can be obtained thanks to the Dynamics of Structures.

3. SOME PREVIOUS STEPS

This section reproduces the content of some points included in the presentation from two years ago (Use of Mathematica in Some Studies about Structural Dynamics, https://www.wolfram.com/broadcast/video.php?c=513&disp=grid&v=3926&p=4 ), which are the starting point for the concepts developed in the following sections of this year’s presentation.

3.1. Basics of Dynamics of Structures

As it is well known, the equation that models the response of a linear, viscously damped single-degree of freedom (SDOF) system (spring) under mechanical excitation is:

m(((d^2)x)/(d(t^2)))+c((dx)/(dt))+k x=p, where:

x(t) is the displacement ((((d^2)x)/(d(t^2))) is the acceleration and ((dx)/(dt)) is the velocity),

p(t) is the mechanical excitation or load,

m is the (equivalent) mass of the system,

c is the viscous damping coefficient of the system and

k is the stiffness of the system.

Real structures, like bridges and buildings, are multiple-degree of freedom (MDOF) systems. Fortunately, the response of a real structure is equivalent to the sum of various SDOF systems.

Normally, only accelerations are measured thanks to special devices (accelerometers). The records are named accelerograms and the waves under free (unforced) vibrations can be modelled as follows:

a(t)=(Subscript[A, 0]) (e^(-ξ ω t))Cos(ω t-(Subscript[α, 0])), where:

a(t) is the acceleration,

(Subscript[A, 0]) is the initial amplitude,

ξ is the modal damping ratio, related with the viscous damping c by the expression: ξ=(c/(2(Sqrt[m k]))) ,

ω is the circular frequency, related with the natural frequency f by the expression: ω=((2π)/T)=2π f  and

(Subscript[α, 0]) is the initial phase difference.

Our objective is to obtain the dynamic parameters of the system from accelerograms, which can be mathematically complicated in the case of natural frequencies of vibration f and modal damping ratios ξ.

3.2. Why Mathematica?

Although they are extremely useful and we used them as support, because of the advanced Mathematics that we need, something more than a common spreadsheet is required.

Besides, we wanted to compare the behaviour of different calculation methods, so we needed to implement and control the code.

Since we were accustomed to Mathematica, we consider the possibility of using this software. We are tremendous happy with this decision, as we will see in this presentation.

3.3. Generation of a theoretical signal

As a theoretical example, we will generate a signal of 50 s length which is the sum of three waves plus a random noise:

({{Wave, Amplitude [g], f [Hz], ξ [%], ϕ [rad]}, {1, 0.005, 1, 2, 0}, {2, 0.001, 2, 1, π/4}, {3, 0.0005, 4, 0.5, π/3}})

The random noise (0.0001) is higher than the real resolution of accelerometers (1×(10^(-6))), to simulate most unfavorable conditions.

The function described is the following:

(* Generación de la señal teórica *)
Clear["Global'*"];
A[t_]:=(0.005*Exp[-0.02*2*Pi*1*t]*Cos[2*Pi*1*t-0]+0.001*Exp[-0.01*2*Pi*2*t]*Cos[2*Pi*2*t-Pi/4]+0.0005*Exp[-0.005*2*Pi*4*t]*Cos[2*Pi*4*t-Pi/3])*(1+RandomReal[{-1,1}]*0.0001);
Plot[A[t],{t,0,49.98},AxesLabel->{"t [s]","A(t) [g]"},Frame->True,GridLines->Automatic,PlotStyle->RGBColor[1,0,0]]

And we can generate a table to imitate the data from real accelerometers:

(* Tabla para simular los datos provenientes de un acelerómetro real *)
DataAccelerogram=Table[{t,A[t]},{t,0,49.98,0.02}]

ListPlot[DataAccelerogram,Joined->True,AxesLabel->{"t [s]","A(t) [g]"},Frame->True,GridLines->Automatic,PlotStyle->RGBColor[1,0,0]]

Besides, we will create a matrix where to save the results:

(* CREACIÓN DE TABLA RESUMEN *)
TablaResumen=Table[{0},{i,1,4},{j,1,4}];
TablaResumen[[1]]={"Natural Frequency","Theoretical","Log.Dec.","SRM"};
TablaResumen[[2,1]]=1;TablaResumen[[3,1]]=2;
TablaResumen[[4,1]]=3;TablaResumen[[2,2]]=2.;TablaResumen[[3,2]]=1.;
TablaResumen[[4,2]]=0.5;

3.4. Identification of natural frequencies

Once we have the accelerogram, we have to identify natural frequencies. 

The most often used tool is the Fourier Transform. Among other options, Mathematica bring us the opportunity of using the tool “Fourier” to obtain the Discrete Fourier Transform from a list.

An extract of the code for that could be the following:

(* Identificación de las frecuencias naturales *)
Paso=0.02;
Canal=1;
CodigoCanalSeleccionado=Canal;
ParametrosFourier = {-1, 1};
LimiteInicial = 0;
LimiteFinal = 50;
AcelerogramaSeleccionadoCanal = DataAccelerogram;
NumeroDeDatosSeleccionados = Length[AcelerogramaSeleccionadoCanal];
VectorFrecuenciasCanal = Table[{0, 0, 0, 0, 0}, {i, 1, 1 + NumeroDeDatosSeleccionados}];
Do[VectorFrecuenciasCanal[[i, 1]] = N[(i - 1)*1/(LimiteFinal - LimiteInicial)], {i, 1, 1 + NumeroDeDatosSeleccionados}];
VectorSeleccionadoCanal = Table[0, {i, 1, NumeroDeDatosSeleccionados}];
Do[VectorSeleccionadoCanal[[i]] = AcelerogramaSeleccionadoCanal[[i, 2]], {i, 1, NumeroDeDatosSeleccionados}];
VectorSeleccionadoCanalFourier = Fourier[VectorSeleccionadoCanal, FourierParameters -> ParametrosFourier];
Do[{
   VectorFrecuenciasCanal[[i, 2]] = Re[VectorSeleccionadoCanalFourier[[i]]];
   VectorFrecuenciasCanal[[i, 3]] = Im[VectorSeleccionadoCanalFourier[[i]]];
   VectorFrecuenciasCanal[[i, 4]] = Abs[VectorSeleccionadoCanalFourier[[i]]];
   VectorFrecuenciasCanal[[i, 5]] = Abs[VectorSeleccionadoCanalFourier[[i]]]
   },
  {i, 1, NumeroDeDatosSeleccionados}];
VectorFrecuenciasCanalParaRepresentar = Table[{0, 0}, {i, 1, 1 + NumeroDeDatosSeleccionados/2}];
Do[{
   VectorFrecuenciasCanalParaRepresentar[[i, 1]] = VectorFrecuenciasCanal[[i, 1]];
   VectorFrecuenciasCanalParaRepresentar[[i, 2]] = VectorFrecuenciasCanal[[i, 5]];
   }
  , {i, 1, 1 + NumeroDeDatosSeleccionados/2}];
VectorFrecuenciasCanalOrdenDecreciente = Sort[VectorFrecuenciasCanalParaRepresentar, #1[[2]] >= #2[[2]] &];

If we plot the results of the calculation, we obtain the spectrum of the signal, where the peaks correspond with the natural frequencies (1, 2 and 4 Hz, as we indicate in the simulated wave):

(* Representación gráfica del espectro de la señal *)
ListPlot[VectorFrecuenciasCanalParaRepresentar,Joined->True,Frame->True,FrameLabel->{"f [Hz]","Magnitude of the Spectrum(f)"},PlotStyle->{RGBColor[1,0,0],Thickness[.01]},GridLines->Automatic,PlotRange->{{Min[Transpose[VectorFrecuenciasCanalParaRepresentar][[1]]],Max[Transpose[VectorFrecuenciasCanalParaRepresentar][[1]]]},{Min[Transpose[VectorFrecuenciasCanalParaRepresentar][[2]]],Max[Transpose[VectorFrecuenciasCanalParaRepresentar][[2]]]}}]

3.5. Signal filtering

After having identified the natural frequencies, it is necessary to filter the signal to study the behaviour of each one.

There are many types of filters with several properties. One of the easiest  is the pass-band filter (rectangle), which is applied here. Although this filter has the handicap of introducing some distortion in boundaries, we can cut the filtered signal and extract the central section. 

Of course, the application of other types is also possible. In fact, it would be interesting to study in detail the influence of using different types of filters.

After defining the filter and the cut length of the filtered signal, the extract of the code for that purpose is the following:

(* Definición del filtro *)
TensorFiltro={{{0.8,1.2,1.0},{1.8,2.2,2.0},{3.8,4.2,4.0}}};
CorteOndaFiltrada=20;

(* Preparación de matrices de salida *)
MatrizFiltros=Table[0,{i,1,Length[VectorFrecuenciasCanalParaRepresentar]-1},{j,1,Length[TensorFiltro[[CodigoCanalSeleccionado]]]+1}];
Do[MatrizFiltros[[i,1]]=VectorFrecuenciasCanalParaRepresentar[[i,1]],{i,1,Length[VectorFrecuenciasCanalParaRepresentar]-1}];
MatrizAcelerogramasFiltrados=Table[0,{i,1,Length[AcelerogramaSeleccionadoCanal]},{j,1,Length[TensorFiltro[[CodigoCanalSeleccionado]]]+1}];
Do[MatrizAcelerogramasFiltrados[[i,1]]=AcelerogramaSeleccionadoCanal[[i,1]],{i,1,Length[AcelerogramaSeleccionadoCanal]}];
MatrizAcelerogramasFiltradosCortados=Table[0,{i,1,Length[AcelerogramaSeleccionadoCanal]-2*CorteOndaFiltrada/Paso},{j,1,Length[TensorFiltro[[CodigoCanalSeleccionado]]]+1}];

Do[{
(* APLICACION DEL FILTRO TIPO PASA BANDA IDEAL *)

(* Transformada de Fourier del acelerograma seleccionado *)
VectorSeleccionadoCanalFourier=Fourier[VectorSeleccionadoCanal,FourierParameters->ParametrosFourier];

(* Creación del Filtro *)
Filtro=Drop[VectorFrecuenciasCanalParaRepresentar,-1];
Do[If[And[TensorFiltro[[CodigoCanalSeleccionado,RangoDeFrecuenciaParaEstudio,1]]≤Filtro[[i,1]],Filtro[[i,1]]≤TensorFiltro[[CodigoCanalSeleccionado,RangoDeFrecuenciaParaEstudio,2]]],Filtro[[i,2]]=1,Filtro[[i,2]]=0],{i,1,Length[Filtro]}];
VectorFiltro=Flatten[Transpose[Filtro][[2]]];
VectorFiltro=Flatten[AppendTo[VectorFiltro,Reverse[VectorFiltro]]];
Print["NATURAL FREQUENCY NUMBER ",RangoDeFrecuenciaParaEstudio,":"];
Print["---------------------------"];
Print["Ideal pass-band filter between ",TensorFiltro[[CodigoCanalSeleccionado,RangoDeFrecuenciaParaEstudio,1]]," and ",TensorFiltro[[CodigoCanalSeleccionado,RangoDeFrecuenciaParaEstudio,2]]," Hz :"];

(* Representación del Filtro *)
ListPlot[Filtro,Joined->True,PlotRange->{0,1},Frame->True,FrameLabel->{"f [Hz]","Filter (f)"},PlotStyle->{RGBColor[1,0,0],Thickness[.01]},GridLines->Automatic]//Print ;

(* Salida a Matriz del Filtro *)
Do[MatrizFiltros[[i,RangoDeFrecuenciaParaEstudio+1]]=Filtro[[i,2]],{i,1,Length[VectorFrecuenciasCanalParaRepresentar]-1}];

(* Aplicación del Filtro en el Dominio de la Frecuencia *)
VectorFrecuenciasCanalParaRepresentarFiltrado=VectorSeleccionadoCanalFourier*VectorFiltro;

(* Recuperación de la Onda Filtrada en el Dominio del Tiempo *)
NuevaOnda=Re[InverseFourier[VectorFrecuenciasCanalParaRepresentarFiltrado,FourierParameters->ParametrosFourier]];
AcelerogramaSeleccionadoCanalFiltrado=AcelerogramaSeleccionadoCanal;
Do[AcelerogramaSeleccionadoCanalFiltrado[[i,2]]=NuevaOnda[[i]],{i,1,Length[NuevaOnda]}];

(* Representación de la Onda Filtrada en el Dominio del Tiempo *)
Print["Filtered accelerogram (between ",LimiteInicial," s and ",LimiteFinal," s from the initial accelerogram):"];
ListPlot[AcelerogramaSeleccionadoCanalFiltrado,Joined->True,PlotStyle->RGBColor[1,0,0],Frame->True,FrameLabel->{"t [s]","a(t) [g]"},GridLines->Automatic,PlotRange->All]//Print;

(* Salida a Matriz de la Onda Filtrada *)
Do[MatrizAcelerogramasFiltrados[[i,RangoDeFrecuenciaParaEstudio+1]]=AcelerogramaSeleccionadoCanalFiltrado[[i,2]],{i,1,Length[AcelerogramaSeleccionadoCanal]}];

(* Corte de la Onda Filtrada *)
AcelerogramaSeleccionadoCanalFiltradoCortado=Drop[AcelerogramaSeleccionadoCanalFiltrado,(CorteOndaFiltrada/Paso)];
AcelerogramaSeleccionadoCanalFiltradoCortado=Drop[AcelerogramaSeleccionadoCanalFiltradoCortado,-(CorteOndaFiltrada/Paso)];
NuevaOndaCortada=Drop[NuevaOnda,(CorteOndaFiltrada/Paso)];
NuevaOndaCortada=Drop[NuevaOndaCortada,-(CorteOndaFiltrada/Paso)];

(* Representación de la Onda Filtrada Cortada en el Dominio del Tiempo *)
Print["Filtered accelerogram with a cut of ",CorteOndaFiltrada," s in each boundary:"];
ListPlot[AcelerogramaSeleccionadoCanalFiltradoCortado,Joined->True,PlotStyle->RGBColor[1,0,0],Frame->True,FrameLabel->{"t [s]","a(t) [g]"},GridLines->Automatic,PlotRange->All]//Print;

(* Salida a Matriz de la Onda Filtrada Cortada *)
Do[{
MatrizAcelerogramasFiltradosCortados[[i,1]]=AcelerogramaSeleccionadoCanalFiltradoCortado[[i,1]];
MatrizAcelerogramasFiltradosCortados[[i,RangoDeFrecuenciaParaEstudio+1]]=AcelerogramaSeleccionadoCanalFiltradoCortado[[i,2]]
}
,{i,1,Length[AcelerogramaSeleccionadoCanal]-2*CorteOndaFiltrada/Paso}];
}
,{RangoDeFrecuenciaParaEstudio,1,Length[TensorFiltro[[CodigoCanalSeleccionado]]]}];

We have obtained above three graphics for each natural frequency:

Filter,

Filtered signal and

Cut and filtered signal.

4. CALCULUS OF THE MODAL DAMPING RATIO

After the steps shown in the previous section, now we can obtain the modal damping ratio for each natural frequency.

This section summarizes the theoretical foundations of some of the methods for calculating the modal damping ratio and their implementation in Mathematica.

4.1. Logarithmic Decrement Method

The classic procedure par excellence is the logarithmic decrement method, which is directly applicable to single-DOF systems undergoing free vibrations. 

In this case, as is well known, the modal damping ratio ξ can be approximately determined as the ratio between two maximum displacements ((Subscript[x, q]) and (Subscript[x, q+n])) measured over n consecutive cycles:

ξ=((Subscript[δ, n])/(2π n ((ω/(Subscript[ω, D])))))≈((Subscript[δ, n])/(2π n))=((ln(((Subscript[x, q])/(Subscript[x, q+n]))))/(2π n)) ,where:

(Subscript[δ, n]) is the logarithmic decrement in n cycles,

and ω and (Subscript[ω, D]) are the circular frequencies of the undamped and damped systems, respectively.

Alternatively, this same expression can be applied to the records of the accelerograms of the structure opened to traffic, which is the usual practice.

Once the signal is isolated for a given frequency, a criterion must be established to determine between which extreme values to carry out the calculation. It is possible to take different values separated by several cycles and take their average, calculate a regression line on the extreme values of the accelerogram or even make a least squares adjustment to approximate the filtered signal to the theoretical curve of the damped free vibrations. Here we have adopted the first proposal, taking a distance of 5 cycles.

The extract of the code for that could be the following:

(* CÁLCULO DEL AMORTIGUAMIENTO POR EL METODO DEL DECREMENTO LOGARÍTMICO Y PROMEDIO DE VALORES DE AMORTIGUAMIENTO *)

(* Datos de Entrada *)
IntervaloValoresParaPromedio=5;

Print["CALCULUS OF THE MODAL DAMPING RATIO (Logarithmic Decrement Method):"];
Print["==================================================================="];
Do[{
Print["Natural Frequency Number ",RangoDeFrecuenciaParaEstudio,":"];
Print["---------------------------"];

(* Estudio del amortiguamiento *)
VectorEntrada=Transpose[MatrizAcelerogramasFiltradosCortados][[RangoDeFrecuenciaParaEstudio+1]];
LongitudVectorEntrada=Length[VectorEntrada];
TablaMaximos={};
TablaMinimos={};
Do[
If[
And[VectorEntrada[[i]]≥VectorEntrada[[i-2]],VectorEntrada[[i]]≥VectorEntrada[[i-1]],VectorEntrada[[i]]≥VectorEntrada[[i+1]],VectorEntrada[[i]]≥VectorEntrada[[i+2]]],
AppendTo[TablaMaximos,{i,VectorEntrada[[i]]}]
];
If[
And[VectorEntrada[[i]]≤VectorEntrada[[i-2]],VectorEntrada[[i]]≤VectorEntrada[[i-1]],VectorEntrada[[i]]≤VectorEntrada[[i+1]],VectorEntrada[[i]]≤VectorEntrada[[i+2]]],
AppendTo[TablaMinimos,{i,VectorEntrada[[i]]}]
]
,{i,3,LongitudVectorEntrada-2,1}
];
TablaExtremos=Sort[Join[TablaMaximos,TablaMinimos]];
TablaExtremosParaRepresentar=Table[{TablaExtremos[[i,1]]*Paso,TablaExtremos[[i,2]]},{i,1,Length[TablaExtremos]}];
Print["Extreme values determined from the selected accelegram (after filtering and cutting):"];
ListPlot[TablaExtremosParaRepresentar,PlotStyle->{PointSize[0.02],RGBColor[1,0,0]},PlotRange->{Min[VectorEntrada],Max[VectorEntrada]},Joined->False,Frame->True,GridLines->Automatic,FrameLabel->{"t [s]","a(t) [g]"}]//Print;

MatrizMaximos=Table[0,{i,1,Length[TablaMaximos]},{j,1,Length[TablaMaximos]}];
Do[
Do[
MatrizMaximos[[i,j]]=Log[TablaMaximos[[i,2]]/TablaMaximos[[j,2]]]/(2*N[Pi,10]*(j-i))
,{j,i+IntervaloValoresParaPromedio,Length[TablaMaximos]}
]
,{i,1,Length[TablaMaximos]}
];
VectorResultadosAmortiguamiento={};
SumaAmortiguamientoMaximos=0;
ValoresValidosMaximos=0;
Do[
Do[
If[MatrizMaximos[[i,j]]>0,{
SumaAmortiguamientoMaximos=SumaAmortiguamientoMaximos+MatrizMaximos[[i,j]],
ValoresValidosMaximos=ValoresValidosMaximos+1,
VectorResultadosAmortiguamiento=AppendTo[VectorResultadosAmortiguamiento,MatrizMaximos[[i,j]]]
}]
,{j,1,Dimensions[MatrizMaximos][[2]],1}
]
,{i,1,Dimensions[MatrizMaximos][[1]],1}
];
AmortiguamientoMedioMaximos=SumaAmortiguamientoMaximos/ValoresValidosMaximos;
MatrizMinimos=Table[0,{i,1,Length[TablaMinimos]},{j,1,Length[TablaMinimos]}];
Do[
Do[
MatrizMinimos[[i,j]]=Log[TablaMinimos[[i,2]]/TablaMinimos[[j,2]]]/(2*N[Pi,10]*(j-i))
,{j,i+IntervaloValoresParaPromedio,Length[TablaMinimos]}
]
,{i,1,Length[TablaMinimos]}
];
SumaAmortiguamientoMinimos=0;
ValoresValidosMinimos=0;
Do[
Do[
If[MatrizMinimos[[i,j]]>0,{
SumaAmortiguamientoMinimos=SumaAmortiguamientoMinimos+MatrizMinimos[[i,j]],
ValoresValidosMinimos=ValoresValidosMinimos+1,
VectorResultadosAmortiguamiento=AppendTo[VectorResultadosAmortiguamiento,MatrizMinimos[[i,j]]]
}]
,{j,1,Dimensions[MatrizMinimos][[2]],1}
]
,{i,1,Dimensions[MatrizMinimos][[1]],1}
];
AmortiguamientoMedioMinimos=SumaAmortiguamientoMinimos/ValoresValidosMinimos;
AmortiguamientoMedio=(SumaAmortiguamientoMaximos+SumaAmortiguamientoMinimos)/(ValoresValidosMaximos+ValoresValidosMinimos);
Print ["Average Modal Damping Ratio ξ = ",AmortiguamientoMedio," (",N[(AmortiguamientoMedio*100),2],"%)."];
Print[""];
TablaResumen[[RangoDeFrecuenciaParaEstudio+1,3]]=N[(AmortiguamientoMedio*100),2]
}
,{RangoDeFrecuenciaParaEstudio,1,Length[TensorFiltro[[CodigoCanalSeleccionado]]]}];

As we can see above, the obtained results are approximately equal to the theoretical values adopted (2%, 1% and 0.5% in this example).

4.2. Other implemented ‘classical’ methods

We have implemented other ‘classical’ methods for the calculus of the modal damping ratio:

Bandwidth (half-power and half-quadratic gain formulations),

Curve Adjustment and

Random Decrement Technique.

Due to time restrictions they are only mentioned here, but all the explanations can be find in the main reference paper ( https://link.springer.com/article/10.1007/s13349-023-00760-y ).

4.3. Spectrum Reduction Method (SRM), a new proposal

As a consequence of the practical experience of the authors in the study of accelerograms of bridges opened to traffic, an alternative calculation method for the modal damping ratio was formulated, based on the signal spectrum reduction (spectrum reduction method, SRM), conceived for the study of specific dynamic events caused by ambient vibrations in multiple-DOF systems whose vibration modes are reasonably separated and where the damped free vibration predominates in the registered accelerogram. 

In this case, it is demonstrated that:

(Subscript[ξ, 1])=((ln(((Subscript[A, 1,q])/(Subscript[A, 1,q+n]))))/(2π (Subscript[f, 1]) Δ t))    (simple DOF system) and

(Subscript[ξ, k])≈((ln(((Subscript[A, k,q])/(Subscript[A, k,q+n]))))/(2π (Subscript[f, k]) Δ t))   (multiple-DOF system), where:

(Subscript[ξ, k]) is the associate modal damping ratio to the k-th natural frequency,

(Subscript[A, k,q]) and (Subscript[A, k,q+n]) are the peak values of the magnitude spectra and

Δt is the time separation between the initial and the final part of the accelerogram.

The main advantage of this method is that it is possible to approach the study of multiple-DOF systems whose modes are reasonably separated, which usually happens in bridges, without the need to apply filters on the original signal to isolate each mode of vibration.

The extract of the code for that could be the following:

(* CÁLCULO DEL AMORTIGUAMIENTO POR EL METODO DE LA REDUCCIÓN DEL ESPECTRO *)
(* DATOS DE ENTRADA *)

(* Subintervalos para el método Red. Espectro *)
TiempoAnalisisPK=10;

(* CALCULOS *)

(* Cálculos auxiliares generales para el método Red. Espectro *)
DatosAnalisisPK=TiempoAnalisisPK/Paso;
MatrizAceleracionesPKInicial=Take[DataAccelerogram,DatosAnalisisPK];
MatrizAceleracionesPKFinal=Take[DataAccelerogram,-DatosAnalisisPK];
MatrizDominioFrecuenciaPKInicial=Table[{0,0},{i,1,DatosAnalisisPK}];
MatrizDominioFrecuenciaPKFinal=Table[{0,0},{i,1,DatosAnalisisPK}];
Do[
{VectorAuxiliarFourier=Fourier[Transpose[MatrizAceleracionesPKInicial][[i+1]],FourierParameters->ParametrosFourier];
Do[
MatrizDominioFrecuenciaPKInicial[[j,i+1]]=Abs[VectorAuxiliarFourier[[j]]]
,{j,1,DatosAnalisisPK}]
}
,{i,1,1}];
Do[MatrizDominioFrecuenciaPKInicial[[j,1]]=N[0+(j-1)/TiempoAnalisisPK,2],{j,1,DatosAnalisisPK}];
Do[
{VectorAuxiliarFourier=Fourier[Transpose[MatrizAceleracionesPKFinal][[i+1]],FourierParameters->ParametrosFourier];
Do[
MatrizDominioFrecuenciaPKFinal[[j,i+1]]=Abs[VectorAuxiliarFourier[[j]]]
,{j,1,DatosAnalisisPK}]
}
,{i,1,1}];
Do[MatrizDominioFrecuenciaPKFinal[[j,1]]=N[0+(j-1)/TiempoAnalisisPK,2],{j,1,DatosAnalisisPK}];
MatrizDominioFrecuenciaPKInicial=Take[MatrizDominioFrecuenciaPKInicial,DatosAnalisisPK/2+1];
MatrizDominioFrecuenciaPKFinal=Take[MatrizDominioFrecuenciaPKFinal,DatosAnalisisPK/2+1];
MatrizAmortiguamientosMetodoPK=Table[{0,0},{i,1,DatosAnalisisPK/2+1}];
Do[MatrizAmortiguamientosMetodoPK[[j,1]]=MatrizDominioFrecuenciaPKInicial[[j,1]],{j,1,DatosAnalisisPK/2+1}];
Do[MatrizAmortiguamientosMetodoPK[[1,i]]=0,{i,2,2}];
Do[
Do[
MatrizAmortiguamientosMetodoPK[[j,i]]=Log[MatrizDominioFrecuenciaPKInicial[[j,i]]/MatrizDominioFrecuenciaPKFinal[[j,i]]]/(2*N[Pi,10]*MatrizAmortiguamientosMetodoPK[[j,1]]*(LimiteFinal-LimiteInicial-TiempoAnalisisPK))
,{j,2,DatosAnalisisPK/2+1}]
,{i,2,2}];

Print["Calculus of the modal damping ratio (Spectrum Reduction Method):"];
Do[{
(* CÁLCULO DEL AMORTIGUAMIENTO POR EL MÉTODO RED. ESPECTRO *)
FrecuenciaABuscar=TensorFiltro[[CodigoCanalSeleccionado,RangoDeFrecuenciaParaEstudio,3]];
VectorDiferenciaFrecuenciaABuscar=Take[Transpose[MatrizDominioFrecuenciaPKInicial],1][[1]];
Do[VectorDiferenciaFrecuenciaABuscar[[i]]=Abs[VectorDiferenciaFrecuenciaABuscar[[i]]-FrecuenciaABuscar],{i,1,DatosAnalisisPK/2+1}];
PosicionMinimo=0;
Do[If[VectorDiferenciaFrecuenciaABuscar[[i]]==Min[VectorDiferenciaFrecuenciaABuscar],PosicionMinimo=i],{i,1,DatosAnalisisPK/2+1}];
Print["The modal damping ratio for ",FrecuenciaABuscar," Hz (by approximation to ",MatrizAmortiguamientosMetodoPK[[PosicionMinimo,1]]," Hz) is equal to ",MatrizAmortiguamientosMetodoPK[[PosicionMinimo,CodigoCanalSeleccionado+1]]," (",MatrizAmortiguamientosMetodoPK[[PosicionMinimo,CodigoCanalSeleccionado+1]]*100,"%)"];
TablaResumen[[RangoDeFrecuenciaParaEstudio+1,4]]=MatrizAmortiguamientosMetodoPK[[PosicionMinimo,CodigoCanalSeleccionado+1]]*100
}
,{RangoDeFrecuenciaParaEstudio,1,Length[TensorFiltro[[CodigoCanalSeleccionado]]]}
];

As we can see above, the obtained results are almost exact to the theoretical values adopted (2%, 1% and 0.5% in this example).

Here we can see the global comparison for these two calculation methods:

Print["Modal Damping Ratio Results Comparison:"];
Print["======================================="];
Print[TablaResumen//TableForm];

5. APPLICATION

Thanks to the tools developed, we have been able to delve deeper into the effect of the modal damping ratio calculation method in the analysis of dynamic events obtained in structural health monitoring of bridges.

5.1. Theoretical waves

First, we have studied the behavior of the different calculation methods on a set of theoretical waves:

As main conclusions, the following can be highlighted:

In general and with the particularities described below, the values of the modal damping ratio obtained by applying the different calculation methods were reasonably close to the theoretical values.

In the case of the logarithmic decrement method, the error was introduced in the signal filtering process, which is a strictly necessary step when there are several simultaneous vibration modes, which is the situation that usually occurs in real cases. However, the average relative error reached was less than 1%, and the maximum never reached the value of 2%.

When the two formulations based on the bandwidth method were applied to the signal spectrum, the average relative error was on the order of 1%.

In the case of the curve adjustment method, the obtained values of the modal damping ratio were exact in the case of waves 1, 2 and 3 but not in the case of the two composed waves 4 and 5 as a consequence of the mismatches introduced in the signal filtering process. In these last two waves, the highest relative errors were reached, which were on the order of 15% in the case of the second natural frequency and 42% in the case of the third natural frequency.

The SRM provided exact values of the modal damping ratio in all cases, which gives an idea of the potential of the proposed method since the same did not happened with the other methods.

When it was applied the RDT method combined with the logarithmic decrement method, some reasonably accurate values were obtained, but on other occasions the relative errors were as high as 5%.

Finally, by combining the RDT and curve adjustment methods, exact values for waves 1, 2 and 3 and the first frequency of waves 4 and 5 were obtained. In the case of the second and third frequencies of waves 4 and 5 the relative errors were 6.25% and 7.50%, respectively.

5.2. A real structure

We have applied all these procedures to real data from a monitored bridge, the road viaduct “Arcos de Alconétar”, in Spain.

Viaduct “Arcos de Alconétar”
(Spain, Mitma)

The results obtained are shown in this figure:

The most relevant conclusions are as follows:

First, it is clear that, in a real case, the results obtained may vary significantly depending on the calculation method of the modal damping ratio that is applied, unlike what happens in theoretical cases. For this reason, in general, it is important to know what method has been used to calculate the modal damping ratio and to be very careful when setting thresholds, especially if these values are to be used in structural health monitoring systems.

The application of the calculation methods based on the bandwidth applied on the signal spectrum shows the greatest differences with respect to the reference values.

In the case of the curve adjustment method, the values obtained have a fairly acceptable average relative error.

The lowest average relative error occurs with the SRM.

Finally, the application of the RDT method gives high average relative errors. Therefore, in the case of this particular structure and for this type of dynamic event, the application of this type of method does not compensate since the extraordinary calculation effort to obtain the RDT curve.

5.3. Other structures

We have also applied these studies to other railway structures, although the results have not been as conclusive.

5.4. Latest references

We have presented our conclusions in different open access papers and communications:

López Aragón, J.A.; Puchol, V. and Astiz Suárez, M.A. “Influence of the modal damping ratio calculation method in the analysis of dynamic events obtained in structural health monitoring of bridges”. Journal of Civil Structural Health Monitoring. Vol. 14 (2024), p. 1191-1213. https://link.springer.com/article/10.1007/s13349-023-00760-y .

López Aragón, J.A. and Astiz Suárez, M.A. “Some considerations about the incorporation of dynamic parameters in the Structural Health Monitoring Systems of bridges”. Applied Sciences. Vol. 14 (1) (2024). https://www.mdpi.com/2076-3417/14/1/33 .

López Aragón, J.A. and Astiz Suárez, M.A. “Recent studies on the dynamic behaviour of various bridges in Spain”. In: Bridge Maintenance, Safety, Management, Digitalization and Sustainability. Copenhagen (Denmark): 2024.  https://api.taylorfrancis.com/content/chapters/oa-edit/download?identifierName=doi&identifierValue=10.1201/9781003483755-290&type=chapterpdf .

López Aragón, J.A. and Astiz Suárez, M.A. “Singularities observed in the calculation of the modal damping ratio of a long-span metal arch”. In: XIV Congresso de Construção Metálica e Mista. Coimbra (Portugal): 2023. https://onlinelibrary.wiley.com/doi/pdf/10.1002/cepa.3045 .

López Aragón, J.A. 2023. Bridge durability parameters based on their dynamic behavior. Ph.D. Thesis, Madrid: Universidad Politécnica de Madrid.  https://oa.upm.es/81304/1/JUAN_ANTONIO_LOPEZ_ARAGON.pdf .

6. CONCLUSIONS

Throughout the presentation we have seen the essence of the academic studies that we are carrying out in the field of Structural Dynamics.

We have seen how the use of the symbolic calculation software Mathematica has facilitated the implementation of the different modules and has allowed the analysis of the registered data of real structures.

Specifically in the case of the modal damping ratio, a comparative study of the different calculation methods has been carried out, first on a set of theoretically simulated waves. In these cases, the obtained results are reasonably close to the theoretical values.

Second, a comparative study has been carried out on the accelerograms recorded during a test campaign of a real structure, the viaduct “The Arches of Alconétar”. In this case, it has been observed that, unlike what happens with theoretical simulations, the results obtained can vary significantly depending on the calculation method applied. For this reason, in real cases, it is important to know what method has been used to calculate the modal damping ratio and to be careful when setting thresholds, especially if these values are going to be used in structural health monitoring systems.

The proposed alternative calculation method, the SRM, allows simplification of the calculation procedures and avoids the effect of the application of filters on the signals without affecting the precision of the results. These benefits have been corroborated both in the theoretical simulations carried out and in the real structure studied.

This has made possible to advance in the knowledge of Structural Dynamics, giving rise to several scientific publications.

7. FUTURE STUDIES

We have proposed to carry out more possible studies, for instance:

To extend this kind of studies to more viaducts (other typologies, other locations...).

To analyse the influence of the type of filters in the calculus of the modal damping ratio.

Deepen in physical modeling of the relationships observed during the experimental analysis (dynamic parameters and ambient variables).

And to increase the studies about the effect of structural damages over the dynamic parameters, both in computational models and in full scale tests.

8. ACKNOWLEDGEMENTS

The authors wish to express their gratitude to:

Wolfram, for the organisation of this Virtual Technology Conference 2025, where we are sharing knowledge and experiences with other colleagues.

Universidad Politécnica de Madrid (UPM), the University where we have developed these studies.

Mitmos, the Ministry for Transport and Sustainable Mobility of Spain, for the access to real data of bridges.

And, of course, the audience of this presentation for their interest.

Thank you very much! ¡Muchas gracias!

9. REFERENCES

Apart from the specific papers developed by the authors mentioned above, these are some general references related to Dynamics of Structures and Structural Health Monitoring:

Casiano, M. Extracting damping ratio from dynamic data and numerical solutions. Nasa, 2016.

Chopra, A. Dynamics of structures: theory and applications to earthquake engineering. Prentice Hall, 1995.

Clough R, Penzien J. Dynamics of structures. Computers & Structures, 2003.

Lai, E. Practical digital signal processing for engineers and technicians. Elsevier, 2003.

Vasegui, S. Advanced digital signal processing and noise reduction. John Wiley & Sons, 2000.

Wenzel, H. Health monitoring of bridges. John Wiley & Sons, 2009.

Wolfram. Wolfram Language & System Documentation Center.

10. QUESTIONS AND ANSWERS

If you have any doubt or comments, we will be pleased to answer if possible.

Anyway, if you need it in the future, you can contact us:

juanantonio.lopez.aragon@alumnos.upm.es

jalaragon@transportes.gob.es

And if our research has been usuful for you, please cite us.

Use of Mathematica in the Calculation of Damping in Structures

J.A. López-Aragón, UPM & MITMOS, Spain
M.A. Astiz, UPM & Carlos Fernández Casado, Spain

#WolframTechConf

November 5, 2025