ross.FluidFilmBearing
Contents
ross.FluidFilmBearing#
- class ross.FluidFilmBearing(n, speed=None, frequency=None, journal_diameter=None, radial_clearance=None, pad_thickness=None, pivot_angle=None, pad_arc=None, pad_axial_length=None, preload=None, offset=None, lubricant=None, oil_supply_temperature=None, oil_flow_v=None, weight=0, fxs_load=0, fys_load=0, bearing_type='fixed_geometry', operating_type='regular_flooded', thermal_type='full', temp_j_type='averaged_film_temperature', deform_type=None, equilibrium_type='match_load', sump_type='supply_temperature', pivot_type='user_specified_stiffness', total_ex_film=40, total_ey_film=30, total_ez_film=20, total_ey_pad=20, track_arc=None, track_axial_length=None, track_depth=None, taper_depth_le=None, taper_arc_le=None, taper_depth_te=None, taper_arc_te=None, pocket_arc=0, pocket_axial_length=0, pad_E=206800000000.0, pad_poisson=0.3, pad_conductivity=50.0, pad_expansion=1.17e-05, pad_density=7830.0, journal_expansion=1.17e-05, shell_expansion=1.17e-05, pad_convection=735.9030318060636, edges_convection=73.59030318060636, environment_temperature=294.261, environment_convection=735.9030318060636, sump_convect_area=0, house_diameter=0, pivot_diameter=0, pivot_stiffness=0, crush_fit=0, shell_id=0, shell_od=0, ambient_pressure_1=0, ambient_pressure_2=0, cavitation_pressure=0, oil_supply_pressure=0, reference_temperature=297.0388888888889, journal_temperature=None, probes=None, excitation_ratio=1, initial_position=(0.15, -0.2), starvation_number=1, hot_oil_lambda=0.8, relax_pressure=0.5, relax_temperature=1, relax_deformation=1, relax_pivot=1, re_laminar=500, re_turbulent=1000, num_processes=None, **kwargs)#
Journal bearing solved by the fluid-film TEHD engine.
Shared base for the hydrodynamic journal bearing classes. The bearing is described by per-pad arrays – pivot position, arc, preload, offset and the optional pocket / taper fields – plus operating conditions and model-selection flags; any fixed-geometry or tilting-pad journal bearing the engine supports can be expressed directly through this class. The configuration subclasses only translate friendlier constructor surfaces into these arrays.
For every entry of
speedthe engine solves the journal equilibrium (film pressure, temperature and deformation as selected by the model flags) and reduces the result to the synchronous 2x2 stiffness and damping matrices that make up the element’s coefficient table. Solved pressure / temperature / film-thickness fields are kept on a results object; everyplot_*/show_*call on the bearing is delegated to it.save()deliberately downgrades the element to a plainross.BearingElementholding the solved coefficient table: loading the file restores the rotordynamic behavior without re-running the solver (the solver inputs are not round-tripped).- Parameters:
- nint
Node in which the bearing will be located.
- speedarray_like, pint.Quantity
Rotor speeds, rad/s. One solver case runs per entry.
- frequencyarray_like, pint.Quantity, optional
Excitation (whirl) frequencies, rad/s. When given, one solver case runs per (speed, frequency) pair with the whirl ratio
frequency / speed, and the element carries a 2-D coefficient table of shape(len(speed), len(frequency))interpolated on both axes (excitation_ratiois ignored). Requires nonzero speeds. Default is None (1-D table over the speed axis, whirl ratioexcitation_ratio).- journal_diameterfloat, pint.Quantity
Journal diameter, m.
- radial_clearancefloat, pint.Quantity
Radial (bearing-set) clearance, m.
- pad_thicknessfloat, pint.Quantity
Radial pad thickness, m.
- pivot_anglearray_like, pint.Quantity
Per-pad pivot (or arc-center) angular position, rad.
- pad_arcarray_like, pint.Quantity
Per-pad arc length, rad.
- pad_axial_lengtharray_like, pint.Quantity
Per-pad axial length, m.
- preloadarray_like
Per-pad preload factor (0 for a cylindrical land).
- offsetarray_like
Per-pad pivot offset fraction (0.5 = centered).
- lubricantstr or dict
Key of
ross.bearings.lubricants.lubricants_dictor a dict with the same field names (SI).- oil_supply_temperaturefloat, pint.Quantity
Lubricant supply temperature, K.
- oil_flow_vfloat, pint.Quantity
Supplied lubricant volumetric flow, m**3/s.
- weightfloat, pint.Quantity, optional
Gravity load on the bearing (applied in -y), N. Default is 0.
- fxs_load, fys_loadfloat, pint.Quantity, optional
Additional static load in x and y, N. Default is 0. The total static load must be nonzero for the load-matched equilibrium.
- bearing_typestr, optional
One of
"fixed_geometry"(default),"conventional_tilting_pad","inlet_groove_tilting_pad","spray_bar_tilting_pad","pressure_dam".- operating_typestr, optional
One of
"regular_flooded"(default),"axial_flow","high_ambient_pressure","starved_condition_even","starved_condition_uneven","oil_ring_lubricated".- thermal_typestr or None, optional
"full"(default): energy equation over film and pad with conduction;"adiabatic": 2-D film energy equation;None: isoviscous.- temp_j_typestr, optional
Journal surface temperature treatment:
"averaged_film_temperature"(default),"no_heat_flux_into_journal"or"insulated_shaft_surface".- deform_typestr or None, optional
Pad/pivot deformation model:
None(default, rigid),"pad_mechanical","pad_mechanical_thermal","pad_mechanical_thermal_shaft_shell_thermal","pad_mechanical_thermal_shaft_shell_thermal_pivot_mechanical"or"pad_pivot_mechanical".- equilibrium_typestr, optional
"match_load"(default) solves the journal position for the applied load;"match_eccentricity"holdsinitial_position.- sump_typestr, optional
Groove-mixing supply temperature source:
"supply_temperature"(default) or"sump_temperature".- pivot_typestr, optional
Pivot flexibility model (used by the pivot deformation types):
"ball_in_socket","button","rocker_back"or"user_specified_stiffness"(default).- total_ex_film, total_ey_film, total_ez_film, total_ey_padint, optional
Element counts of the film (circumferential / radial / axial) and pad (radial) meshes; all must be even. Default is 40 / 30 / 20 / 20.
- track_arc, taper_arc_le, taper_arc_tearray_like, pint.Quantity, optional
Per-pad pocket (or dam track) arc and leading/trailing taper arcs, rad. Default is 0.
- track_axial_lengtharray_like, pint.Quantity, optional
Per-pad pocket/track axial length, m. Default is 0.
- track_depth, taper_depth_le, taper_depth_tearray_like, pint.Quantity, optional
Per-pad pocket/track depth and taper depths, m. Default is 0.
- pocket_arcfloat, pint.Quantity, optional
Leading-edge-groove pocket arc, rad. Default is 0.
- pocket_axial_lengthfloat, pint.Quantity, optional
Leading-edge-groove pocket axial length, m. Default is 0.
- pad_Efloat, pint.Quantity, optional
Pad Young’s modulus, Pa. Default is 206.8e9 (steel).
- pad_poissonfloat, optional
Pad Poisson ratio. Default is 0.3.
- pad_conductivityfloat, pint.Quantity, optional
Pad thermal conductivity, W/(m*K). Default is 50.
- pad_expansion, journal_expansion, shell_expansionfloat, optional
Thermal expansion coefficients, 1/K. Default is 1.17e-5 (steel).
- pad_densityfloat, optional
Pad material density, kg/m**3. Default is 7830.
- pad_convectionfloat or array_like, optional
Pad back-face convection coefficient, W/(m**2*K). A scalar is applied to every pad. Default is 735.903.
- edges_convectionfloat, optional
Pad edge convection coefficient, W/(m**2*K). Default is 73.59.
- environment_temperaturefloat, pint.Quantity, optional
Environment temperature, K. Default is 294.261.
- environment_convectionfloat, optional
Sump-to-environment convection coefficient, W/(m**2*K). Default is 735.903.
- sump_convect_areafloat, optional
Sump convection area, m**2 (oil-ring-lubricated operation). Default is 0.
- house_diameter, pivot_diameterfloat, pint.Quantity, optional
Housing / pivot contact diameters for the Hertzian pivot models, m. Default is 0.
- pivot_stiffnessfloat, pint.Quantity, optional
Pivot stiffness for
"user_specified_stiffness", N/m. Default is 0.- crush_fitfloat, pint.Quantity, optional
Shell crush (shrink) fit, m. Default is 0.
- shell_id, shell_odfloat, pint.Quantity, optional
Shell inner/outer diameter for the shell thermal growth model, m. Default is 0.
- ambient_pressure_1, ambient_pressure_2float, pint.Quantity, optional
Ambient (edge) pressures, Pa. Default is 0.
- cavitation_pressurefloat, pint.Quantity, optional
Cavitation pressure, Pa. Default is 0.
- oil_supply_pressurefloat, pint.Quantity, optional
Lubricant supply pressure, Pa. Default is 0.
- reference_temperaturefloat, pint.Quantity, optional
Reference (assembly) temperature for thermal growth, K. Default is 297.039.
- journal_temperaturefloat, pint.Quantity, optional
Initial journal temperature estimate, K. Default is the supply temperature.
- probeslist of tuple, optional
Temperature probes as
(pad_number, theta_location, r_location): 1-based pad number, circumferential position as % of the pad arc from the leading edge, and radial distance from the pad surface (m, accepts pint). Default is no probes.- excitation_ratiofloat, optional
Whirl-to-rotation frequency ratio for the dynamic reduction. Default is 1 (synchronous).
- initial_positiontuple of float, optional
Initial journal position guess
(x, y)as fractions of the radial clearance (held fixed for"match_eccentricity"). Default is (0.15, -0.2).- starvation_numberint, optional
Starvation model parameter. Default is 1.
- hot_oil_lambdafloat, optional
Hot-oil carryover factor for the groove mixing model. Default is 0.8.
- relax_pressure, relax_temperature, relax_deformation, relax_pivotfloat, optional
Under-relaxation factors of the solver iterations. Default is 0.5 / 1 / 1 / 1.
- re_laminar, re_turbulentfloat, optional
Reynolds numbers bounding the laminar-turbulent transition. Default is 500 / 1000.
- num_processesint, optional
Solve the speed cases in
num_processesworker processes instead of serially. Default is None (serial).- tagstr, optional
A tag to name the element.
- Returns:
- A FluidFilmBearing object.
Examples
>>> from ross.bearings.fluid_film_bearing import fluid_film_bearing_example >>> bearing = fluid_film_bearing_example() >>> bearing.n_pads 2 >>> float(bearing.kxx[0]) > 1e8 True
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, speed=None, frequency=None, journal_diameter=None, radial_clearance=None, pad_thickness=None, pivot_angle=None, pad_arc=None, pad_axial_length=None, preload=None, offset=None, lubricant=None, oil_supply_temperature=None, oil_flow_v=None, weight=0, fxs_load=0, fys_load=0, bearing_type='fixed_geometry', operating_type='regular_flooded', thermal_type='full', temp_j_type='averaged_film_temperature', deform_type=None, equilibrium_type='match_load', sump_type='supply_temperature', pivot_type='user_specified_stiffness', total_ex_film=40, total_ey_film=30, total_ez_film=20, total_ey_pad=20, track_arc=None, track_axial_length=None, track_depth=None, taper_depth_le=None, taper_arc_le=None, taper_depth_te=None, taper_arc_te=None, pocket_arc=0, pocket_axial_length=0, pad_E=206800000000.0, pad_poisson=0.3, pad_conductivity=50.0, pad_expansion=1.17e-05, pad_density=7830.0, journal_expansion=1.17e-05, shell_expansion=1.17e-05, pad_convection=735.9030318060636, edges_convection=73.59030318060636, environment_temperature=294.261, environment_convection=735.9030318060636, sump_convect_area=0, house_diameter=0, pivot_diameter=0, pivot_stiffness=0, crush_fit=0, shell_id=0, shell_od=0, ambient_pressure_1=0, ambient_pressure_2=0, cavitation_pressure=0, oil_supply_pressure=0, reference_temperature=297.0388888888889, journal_temperature=None, probes=None, excitation_ratio=1, initial_position=(0.15, -0.2), starvation_number=1, hot_oil_lambda=0.8, relax_pressure=0.5, relax_temperature=1, relax_deformation=1, relax_pivot=1, re_laminar=500, re_turbulent=1000, num_processes=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, ...