Skip to content

Conversation

@gsabinoo
Copy link
Collaborator

@gsabinoo gsabinoo commented Sep 1, 2025

TiltingPad class implementation

Overview

This pull request implements a TiltingPad class for thermo-hydrodynamic analysis of tilting pad journal bearings. The class extends BearingElement and solves the coupled Reynolds and energy equations to calculate pressure and temperature fields, equilibrium positions, and dynamic coefficients.

What the Code Does

Core Functionality

The TiltingPad class performs:

  1. Field Calculations: Solves Reynolds equation for pressure distribution and energy equation for temperature field
  2. Equilibrium Analysis: Determines bearing equilibrium position through optimization
  3. Dynamic Coefficients: Calculates stiffness and damping coefficients using perturbation methods

Key Methods

  • run(): Main execution method that orchestrates the complete analysis
  • solve_fields(): Solves coupled thermo-hydrodynamic equations and finds equilibrium
  • coefficients(): Calculates dynamic coefficients using 4-point perturbation
  • get_equilibrium_position(): Optimization objective function for single pad equilibrium

Equilibrium Calculation Modes

"match_eccentricity":

  • Uses specified eccentricity and attitude angle
  • Optimizes only pad rotation angles
  • Minimizes moment on each pad individually

"determine_eccentricity":

  • Determines complete equilibrium (eccentricity, attitude angle, pad angles)
  • Minimizes force and moment residuals for the entire system
  • Uses external loads if specified

Mathematical Implementation

Reynolds Equation Solution:

  • Finite difference discretization on structured grid
  • Temperature-dependent viscosity
  • Boundary conditions: zero pressure at pad edges

Energy Equation Solution:

  • Includes viscous dissipation heat generation
  • Upwind scheme for convection terms
  • Boundary conditions: supply temperature at inlet

Physical Features

  • Multi-pad geometry with individual parameters per pad
  • Temperature-dependent lubricant properties
  • Coordinate transformation between inertial and pad systems
  • Matrix reduction for multi-pad to 2x2 bearing coefficients

Input Parameters

Geometry: journal diameter, radial clearance, pad thickness, pad arc angles, pivot angles, axial lengths
Operating: frequencies, oil temperature, external loads
Lubricant: predefined oils (ISOVG32/46/68) or custom properties
Numerical: mesh resolution (nx, nz), convergence tolerances

Output Results

Fields: dimensional pressure and temperature distributions for each pad
Coefficients: stiffness (kxx, kyy, kxy, kyx) and damping (cxx, cyy, cxy, cyx) matrices
Forces: hydrodynamic forces and moments per pad
Performance: maximum pressure, maximum temperature, minimum film thickness, eccentricity

Visualization

  • Pressure and temperature contour plots
  • 3D surface plots for field visualization
  • Scatter plots for circumferential distributions
  • Multiple pad comparison plots

Usage Example

from ross.bearings.tilting_pad import TiltingPad
from ross.units import Q_

bearing = TiltingPad(
        n = 1,
        frequency = Q_([3000], "RPM"),
        equilibrium_type = "match_eccentricity",
        journal_diameter = 101.6e-3,
        radial_clearance = 74.9e-6,
        pad_thickness = 12.7e-3,
        pivot_angle = Q_([18, 90, 162, 234, 306], "deg"),
        pad_arc = Q_([60, 60, 60, 60, 60], "deg"),
        pad_axial_length = Q_([50.8e-3, 50.8e-3, 50.8e-3, 50.8e-3, 50.8e-3], "m"),
        pre_load = [0.5, 0.5, 0.5, 0.5, 0.5],
        offset = [0.5, 0.5, 0.5, 0.5, 0.5],
        lubricant = "ISOVG32",
        oil_supply_temperature = Q_(40, "degC"),
        nx = 30,
        nz = 30,
        print_result=True,
        print_progress=True,
        print_time=True,
        eccentricity = 0.483,
        attitude_angle = Q_(267.5, "deg")
    )

@codecov-commenter
Copy link

codecov-commenter commented Sep 5, 2025

⚠️ Please install the 'codecov app svg image' to ensure uploads and comments are reliably processed by Codecov.

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 74.82%. Comparing base (07a5a63) to head (d34482b).
⚠️ Report is 245 commits behind head on main.
❗ Your organization needs to install the Codecov GitHub app to enable full functionality.

Additional details and impacted files

Impacted file tree graph

@@            Coverage Diff             @@
##             main    #1205      +/-   ##
==========================================
- Coverage   82.91%   74.82%   -8.10%     
==========================================
  Files          39       39              
  Lines        8247    10033    +1786     
==========================================
+ Hits         6838     7507     +669     
- Misses       1409     2526    +1117     
Files with missing lines Coverage Δ
ross/__init__.py 92.85% <100.00%> (-7.15%) ⬇️
ross/bearings/tilting_pad.py 76.59% <ø> (ø)

... and 3 files with indirect coverage changes


Continue to review full report in Codecov by Sentry.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 51a94ad...d34482b. Read the comment docs.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Collaborator

@jguarato jguarato left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well-structured PR. I didn't find anything that needs to be changed.

@raphaeltimbo raphaeltimbo merged commit 145650f into petrobras:main Oct 3, 2025
9 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants