Example 30 - Natural frequencies, mode shapes and natural frenquency map of a rigid rotor#

This example is based on Example 3.6.1, Example 3.7.1 and Example 3.7.2 from [Friswell, 2010].

import ross as rs
from ross.units import Q_
import plotly.io as pio
import numpy as np
import matplotlib.pyplot as plt

# Set default plot renderer
pio.renderers.default = "notebook"

Creating shaft element#

"""
Creates shaft elements with specified geometry and material properties.
"""
# Material Definition - Steel
steel = rs.Material(name="Steel", rho=7810, E=211e9, G_s=81.2e9)

# Shaft Geometry Parameters
shaft_length = 0.5  # [m]
shaft_diameter = 0.2  # [m]
num_elements = 5
element_length = shaft_length / num_elements

# Create shaft elements
shaft_elements = [
    rs.ShaftElement(
        L=element_length,
        idl=0.0,  # inner diameter (solid shaft)
        odl=shaft_diameter,
        material=steel,
        shear_effects=True,
        rotary_inertia=True,
        gyroscopic=True,
    )
    for _ in range(num_elements)
]

Example 3.6.1#

Determine the natural frequencies and the mode shapes of the rigid rotor of Example 3.5.1 for the following:

(a) The horizontal and vertical support stiffnesses are 1.0 MN/m at bearing 1 and 1.3 MN/m at bearing 2 and the rotor spins at 4,000 rev/min.

(b) The horizontal and vertical support stiffnesses are 1.0 and 1.1 MN/m, respectively, at bearing 1, and 1.3 and 1.4 MN/m, respectively, at bearing 2. Note that the bearings are anisotropic. Obtain the natural frequencies and mode shapes when the rotor is stationary and also rotating at 4,000 and 8,000 rev/min.

Rotor assembly#

"""
Creates rotor assemblies for each case.
"""

# Bearing configuration for case (a)
bearings_a = [
    rs.BearingElement(n=0, kxx=1.0e6, kyy=1.0e6, cxx=0),  # Bearing 1
    rs.BearingElement(n=5, kxx=1.3e6, kyy=1.3e6, cxx=0),  # Bearing 2
]

# Bearing configuration for case (b)
bearings_b = [
    rs.BearingElement(n=0, kxx=1.0e6, kyy=1.1e6, cxx=0),  # Bearing 1 (anisotropic)
    rs.BearingElement(n=5, kxx=1.3e6, kyy=1.4e6, cxx=0),  # Bearing 2 (anisotropic)
]

# Create rotor assembly for case (a)
rotor_a = rs.Rotor(shaft_elements=shaft_elements, bearing_elements=bearings_a)

# Create rotor assembly for case (b)
rotor_b = rs.Rotor(shaft_elements=shaft_elements, bearing_elements=bearings_b)

# Plot rotor configuration for case (a), same as case (b)
rotor_a.plot_rotor().show()

Case (a) analyze#

"""
Analyzes case (a) from Example 3.6.1:
- Isotropic bearings (same stiffness in x and y directions)
- Rotor speed: 4000 RPM
"""
# Run modal analysis at 4000 rpm
modal_results_a = rotor_a.run_modal(speed=Q_(4000, "RPM"), num_modes=8)

# Print natural frequencies
print("\nCase (a) Results - Isotropic Bearings at 4000 RPM:")
print(f"Natural Frequencies: {Q_(modal_results_a.wd, 'rad/s').to('Hz'):.2f}")

# Plot mode shapes
print("\nMode Shapes:")
for mode in range(4):
    modal_results_a.plot_mode_3d(
        mode=mode, frequency_units="Hz", damping_parameter="damping_ratio"
    ).show()
Case (a) Results - Isotropic Bearings at 4000 RPM:
Natural Frequencies: [21.33 21.58 29.58 43.61] Hz

Mode Shapes:

Case (b) analyze#

"""
Analyzes case (b) from Example 3.6.1:
- Anisotropic bearings (different stiffness in x and y directions)
- Multiple rotor speeds: 0, 4000, and 8000 RPM
"""

# Analyze at different speeds
speeds = [0, 4000, 8000]  # RPM
modal_results = []


# Print natural frequencies and plot mode shapes for each speed
for speed in speeds:
    results = rotor_b.run_modal(speed=Q_(speed, "RPM"), num_modes=8)
    modal_results.append(results)

    # Print natural frequencies
    print(f"\nCase (b) Results - Anisotropic Bearings at {speed} RPM:")
    print(f"Natural Frequencies: {Q_(results.wd, 'rad/s').to('Hz'):.2f}")

    # Plot mode shapes
    print(f"\nMode Shapes at {speed} RPM:")
    for mode in range(4):
        results.plot_mode_3d(
            mode=mode, frequency_units="Hz", damping_parameter="damping_ratio"
        ).show()
Case (b) Results - Anisotropic Bearings at 0 RPM:
Natural Frequencies: [21.50 22.46 35.84 37.34] Hz

Mode Shapes at 0 RPM: