Example 7 - Hydrodynamic Bearings#
In this example, we use the rotor seen in Example 5.9.6 from [Friswell, 2010].
Same rotor of Example 3, but the bearings are replaced with hydrodynamic bearings. In order to instantiate them, rather than giving the stiffness and damping data, we will calculate them using their hydrodynamic data, as provided by Example 5.5.1 from the book: The oil-film bearings have a diameter of 100 mm, are 30 mm long, and each supports a static load of 525 N, which represents half of the weight of the rotor. The radial clearance in the bearings is 0.1 mm and the oil film has a viscosity of 0.1 Pa s.
import ross as rs
import numpy as np
import plotly.graph_objects as go
# Make sure the default renderer is set to 'notebook' for inline plots in Jupyter
import plotly.io as pio
pio.renderers.default = "notebook"
Q_ = rs.Q_
# Classic Instantiation of the rotor
shaft_elements = []
disk_elements = []
steel = rs.materials.steel
for i in range(6):
shaft_elements.append(rs.ShaftElement(L=0.25, material=steel, n=i, idl=0, odl=0.05))
disk_elements.append(
rs.DiskElement.from_geometry(n=2, material=steel, width=0.07, i_d=0.05, o_d=0.28)
)
disk_elements.append(
rs.DiskElement.from_geometry(n=4, material=steel, width=0.07, i_d=0.05, o_d=0.35)
)
bearing = rs.BearingFluidFlow(
n=0,
nz=30,
ntheta=20,
length=0.03,
omega=np.linspace(1, 5000, 5),
p_in=0,
p_out=0,
radius_rotor=0.0499,
radius_stator=0.05,
visc=0.1,
rho=860.0,
load=525,
)
# copy bearing to decrease compute time and set node
bearing_copy = rs.BearingElement(
n=6,
frequency=bearing.frequency,
kxx=bearing.kxx,
kxy=bearing.kxy,
kyx=bearing.kyx,
kyy=bearing.kyy,
cxx=bearing.cxx,
cxy=bearing.cxy,
cyx=bearing.cyx,
cyy=bearing.cyy,
)
bearing_seal_elements = [bearing, bearing_copy]
rotor = rs.Rotor(
shaft_elements=shaft_elements,
bearing_elements=bearing_seal_elements,
disk_elements=disk_elements,
)
rotor.plot_rotor()
# copy bearing to decrease compute time and set node
bearing_copy = rs.BearingElement(
n=6,
frequency=bearing.frequency,
kxx=bearing.kxx,
kxy=bearing.kxy,
kyx=bearing.kyx,
kyy=bearing.kyy,
cxx=bearing.cxx,
cxy=bearing.cxy,
cyx=bearing.cyx,
cyy=bearing.cyy,
)
bearing_seal_elements = [bearing, bearing_copy]
rotor = rs.Rotor(
shaft_elements=shaft_elements,
bearing_elements=bearing_seal_elements,
disk_elements=disk_elements,
)
rotor.plot_rotor()
campbell = rotor.run_campbell(speed_range=Q_(list(range(0, 4500, 50)), "RPM"))
c:\users\vinic\onedrive\desktop\digital_twin\github\ross_atual\ross\ross\rotor_assembly.py:1319: UserWarning:
Extrapolating bearing coefficients. Be careful when post-processing the results.
# Obtaining results for w=4000RPM
modal = rotor.run_modal(4000 * np.pi / 30)
print("Normal Instantiation =", modal.wn / (2 * np.pi))
Normal Instantiation = [17.10226474 18.09399672 35.64448125 35.89722483 67.02052708 71.41231854]
# The input units must be according to your unit standard system
campbell = rotor.run_campbell(np.linspace(0, 4000 * np.pi / 30, 50))
# Plotting frequency in RPM
campbell.plot(frequency_units="RPM")
c:\users\vinic\onedrive\desktop\digital_twin\github\ross_atual\ross\ross\rotor_assembly.py:1319: UserWarning:
Extrapolating bearing coefficients. Be careful when post-processing the results.
for mode in range(6):
display(modal.plot_mode_3d(mode, frequency_units="Hz"))
for mode in range(6):
display(modal.plot_orbit(mode, nodes=[2, 4]))
References#
[Fri10]
Michael I Friswell. Dynamics of rotating machines. Cambridge University Press, 2010.