"""
This module provides classes for handling and storing various types of results data
related to 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 BaseResult(BaseModel):
"""
Base class for storing results data.
Attributes
----------
Fn : numpy.NDArray
Array of natural frequencies obtained from modal analysis.
Phi : numpy.NDArray
Array of mode shape vectors obtained from modal analysis.
"""
model_config = ConfigDict(from_attributes=True, arbitrary_types_allowed=True)
# dopo mpe o mpe_from_plot
Fn: Optional[npt.NDArray[np.float64]] = None # array of natural frequencies
Phi: Optional[npt.NDArray[np.float64]] = None # array of Mode shape vectors
[docs]class FDDResult(BaseResult):
"""
Class for storing Frequency Domain Decomposition (FDD) results data.
Attributes
----------
freq : numpy.NDArray
Array of frequencies.
Sy : numpy.NDArray
PSD obtained from the FDD analysis.
S_val : numpy.NDArray
Singular values of the PSD.
S_vec : numpy.NDArray
Singular vectors of the PSD.
"""
freq: Optional[npt.NDArray[np.float64]] = None
Sy: Optional[npt.NDArray[np.float64]] = None
S_val: Optional[npt.NDArray[np.float64]] = None
S_vec: Optional[npt.NDArray[np.float64]] = None
[docs]class EFDDResult(FDDResult):
"""
Class for storing results data from Enhanced Frequency Domain Decomposition (EFDD)
and Frequency Spatial Domain Decomposition (FSDD).
Attributes
----------
freq : numpy.NDArray
Array of frequencies.
Sy : numpy.NDArray
PSD obtained from the analysis.
S_val : numpy.NDArray
Singular values of the PSD.
S_vec : numpy.NDArray
Singular vectors of the PSD.
Xi : numpy.NDArray
Array of damping ratios obtained from modal analysis.
forPlot : list
A list to store data for plotting purposes.
"""
# dopo mpe, MPE_forPlot
Xi: Optional[npt.NDArray[np.float64]] = None # array of damping ratios
forPlot: Optional[List] = None
[docs]class SSIResult(BaseResult):
"""
Class for storing results data from Stochastic Subspace Identification (SSI) methods.
Attributes
----------
Obs : numpy.NDArray, optional
Observability matrix obtained from the SSI analysis.
A : list of numpy.NDArray, optional
List of system matrices A from the SSI analysis.
C : list of numpy.NDArray, optional
List of system matrices C from the SSI analysis.
H : numpy.NDArray, optional
Hankel matrix used in SSI analysis.
Lambds : numpy.NDArray, optional
Array of eigenvalues from the SSI analysis.
Fn_poles : numpy.NDArray, optional
Array of all natural frequencies.
Xi_poles : numpy.NDArray, optional
Array of all damping ratios.
Phi_poles : numpy.NDArray, optional
Array of all mode shape vectors.
Lab : numpy.NDArray, optional
Array of labels for all the poles.
Fn_poles_std : numpy.NDArray, optional
Covariance of all natural frequencies.
Xi_poles_std : numpy.NDArray, optional
Covariance of all damping ratios.
Phi_poles_std : numpy.NDArray, optional
Covariance of all mode shape vectors.
Xi : numpy.NDArray, optional
Array of damping ratios.
order_out : Union[list[int], int], optional
Output order after modal parameter estimation. Can be a list of integers or a single integer.
Fn_std : numpy.NDArray, optional
Covariance of natural frequencies obtained from the analysis.
Xi_std : numpy.NDArray, optional
Covariance of damping ratios obtained from the analysis.
Phi_std : numpy.NDArray, optional
Covariance of mode shape vectors obtained from the analysis.
"""
Obs: Optional[npt.NDArray[np.float64]] = None
A: Optional[List[npt.NDArray[np.float64]]] = None
C: Optional[List[npt.NDArray[np.float64]]] = None
H: Optional[npt.NDArray[np.float64]] = None
Lambds: Optional[npt.NDArray[np.float64]] = None
Fn_poles: Optional[npt.NDArray[np.float64]] = None
Xi_poles: Optional[npt.NDArray[np.float64]] = None
Phi_poles: Optional[npt.NDArray[np.float64]] = None
Lab: Optional[npt.NDArray[np.float64]] = None
Fn_poles_std: Optional[npt.NDArray[np.float64]] = None
Xi_poles_std: Optional[npt.NDArray[np.float64]] = None
Phi_poles_std: Optional[npt.NDArray[np.float64]] = None
# dopo mpe, MPE_forPlot
Xi: Optional[npt.NDArray[np.float64]] = None # array of damping ratios
order_out: Optional[Union[int, List[int]]] = None
Fn_std: Optional[npt.NDArray[np.float64]] = None # covariance of natural frequencies
Xi_std: Optional[npt.NDArray[np.float64]] = None # covariance of damping ratios
Phi_std: Optional[npt.NDArray[np.float64]] = None # covariance of mode shapes
[docs]class pLSCFResult(BaseResult):
"""
Class for storing results data from the poly-reference Least Square Complex Frequency (pLSCF) method.
Attributes
----------
freq : numpy.NDArray
Array of frequencies.
Sy : numpy.NDArray
PSD obtained from the analysis.
Ad : list of numpy.NDArray
Denominator polynomial coefficients from pLSCF analysis.
Bn : list of numpy.NDArray
Numerator polynomial coefficients from pLSCF analysis.
Fn_poles : numpy.NDArray
Array of identified natural frequencies (poles) from pLSCF analysis.
xi_poles : numpy.NDArray
Array of damping ratios corresponding to identified poles.
Phi_poles : numpy.NDArray
Array of mode shape vectors corresponding to identified poles.
Lab : numpy.NDArray
Array of labels for the identified poles.
Xi : numpy.NDArray
Array of damping ratios obtained after modal parameter estimation.
order_out : Union[list[int], int]
Output order after modal parameter estimation. Can be a list of integers, or a single integer.
"""
freq: Optional[npt.NDArray[np.float64]] = None
Sy: Optional[npt.NDArray[np.float64]] = None
Ad: Optional[List[npt.NDArray[np.float64]]] = None
Bn: Optional[List[npt.NDArray[np.float64]]] = None
Fn_poles: Optional[npt.NDArray[np.float64]] = None
Xi_poles: Optional[npt.NDArray[np.float64]] = None
Phi_poles: Optional[npt.NDArray[np.float64]] = None
Lab: Optional[npt.NDArray[np.float64]] = None
# dopo mpe, MPE_forPlot
Xi: Optional[npt.NDArray[np.float64]] = None # array of damping ratios
order_out: Optional[Union[List[int], int]] = None
[docs]class MsPoserResult(BaseResult):
"""
Base class for MultiSetup Poser result data.
Attributes
----------
Phi : numpy.NDArray
Array of mode shape vectors obtained from MultiSetup Poser analysis.
Fn : numpy.NDArray
Array of natural frequencies obtained from MultiSetup Poser analysis (mean value).
Fn_std : numpy.NDArray
Standard deviation of natural frequencies between setups.
Xi : numpy.NDArray
Array of damping ratios obtained from MultiSetup Poser analysis (mean value).
Xi_std : numpy.NDArray
Standard deviation of damping ratios.
"""
model_config = ConfigDict(from_attributes=True, arbitrary_types_allowed=True)
Phi: npt.NDArray[np.float64]
Fn: npt.NDArray[np.float64]
Fn_std: npt.NDArray[np.float64]
Xi: npt.NDArray[np.float64]
Xi_std: npt.NDArray[np.float64]