ross.MultiLobeBearing#

class ross.MultiLobeBearing(n, n_lobes=None, pad_arc=None, preload=None, offset=0.5, first_lobe_angle=None, **kwargs)#

Multi-lobe journal bearing: n_lobes preloaded arcs.

Lobes are evenly spaced around the bore; the first lobe center sits at 180 / n_lobes degrees (so a two-lobe bearing has its lobes at 90 and 270 degrees, matching the elliptical layout) unless first_lobe_angle says otherwise.

Parameters:
nint

Node in which the bearing will be located.

n_lobesint

Number of lobes (3 and 4 are the common configurations).

pad_arcfloat, pint.Quantity

Arc length of each lobe, rad.

preloadfloat or array_like

Lobe preload factor, one value or one per lobe.

offsetfloat or array_like, optional

Lobe offset fraction, one value or one per lobe. Default is 0.5.

first_lobe_anglefloat, pint.Quantity, optional

Angular position of the first lobe center, rad. Default is pi / n_lobes.

**kwargsdict

Parameters of ross.bearings.fluid_film_bearing.FluidFilmBearing.

Returns:
A MultiLobeBearing object.

References

Someya, T. (Ed.). (1989). Journal-Bearing Databook. Springer.

Methods

C(frequency, speed=None)#

Damping matrix for an instance of a bearing element.

This method returns the damping matrix for an instance of a bearing element.

Parameters:
frequencyfloat

The excitation (whirl) frequency (rad/s).

speedfloat, optional

The rotor speed (rad/s). Default is the excitation frequency (synchronous evaluation).

Returns:
Cnp.ndarray

A 3x3 matrix of floats containing the cxx, cxy, cyx, cyy, and czz values (N*s/m).

Examples

>>> bearing = bearing_example()
>>> bearing.C(0)
array([[200.,   0.,   0.],
       [  0., 150.,   0.],
       [  0.,   0.,  50.]])
G()#

Gyroscopic matrix for an instance of a bearing element.

This method returns the mass matrix for an instance of a bearing element.

Returns:
Gnp.ndarray

A 3x3 matrix of floats.

Examples

>>> bearing = bearing_example()
>>> bearing.G()
array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])
K(frequency, speed=None)#

Stiffness matrix for an instance of a bearing element.

This method returns the stiffness matrix for an instance of a bearing element.

Parameters:
frequencyfloat

The excitation (whirl) frequency (rad/s).

speedfloat, optional

The rotor speed (rad/s). Default is the excitation frequency (synchronous evaluation).

Returns:
Knp.ndarray

A 3x3 matrix of floats containing the kxx, kxy, kyx, kyy and kzz values (N/m).

Examples

>>> bearing = bearing_example()
>>> bearing.K(0)
array([[1000000.,       0.,       0.],
       [      0.,  800000.,       0.],
       [      0.,       0.,  100000.]])
M(frequency, speed=None)#

Mass matrix for an instance of a bearing element.

This method returns the mass matrix for an instance of a bearing element.

Parameters:
frequencyfloat

The excitation (whirl) frequency (rad/s).

speedfloat, optional

The rotor speed (rad/s). Default is the excitation frequency (synchronous evaluation).

Returns:
Mnp.ndarray

Mass matrix (kg).

Examples

>>> bearing = bearing_example()
>>> bearing.M(0)
array([[0., 0., 0.],
       [0., 0., 0.],
       [0., 0., 0.]])
__init__(n, n_lobes=None, pad_arc=None, preload=None, offset=0.5, first_lobe_angle=None, **kwargs)#
coefficients(speed, frequency=None)#

Return the stiffness and damping matrices at a rotor speed.

Coefficients are interpolated on the element’s table; for a 2-D table the excitation frequency selects the whirl axis.

Parameters:
speedfloat, pint.Quantity

Rotor speed, rad/s.

frequencyfloat, pint.Quantity, optional

Excitation (whirl) frequency, rad/s. Default is the rotor speed (synchronous evaluation).

Returns:
stiffnesstuple of float

