ross.MultiLobeBearing
Contents
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_lobespreloaded arcs.Lobes are evenly spaced around the bore; the first lobe center sits at
180 / n_lobesdegrees (so a two-lobe bearing has its lobes at 90 and 270 degrees, matching the elliptical layout) unlessfirst_lobe_anglesays 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
frequencyselects 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 (seesave_coefficient_table()) read it back as the class named in the file, soPlainJournal.loadorSqueezeFilmDamper.loadreturns the savedBearingElementtable 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 (
FluidFilmBearingand its configuration classes,ThrustPad,SqueezeFilmDamper) use this as theirsave(): the file holds the solved dynamic-coefficient table under aBearingElement_<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, ...