Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

sdynpy.TransferFunctionArray

Signature

class sdynpy.TransferFunctionArray(shape, nelements, buffer=None, offset=0, strides=None, order=None)

Data array used to store transfer functions (for example FRFs)

Attributes

NameSummary
function_typeReturns the function type of the data array

function_type

Returns the function type of the data array

Methods

NameSummary
apply_transformationApplies reference and response transformations to the transfer functions.
block_diagonal_frfAssembles a block diagonal FRF TransferFunctionArray from the supplied FRFs.
compute_cmifComputes a complex mode indicator function from the TransferFunctionArray
compute_mifCompute a mode indicator functions from the transfer functions
compute_mmifComputes a Multi Mode indicator function from the TransferFunctionArray
compute_nmifComputes a normal mode indicator function from the TransferFunctionArray
delay_responseAdjusts the FRF phases as if the response had been shifted dt in time
enforce_causalityEnforces causality on the frequency response function via a conversion to a impulse response function, applying a cutoff window, then converting back to a frequency response function.
from_exodusReads FRF data from a Sierra/SD ModalFRF Exodus file
from_time_dataComputes a transfer function from reference and response time histories
ifftConverts frequency response functions to impulse response functions via an inverse fourier transform.
interpolate_by_zero_padInterpolates a transfer function by zero padding or truncating its impulse response
plotPlot the transfer functions
plot_cond_numPlots the condition number of the FRF matrix
plot_singular_valuesPlot the singular values of an FRF matrix with a visualization of the rcond tolerance
plot_with_coherence
substructure_by_constraint_matrixPerforms frequency based substructuring using the supplied constraint matrix with accompanying dof list.
substructure_by_coordinatePerforms frequency based substructuring by constraining pairs of degrees of freedom
svdCompute the SVD of the provided FRF matrix

apply_transformation

def sdynpy.TransferFunctionArray.apply_transformation(self, response_transformation=None, reference_transformation=None, invert_response_transformation=False, invert_reference_transformation=True)

Applies reference and response transformations to the transfer functions.

Parameters

Returns

Raises

Notes

This method can be used with just a response transformation, just a reference transformation, or both a response and reference transformation. The transformation will be set to identity if it is not supplied.

References

.. [1] M. Van der Seijs, D. van den Bosch, D. Rixen, and D. Klerk, “An improved methodology for the virtual point transformation of measured frequency response functions in dynamic substructuring,” in Proceedings of the 4th International Conference on Computational Methods in Structural Dynamics and Earthquake Engineering, Kos Island, 2013, pp. 4334-4347, doi: 10.7712/120113.4816.C1539.

block_diagonal_frf

def sdynpy.TransferFunctionArray.block_diagonal_frf(cls, component_frfs: tuple, coordinate_node_offset: int = 0)

Assembles a block diagonal FRF TransferFunctionArray from the supplied FRFs.

Parameters

Returns

Raises

Notes

The coordinate_node_offset is incremented for each system. For example, if the first set of FRFs has nodes [1,2,3,4], the second set of FRFs has nodes [3,4,5,6], and the supplied offset is 10, the node numbers in the returned block diagonal FRFs would be [11,12,13,14,23,24,25,26].

compute_cmif

def sdynpy.TransferFunctionArray.compute_cmif(self, part='both', tracking=None)

Computes a complex mode indicator function from the TransferFunctionArray

Parameters

Returns

Raises

compute_mif

def sdynpy.TransferFunctionArray.compute_mif(self, mif_type, *mif_args, **mif_kwargs)

Compute a mode indicator functions from the transfer functions

Parameters

Returns

Raises

compute_mmif

def sdynpy.TransferFunctionArray.compute_mmif(self, part='real', mass_matrix=None)

Computes a Multi Mode indicator function from the TransferFunctionArray

Parameters

Returns

Raises

compute_nmif

def sdynpy.TransferFunctionArray.compute_nmif(self, part='real')

Computes a normal mode indicator function from the TransferFunctionArray

Parameters

Returns

Raises

delay_response

def sdynpy.TransferFunctionArray.delay_response(self, dt)

Adjusts the FRF phases as if the response had been shifted dt in time

Parameters

Returns

enforce_causality

def sdynpy.TransferFunctionArray.enforce_causality(self, method='exponential_taper', window_parameter=None, end_of_ringdown=None)

Enforces causality on the frequency response function via a conversion to a impulse response function, applying a cutoff window, then converting back to a frequency response function.

Parameters

Returns

