File Exchange

image thumbnail

OpenSeismoMatlab

Open source software for strong ground motion data processing

61 Downloads

Updated 13 Aug 2019

View License

OpenSeismoMatlab can calculate the following strong motion data processing output: (1) Time histories of acceleration, velocity and displacement, with or without baseline correction, (2) Resampled time histories of acceleration, velocity and displacement with modified time step size, (3) Peak ground acceleration, velocity and displacement (PGA, PGV, PGD), (4) Total cumulative energy and its normalized time history, (5) Significant duration according to Trifunac & Brady (1975), (6) Arias intensity, (7) Linear elastic response spectra, (8) Constant ductility inelastic response spectra, (9) Fourier amplitude spectrum, (10) Mean period (Tm)

Cite As

George Papazafeiropoulos (2019). OpenSeismoMatlab (https://www.mathworks.com/matlabcentral/fileexchange/67069-openseismomatlab), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (13)

@ michele paoletti: The code has been updated so that this issue is resolved. Thank you for your suggestions and apologies for the delayed response.

Thanks for answer George. td is considered as time duration of the seismic wave. For example if we use definition of Trifunac duration td is the time where the energy go from 5% to 95% of the total energy. Reducing time duration respect your formula we take in account only energy of the wave and not the noise energy (although very low) that is present first and then the seismic wave. The result obtained is a slightly lower value respect your formula. I'd like to know what you think about.

OpenSeismoMatlab calculates the Arias intensity in the whole time duration of the input earthquake acceleration time history. This is the reason for which there are not any limits in the code segment. What do you mean by td?

Hi, Arias Intensity must be calculated in the interval from 0 to td, while this line code that you post not have this limit:
aint2 = cumsum(A.^2)*pi*dt/(2*g);
Why?

Thank you very much Ricardo A. The code has been fixed and enhanced based on your comments. You can now download the latest version. Regards!

Ricardo A.

2 errors:
line 188 should be: seismic.vel = cumtrapz(time,xgtt);
line 190 should be: seismic.disp = cumtrapz(time,seismic.vel);
previously, the velocity was multiplied by an extra 'dt' and the displacement by an extra 'dt^2'. Thanks for your work!

Ricardo A.

Also, maybe you can add these 2 parameters calculations:
% MEAN FREQUENCY
fi = f(f>0.25 & f<20);
Ci = U(f>0.25 & f<20);
Fm = ((Ci(:)'.^2)*(fi(:)))/(Ci(:)'*Ci(:));
seismic.Fm = Fm;

% PREDOMINANT PERIOD & FREQUENCY
maxi=0;
indice=0;
for i=1:length(seismic.PSa);
if seismic.PSa(i)>maxi
maxi=seismic.PSa(i);
indice=seismic.Period(i);
else
maxi=maxi;
indice=indice;
endif
end
seismic.PredSpec=maxi;
seismic.PredPeriod=indice;
seismic.PredFreq=1/maxi;
maxi=0;
indice=0;

Updates

3.2

Calculation of Arias intensity and significant duration are corrected. Minor updates at the help section of the main routine OpenSeismoMatlab.m

3.1.2

Baseline correction enhanced
Bug related to the cumulative trapezoidal numerical integration of the uncorrected ground motion is fixed.
Additional output related to earthquake input energy and predominant PSa and period is given by the algorithm

3.1.1

Screenshot updated

3.1

Resampling capability added for increasing or decreasing the size of the time step of the input acceleration time history.

3.0

Baseline correction added

2.0.0.0

Code improved

MATLAB Release Compatibility
Created with R2017b
Compatible with any release
Platform Compatibility
Windows macOS Linux
Acknowledgements

Inspired: ArtifSeismoMatlab

OpenSeismoMatlab