(kxx, kxy, kyx, kyy), N/m.

dampingtuple of float

(cxx, cxy, cyx, cyy), N*s/m.

dof_local_index()#

Get the local index for a element specific degree of freedom.

Returns:
local_index: namedtupple

A named tuple containing the local index.

Examples

>>> # Example using BearingElement
>>> from ross.bearing_seal_element import bearing_example
>>> bearing = bearing_example()
>>> bearing.dof_local_index()
LocalIndex(x_0=0, y_0=1, z_0=2)
dof_mapping()#

Degrees of freedom mapping.

Returns a dictionary with a mapping between degree of freedom and its index.

Returns:
dof_mappingdict

A dictionary containing the degrees of freedom and their indexes.

Examples

The numbering of the degrees of freedom for each node.

Being the following their ordering for a node:

x_0 - horizontal translation y_0 - vertical translation z_0 - axial translation

>>> bearing = bearing_example()
>>> bearing.dof_mapping()
{'x_0': 0, 'y_0': 1, 'z_0': 2}
format_table(speed=None, frequency=None, coefficients=None, frequency_units='rad/s', stiffness_units='N/m', damping_units='N*s/m', mass_units='kg')#

Return speed / frequency vs coefficients in table format.

The table lists the coefficients along the axes the element is tabulated on: the rotor speed, the excitation (whirl) frequency, or every (speed, frequency) pair for 2-D tables.

Parameters:
speedarray, pint.Quantity, optional

Array with rotor speeds (rad/s). Default is 5 values from min to max speed.

frequencyarray, pint.Quantity, optional

Array with excitation (whirl) frequencies (rad/s). Default is 5 values from min to max frequency.

coefficientslist, str, optional

List or str with the coefficients to include. Defaults is a list of stiffness and damping coefficients.

frequency_unitsstr, optional

Units for the speed and frequency columns. Default is rad/s.

stiffness_unitsstr, optional

Stiffness units. Default is N/m.

damping_unitsstr, optional

Damping units. Default is N*s/m.

mass_unitsstr, optional

Mass units. Default is kg.

Returns:
tablePrettyTable object

Table object with bearing coefficients to be printed.

classmethod from_table(n, file, sheet_name=0, tag=None, n_link=None, scale_factor=1, color='#355d7a')#

Instantiate a bearing using inputs from an Excel table.

A header with the names of the columns is required. These names should match the names expected by the routine (usually the names of the parameters, but also similar ones). The program will read every row bellow the header until they end or it reaches a NaN.

Parameters:
nint

The node in which the bearing will be located in the rotor.

filestr

Path to the file containing the bearing parameters.

sheet_nameint or str, optional

Position of the sheet in the file (starting from 0) or its name. If none is passed, it is assumed to be the first sheet in the file.

tagstr, optional

A tag to name the element. Default is None.

n_linkint, optional

Node to which the bearing will connect. If None the bearing is connected to ground. Default is None.

scale_factorfloat, optional

The scale factor is used to scale the bearing drawing. Default is 1.

colorstr, optional

A color to be used when the element is represented. Default is ‘#355d7a’ (Cardinal).

Returns:
bearingrs.BearingElement

A bearing object.

Examples