Notes

This is a wrapper around the method in the impulse response function class and it may be wiser to use that function instead.

Although optional, it is best practice for the user to supply a parameter for the end_of_ringdown variable if the “exponential_taper” method is being used or a window_parameter if the “exponential” or “boxcar” methods are being used. The code will attempt to find the end of the ring-down in the IRF and use use that as the end_of_ringdown parameter for the “exponential_taper” window or the window_parameter for the exponential and boxcar windows.

It is not suggested that the user provide a window_paramter if the “exponential_taper” method is being used, since the default is likely the most logical choice.

References

.. [1] Zvonkin, M. (2015). Methods for checking and enforcing physical quality of linear electrical network models [Masters Theses, Missouri University of Science and Technology], Missouri S&T Scholars’ Mine, https://scholarsmine.mst.edu/masters_theses/7490/

from_exodus

def sdynpy.TransferFunctionArray.from_exodus(cls, exo, reference_coordinate=None, xval='DispX', xvali='ImagDispX', yval='DispY', yvali='ImagDispY', zval='DispZ', zvali='ImagDispZ')

Reads FRF data from a Sierra/SD ModalFRF Exodus file

Parameters

Returns

from_time_data

def sdynpy.TransferFunctionArray.from_time_data(reference_data: sdynpy.core.sdynpy_data.TimeHistoryArray, response_data: sdynpy.core.sdynpy_data.TimeHistoryArray, samples_per_average: int = None, overlap: float = 0.0, method: str = 'H1', window=array([1.]), return_model_data=False, **timedata2frf_kwargs)

Computes a transfer function from reference and response time histories

Parameters

Returns

Raises

ifft

def sdynpy.TransferFunctionArray.ifft(self, norm='backward', odd_num_samples=False, **scipy_irfft_kwargs)

Converts frequency response functions to impulse response functions via an inverse fourier transform.

Returns

Raises

Paramters

norm : str, optional The type of normalization applied to the fft computation. odd_num_samples : bool, optional If True, then it is assumed that the output signal has an odd number of samples, meaning the signal will have a length of 2*(m-1)+1 where m is the number of frequency lines. Otherwise, the default value of 2*(m-1) is used, assuming an even signal. This is ignored if num_samples is specified. scipy_irfft_kwargs : Additional keywords that will be passed to SciPy’s irfft function.

interpolate_by_zero_pad

def sdynpy.TransferFunctionArray.interpolate_by_zero_pad(self, irf_padded_length, return_irf=False, odd_num_samples=False)

Interpolates a transfer function by zero padding or truncating its impulse response

Parameters

Returns

Notes

This function will automatically set the last frequency line of the TransferFunctionArray to zero because it won’t be accurate anyway. If irf_padded_length is less than the current function’s num_elements, then it will be truncated instead of zero-padded.

plot

def sdynpy.TransferFunctionArray.plot(self, one_axis=True, part=None, subplots_kwargs={}, plot_kwargs={}, abscissa_markers=None, abscissa_marker_labels=None, abscissa_marker_type='vline', abscissa_marker_plot_kwargs={})

Plot the transfer functions

Parameters

Returns

plot_cond_num

def sdynpy.TransferFunctionArray.plot_cond_num(self, number_retained_values=None, min_frequency=None, max_frequency=None)

Plots the condition number of the FRF matrix

Parameters

Returns

plot_singular_values

def sdynpy.TransferFunctionArray.plot_singular_values(self, rcond=None, condition_number=None, number_retained_values=None, regularization_parameter=None, min_frequency=None, max_frequency=None)

Plot the singular values of an FRF matrix with a visualization of the rcond tolerance

Parameters

plot_with_coherence

def sdynpy.TransferFunctionArray.plot_with_coherence(self, coherence, part=None, subplots_kwargs={}, plot_kwargs={})

substructure_by_constraint_matrix

def sdynpy.TransferFunctionArray.substructure_by_constraint_matrix(self, dofs, constraint_matrix)

Performs frequency based substructuring using the supplied constraint matrix with accompanying dof list.

Parameters

Returns

Raises

substructure_by_coordinate

def sdynpy.TransferFunctionArray.substructure_by_coordinate(self, dof_pairs)

Performs frequency based substructuring by constraining pairs of degrees of freedom

Parameters

Returns

svd

def sdynpy.TransferFunctionArray.svd(self, full_matrices=True, compute_uv=True, as_matrix=True)

Compute the SVD of the provided FRF matrix

Parameters

Returns