ross.Orbit#

class ross.Orbit(*, node, node_pos, ru_e, rv_e)#

Class used to construct orbits for a node in a mode or deflected shape.

The matrix H contains information about the whirl direction, the orbit minor and major axis and the orbit inclination. The matrix is calculated by \(H = T.T^T\) where the matrix T is constructed using the eigenvector corresponding to the natural frequency of interest:

\[\begin{split}\begin{eqnarray} \begin{bmatrix} u(t)\\ v(t) \end{bmatrix} = \mathfrak{R}\Bigg( \begin{bmatrix} r_u e^{j\eta_u}\\ r_v e^{j\eta_v} \end{bmatrix}\Bigg) e^{j\omega_i t} = \begin{bmatrix} r_u cos(\eta_u + \omega_i t)\\ r_v cos(\eta_v + \omega_i t) \end{bmatrix} = {\bf T} \begin{bmatrix} cos(\omega_i t)\\ sin(\omega_i t) \end{bmatrix} \end{eqnarray}\end{split}\]

Where \(r_u e^{j\eta_u}\) e \(r_v e^{j\eta_v}\) are the elements of the ith eigenvector, corresponding to the node and natural frequency of interest (mode).

\[\begin{split}{\bf T} = \begin{bmatrix} r_u cos(\eta_u) & -r_u sin(\eta_u)\\ r_u cos(\eta_u) & -r_v sin(\eta_v) \end{bmatrix}\end{split}\]
Parameters
nodeint

Orbit node in the rotor.

ru_ecomplex

Element in the vector corresponding to the x direction.

rv_ecomplex

Element in the vector corresponding to the y direction.

Methods

__init__(*, node, node_pos, ru_e, rv_e)#
calculate_amplitude(angle)#

Calculates the amplitude for a given angle of the orbit.

Parameters
anglefloat, str, pint.Quantity
Returns
amplitude, phasetuple

Tuple with (amplitude, phase) value. The amplitude units are the same as the ru_e and rv_e used to create the orbit.

classmethod load(file)#

Load results from a .toml file.

This function will load the simulation results from a .toml file. The file must have all the argument’s names and values that are needed to reinstantiate the class.

Parameters
filestr, pathlib.Path

The name of the file the results will be loaded from.

Examples

>>> # Example running a stochastic unbalance response
>>> from tempfile import tempdir
>>> from pathlib import Path
>>> import ross as rs
>>> # Running an example
>>> rotor = rs.rotor_example()
>>> freq_range = np.linspace(0, 500, 31)
>>> n = 3
>>> m = 0.01
>>> p = 0.0
>>> results = rotor.run_unbalance_response(n, m, p, freq_range)
>>> # create path for a temporary file
>>> file = Path(tempdir) / 'unb_resp.toml'
>>> results.save(file)
>>> # Loading file
>>> results2 = rs.ForcedResponseResults.load(file)
>>> abs(results2.forced_resp).all() == abs(results.forced_resp).all()
True
plot_orbit(fig=None)#
classmethod read_toml_data(data)#

Read and parse data stored in a .toml file.

The data passed to this method needs to be according to the format saved in the .toml file by the .save() method.

Parameters
datadict

Dictionary obtained from toml.load().

Returns
The result object.
save(file)#

Save results in a .toml file.

This function will save the simulation results to a .toml file. The file will have all the argument’s names and values that are needed to reinstantiate the class.

Parameters
filestr, pathlib.Path

The name of the file the results will be saved in.

Examples

>>> # Example running a unbalance response
>>> from tempfile import tempdir
>>> from pathlib import Path
>>> import ross as rs
>>> # Running an example
>>> rotor = rs.rotor_example()
>>> speed = np.linspace(0, 1000, 101)
>>> response = rotor.run_unbalance_response(node=3,
...                                         unbalance_magnitude=0.001,
...                                         unbalance_phase=0.0,
...                                         frequency=speed)
>>> # create path for a temporary file
>>> file = Path(tempdir) / 'unb_resp.toml'
>>> response.save(file)