Skip to content

ladisk/pyEMA

Repository files navigation

pyEMA

Experimental and operational modal analysis.


pyEMA is no longer develped. The successor of pyEMA is part of SDyPy project.

All pyEMA functionality can be used by installing sdypy:

pip install sdypy

and importing the EMA module:

from sdypy import EMA

Your existing code can stay exactly the same by only changing the existing import from:

import pyEMA

to:

from sdypy import EMA as pyEMA

Basic pyEMA usage

Make an instance of Model class:

a = pyema.Model(
    frf_matrix,
    frequency_array,
    lower=50,
    upper=10000,
    pol_order_high=60
    )

Compute poles:

a.get_poles()

Determine correct poles:

The stable poles can be determined in two ways:

  1. Display stability chart
a.select_poles()

The stability chart displayes calculated poles and the user can hand-pick the stable ones.

  1. If the approximate values of natural frequencies are already known, it is not necessary to display the stability chart:
approx_nat_freq = [314, 864]
a.select_closest_poles(approx_nat_freq)

After the stable poles are selected, the natural frequencies and damping coefficients can now be accessed:

a.nat_freq # natrual frequencies
a.nat_xi # damping coefficients

Reconstruction:

There are two types of reconstruction possible:

  1. Reconstruction using own poles (the default option):
H, A = a.get_constants(whose_poles='own')

where H is reconstructed FRF matrix and A is a matrix of modal constants.

  1. Reconstruction on c using poles from a:
c = pyema.Model(frf_matrix, frequency_array, lower=50, upper=10000, pol_order_high=60)

H, A = c.get_constants(whose_poles=a)

DOI Build Status