Algorithm S1: Main training loop of the PINN surrogate model
──────────────────────────────────────────────────────────────────────────────
Input:
    Bearing geometry:
        D = 30 mm, B = 15 mm, radial clearance = 25 μm
    Computational domain:
        θ ∈ [0, πD], z ∈ [0, B]
        Nθ = 72 circumferential sampling points
        Nz = 27 axial sampling points
    Training data:
        training domains = 16
        training set (X_train, Y_train), with N_T = 31,104 data points
        where X_train = (z, θ, t, F, n) and Y_train = (p, h)
    Collocation data:
        collocation domains = 128
        collocation set X_C, with N_C = 248,832 collocation points
    Validation data:
        validation set (X_val, Y_val)
    Network architecture:
        input variables: z, θ, t, F, n
        output variables: p, h
        4 hidden layers, 256 neurons per layer
        dropout rate = 0.1
        activation functions: Tanh, Sigmoid, Softplus
    Training settings:
        optimizer: Adam
        initial learning rate: 10⁻³
        weight decay: 10⁻⁵
        learning-rate scheduler: StepLR, step size = 5000 epochs, γ = 0.9
        early-stopping patience = 5000 epochs
        

Output:
    Trained network parameters Θ
    Adaptive logarithmic loss weights
    {s_p, s_h, s_pmax, s_hmin, s_Reynolds, s_Deformation, s_load}
──────────────────────────────────────────────────────────────────────────────
 1:  Initialize neural-network parameters Θ
 2:  Initialize adaptive logarithmic loss parameters:
         s_p ← 0, s_h ← 0, s_pmax ← 0, s_hmin ← 0,
         s_Reynolds ← 0, s_Deformation ← 0, and s_load ← 0
 3:  Initialize Adam optimizer for
         {Θ, s_p, s_h, s_pmax, s_hmin, s_Reynolds, s_Deformation, s_load}
 4:  Initialize StepLR scheduler with step size = 5000 epochs and γ = 0.9
 5:  Set best validation loss L_val,best ← ∞
 6:  Set early-stopping counter k_stop ← 0

 7:  for epoch = 1, ..., N_epoch do

 8:      // ---- Data-driven loss terms evaluated on N_T training points ----
 9:      Predict pressure and film thickness:
10:          (p̂, ĥ) ← NN(X_train; Θ)

11:      Compute data losses:
12:          ℓ_p     ←  MSE(p̂, p_train)                  // pressure loss
13:          ℓ_h     ←  MSE(ĥ, h_train)                  // film-thickness loss
14:          ℓ_pmax  ←  MSE(max(p̂), max(p_train))        // maximum-pressure loss
15:          ℓ_hmin  ←  MSE(min(ĥ), min(h_train))         // minimum-film-thickness loss

16:      // ---- Physics-informed residuals evaluated on N_C collocation points ----
17:      Predict pressure and film thickness at collocation points:
18:          (p̂_C, ĥ_C) ← NN(X_C; Θ)

19:      Compute required spatial and temporal derivatives of p̂_C and ĥ_C
20:      using automatic differentiation.

21:      Compute physics residuals:
22:          f_Reynolds    ← ReynoldsResidual(p̂_C, ĥ_C, X_C)
23:          f_Deformation ← DeformationResidual(p̂_C, ĥ_C, X_C)
24:          p_a           ← GreenwoodTrippContactModel(ĥ_C)
25:          f_load        ← LoadBalanceResidual(p̂_C + p_a, X_C)

26:      Compute physics losses:
27:          ℓ_Reynolds    ←  MSE(f_Reynolds, 0)
28:          ℓ_Deformation ←  MSE(f_Deformation, 0)
29:          ℓ_load        ←  MSE(f_load, 0)

30:      // ---- Total loss with adaptive loss balancing ----
31:      L_total ← AdaptiveWeighting(
32:          ℓ_p, ℓ_h, ℓ_pmax, ℓ_hmin,
33:          ℓ_Reynolds, ℓ_Deformation, ℓ_load;
34:          s_p, s_h, s_pmax, s_hmin,
35:          s_Reynolds, s_Deformation, s_load
36:      )

34:      // ---- Parameter update ----
38:      Compute gradients of L_total with respect to
39:          {Θ, s_p, s_h, s_pmax, s_hmin,
40:           s_Reynolds, s_Deformation, s_load}
41:      Update {Θ, s_p, s_h, s_pmax, s_hmin,
42:              s_Reynolds, s_Deformation, s_load} using Adam optimizer
43:      Update learning rate using StepLR scheduler

38:      // ---- Validation and early stopping ----
39:      Evaluate validation loss L_val on (X_val, Y_val)
40:      Evaluate R²(p) and R²(h) on the training and validation sets

41:      if L_val < L_val,best then
42:          L_val,best ← L_val
43:          Save current model parameters Θ
44:          Reset early-stopping counter k_stop ← 0
45:      else
46:          k_stop ← k_stop + 1
47:      end if

48:      if k_stop ≥ 5000 then
49:          Stop training early
50:      end if

51:  end for

52:  Return best saved network parameters Θ and adaptive logarithmic loss weights
     {s_p, s_h, s_pmax, s_hmin, s_Reynolds, s_Deformation, s_load}
──────────────────────────────────────────────────────────────────────────────