Example 31 - Isotropic Bearings with Damping#
This example is based on Example 5.9.5 from {cite}friswell2010dynamics
The isotropic bearing Example 5.9.1 (Example 17) is repeated but with damping in the bearings. The, x and y directions are uncoupled, with a translational stiffness of 1 MN/m and a damping of 3 kNs/m in each direction.
import ross as rs
import numpy as np
import pandas as pd
from ross.units import Q_
steel = rs.Material("steel", E=211e9, G_s=81.2e9, rho=7810)
L = 0.25
N = 6
idl = 0
odl = 0.05
shaft = [rs.ShaftElement(L=L, idl=idl, odl=odl, material=steel) for i in range(N)]
bearings = [
rs.BearingElement(n=0, kxx=1e6, kyy=1e6, cxx=3e3, cyy=3e3, scale_factor=2),
rs.BearingElement(n=len(shaft), kxx=1e6, kyy=1e6, cxx=3e3, cyy=3e3, scale_factor=2),
]
disks = [
rs.DiskElement.from_geometry(
n=2, material=steel, width=0.07, i_d=odl, o_d=0.28, scale_factor="mass"
),
rs.DiskElement.from_geometry(
n=4, material=steel, width=0.07, i_d=odl, o_d=0.35, scale_factor="mass"
),
]
rotor = rs.Rotor(shaft_elements=shaft, disk_elements=disks, bearing_elements=bearings)
rotor.plot_rotor()
Plotting the Campbell Diagram#
campbell = rotor.run_campbell(speed_range=Q_(list(range(0, 4500, 50)), "RPM"))
campbell.plot(frequency_units="RPM", frequencies=8)
Plotting the Mode Shapes and Damped Natural Frequencies#
modal = rotor.run_modal(speed=Q_(4000, "RPM"))
for mode in range(7):
display(modal.plot_mode_3d(mode, frequency_units="Hz"))
Creating table with eigenvalues, natural frequencies and damping ratios#
def modal_table(modal_results, rpm):
eig = modal_results.evalues
omega_n = np.abs(eig)
omega_d = np.imag(eig)
zeta = -np.real(eig) / omega_n
fn = omega_n / (2 * np.pi)
fd = omega_d / (2 * np.pi)
return pd.DataFrame(
{
"Speed (RPM)": [rpm] * 8,
"Root s (rad/s)": eig[:8],
"Wn (Hz)": fn[:8],
"Wd (Hz)": fd[:8],
"Damping Ratio": zeta[:8],
}
)
modal_0 = rotor.run_modal(speed=Q_(0, "RPM"))
modal_4000 = rotor.run_modal(speed=Q_(4000, "RPM"))
df_modal_0 = modal_table(modal_0, rpm=0)
df_modal_4000 = modal_table(modal_4000, rpm=4000)
df_combined = pd.concat([df_modal_0, df_modal_4000], ignore_index=True)
display(df_combined)
| Speed (RPM) | Root s (rad/s) | Wn (Hz) | Wd (Hz) | Damping Ratio (%) | |
|---|---|---|---|---|---|
| 0 | 0 | -4.423835+ 87.257936j | 13.905368 | 13.887532 | 5.063333e+00 |
| 1 | 0 | -4.423835+ 87.257936j | 13.905368 | 13.887532 | 5.063333e+00 |
| 2 | 0 | -78.240826+292.422766j | 48.177624 | 46.540529 | 2.584688e+01 |
| 3 | 0 | -78.240826+292.422766j | 48.177624 | 46.540529 | 2.584688e+01 |
| 4 | 0 | -566.540378+648.581404j | 137.060578 | 103.224936 | 6.578675e+01 |
| 5 | 0 | -566.540378+648.581404j | 137.060578 | 103.224936 | 6.578675e+01 |
| 6 | 0 | 0.000000+650.407866j | 103.515627 | 103.515627 | -5.070025e-13 |
| 7 | 0 | -657.308076+834.757536j | 169.099715 | 132.855788 | 6.186517e+01 |
| 8 | 4000 | -4.083081+ 85.965810j | 13.697307 | 13.681884 | 4.744309e+00 |
| 9 | 4000 | -4.741740+ 88.414706j | 14.091860 | 14.071637 | 5.355371e+00 |
| 10 | 4000 | -74.101769+263.786351j | 43.607964 | 41.982902 | 2.704475e+01 |
| 11 | 4000 | -78.810422+318.235036j | 52.178705 | 50.648679 | 2.403867e+01 |
| 12 | 4000 | -0.000000+650.407866j | 103.515627 | 103.515627 | 1.019396e-11 |
| 13 | 4000 | -402.590859+655.012043j | 122.365228 | 104.248404 | 5.236318e+01 |
| 14 | 4000 | -667.237536+663.899669j | 149.806039 | 105.662914 | 7.088776e+01 |
| 15 | 4000 | -694.666683+818.186345j | 170.822321 | 130.218401 | 6.472201e+01 |