The fdd algorithm module
This module provides implementation of the Frequency Domain Decomposition (FDD) algorithm [BZA01], the Enhanced Frequency Domain Decomposition (EFDD) algorithm [BVA01], and the Frequency Spatial Domain Decomposition (FSDD) algorithm [ZWT10], along with their adaptations for multi-setup experimental data [SARB21]. These algorithms are used in structural dynamics to identify modal parameters such as natural frequencies, damping ratios, and mode shapes from ambient vibration measurements.
- Classes:
Important
Each class contains methods for executing the respective Frequency Domain Decomposition based algorithm, extracting modal parameters, plotting results, and additional utilities relevant to the specific FDD approach.
Note
Users should be familiar with the concepts of modal analysis and system identification to effectively use this module.
The FDD class
- class pyoma2.algorithms.fdd.FDD(run_params: T_RunParams | None = None, name: str | None = None, *args: Any, **kwargs: Any)[source]
Bases:
BaseAlgorithmFrequency Domain Decomposition (FDD) algorithm for operational modal analysis.
This class implements the FDD algorithm, used to identify modal parameters such as natural frequencies, damping ratios, and mode shapes from ambient vibrations. The algorithm operates in the frequency domain and is suitable for output-only modal analysis.
- RunParamCls
Class of the run parameters specific to the FDD algorithm.
- Type:
Type[FDDRunParams]
- data
Input data for the algorithm, typically a time series of vibration measurements.
- Type:
Iterable[float]
- RunParamCls
alias of
FDDRunParams
- __init__(run_params: T_RunParams | None = None, name: str | None = None, *args: Any, **kwargs: Any)
Initialize the algorithm with optional run parameters and a name.
- Parameters:
run_params (Optional[T_RunParams], optional) – The parameters required to run the algorithm. If not provided, can be set later.
name (Optional[str], optional) – The name of the algorithm. If not provided, defaults to the class name.
*args (tuple) – Additional positional arguments.
**kwargs (dict) – Additional keyword arguments used to instantiate run parameters if run_params is not provided.
- mpe(sel_freq: List[float], DF: float = 0.1) Any[source]
Performs Modal Parameter Estimation (mpe) on selected frequencies using FDD results.
Estimates modal parameters such as natural frequencies and mode shapes from the frequencies specified by the user.
- Parameters:
- Returns:
The method updates the results in the associated FDDResult object with the estimated modal parameters.
- Return type:
None
- mpe_from_plot(freqlim: tuple[float, float] | None = None, DF: float = 0.1) Any[source]
Extracts modal parameters interactively from a plot using selected frequencies.
This method allows for interactive selection of frequencies from a plot, followed by mpe at those frequencies.
- Parameters:
- Returns:
Updates the results in the associated FDDResult object with the selected modal parameters.
- Return type:
None
- plot_CMIF(freqlim: tuple[float, float] | None = None, nSv: int | None = 'all') Any[source]
Plots the Complex Mode Indication Function (CMIF) for the FDD results.
CMIF is used to identify modes in the frequency domain data. It plots the singular values of the spectral density matrix as a function of frequency.
- Parameters:
- Returns:
A tuple containing the Matplotlib figure and axes objects for the CMIF plot.
- Return type:
- Raises:
ValueError – If the algorithm has not been run and no results are available.
- run() FDDResult[source]
Executes the FDD algorithm on the input data and computes modal parameters.
Processes the input time series data to compute the spectral density matrix. It then extracts its singular values and vectors, which are crucial for modal parameter identification.
- Returns:
An object containing frequency spectrum, spectral density matrix, singular values, and vectors as analysis results.
- Return type:
- set_run_params(run_params: T_RunParams) BaseAlgorithm
Set the run parameters for the algorithm.
- Parameters:
run_params (T_RunParams) – The run parameters for the algorithm.
- Returns:
Returns the instance with updated run parameters.
- Return type:
Note
This method allows dynamically setting or updating the run parameters for the algorithm after its initialization.
The EFDD class
- class pyoma2.algorithms.fdd.EFDD(run_params: T_RunParams | None = None, name: str | None = None, *args: Any, **kwargs: Any)[source]
Bases:
FDDEnhanced Frequency Domain Decomposition (EFDD) Algorithm Class.
This class implements the EFDD algorithm, an enhanced version of the basic FDD method. It provides more accurate modal parameters from ambient vibration data.
- RunParamCls
Class for the run parameters specific to the EFDD algorithm.
- Type:
- ResultCls
Class for storing results obtained from the EFDD analysis.
- Type:
Note
Inherits from FDD and provides specialized methods and functionalities for EFDD-specific analyses.
- ResultCls
alias of
EFDDResult
- RunParamCls
alias of
EFDDRunParams
- __init__(run_params: T_RunParams | None = None, name: str | None = None, *args: Any, **kwargs: Any)
Initialize the algorithm with optional run parameters and a name.
- Parameters:
run_params (Optional[T_RunParams], optional) – The parameters required to run the algorithm. If not provided, can be set later.
name (Optional[str], optional) – The name of the algorithm. If not provided, defaults to the class name.
*args (tuple) – Additional positional arguments.
**kwargs (dict) – Additional keyword arguments used to instantiate run parameters if run_params is not provided.
- mpe(sel_freq: List[float], DF1: float = 0.1, DF2: float = 1.0, cm: int = 1, MAClim: float = 0.85, sppk: int = 3, npmax: int = 20) Any[source]
Performs Modal Parameter Estimation (mpe) on selected frequencies using EFDD results.
Estimates modal parameters such as natural frequencies, damping ratios, and mode shapes from the frequencies specified by the user.
- Parameters:
sel_freq (List[float]) – List of selected frequencies for modal parameter estimation.
DF1 (float, optional) – Frequency resolution for the first stage of EFDD. Default is 0.1.
DF2 (float, optional) – Frequency resolution for the second stage of EFDD. Default is 1.0.
cm (int, optional) – Number of closely spaced modes. Default is 1.
MAClim (float, optional) – Minimum acceptable Modal Assurance Criterion value. Default is 0.85.
sppk (int, optional) – Number of peaks to skip for the fit. Default is 3.
npmax (int, optional) – Maximum number of peaks to use in the fit. Default is 20.
- Returns:
Updates the EFDDResult object with estimated modal parameters.
- Return type:
None
- mpe_from_plot(DF1: float = 0.1, DF2: float = 1.0, cm: int = 1, MAClim: float = 0.85, sppk: int = 3, npmax: int = 20, freqlim: tuple[float, float] | None = None) Any[source]
Performs Interactive Modal Parameter Estimation using plots in EFDD analysis.
Allows interactive selection of frequencies from a plot for modal parameter estimation. The method enhances user interaction and accuracy in selecting the frequencies for analysis.
- Parameters:
DF1 (float, optional) – Frequency resolution for the first stage of EFDD. Default is 0.1.
DF2 (float, optional) – Frequency resolution for the second stage of EFDD. Default is 1.0.
cm (int, optional) – Number of clusters for mode separation. Default is 1.
MAClim (float, optional) – Minimum acceptable MAC value. Default is 0.85.
sppk (int, optional) – Number of spectral peaks to consider. Default is 3.
npmax (int, optional) – Maximum number of peaks. Default is 20.
freqlim (Optional[tuple[float, float]], optional) – Frequency limit for interactive plot. Default is None.
- Returns:
Updates the EFDDResult object with modal parameters selected from the plot.
- Return type:
None
- plot_CMIF(freqlim: tuple[float, float] | None = None, nSv: int | None = 'all') Any
Plots the Complex Mode Indication Function (CMIF) for the FDD results.
CMIF is used to identify modes in the frequency domain data. It plots the singular values of the spectral density matrix as a function of frequency.
- Parameters:
- Returns:
A tuple containing the Matplotlib figure and axes objects for the CMIF plot.
- Return type:
- Raises:
ValueError – If the algorithm has not been run and no results are available.
- plot_EFDDfit(freqlim: tuple[float, float] | None = None, *args, **kwargs) Any[source]
Plots Frequency domain Identification (FIT) results for EFDD analysis.
Generates a FIT plot to visualize the quality and accuracy of modal identification in EFDD.
- Parameters:
- Returns:
A tuple containing the Matplotlib figure and axes objects for the EFDD FIT plot.
- Return type:
- Raises:
ValueError – If the algorithm has not been run and no results are available.
- run() FDDResult
Executes the FDD algorithm on the input data and computes modal parameters.
Processes the input time series data to compute the spectral density matrix. It then extracts its singular values and vectors, which are crucial for modal parameter identification.
- Returns:
An object containing frequency spectrum, spectral density matrix, singular values, and vectors as analysis results.
- Return type:
- set_run_params(run_params: T_RunParams) BaseAlgorithm
Set the run parameters for the algorithm.
- Parameters:
run_params (T_RunParams) – The run parameters for the algorithm.
- Returns:
Returns the instance with updated run parameters.
- Return type:
Note
This method allows dynamically setting or updating the run parameters for the algorithm after its initialization.
The FSDD class
- class pyoma2.algorithms.fdd.FSDD(run_params: T_RunParams | None = None, name: str | None = None, *args: Any, **kwargs: Any)[source]
Bases:
EFDDFrequency-Spatial Domain Decomposition (FSDD) Algorithm Class.
This class provides the implementation of the Frequency-Spatial Domain Decomposition (FSDD) algorithm, a variant of the Enhanced Frequency Domain Decomposition (EFDD) method. The FSDD approach extends the capabilities of EFDD enhancing the accuracy of modal parameter estimation in operational modal analysis.
- RunParamCls
Class for specifying run parameters unique to the FSDD algorithm.
- Type:
Type[EFDDRunParams]
- ResultCls
Class for storing results obtained from the FSDD analysis.
- Type:
Type[EFDDResult]
- Inherits all methods from the EFDD class, with modifications for the FSDD approach.
Note
Inherits functionalities from the EFDD class while focusing on the unique aspects of the FSDD approach.
- ResultCls
alias of
EFDDResult
- RunParamCls
alias of
EFDDRunParams
- __init__(run_params: T_RunParams | None = None, name: str | None = None, *args: Any, **kwargs: Any)
Initialize the algorithm with optional run parameters and a name.
- Parameters:
run_params (Optional[T_RunParams], optional) – The parameters required to run the algorithm. If not provided, can be set later.
name (Optional[str], optional) – The name of the algorithm. If not provided, defaults to the class name.
*args (tuple) – Additional positional arguments.
**kwargs (dict) – Additional keyword arguments used to instantiate run parameters if run_params is not provided.
- mpe(sel_freq: List[float], DF1: float = 0.1, DF2: float = 1.0, cm: int = 1, MAClim: float = 0.85, sppk: int = 3, npmax: int = 20) Any
Performs Modal Parameter Estimation (mpe) on selected frequencies using EFDD results.
Estimates modal parameters such as natural frequencies, damping ratios, and mode shapes from the frequencies specified by the user.
- Parameters:
sel_freq (List[float]) – List of selected frequencies for modal parameter estimation.
DF1 (float, optional) – Frequency resolution for the first stage of EFDD. Default is 0.1.
DF2 (float, optional) – Frequency resolution for the second stage of EFDD. Default is 1.0.
cm (int, optional) – Number of closely spaced modes. Default is 1.
MAClim (float, optional) – Minimum acceptable Modal Assurance Criterion value. Default is 0.85.
sppk (int, optional) – Number of peaks to skip for the fit. Default is 3.
npmax (int, optional) – Maximum number of peaks to use in the fit. Default is 20.
- Returns:
Updates the EFDDResult object with estimated modal parameters.
- Return type:
None
- mpe_from_plot(DF1: float = 0.1, DF2: float = 1.0, cm: int = 1, MAClim: float = 0.85, sppk: int = 3, npmax: int = 20, freqlim: tuple[float, float] | None = None) Any
Performs Interactive Modal Parameter Estimation using plots in EFDD analysis.
Allows interactive selection of frequencies from a plot for modal parameter estimation. The method enhances user interaction and accuracy in selecting the frequencies for analysis.
- Parameters:
DF1 (float, optional) – Frequency resolution for the first stage of EFDD. Default is 0.1.
DF2 (float, optional) – Frequency resolution for the second stage of EFDD. Default is 1.0.
cm (int, optional) – Number of clusters for mode separation. Default is 1.
MAClim (float, optional) – Minimum acceptable MAC value. Default is 0.85.
sppk (int, optional) – Number of spectral peaks to consider. Default is 3.
npmax (int, optional) – Maximum number of peaks. Default is 20.
freqlim (Optional[tuple[float, float]], optional) – Frequency limit for interactive plot. Default is None.
- Returns:
Updates the EFDDResult object with modal parameters selected from the plot.
- Return type:
None
- plot_CMIF(freqlim: tuple[float, float] | None = None, nSv: int | None = 'all') Any
Plots the Complex Mode Indication Function (CMIF) for the FDD results.
CMIF is used to identify modes in the frequency domain data. It plots the singular values of the spectral density matrix as a function of frequency.
- Parameters:
- Returns:
A tuple containing the Matplotlib figure and axes objects for the CMIF plot.
- Return type:
- Raises:
ValueError – If the algorithm has not been run and no results are available.
- plot_EFDDfit(freqlim: tuple[float, float] | None = None, *args, **kwargs) Any
Plots Frequency domain Identification (FIT) results for EFDD analysis.
Generates a FIT plot to visualize the quality and accuracy of modal identification in EFDD.
- Parameters:
- Returns:
A tuple containing the Matplotlib figure and axes objects for the EFDD FIT plot.
- Return type:
- Raises:
ValueError – If the algorithm has not been run and no results are available.
- run() FDDResult
Executes the FDD algorithm on the input data and computes modal parameters.
Processes the input time series data to compute the spectral density matrix. It then extracts its singular values and vectors, which are crucial for modal parameter identification.
- Returns:
An object containing frequency spectrum, spectral density matrix, singular values, and vectors as analysis results.
- Return type:
- set_run_params(run_params: T_RunParams) BaseAlgorithm
Set the run parameters for the algorithm.
- Parameters:
run_params (T_RunParams) – The run parameters for the algorithm.
- Returns:
Returns the instance with updated run parameters.
- Return type:
Note
This method allows dynamically setting or updating the run parameters for the algorithm after its initialization.
The FDD_MS class
- class pyoma2.algorithms.fdd.FDD_MS(run_params: T_RunParams | None = None, name: str | None = None, *args: Any, **kwargs: Any)[source]
Bases:
FDDFrequency Domain Decomposition (FDD) Algorithm for Multi-Setup Analysis.
This class extends the standard FDD algorithm to handle data from multiple experimental setups. It’s designed to merge and analyze data from different configurations.
- RunParamCls
Defines the run parameters specific to the FDD algorithm for multi-setup analysis.
- Type:
Type[FDDRunParams]
- ResultCls
Represents the class for storing results obtained from multi-setup FDD analysis.
- Type:
Type[FDDResult]
- data
The input data for the algorithm, typically a collection of vibration measurements from multiple setups.
- Type:
Iterable[dict]
Note
Inherits the functionality from the standard FDD algorithm class, modifying it for application with multiple experimental setups.
- RunParamCls
alias of
FDDRunParams
- __init__(run_params: T_RunParams | None = None, name: str | None = None, *args: Any, **kwargs: Any)
Initialize the algorithm with optional run parameters and a name.
- Parameters:
run_params (Optional[T_RunParams], optional) – The parameters required to run the algorithm. If not provided, can be set later.
name (Optional[str], optional) – The name of the algorithm. If not provided, defaults to the class name.
*args (tuple) – Additional positional arguments.
**kwargs (dict) – Additional keyword arguments used to instantiate run parameters if run_params is not provided.
- mpe(sel_freq: List[float], DF: float = 0.1) Any
Performs Modal Parameter Estimation (mpe) on selected frequencies using FDD results.
Estimates modal parameters such as natural frequencies and mode shapes from the frequencies specified by the user.
- Parameters:
- Returns:
The method updates the results in the associated FDDResult object with the estimated modal parameters.
- Return type:
None
- mpe_from_plot(freqlim: tuple[float, float] | None = None, DF: float = 0.1) Any
Extracts modal parameters interactively from a plot using selected frequencies.
This method allows for interactive selection of frequencies from a plot, followed by mpe at those frequencies.
- Parameters:
- Returns:
Updates the results in the associated FDDResult object with the selected modal parameters.
- Return type:
None
- plot_CMIF(freqlim: tuple[float, float] | None = None, nSv: int | None = 'all') Any
Plots the Complex Mode Indication Function (CMIF) for the FDD results.
CMIF is used to identify modes in the frequency domain data. It plots the singular values of the spectral density matrix as a function of frequency.
- Parameters:
- Returns:
A tuple containing the Matplotlib figure and axes objects for the CMIF plot.
- Return type:
- Raises:
ValueError – If the algorithm has not been run and no results are available.
- run() FDDResult[source]
Executes the FDD algorithm on multi-setup data for operational modal analysis.
Processes input data from multiple experimental setups to conduct frequency domain decomposition. The method computes spectral density matrices for each setup and then merges them to extract singular values and vectors.
- Returns:
An object encapsulating the results of the FDD analysis for multi-setup data, including frequency spectrum, merged spectral density matrix, and associated singular values and vectors.
- Return type:
- set_run_params(run_params: T_RunParams) BaseAlgorithm
Set the run parameters for the algorithm.
- Parameters:
run_params (T_RunParams) – The run parameters for the algorithm.
- Returns:
Returns the instance with updated run parameters.
- Return type:
Note
This method allows dynamically setting or updating the run parameters for the algorithm after its initialization.
The EFDD_MS class
- class pyoma2.algorithms.fdd.EFDD_MS(run_params: T_RunParams | None = None, name: str | None = None, *args: Any, **kwargs: Any)[source]
Bases:
EFDDEnhanced Frequency Domain Decomposition (EFDD) Algorithm for Multi-Setup Analysis.
This class extends the EFDD algorithm to accommodate operational modal analysis across multiple experimental setups.
- RunParamCls
Class for specifying run parameters unique to the EFDD algorithm for multi-setups.
- Type:
- ResultCls
Class for storing results obtained from the multi-setup EFDD analysis.
- Type:
- data
The input data, consisting of vibration measurements from multiple setups.
- Type:
Iterable[dict]
Note
This class adapts the EFDD algorithm’s functionality for multiple experimental setups.
- ResultCls
alias of
EFDDResult
- RunParamCls
alias of
EFDDRunParams
- __init__(run_params: T_RunParams | None = None, name: str | None = None, *args: Any, **kwargs: Any)
Initialize the algorithm with optional run parameters and a name.
- Parameters:
run_params (Optional[T_RunParams], optional) – The parameters required to run the algorithm. If not provided, can be set later.
name (Optional[str], optional) – The name of the algorithm. If not provided, defaults to the class name.
*args (tuple) – Additional positional arguments.
**kwargs (dict) – Additional keyword arguments used to instantiate run parameters if run_params is not provided.
- mpe(sel_freq: List[float], DF1: float = 0.1, DF2: float = 1.0, cm: int = 1, MAClim: float = 0.85, sppk: int = 3, npmax: int = 20) Any
Performs Modal Parameter Estimation (mpe) on selected frequencies using EFDD results.
Estimates modal parameters such as natural frequencies, damping ratios, and mode shapes from the frequencies specified by the user.
- Parameters:
sel_freq (List[float]) – List of selected frequencies for modal parameter estimation.
DF1 (float, optional) – Frequency resolution for the first stage of EFDD. Default is 0.1.
DF2 (float, optional) – Frequency resolution for the second stage of EFDD. Default is 1.0.
cm (int, optional) – Number of closely spaced modes. Default is 1.
MAClim (float, optional) – Minimum acceptable Modal Assurance Criterion value. Default is 0.85.
sppk (int, optional) – Number of peaks to skip for the fit. Default is 3.
npmax (int, optional) – Maximum number of peaks to use in the fit. Default is 20.
- Returns:
Updates the EFDDResult object with estimated modal parameters.
- Return type:
None
- mpe_from_plot(DF1: float = 0.1, DF2: float = 1.0, cm: int = 1, MAClim: float = 0.85, sppk: int = 3, npmax: int = 20, freqlim: tuple[float, float] | None = None) Any
Performs Interactive Modal Parameter Estimation using plots in EFDD analysis.
Allows interactive selection of frequencies from a plot for modal parameter estimation. The method enhances user interaction and accuracy in selecting the frequencies for analysis.
- Parameters:
DF1 (float, optional) – Frequency resolution for the first stage of EFDD. Default is 0.1.
DF2 (float, optional) – Frequency resolution for the second stage of EFDD. Default is 1.0.
cm (int, optional) – Number of clusters for mode separation. Default is 1.
MAClim (float, optional) – Minimum acceptable MAC value. Default is 0.85.
sppk (int, optional) – Number of spectral peaks to consider. Default is 3.
npmax (int, optional) – Maximum number of peaks. Default is 20.
freqlim (Optional[tuple[float, float]], optional) – Frequency limit for interactive plot. Default is None.
- Returns:
Updates the EFDDResult object with modal parameters selected from the plot.
- Return type:
None
- plot_CMIF(freqlim: tuple[float, float] | None = None, nSv: int | None = 'all') Any
Plots the Complex Mode Indication Function (CMIF) for the FDD results.
CMIF is used to identify modes in the frequency domain data. It plots the singular values of the spectral density matrix as a function of frequency.
- Parameters:
- Returns:
A tuple containing the Matplotlib figure and axes objects for the CMIF plot.
- Return type:
- Raises:
ValueError – If the algorithm has not been run and no results are available.
- plot_EFDDfit(freqlim: tuple[float, float] | None = None, *args, **kwargs) Any
Plots Frequency domain Identification (FIT) results for EFDD analysis.
Generates a FIT plot to visualize the quality and accuracy of modal identification in EFDD.
- Parameters:
- Returns:
A tuple containing the Matplotlib figure and axes objects for the EFDD FIT plot.
- Return type:
- Raises:
ValueError – If the algorithm has not been run and no results are available.
- run() FDDResult[source]
Executes the Enhanced Frequency Domain Decomposition (EFDD) algorithm on multi-setup data.
Processes input data from multiple experimental setups for operational modal analysis using the EFDD method. The method computes spectral density matrices for each setup and then merges them to extract singular values and vectors.
- Returns:
An object encapsulating the results of the EFDD analysis for multi-setup data, including enhanced frequency spectrum, merged spectral density matrices, and associated singular values and vectors.
- Return type:
- set_run_params(run_params: T_RunParams) BaseAlgorithm
Set the run parameters for the algorithm.
- Parameters:
run_params (T_RunParams) – The run parameters for the algorithm.
- Returns:
Returns the instance with updated run parameters.
- Return type:
Note
This method allows dynamically setting or updating the run parameters for the algorithm after its initialization.