pyOMA.core.StabilDiagram.StabilCluster#

class pyOMA.core.StabilDiagram.StabilCluster(modal_data, prep_signals=None)[source]#

Bases: StabilCalc

The automatic modal analysis done in three stages clustering. 1st stage: values sorted according to their soft and hard criteria by a 2-means partitioning algorithm 2nd stage: hierarchical clustering with automatic or user defined intercluster distance the automatic distance is based on the ‘df’, ‘dd’ and ‘MAC’ values from the centroids obtained in the first stage \(d = weight*df + 1 - weight*MAC + weight*dd\) 3rd stage: 2-means partitioning of the physical and spurious poles.

  1. Neu et al.

  1. Identify mode candidates from a large number of system orders.

    -> OMA Algorithm with n_max sufficiently high, i.e. number of mathematical modes should exceed the number pf physical modes at n <= n_max

  2. Remove as many mathematical modes as possible.

  1. Remove certainly mathematical modes using hard validation criteria. Re(lambda_n)>= 0 or Im(lambda_n)==0-> remove conjugates in OMA algorithm

  2. Split modes into consistent and non-consistent sets using k-means clustering. p_i = [d_lambda, d_f, d_zeta, 1-MAC, dMPD] power transformation eq 11 h_Ti = ln(p_i) normalize: h_Ni = (h_Ti - mean(h_Ti)) / std(h_Ti) initialize centroids with (+std(h_Ni), -std(h_Ni))

  1. Divide the remaining modes into homogeneous sets using hierarchical clustering.

  1. Derive cutoff distance from the probability distribution of the consistent modes.

    np.percentile(a,95)

  2. Cluster the mode candidates based on a complex distance measure.

    average linkage / single linkage

  3. Remove all but one mode from a single system order in one cluster.

    walk over each cluster and ensure each model order exists only once in the cluster, else remove the mode with a higher distance to the cluster center

  1. Remove the small sets, which typically consist of mathematical modes.

  1. Reject sets that are smaller than a threshold derived from the largest set size. no recommendations given in paper (threshold 50 %)

  2. Use outlier rejection to remove natural frequency and damping outliers. skip

  3. Select a single mode representative from the remaining modes in each cluster. “multivariate” median

__init__(modal_data, prep_signals=None)[source]#

stab_* in %

Methods

__init__(modal_data[, prep_signals])

stab_* in %

add_callback(name, func)

add_mode(mode_ind)

automatic_classification([threshold, use_stabil])

automatic_clearing([num_iter])

automatic_selection([number])

calculate_soft_critera_matrices()

calculate_stabilization_masks([order_range, ...])

decompress_flat_mask(compress_mask, flat_mask)

export_results(fname[, binary])

get_frequencies()

get_max_f()

get_modal_values(i)

get_mode_shape(i)

get_selected_modal_values()

get_stabilization_mask(name)

load_state(fname, modal_data)

plot_classification([save_path])

plot_clearing([save_path])

plot_mask(mask[, save_path])

plot_selection([save_path])

Plot relevant results of the clustering.

remove_mode(mode_ind)

return_results()

save_state(fname)

update_stabilization_masks([order_range, ...])

plot_selection(save_path=None)[source]#

Plot relevant results of the clustering.