Skip to content

itomac/Extended_Morlet-Wave

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Extended Morlet-Wave identification

This is the Python implementation of the extended Morlet-Wave damping identification method, see [1] and [2] for details.

This package is based on the mwdi code developed by TOMAC Ivan and SLAVIČ Janko, see [3] for details. It was upgraded within the MSCA IF project NOSTRADAMUS during development of [2].

Basic usage

User is required to supply sampling frequncy in S/s and impulse response functions as a numpy array of shape (number_of_samples, measure_points)

  • For SDOF systems, define estimated natural frequency as
    omega = (100, None) [rad/s]
  • For MDOF systems, the first frequency in tuple is estimated one and the second one it the closest frequency to the estimated:
    omega = (100, 150) [rad/s]

Additionally to make instance of ExtendedMW class default values of tupples: time_spread and num_cycls_range can be changed. Tuple time_spread contains n1 and n2 time sperad parametes, tuple num_cycls_range sets the range of k parameter.

identifier = ExtendedMW(fs=None,
                        irf=None,
                        nat_freqs=(None, None),
                        time_spread=(7, 14),
                        k_range = (10, 400))

Detect natural frequencies:
identifier.detect_frequency()

Detect damping:
identifier.detect_damp()

Identify damping ratio and natural frequerncy:
identifier.estimate()

Optionaly identification can be ploted using the following metod:
identifier.plot()

Simple example

A simple example how to identify damping using MWDI method:

import morlet_wave as emw
import numpy as np

# set time domain
fs = 50 # sampling frequency [Hz]
N = int(50*fs) # number of data points of time signal
time = np.arange(N) / fs # time vector

# generate a free response of a SDOF damped mechanical system
w_n = 2*np.pi * 1 # undamped natural frequency
d = 0.01 # damping ratio
x = 1 # amplitude
phi = 0.3 # phase
response = x * np.exp(-d * w_n * time) * np.cos(w_n * np.sqrt(1 - d**2) * time - phi)

# set MWDI object identifier
identifier = emw.ExtendedMW(fs=fs, \
                            free_response=response, \
                            nat_freqs=(w_n, None))

# identify natural frequency and damping ratio:
identifier.detect_frequency()
identifier.detect_damp()
identifier.estimate()

# plot optimization results
identifier.plot()

References

[1]I. Tomac, Ž. Lozina, D. Sedlar, Extended Morlet-Wave damping identification method, International Journal of Mechanical Sciences, 2017, doi: 10.1016/j.ijmecsci.2017.01.013.
[2](1, 2) I. Tomac, J. Slavič, Damping identification based on a high-speed camera. Mechanical Systems and Signal Processing, 166 (2022) 108485–108497, doi: 10.1016/j.ymssp.2021.108485.
[3]J. Slavič, M. Boltežar, Damping identification with the Morlet-wave, Mechanical Systems and Signal Processing, 25 (2011) 1632–1645, doi: 10.1016/j.ymssp.2011.01.008.