ross.TimeResponseResults#

class ross.TimeResponseResults(rotor, t, yout, xout)#

Class used to store results and provide plots for Time Response Analysis.

This class takes the results from time response analysis and creates a plots given a force and a time. It’s possible to select through a time response for a single DoF, an orbit response for a single node or display orbit response for all nodes. The plot type options are:

  • 1d: plot time response for given probes.

  • 2d: plot orbit of a selected node of a rotor system.

  • 3d: plot orbits for each node on the rotor system in a 3D view.

  • dfft: plot response in frequency domain for given probes.

plot_1d: input probes. plot_2d: input a node. plot_3d: no need to input probes or node. plot_dfft: input probes.

Parameters:
rotorRotor.object

The Rotor object

tarray

Time values for the output.

youtarray

System response.

xoutarray

Time evolution of the state vector.

Returns:
figPlotly graph_objects.Figure()

The figure object with the plot.

Methods

__init__(rotor, t, yout, xout)#
data_time_response(probe, probe_units='rad', displacement_units='m', time_units='s', init_step=0)#

Return the time response given a list of probes in DataFrame format.

Parameters:
probelist

List with rs.Probe objects.

probe_unitsstr, optional

Units for probe orientation. Default is “rad”.

displacement_unitsstr, optional

Displacement units. Default is ‘m’.

time_unitsstr

Time units. Default is ‘s’.

init_stepint, optional

The index of the initial time step from which to extract the response. Default is 0.

Returns:
dfpd.DataFrame

DataFrame storing the time response measured by probes.

classmethod load(file)#

Load results from a .toml or .json file.

This function will load the simulation results from a .toml or .json 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_1d(probe, probe_units='rad', displacement_units='m', time_units='s', fig=None, **kwargs)#

Plot time response.

This method plots the time response given a list of probes with their nodes and orientations.

Parameters:
probelist

List with rs.Probe objects.

probe_unitsstr, option

Units for probe orientation. Default is “rad”.

displacement_unitsstr, optional

Displacement units. Default is ‘m’.

time_unitsstr

Time units. Default is ‘s’.

figPlotly graph_objects.Figure()

The figure object with the plot.

kwargsoptional

Additional key word arguments can be passed to change the plot layout only (e.g. width=1000, height=800, …). *See Plotly Python Figure Reference for more information.

Returns:
figPlotly graph_objects.Figure()

The figure object with the plot.

plot_2d(node, displacement_units='m', fig=None, **kwargs)#

Plot orbit response (2D).

This function will take a rotor object and plot its orbit response using Plotly.

Parameters:
node: int, optional

Selected node to plot orbit.

displacement_unitsstr, optional

Displacement units. Default is ‘m’.

figPlotly graph_objects.Figure()

The figure object with the plot.

kwargsoptional

Additional key word arguments can be passed to change the plot layout only (e.g. width=1000, height=800, …). *See Plotly Python Figure Reference for more information.

Returns:
figPlotly graph_objects.Figure()

The figure object with the plot.

plot_3d(displacement_units='m', rotor_length_units='m', fig=None, **kwargs)#

Plot orbit response (3D).

This function will take a rotor object and plot its orbit response using Plotly.

Parameters:
displacement_unitsstr

Displacement units. Default is ‘m’.

rotor_length_unitsstr

Rotor Length units. Default is ‘m’.

figPlotly graph_objects.Figure()

The figure object with the plot.

kwargsoptional

Additional key word arguments can be passed to change the plot layout only (e.g. hoverlabel_align=”center”, …). *See Plotly Python Figure Reference for more information.

Returns:
figPlotly graph_objects.Figure()

The figure object with the plot.

plot_dfft(probe, probe_units='rad', displacement_units='m', frequency_units='Hz', frequency_range=None, fig=None, **kwargs)#

Plot response in frequency domain.

This method plots the frequency domain response using Discrete Fourier Transform (dFFT) given a list of probes using Plotly.

Parameters:
probelist

List with rs.Probe objects.

probe_unitsstr, option

Units for probe orientation. Default is “rad”.

displacement_unitsstr, optional

Displacement units. Default is “m”.

frequency_unitsstr

Frequency units. Default is “Hz”.

frequency_rangetuple, pint.Quantity(tuple), optional

Tuple with (min, max) values for the frequencies that will be plotted. Frequencies that are not within the range are filtered out and are not plotted. It is possible to use a pint Quantity (e.g. Q_((2000, 1000), “RPM”)). Default is None (no filter).

figPlotly graph_objects.Figure()

The figure object with the plot.

kwargsoptional

Additional key word arguments can be passed to change the plot layout only (e.g. xaxis=dict(range=[0, 1000]), yaxis=dict(type=”log”)). *See Plotly Python Figure Reference for more information.

Returns:
figPlotly graph_objects.Figure()

The figure object with the plot.

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 or .json file.

This function will save the simulation results to a .toml or .json 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. The format is determined by the file extension (.toml or .json).

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)