Tutorial - Static and Modal Analyses#
This is the second part of a basic tutorial on how to use ROSS (rotordynamics open-source software), a Python library for rotordynamic analysis. In this tutorial, you will learn how to run several rotordynamic analyzes with your rotor model.
To get results, we always have to use one of the .run_ methods available for a rotor object. These methods will return objects that store the analysis results and that also have plot methods available. These methods will use the plotly library to make graphs common to a rotordynamic analysis.
Rotor model#
First, let’s recover the rotor model built in the previous tutorial.
import ross as rs
import numpy as np
# Make sure the default renderer is set to 'notebook' for inline plots in Jupyter
import plotly.io as pio
import plotly.graph_objects as go
pio.renderers.default = "notebook"
c:\Users\vinic\OneDrive\Desktop\Digital_Twin\Github\ross\venv\Lib\site-packages\tqdm\auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
from .autonotebook import tqdm as notebook_tqdm
rotor3 = rs.compressor_example()
node_increment = 5
rotor3.plot_rotor(nodes=node_increment)
C:\Users\vinic\OneDrive\Desktop\Digital_Twin\Github\ross\ross\rotor_assembly.py:4244: UserWarning:
File was created with ROSS 2.0.0, but current version is 2.1.0. This may lead to incompatibilities.
Rotor Analyses#
In the last tutorial we have learnt how to create a rotor model with Rotor class. Now, we’ll use the same class to run the simulation. There are some methods, most of them with the prefix run_ you can use to run the rotordynamics analyses.
For most of the methods, you can use the command .plot() to display a graphical visualization of the results (e.g run_campbel().plot(), run_modal().plot_mode_3d(mode)).
ROSS offers the following analyses:
Static analysis
Modal analysis
Campbell Diagram
Plotly library#
ROSS uses Plotly for plotting results. All the figures can be stored and manipulated following Plotly API.
The following sections present the results and how to return the Plotly Figures.
1.1 Static Analysis#
This method runs the static analysis for the rotor. It calculates the static deformation due to the gravity effects (shaft and disks weight). It also returns the bending moment and shearing force on each node, and you can return a free-body-diagram representation for the rotor, with the self weight, disks weight and reaction forces on bearings displayed.
1.1.1 Running static analysis#
To run the simulation, use the .run_static() method. You can define a variable to store the results.
Storing the results, it’s possible to return the following arrays:
disk_forces_nodaldisk_forces_tagbearing_forces_nodalbearing_forces_tagdisp_yVxBm
static = rotor3.run_static()
Returning forces#
Disk forces#
.disk_forces_nodal: Returns a dictionary specifying the node where the disk is located and the force value..disk_forces_tag: Returns a dictionary mapping each disk tag to its force value and the force value.
Bearing forces#
.bearing_forces_nodal: Returns a dictionary specifying the node where the bearing is located and the force value..bearing_forces_tag: Returns a dictionary mapping each bearing tag to its force value and the force value.
print("Disk forces - nodes")
print(rotor3.disk_forces_nodal)
print("")
print("Disk forces - tags")
print(rotor3.disk_forces_tag)
print("")
print("Bearing forces - nodes")
print(rotor3.bearing_forces_nodal)
print("")
print("Bearing forces - tags")
print(rotor3.bearing_forces_tag)
Disk forces - nodes
{'node_3': 148.2741036647235, 'node_20': 67.76283441291268, 'node_23': 67.95896417966495, 'node_26': 68.15509394641724, 'node_29': 68.44928859654566, 'node_32': 68.0570290630411, 'node_35': 68.25315882979338}
Disk forces - tags
{'Disk 0': 148.2741036647235, 'Disk 1': 67.76283441291268, 'Disk 2': 67.95896417966495, 'Disk 3': 68.15509394641724, 'Disk 4': 68.44928859654566, 'Disk 5': 68.0570290630411, 'Disk 6': 68.25315882979338}
Bearing forces - nodes
{'node_7': np.float64(1216.2827567757274), 'node_48': np.float64(1204.6514712823341)}
Bearing forces - tags
{'Bearing 0': np.float64(1216.2827567757274), 'Bearing 1': np.float64(1204.6514712823341)}
Other attributes from static analysis#
.Vx: Shearing force array.Bm: Bending moment array.deformationDisplacement in Y direction
1.1.2 Plotting results#
With results stored, you can use some methods to plot the results. Currently, there’re four plots you can retrieve from static analysis:
.plot_free_body_diagram().plot_deformation().plot_shearing_force().plot_bending_moment()
Plotting free-body-diagram#
static.plot_free_body_diagram()
Plotting deformation#
static.plot_deformation()
Plotting shearing force diagram#
static.plot_shearing_force()