>>> import os
>>> file_path = os.path.dirname(os.path.realpath(__file__)) + '/data/bearing_seal_si.xls'
>>> BearingElement.from_table(0, file_path, n_link=1)
BearingElement(n=0, n_link=1,
 kxx=[13798100.0, ...
classmethod get_base_class()#

Get the direct subclass of Element in the inheritance chain.

Returns the first class in the inheritance hierarchy that directly inherits from Element. This is useful for identifying the base element type when working with subclasses or indirect subclasses.

Returns:
base_classtype

The direct subclass of Element in the inheritance chain.

get_class_name_prefix()#

Extract prefix of the class name preceding ‘Element’, insert spaces before uppercase letters.

Returns:
prefixstr

The processed class name prefix.

Examples

>>> # Example using BearingElement
>>> from ross.bearing_seal_element import bearing_example
>>> bearing = bearing_example()
>>> bearing.get_class_name_prefix()
'Bearing'
classmethod get_subclasses()#

Get all subclasses of the Element class.

Returns:
subclasseslist

A list containing all subclasses of the Element class.

classmethod load(file)#

Load an element from a .toml or .json file.

Classes whose save() writes a plain coefficient table (see save_coefficient_table()) read it back as the class named in the file, so PlainJournal.load or SqueezeFilmDamper.load returns the saved BearingElement table instead of re-running the solver. Other subclasses keep building themselves, as before.

Parameters:
filestr, pathlib.Path

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

Returns:
The element object.

Examples

>>> from tempfile import tempdir
>>> from pathlib import Path
>>> bearing = bearing_example()
>>> file = Path(tempdir) / 'bearing_load.toml'
>>> bearing.save(file)
>>> BearingElement.load(file) == bearing
True
plot(coefficients=None, frequency_units='rad/s', stiffness_units='N/m', damping_units='N*s/m', mass_units='kg', fig=None, **kwargs)#

Plot coefficient vs speed or frequency.

Coefficients are plotted against the axis they are tabulated on: the rotor speed axis, the excitation (whirl) frequency axis, or, for 2-D tables, one curve per rotor speed against the frequency axis.

Parameters:
coefficientslist, str

List or str with the coefficients to plot.

frequency_unitsstr, optional

Units for the speed or frequency axis. Default is rad/s.

stiffness_unitsstr, optional

Stiffness units. Default is N/m.

damping_unitsstr, optional

Damping units. Default is N*s/m.

mass_unitsstr, optional

Mass units. Default is kg.

**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.

classmethod read_toml_data(data)#

Read and parse data stored in a .toml or .json file.

Overrides the base Element method to pass extra saved keys (e.g. pre-computed coefficients) as kwargs to the constructor. This allows subclasses to skip expensive computation when coefficients are already available from a saved file.

Parameters:
datadict

Dictionary obtained from toml.load() or json.load().

Returns:
The element object.
save(file)#

Save the element as a plain coefficient-table BearingElement.

The downgrade is deliberate (and applies to every subclass): the saved file holds the solved dynamic-coefficient table, so loading it restores the rotordynamic behavior instantly instead of re-running the solver. Re-create the object from its constructor to change the bearing model.

Parameters:
filestr or pathlib.Path

File to write (created or updated).

save_coefficient_table(file)#

Save the element as a plain coefficient-table BearingElement.

Solver-based bearings (FluidFilmBearing and its configuration classes, ThrustPad, SqueezeFilmDamper) use this as their save(): the file holds the solved dynamic-coefficient table under a BearingElement_<tag> section, so loading it restores the rotordynamic behavior instantly instead of re-running the solver. Re-create the object from its constructor to change the bearing model.

Parameters:
filestr or pathlib.Path

File to write (created or updated).

set_tag(index, check_tag=True)#

Set a tag to the given element.

Parameters:
indexint

The index of the element to standardize the tag.

check_tagbool, optional

Whether to check if the tag is already set.

summary()#

Present a summary for the element.

A pandas series with the element properties as variables.

Returns:
A pandas series.

Examples

>>> # Example using DiskElement
>>> from ross.disk_element import disk_example
>>> disk = disk_example()
>>> disk.summary()
n                             0
n_l                           0
n_r                           0...
classmethod table_to_toml(n, file)#

Convert bearing parameters to toml.

Convert a table with parameters of a bearing element to a dictionary ready to save to a toml file that can be later loaded by ross.

Parameters:
nint

The node in which the bearing will be located in the rotor.

filestr

Path to the file containing the bearing parameters.

Returns:
datadict

A dict that is ready to save to toml and readable by ross.

Examples

>>> import os
>>> file_path = os.path.dirname(os.path.realpath(__file__)) + '/data/bearing_seal_si.xls'
>>> BearingElement.table_to_toml(0, file_path)
{'n': 0, 'kxx': [13798100.0, ...