Rotor.run_modal(speed, num_modes=12, sparse=True)

Run modal analysis.

Method to calculate eigenvalues and eigvectors for a given rotor system. Tthe natural frequencies and dampings ratios are calculated for a given rotor speed. It means that for each speed input there’s a different set of eigenvalues and eigenvectors, hence, different natural frequencies and damping ratios are returned. This method will return a ModalResults object which stores all data generated and also provides so methods for plotting.

Available plotting methods:

.plot_mode_2d() .plot_mode_3d()


Speed at which the eigenvalues and eigenvectors will be calculated.

num_modesint, optional

The number of eigenvalues and eigenvectors to be calculated using ARPACK. If sparse=True, it determines the number of eigenvalues and eigenvectors to be calculated. It must be smaller than Rotor.ndof - 1. It is not possible to compute all eigenvectors of a matrix with ARPACK. If sparse=False, num_modes does not have any effect over the method. Default is 12.

sparsebool, optional

If True, ARPACK is used to calculate a desired number (according to num_modes) or eigenvalues and eigenvectors. If False, scipy.linalg.eig() is used to calculate all the eigenvalues and eigenvectors. Default is True.


For more information on attributes and methods available see: ross.ModalResults


>>> import ross as rs
>>> rotor = rs.rotor_example()
>>> modal = rotor.run_modal(speed=0, sparse=False)
>>> modal.wn[:2]
array([91.79655318, 96.28899977])
>>> modal.wd[:2]
array([91.79655318, 96.28899977])
>>> # Plotting 3D mode shape
>>> mode1 = 0  # First mode
>>> fig = modal.plot_mode_3d(mode1)
>>> # Plotting 2D mode shape
>>> mode2 = 1  # Second mode
>>> fig = modal.plot_mode_2d(mode2)