*2.4. Software Development for Reduced Order Modelling*

The software library (Twinkle), implemented and used to compute the ROM models, is available on GitHub platform [28] and described in [23], where its basic concept, structure and environmental dependencies are detailed.

Within this study, two separate ROM models were computed: one for untextured and one for textured tribometer samples data, consisting of 24 and 168 data points, respectively. The reliability of the two obtained ROM models was then validated using Python Scikitlearn [29] (version 0.22.1) k-fold cross validation technique, where a train-test procedure is performed k-times, randomly extracting a k-fraction sub-dataset for testing [30]. For the validation, the parameter *k* was set to 10, so that 10 different train-test validations were performed, randomly selecting the corresponding 90%–10% data fractions each time a new validation was performed.

Moreover, minimum values of the ROM function, i.e., Equation (1), were obtained using the ALGLIB Free Edition library [31], version 3.14.0, to find the surface texture dimensions that allow minimising friction, as described in Section 3.5.

Twinkle library can be described through the supervised learning algorithm concept in ML [32,33]. The input values used for ROM construction were the dimple dimensions, i.e., depth, diameter and distance, when available, together with pressure and velocity (please refer to Tables 1 and 2 or the available dataset under [24]), the output being the experimentally measured friction coefficient. Within the scope of this paper Equation (1) would represent the friction coefficient, expressed as the sum of 2 or 17 terms (in case of untextured or textured surface data, respectively). Each term being the product of one-dimensional functions, i.e., one function for each input separately, as shown for simplicity in Equation (3) for the untextured case.

$$\mu(\text{pressure}, \text{velocity}) = a\_1 [f\_1(\text{pressure}) f\_1(\text{velocity})] + a\_2 [f\_2(\text{pressure}) f\_2(\text{velocity})] \tag{3}$$

where *α*<sup>1</sup> and *α*<sup>2</sup> are the weighting coefficients of each computed term. The functions *f*<sup>1</sup> and *f*<sup>2</sup> are one-dimensional piecewise linear functions that describe the impact, on the friction outcome, of each input separately.
