Source code for pyoma2.algorithms.data.mpe_params

"""
This module provides classes for storing mpe parameters for various modal analysis
algorithms included in the pyOMA2 module.
"""

from __future__ import annotations

from typing import List, Optional, Union

import numpy as np
import numpy.typing as npt
from pydantic import BaseModel, ConfigDict


[docs]class BaseMPEParams(BaseModel): """ Base class for storing mpe parameters for modal analysis algorithms. """ model_config = ConfigDict( from_attributes=True, arbitrary_types_allowed=True, extra="forbid" )
[docs]class FDDMPEParams(BaseMPEParams): """ Class for storing Frequency Domain Decomposition (FDD) MPE parameters. Attributes ---------- sel_freq : numpy.ndarray Array of selected frequencies for modal parameter estimation,. DF : float, optional Frequency resolution for estimation, default is 0.1. """ sel_freq: Optional[npt.NDArray[np.float64]] = None DF: float = 0.1
[docs]class EFDDMPEParams(BaseMPEParams): """ Class for storing Enhanced Frequency Domain Decomposition (EFDD) MPE parameters. Attributes ---------- sel_freq : numpy.ndarray Array of selected frequencies for modal parameter estimation,. DF1 : float, optional Frequency resolution for estimation, default is 0.1. DF2 : float Frequency resolution for the second stage of EFDD, default is 1.0. cm : int Number of closely spaced modes, default is 1. MAClim : float Minimum acceptable Modal Assurance Criterion value, default is 0.85. sppk : int Number of peaks to skip for the fit, default is 3. npmax : int Maximum number of peaks to use in the fit, default is 20. """ sel_freq: Optional[npt.NDArray[np.float64]] = None DF1: float = 0.1 DF2: float = 1.0 cm: int = 1 MAClim: float = 0.95 sppk: int = 3 npmax: int = 20
[docs]class SSIMPEParams(BaseMPEParams): """ Class for storing Stochastic Subspace Identification (SSI) MPE parameters. Attributes ---------- sel_freq : list of float or None, optional List of selected frequencies for modal parameter extraction. Default is None. order_in : int, list of int, or str Specified model order(s) for which the modal parameters are to be extracted. If 'find_min', the function attempts to find the minimum model order that provides stable poles for each mode of interest. rtol : float, optional Relative tolerance for comparing identified frequencies with the selected ones. Default is 5e-2. """ sel_freq: Optional[List[float]] = None order_in: Union[int, List[int], str] = "find_min" rtol: float = 5e-2
[docs]class pLSCFMPEParams(BaseMPEParams): """ Class for storing poly-reference Least Square Complex Frequency (pLSCF) MPE parameters. Attributes ---------- sel_freq : list of float or None, optional List of selected frequencies for modal parameter extraction. Default is None. order_in : int or str, optional Specified model order for extraction. Can be an integer or 'find_min'. Default is 'find_min'. rtol : float, optional Relative tolerance for comparing identified frequencies with the selected ones. Default is 1e-2. """ sel_freq: Optional[List[float]] = None order_in: Union[int, List[int], str] = "find_min" rtol: float = 5e-2
[docs]class AutoSSIMPEParams(SSIMPEParams): """ Class for storing Stochastic Subspace Identification (SSI) MPE parameters. Attributes ---------- sel_freq : list of float or None, optional List of selected frequencies for modal parameter extraction. Default is None. order_in : int, list of int, or str Specified model order(s) for which the modal parameters are to be extracted. If 'find_min', the function attempts to find the minimum model order that provides stable poles for each mode of interest. rtol : float, optional Relative tolerance for comparing identified frequencies with the selected ones. Default is 5e-2. """