Gabriel Venet

Tudor Balan
email: tudor.balan@ensam.eu

Cyrille Baudouin

Régis Bigot

Direct usage of the wire drawing process for large strain parameter identification

Keywords: Forging, hardening, identification, large strain

come

Introduction

Metal forming process simulations using the finite element method (FEM) has become a common engineering tool for use in industry. The material model is one of the key ingredients dictating the predictive ability of such software. In parallel with the development of advanced material models, there is a necessity to identify the parameters associated with these models for different materials.

Material models attempt to describe the effects of the different physical mechanisms that occur during and after the deformation of the metal like dislocation generation and pile-up, grain refinement, recrystallization, recovery, texture evolution, etc. These deformation mechanisms are induced at macroscopic scale by strain, temperature and strain rate, which have an influence over the hardening or softening of the metal. Physically-based models have been proposed to take into account these phenomena, based on the early works of Avrami [START_REF] Avrami | Kinetics of Phase Change. I General Theory[END_REF]. Alternatively, phenomenological models have been proposed at the macroscopic scale, in order to heuristically describe the experimentally observed macroscopic behaviour. Critical reviews of both model families are available in the literature (see, e.g., [START_REF] Bariani | Testing and modelling of material response to deformation in bulk metal forming[END_REF]), showing that both are suitable to describe complex mechanical behaviour, with the first family predicting also certain evolutions at microstructure scale. It is noteworthy that FEM simulation software are mainly based on phenomenological models, because of their reduced number of material constants that can be identified more easily [START_REF] Lin | A critical review of experimental results and constitutive descriptions for metals and alloys in hot working[END_REF].

Modern parameter identification methods were established approximately two decades ago to support the massive dissemination of FE simulations in the metal forming industry. FE-based inverse methods allowed accurate consideration of the actual geometry, strain rate and temperature conditions in a test sample, along with any heterogeneity [START_REF] Gelin | The inverse approach for the determination of constitutive equations in metal forming[END_REF], [START_REF] Gavrus | An inverse analysis using a finite element model for identification of rheological parameters[END_REF]. Various testing methods were proposed to reach the desired strain range and strain rates. In particular, compression (uniaxial or plane strain) and torsion tests have been able to reach large strain levels compatible with forging applications [START_REF] Bariani | Testing and modelling of material response to deformation in bulk metal forming[END_REF], [START_REF] Pietrzyk | Identification of parameters in the history dependent constitutive model for steels[END_REF]. As a consequence, at the end of the last century, complete databases with material models and parameters were generated for most commercially available materials used for bulk metal forming. The robustness and affordability of these databases made them the first choice for industrial forming simulation.

With the recent evolution in metal forming, new issues have risen related to material parameter determination. Initially, the loading mode for typical characterization experiments is not necessarily the same as that during forging applications, raising questions about the applicability of the corresponding parameters. Thus, the development of adequate large strain characterization experiments is still a major topic of investigation for both bulk [START_REF] Bariani | Testing and modelling of material response to deformation in bulk metal forming[END_REF] and sheet [START_REF] Bruschi | Testing and modelling of material behaviour and formability in sheet metal forming[END_REF] metal forming. More pragmatically, specific experimental equipment is required for such characterization, which is increasingly less compatible with current cost and time pressures on the forming industry. Indeed, characterization and identification skills are not easily found in the manufacturing industry, representing an external expense. However, new material grades are still being made available at a constant rate as a consequence of weight reduction strategies. Due to these contradictory trends, it is increasingly more common that parameters for new material grades are determined based on tensile tests, which is the experimental data supplied by material suppliers with each material batch.

Presently, material data of poor quality are being commonly used in numerical simulations despite the powerful methodologies available in the literature [START_REF] Gavrus | Thermo-viscoplastic parameter identification formulated as an inverse finite element analysis of the hot torsion test[END_REF], [START_REF] Szeliga | Testing of the inverse software for identification of rheological models of materials subjected to plastic deformation[END_REF]. In this paper, a pragmatic but rigorous parameter identification approach is proposed for bulk metal forming applications at room temperature, making use of tensile tests subsequent to industrial wire drawing sequences. Such sequential drawing experiments are already performed by steelmakers to determine the so-called ultimate drawing limit of a material [START_REF] Cao | Comparison of reduction ability between multi-stage cold drawing and rolling of stainless steel wire -Experimental and numerical investigations of damage[END_REF], but they can also be used to characterize all the drawing processes [START_REF] Celentano | Simulation and experimental validation of multiple-step wire drawing processes[END_REF]. As a consequence, the proposed procedure does not actually require additional tests but makes use of an existing experiment that permits the large strains required for proper characterization of hardening behaviour. Moreover, no data acquisition is required during these large strain experiments, meaning that only simple tensile tests are used for this purpose. Consequently, the experimental part for large strain parameter identification is significantly simplified, and the cost is reduced to a minimum. The accuracy and robustness of the results do not suffer from this simplification and are instead strengthened. The paper is limited to the family of phenomenological models, due to their extended usage in forming applications.

The outline of this paper is as follows. The proposed experimental procedure is presented in Section 2, followed by the parameter identification methodology in Section 3. The results and their consequences are discussed in Section 4, before drawing the main conclusions.

Experimental method and computation results

The investigated material was a low-carbon steel wire of 7.5 mm diameter, which is typical for cold bulk forming, with a longitudinal initial yield stress of YS = 400 MPa, an ultimate tensile strength of UTS = 635 MPa, and a tensile fracture strain of A = 31,9%. The experiments consisted in a sequence of six wire drawing operations followed by as many tensile tests, plus one tensile test on the original material before the first wire drawing. A wire drawing forming process is schematically illustrated in Figure 1. The wire is drawn through a die to reduce its diameter. After each diameter reduction, tensile test samples are cut from the resulting wire. The remaining wire is drawn through another die to reduce again the diameter etc. The drawing operations were used to reach large strain levels, as shown in Table 1. The tensile tests served to record the material response at the various strain levels. The engineering strain is calculated as ∆𝐿/𝐿 0 , where ∆𝐿 is the change in length and 𝐿 0 the initial reference length of the sample. In practice, the length evolutions are determined from the diameter reduction using volume conservation. This use of the wire drawing to reach large strains is made here with the same approach as [START_REF] Celentano | Simulation and experimental validation of multiple-step wire drawing processes[END_REF], under the assumption that equivalent plastic strain can be used as the single relevant hardening variable. This is of course a simplification of the physical reality. Young et al. [START_REF] Young | On the steady state flow stress of iron at low temperature and large strains[END_REF], for example, have shown that the evolution of the flow stress vs equivalent plastic strain during wire drawing deviates from that revealed by torsion test. A fibrous texture of elongated subgrains is formed by drawing leading to a constant hardening slope, while more equiaxed subgrains are observed in torsion leading to a steady state flow stress. However, these differences appear only for true strain values larger than 2. For lower strain values, multiple wire drawing and wire torsion were shown to reveal the same hardening curve. It is noteworthy that both these tests induce strain heterogeneity through the wire's cross-section. Consequently, a model needs to be elaborated to extract the yield stress from the measured force / torque evolution. In the case of multiple wire drawing, one cannot use single-pass analytical models [START_REF] Dixit | An analysis of the steady-state wire drawing of strainhardening materials[END_REF] to predict the effects of a multi-pass configuration. Thus, in this article, each drawing pass will be simulated individually. The analysis of the multi-step wire drawing process itself is not the aim of the paper; in-depth studies can be found in the literature [START_REF] Luksza | Modelling and measurements of mechanical behaviour in multi-pass drawing process[END_REF]- [START_REF] Kuboki | Design Method of Die Geometry and Pass Schedule by Void Index in Multi-Pass Drawing[END_REF]. Figure 2 shows the engineering stress vs. engineering strain curves for the seven wires. All the tensile curves were performed in triplicate to check repeatability. This sequential combination of a forming process and a standard characterization test allows for classical post-processing of the measured data, while large strains are reached by using an available industrial process.

In industrial wire drawing, the multiple drawing steps follow each other at great speed. Therefore, the metal is self-heating due to the large deformation in a short amount of time and thermal effects occur. However, in the case of this study, the process is interrupted after each drawing operation in order to cut the tensile test samples, and the material is cooled down at room temperature. This allows us to study the material at low temperature at any drawing sequence. On the other hand, the drawing sequence may induce significant heterogeneity in the strain field [START_REF] Luksza | Modelling and measurements of mechanical behaviour in multi-pass drawing process[END_REF]. FE simulations were used to elucidate and quantify this effect. The wire drawing operations were simulated with the FE software Forge ® Nxt 1.1. The material behaviour was described by a Hollomon law 𝜎 = 600 𝜀 0.16 , based on a previous study on the same wires [START_REF] Balan | Plasticity parameters identification for steel wires[END_REF]. Since temperature and rate sensitivity have a limited impact on the strain distribution during wire drawing, the corresponding parameters were selected from the database of Forge ® Nxt. Similarly, friction was neglected in the simulations, thus the resulting strain heterogeneity can be considered as a lower bound of the experimental one. Axisymmetric 2D simulations were performed due to the symmetry of the wires, tools and loading. The mesh density was uniform and element size was selected so that about ten elements were present across the smallest wire radius, for the coarsest investigated mesh. The robustness of the results with respect to the selection of both material parameters and mesh density was numerically investigated, as shown hereafter.

The strain field in the wire cross-section was heterogeneous, following the same typical profile shown in Figures 3a and3b. For each drawing sequence, the minimum strain was in the core of the wire. The strain value was well approximated by the analytical strain based on the cross-sectional area reduction but was slightly larger. The maximum strain for each drawn wire was reached a short distance from the outer skin. The relative strain variation across the wire's cross-section was as large as 129% after the first drawing, indicating that using the ideal drawing strains for parameter identification [START_REF] Balan | Plasticity parameters identification for steel wires[END_REF], [START_REF] Massé | Impact of mechanical anisotropy on the geometry of flat-rolled fully pearlitic steel wires[END_REF] could lead to significant errors. Table 2 quantitatively illustrates the strain heterogeneity created by the process. It is clear that taking this heterogeneity into account is recommended to compute a proper simulation of the tensile test.

Table 2. Strain heterogeneity in the wires' cross-section, based on the equivalent strain values after each drawing pass at the middle of the wire (𝜀 0 ), the point of maximal strain (𝜀 𝑚𝑎𝑥 ) and the outer surface of the wire (𝜀 𝑅 ). Numerical tests showed that the strain distribution was relatively robust with respect to any changes in the numerical parameters (see Figure 3b). In particular, it is noteworthy that the strain distribution showed no sensitivity to the hardening parameters used for the simulation (as illustrated in Figure 3c). This outcome is different from the other resulting properties, such as the drawing forces or the residual stresses [START_REF] Panteghini | Effects of the strain-hardening law in the numerical simulation of wire drawing processes[END_REF]. This observation will be further exploited in Section 3 to develop the parameter identification procedure. The FEA simulation of the subsequent tensile tests showed that the strain distribution remains strictly identical to the initial one, uniformly increasing with the amount of tensile strain, as illustrated in Figure 4. As a consequence, a full FEA model is not required for the simulation of these heterogeneous tensile tests. The simulation could be performed analytically, starting from the initial strain distribution calculated from the FEA. This approach drastically decreases the time needed to perform the parameter identification, which requires many computations.

(

(5)

(6) (1)
( The tensile test simulations aim to compute the force 𝐹(𝑡) and the displacement 𝐷(𝑡) applied on the sample, at each time increment, in order to compare them to the experimentally measured quantities. By integrating the tensile true stress component over the wire's crosssection, the force applied on the sample is calculated as

𝐹(𝑡) = ∫ 2𝜋𝑟𝜎 𝑦 (𝑟, 𝑡)𝑑𝑟 𝑅(𝑡) 𝑟=0 , (1)
since the tensile stress component is equal to the flow stress 𝜎 𝑦 under uniaxial loading. The local yield stress at each material point r and at each time step t is calculated as a function of the equivalent plastic strain

𝜎 𝑦 (𝑟, 𝑡) = 𝑓 (𝜀 𝑒𝑞 (𝑟, 𝑡)). (2)
Explicit examples of such hardening functions will be given in Section 3. The total equivalent strain is obtained by adding the equivalent strain due to the tensile test 𝜀 𝑒𝑞 (𝑈𝑇) (𝑡) to the local pre-strain induced by the drawing passes 𝜀 𝑒𝑞 (𝑝𝑟𝑒) (𝑟) prior to the test:

𝜀 𝑒𝑞 (𝑟, 𝑡) = 𝜀 𝑒𝑞 (𝑝𝑟𝑒) (𝑟) + 𝜀 𝑒𝑞 (𝑈𝑇) (𝑡). (3)
It is noteworthy that in pure uniaxial tension the equivalent strain is identical to the tensile plastic strain component:

𝜀 𝑒𝑞 (𝑈𝑇) (𝑡) ≡ 𝜀 11 𝑝(𝑈𝑇) (𝑡) = 𝜀 11 𝑡𝑜𝑡(𝑈𝑇) (𝑡) -𝜀 11 𝑒𝑙(𝑈𝑇) (𝑡). (4)
In a tensile test, one can relate the total tensile strain component 𝜀 11 𝑡𝑜𝑡(𝑈𝑇) (𝑡) to the instantaneous change in the sample's length 𝐷(𝑡) ),

where 𝐿 0 is the initial length of the tensile specimen, 𝐿(𝑡) its actual length at time 𝑡 and 𝜀 11 𝑒𝑙(𝑈𝑇) = 𝜎 11 𝐸 ⁄ with E the Young modulus. An average elastic strain was computed for the entire cross-section at each increment, since complete unloading cannot occur locally. This is the reason for the significant residual stress fields after multiple wire drawing, with tensile residual stresses on the outer surface and compressive stresses at core [START_REF] Atienza | Influence of residual stresses in the tensile test of cold drawn wires[END_REF].

This completes the model of uniaxial tension, relating 𝐹(𝑡) to 𝐷(𝑡). In equation ( 1), the time evolution of radius 𝑅 is calculated from the total strain, using volume conservation:

𝜀 11 𝑡𝑜𝑡(𝑈𝑇) (𝑡) = ln ( 𝐴 0 𝐴(𝑡)
) with 𝐴(𝑡) = 2𝜋𝑅(𝑡).

To summarize, drawing experiments were used to generate large pre-strains in subsequently drawn wires. Tensile tests were used to generate force-displacement tensile curves at six prestrain levels in addition to the initial wire. Given the significant strain heterogeneity in the wires' cross-sections, the experimental curves were not converted into stress-strain curves. Finally, FE simulations were used to reveal the strain distributions in the six wires' transverse cross-sections. These data were used to determine the hardening parameter identification procedure described in Section 3.

Parameter identification procedure

In a cold forging simulation, J 2 elasto-plasticity is classically adopted, along with an isotropic hardening model [START_REF] Gavrus | An inverse analysis using a finite element model for identification of rheological parameters[END_REF], [START_REF] Simo | Numerical analysis and simulation of plasticity[END_REF], [START_REF] Halouani | Simulation of axi-symmetrical cold forging process by efficient pseudo inverse approach and direct algorithm of plasticity[END_REF]. Rate and temperature effects may also be introduced for some applications, although these were not considered in this investigation. In turn, several hardening models from the literature were adopted, and their parameters identified with respect to the experimental dataset. The equations for the six models considered in the investigation are shown in Eq. ( 7):

𝜎 𝑉 = 𝜎 0 + 𝑄(1 -exp (-𝑏𝜀̅ )), 𝜎 𝑆 = 𝑘(𝜀 0 + 𝜀̅ ) 𝑛 , 𝜎 𝐻𝑆ℎ = 𝐴 -(𝐴 -𝐵)exp [-𝑓(𝜀 0 + 𝜀̅ ) 𝑔 ], 𝜎 𝐻𝑆𝑝 = 𝐶𝜀̃𝑞 exp (𝑝𝜀̃+ 𝑚 𝜀 ̃) with 𝜀̃= 𝜀 0 + 𝜀̅ , (7)
𝜎 𝑆𝑉 = 𝜎 𝑆 + 𝜎 𝑉 ,

𝜎 𝑆𝐻𝑆 = 𝛼𝜎 𝑆 + (1 -𝛼)𝜎 𝐻𝑆ℎ ,
where 𝜀̅ represents the equivalent strain, 𝜎 𝑉 , 𝜎 𝑆 … designate the flow stress and the other terms are constant material parameters. The indices designate the Voce (V), Swift (S), Hockett-Sherby (HSh), and Hansel-Spittel (HSp) models [START_REF] Hensel | Kraft und Arbeitsbedarf bildsamer Formgebungsverfahren[END_REF], [START_REF] Petrov | Analysis of rheological behavior of AL-CU-MG-FE-NI alloy at elevated temperatures using phenomenological flow stress model[END_REF] as well as their combinations: Swift-Voce (SV) and Swift-Hockett-Sherby (SHS) [START_REF] Banabic | Influence of Material Models on the Accuracy of the Sheet Forming Simulation[END_REF]. These phenomenological models make use of power and exponential functions in different combinations, involving different numbers of parameters: three ( V ,  S ), five ( HSh ,  HSp ), six ( SV ) or seven ( SHS ). The power law is the simplest and oldest hardening model meant to describe the effect of dislocation density increase [START_REF] Swift | Plastic instability under plane stress[END_REF]. At large strains, as the physical hardening mechanism shifts from planar slip to cross slip, an exponential hardening term can be added to it [START_REF] Ludwigson | Modified stress-strain relation for FCC metals and alloys[END_REF]. At higher strains, flow stress saturation is observed due to restauration and dislocation annihilation, which is approached by Voce's saturating model [START_REF] Voce | The relationship between stress and strain for homogeneous deformations[END_REF]. The Hockett-Sherby model almost saturates with the combination of the exponential and the power law terms [START_REF] Hockett | Large strain deformation of polycrystalline metals at low homologous temperature[END_REF]. Finally, the Hansel-Spittel equation is not a rheological model itself, but a combination of sub-models that can be activated / deactivated. Actually, in the rest of the article, one term will be neglected by setting 𝑝 = 0, so that  HSp will be computed as

𝜎 𝐻𝑆𝑝 = 𝐶𝜀̃𝑞 exp ( 𝑚 𝜀 ̃). ( 8
)
This choice is consistent with the material model database used in the Forge NxT software for cold forming, where parameter p is always set to zero to deactivate the corresponding term.

All the physical phenomena occurring during forming were modelled here only with the use of plastic strain. This is of course a simplification or the physical reality, yet such phenomenological models are the basis of nowadays FE process simulation. The physical mechanisms accompanying the hardening phenomenon are not in the focus of the study, but only their macroscopic effect.

The parameters of the different hardening laws were identified to minimize the following cost-function: .

𝛷 = ∑
Although this study aims to show the benefits of using large strain experiments in parameter identification, these benefits should not be obtained at the expense of a poorer accuracy at small strains. To prevent such an artefact, the weight of the first tensile test performed on the undeformed material was set at a value 50 times larger than the rest of the weighting coefficients, which were taken to be equal to each other (𝛼 𝑖 = 1 50 𝛼 0 , 𝑖. 𝑒. 𝛼 0 = 50𝛼 𝑖 ).

As a first step, the parameters for the six hardening models were identified with respect to the seven available tensile tests (one on the initial wire, and one after each of the six drawing steps). The minimization was performed using both an evolutionary algorithm and a gradienttype algorithm. The evolutionary algorithm was launched several times using several initial guesses to ensure that most of the solution space had been evaluated. After the end of each computation, the gradient algorithm was launched to find the closest best minimum. Then, the evolutionary algorithm was re-launched to widen the possible range of solutions. This succession of evolutionary and gradient algorithms was continued until no more improvement was achieved. The parameter space was defined based on the literature. For each model, the maximum and the minimum values for each parameter was set to be in the same order of magnitude as the lowest and biggest already identified parameter found in the literature for any given metallic material. This sequence of identification iterations with different algorithms, including an evolutionary one, is aimed to avoid local minima, although it is impossible to demonstrate that the reached solution is the global optimum. The simpler Voce and Swift models showed the lowest accuracy. The Hockett-Sherby and Swift-Voce models provided a better prediction. The lowest values of the cost function were obtained with the Swift-Hockett-Sherby model, followed closely by the Hansel-Spittel model. As the cost function decreased below 0.01, the models fit remarkably well to the seven tensile curves simultaneously.

It is noteworthy that the number of drawing / tensile steps and the amounts of drawing prestrain were chosen relatively arbitrarily. The choice was driven by the drawing process technology and industrial availability rather than by the specific needs of the parameter identification procedure. Consequently, the sensitivity of the parameter identification results to the arbitrary selection of the experimental reference data was investigated by repeating the identification for various sub-sets of the available experimental data. The following combinations of experimental tensile data were considered:  All available data (designated "0123456"),  Only the tensile test on the initial wire (designated "0"),  Tensile tests on original wire and after 6 th drawing ("06"),  Tensile tests on original wire and after 3 rd drawing ("03"),  Tensile tests on original wire and after 1 st , 2 nd and 3 rd drawing ("0123").

In each of these cases, the parameter identification procedure described above was applied for all the models. The flow curves predicted by the various models with the parameters obtained from the different identifications are summarized in Figure 5. For completeness, the sets of parameter values corresponding to the various identifications are provided in the appendix.

For several models, the predictions obtained using all the available tensile tests (thick blue curves) were significantly different from those obtained when using only the initial curve (thick red curves). This general trend clearly emphasizes the need to include large strain experiments in the parameter identification data. Very often, the addition of only one tensile curve, corresponding to the last drawing pass, significantly improved the prediction. Nonetheless, it is clear from Figure 6 that different input data lead to different flow curves. Moreover, the robustness of the identified parameters with respect to the experimental input is not necessarily increasing with model accuracy. The less robust model with respect to the experimental input data were Hansel-Spittel and Hockett-Sherby, for which the difference of predicted flow stress at a strain of 1 can reach 300MPa depending of the choice of experimental input. The accurate SHS model exhibited deviations at large strains in one case, when greater accuracy was sought at low and moderate strains (case "0123"). The most robust model appeared to be Swift-Voce. Figure 6. Flow curves of the studied material, as predicted by the various models. The legend indicates the tensile experiments used for the parameter identification for each curve: "0" designates the test on the initial wire, and "i" designates the tensile test after the "i-th" drawing pass.

These trends were also confirmed by all the models at larger strainsas shown in Figure 7.

The SV model appears almost insensitive to the selection of experimental data, up to very large strains. This robustness has already been emphasized in the literature for steels and in particular for sheet metal forming applications [START_REF] Lemoine | Behavior Laws And Their Influences On Numerical Prediction[END_REF], [START_REF] Sung | A plastic constitutive equation incorporating strain, strain-rate, and temperature[END_REF]. It is noteworthy that the true strain levels of 4…5 that are shown in Figure 7 are much larger than those obtained in the experiments. However, such strains are common in bulk metal forming, making it important to assess the accuracy and robustness of the model predictions for these conditions.

Discussion

The current results corroborate numerous references, confirming that the material flow curves depend significantly on the particular experimental dataset and hardening model used for the parameter identification procedure. Consequently, both the data and the modelling used for this purpose require careful preparation.

The wire drawing process gives rise to large strains and delays necking due to the locally low stress triaxiality values. One drawback associated with this pre-straining approach is the heterogeneous characteristic of the resulting strain distribution. In previous investigations, promising results were obtained by replacing the real strain distribution with the uniform ideal pre-strain value calculated from the wire diameter reduction [START_REF] Celentano | Simulation and experimental validation of multiple-step wire drawing processes[END_REF], [START_REF] Massé | Impact of mechanical anisotropy on the geometry of flat-rolled fully pearlitic steel wires[END_REF]. With this simplified procedure, experimental stress-strain curves can be extracted from tensile tests. These experimental curves, shifted right by the corresponding pre-strain, would describe successive segments of the material's flow curve. To explore the accuracy of this hypothesis, the drawing ratio of the first drawing step in our series was set to a value significantly smaller than the material's uniform elongation. In this way, the experimental flow curve segment corresponding to this first drawn wire should overlay the experimental flow curve of the original wire. Figure 8a shows the experimental true stress-strain curves corresponding to the original wire and to the first drawn wire offset by the corresponding ideal pre-strain. The two curves do not overlap due to the ideal value of the drawing strain being smaller than the real strains induced by the real process. It is noteworthy that this error accumulates as the number of drawing sequences increases. Consequently, the resulting flow curve will lay higher, compared to the procedure using the FE-predicted pre-strains, as illustrated in Figure 8b.

The gap in this figure shows that the benefits decrease when using the large strain experiments. The observed inconsistency may depend on the model, experiments and weighting factors used during the identification. Figure 9 shows the flow curves obtained with the FEA and analytical pre-strains, respectively, using the SHS model, the complete set of seven tensile tests and equal weighting factors (𝛼 0 = 𝛼 1 = ⋯ 𝛼 7 ) 2 . The value of the cost function was 0.0027 (FEA) and 0.0024 (analytical). However, the errors in the analytical strain distributions were compensated by the high flexibility of the model resulted in spurious inflexions in the flow curve, which significantly reduced the usefulness of the large strain dataset. Similar conclusions have been drawn in the literature concerning parameter identification for anisotropic yield functions with increasing flexibility [START_REF] Rabahallah | PARAMETER IDENTIFICATION OF ADVANCED PLASTIC POTENTIALS AND IMPACT ON PLASTIC ANISOTROPY PREDICTION[END_REF].

Figure 8. a) Experimental flow curves corresponding to the original wire (solid line) and to the first drawn wire (dashed). The latter curve is offset by the ideal strain corresponding to the diameter reduction from 7.5 to 7.24 mm during the first drawing sequence. b) Flow curves calculated using the SHS model, the seven tensile curves and the pre-strains determined by FE (solid line) or analytically (dashed line). 2 As a reminder, until now, all the optimisations have been made with the tensile curve corresponding to the undrawn wire weighted 50 times more than the others in the cost function. These observations further underline the importance of taking the heterogeneous strain distribution into account, as proposed in this paper. Nevertheless, strain ranges in excess of that covered by these experiments show that the flow curve predictions are still subject to potential errors, as illustrated by the comparison of the various models in the previous section. From the various trials, the Swift-Voce model, although not the most accurate model, combines very good accuracy with excellent robustness at large strains, as already underlined in the literature [START_REF] Lemoine | Behavior Laws And Their Influences On Numerical Prediction[END_REF], [START_REF] Sung | A plastic constitutive equation incorporating strain, strain-rate, and temperature[END_REF]. As a consequence, the following procedure could be adopted to enhance the robustness of the identified parameters:  Identify the Swift-Voce model using the available experiments. In addition to the stress values, the slope at the end of the last tensile curve can be added to the cost function for optimal robustness.  Calculate the stress value predicted by the Swift-Voce model for a large straintypically, the largest strain level envisioned in the foreseen applications.  Add this "virtual" point to the experimental data setpossibly with a relatively lower weight, depending on the degree of confidence in the Swift-Voce model for the particular material being studied.  Identify the favouriteor imposedmodel with respect to this enhanced data set.

This procedure provides the best fit to the available experiments, with an additional attempt for protection against large strain deviations. The idea was applied to the current case using the Hansel-Spittel and the Swift-Hockett-Sherby models. A "virtual point" was calculated with the Swift-Voce model for an arbitrary strain equal to 5. The resulting flow curves are shown in Figure 10, along with the flow curves determined without the virtual point (in both cases, the entire set of available tensile curves were used). The use of the virtual point had an influence on the results, as the strain values reach significantly outside the range covered by the experiments. The differences were more significant for the Hansel-Spittel model, especially as all its terms were activated for the sake of illustration. In the case of the more robust SHS law, the influence of the virtual point was weaker. Its effect could be controlled by increasing the weight of the virtual point in the cost function. These preliminary results illustrate the potential of this approach. However, further investigations are required to conclude about its real usefulness and to establish a general solution for the choice of the virtual point, its weight etc.

Summary and conclusions

The main objective of this work was to simplify the experimental procedure required for accurate large strain parameter identification of the hardening laws in cold bulk metal forming. For this purpose, industrial wire drawing experiments were successfully used. Large strain levels were achieved using this method, which increased the range of applicability of the identified parameters. The material response was quantified using classic tensile tests. These indirectly reflected the process effect without requiring any measurements during the forming process itself. The strain field due to drawing was strongly heterogeneous, but the tensile test could be analysed analytically. Consequently, the parameter identification procedure was decoupled from the FE simulation for efficiency. As a potential extension, the same approach could be extended to rolling, for the large strain hardening characterizations of either bulk or sheet metals.

The relative accuracy and robustness of several hardening models were investigated over a strain range up to 1.5. The best accuracy was obtained using the Swift-Hockett-Sherby model, followed closely by the Hansel-Spittel and Swift-Voce models. In terms of robustness, the Swift-Voce model showed the lowest sensitivity to the available input data. Consequently, this model could serve to enhance the identification robustness at large strains for any other preferred (or imposed) model. The Swift-Hockett-Sherby model was the most accurate and, with one exception, exhibited low sensitivity to the experimental inputs.

Figure 1 .

 1 Figure 1. Schematic representation of a typical wire drawing operation within the multi-step wire drawing process used in the investigation, in preparation of the tensile tests series.

Figure 2 .

 2 Figure 2. Experimental tensile engineering (left) and true (right) stress-strain curves for the initial and subsequently drawn wires. The thick grey lines show the fraction of the curves used for parameter identification. The curves are labelled with numbers that will be reused in the next figures.

Figure 3 .

 3 Figure 3. Strain distribution in the cross-section of the drawn wires as calculated by FEA using a Swift hardening law: (a). influence of the mesh size (b) and influence of the hardening coefficient (c).

Figure 4 .

 4 Figure 4. Strain evolution during a tensile test FE simulation following a wire drawing simulation.

Figure 5

 5 Figure 5 summarizes the optimum values of the cost function reached for each model and compares the seven predicted and experimental force-displacement curve pairs for each model.

Figure 5 .

 5 Figure 5. Obtained cost function values (top) and the comparison between the simulated (thin) and experimental (thick) tensile curves corresponding to the identified parameters. The numbers (i) indicate the index of each experimental tensile curve, as defined in Figure 2.

Figure 7 .

 7 Figure 7. Predicted flow curves for very large strains from the three most accurate models of the series, as identified using various combinations of experimental input data.

Figure 9 .

 9 Figure 9. Flow curves calculated using the SHS model: the seven tensile curves and prestrains are determined by FE (solid line) or analytically (dashed line). The weights of all the seven tensile curves (including the original one) were set to be equal to each other.

  ; a 0 = a i analytical ; a 0 = a i FE-based; 𝛼 𝑖 = 𝛼 0 50 ⁄ Analytical; 𝛼 𝑖 = 𝛼 0 50 ⁄

Figure 10 .

 10 Figure10. a) Flow curves calculated using the HSp model by adding a virtual point to the optimization process (solid line) to the seven tensile curves or without it (dashed line). The point has the same weight as a tensile curve in the identification process. b) Flow curves calculated with SHS model by adding a virtual point to the optimization process to the seven tensile curves or without it. Different curves correspond to different weights of the point in the identification process.

Table 1 .

 1 Sequence of wire drawing operations and the resulting diameters and strains (initial diameter of the steel wire equal to 7.5 mm).

	Drawing pass number	1	2	3	4	5	6
	Wire diameter [mm]	7.23 6.26 5.60 5.00 4.48 4.01
	Total engineering strain [%]	7.5	43	79 124 180 250

  The next table corresponds to figure8b.The next table corresponds to figure9.The next tables corresponds to figure10.

						Swift-Voce Swift-Hockett-Sherby
	n° of tensile test with/without virtual point						parameters	parameters
		k		k		σ 0	ε0	ε0	n	Q	A	b	B	n	f	g	α
	0,1,2,3,4,5,6 without point	7323,237 46664,763 0,0012855 0,2629 355,637 248,025 121,567 1,383 0,013 -6334,383 0,0055 10,881 0 0,018
	0 *1	7328,249 76067,587 0,0033702 0,16929 59,6358 0,52047 585,551 1,82 0,012 -6330,433 0,0062 10,881 0 0,018
	0,6 *10	7339,919 50143,952 0,0100075 0,19554 247,273 90,8602 46,8484 1,084 0,014 -6348,145 0,0057 10,881 0 0,018
	0,3 *25	Voce 7335,467 43184,461 0,0012886 0,24941 400,239 266,716 119,717 1,45 0,013 -6360,378 0,0044 10,882 0 0,017
	n° of tensile test 0,1,2,3 *50	parameters 7473,528 -6499,552 0,0044 10,885 79075,478 0,0029551 0,15542 78,4894 0,51894 588,06 1,867 0,011 0 0,017
		σ0			Q		b
	0,1,2,3,4,5,6	381,652		338,290 Swift-Hockett-Sherby 25,402
	0 n° of tensile test	381,502		338,549	25,386 parameters
	0,6	381,699 k	ε0	338,214 n	25,406 A	B			f	g	α
	0,3 0,1,2,3,4,5,6	381,852 46664,763 0,0013 0,263 355,637 248,025 121,567 1,383 0,013 338,159 25,376
	0,1,2,3 0	381,725 47010,589 0,0013 0,270 357,717 252,138 126,322 1,389 0,014 338,161 25,411
	0,6	45705,948 0,0020 0,252 337,699 229,170 112,979 1,357 0,014
	0,3	Swift 45930,647 0,0016 0,248 320,180 222,358 150,332 1,441 0,015
	n° of tensile test 0,1,2,3	9838,693		parameters 0 0,772 671,095 384,973 27,317 0,961 0,038
			k			ε0		n
	0,1,2,3,4,5,6		1039,455	0	0,175
	0		1085,364 0,0011	0,190
	0,6		991,226 Swift-Hockett-Sherby 𝜶 𝟎 = 𝟓𝟎𝜶 𝒊 0 0,162
	0,3 FEM/Analytic		1008,458	0	0,167 parameters
	0,1,2,3	k	1039,154 ε0	0 n	0,175 A		B		f	g	α
	FEM	46664,763	0,0013 0,263 355,637 248,025 121,567 1,383 0,013
	Analytic	Hockett-Sherby 53103,363 0,0012159 0,25864	318,241 231,302 213,735 1,536 0,013
	n° of tensile test					parameters
		A			B		ε0			f		g
	0,1,2,3,4,5,6 0 0,6 FEM/Analytic 0,3 0,1,2,3 FEM Analytic	1166,977 740,931 Swift-Hockett-Sherby 𝜶 𝟎 = 𝜶 𝒊 208,017 0 1,687 0,370 361,632 0 15,221 0,857 1177,076 222,540 0 parameters 1,687 0,384 1032,270 252,082 0 ε0 n A B 2,363 0,440 908,632 275,742 0 4551,7194 k 0 0,06241 -1194,5 -1351 3,30172 2,777 0,382 f g α 3,542 0,505 11165,258 04284 0,02832 -4868,4 -4949,5 129,125 9,71 0,367
						Hansel-Spittel
	n° of tensile test							parameters
		C	Hansel-Spittel	q				ε0			m	p
	0,1,2,3,4,5,6 with/without virtual point	1005,632		0,141 parameters		0,014	-0,006	0
	0		828,738 C	q	0 ε0	m	0,027 p	-0,022	0
	0,6 without point		880,521 803,730 0,006 0,0251 -0,019 0,196 0,048 0,023	-0,016	0
	0,3 with point		829,567 1015,701 0,146 0,0139 -0,006 -0,013 0 0,027	-0,022	0
	0,1,2,3			953,4		0,104			0,018	-0,01	0

Acknowledgements

The authors are grateful to Mario Confente and Marie-Thèrese Perrot-Simonetta from ArcelorMittal Gandrange (formerly CRIE, ISPAT Unimetal), France, for supporting the initial stages of the study and for providing the experimental data.

(2)

(5)

Conflict of Interest:

The material and experimental data was provided by ArcelorMittal Gandrange (formerly CRIE, ISPAT Unimetal), France. The authors received a grant from this company in 2004 for an early study using this data. The authors have no other conflict of interest.

Appendix

The following tables present the numerical values of the parameters associated with the different models used in figure 6.


Magali Brunet
email: magali.brunet@cemes.fr

Luc Robbiola
email: robbiola@univ-tlse2.fr

Philippe Sciau
email: philippe.sciau@cemes.fr

Monique Drieux-Daguerre

Preserving Aviation Heritage: The Need for an Approach Based on Materials Analysis

Keywords: industrial heritage, aeronautical materials, aluminium alloys, multiscale analysis

Introduction

Preserving the industrial heritage of the 20th century presents many challenges. The conservation of old aircraft is one of them. Around the world, there are about 40 air and space museums with dedicated sheds and many more private collections which are managed by different associations. In most cases, aircrafts are kept outdoors which very often leads to the corrosion of metal parts [START_REF] Rocca | Long-term corrosion of aluminium materials of heritage: Analysis and diagnosis of aeronautic collection[END_REF]. To ensure the safety of visitors and to present aircrafts as they would have once appeared, corroded parts are replaced rather than restored. As a consequence, the original parts of old aircrafts disappear little by little without any traceability.

In this context, there is a real need to study these old materials, mainly for two important reasons. Firstly, for historical purposes: although industrial archives on aeronautical materials exist, technical documents were often not systematically preserved. Secondly, the study of the metal parts of an old aircraft allows damage to be understood by identifying the degradation processes. This helps to ensure long-term conservation. Corrosion is an important source of damage to these cultural heritage materials that needs to be clearly understood prior to deciding conservation protocols.

This study presents the investigation carried out to attain these objectives by analysing the different metallic parts from a 1950s' aircraft undergoing renovation.

Method of study and sampling

For several years, the research team has been following the renovation of a big carrier airliner -a Breguet 765 Sahara no. 504 64-PH (wing span: 45.5 m; length: 29 m; height: 10.15 m; dry weight: 15 t) -which is a part of the aircraft collection preserved by the Ailes Anciennes Toulouse association. This collection represents aeronautical adventure and local industrial history. The Breguet 765 (Figure 1a), a double-decker aircraft built in 1958 by the local industrialist Louis Breguet for military usage [START_REF] Cochard | Microstructure et propriétés mécaniques des alliages de type Duralumin du Breguet 765[END_REF], is one of the most valuable aircraft in the collection: only four were built in 1959 due to drastic budget cuts by the French government. After its last flight in 1974, this aircraft was stored outside at the Evreux air base (Normandy, France). It was transported after partial dismantlement from Evreux to Toulouse by truck and was added to the collection of the Ailes Anciennes Toulouse association in 1984, since when it has been stored uncovered outdoors and subject to ongoing

Abstract

Most of the metals used in aircraft construction are aluminium alloys. These alloys, poorly investigated for conservation purposes, require specific characterisation due to the presence of intermetallic precipitates at various length scales influencing mechanical properties and resistance to corrosion, and because of different surface treatments. This study undertook an investigation into the different aluminium alloy parts of a currently renovated Breguet aircraft and, as a result, revealed the need to research and characterise these materials. An adapted methodological approach was used and the results of the materials characterisation focused on the main materials and on the corroded surfaces. Alongside performing material analysis, archival documents were used to provide additional and complementary historical data. From this, it was concluded that a specific understanding of the alteration processes in aluminium alloys is required in order to develop conservation strategies.

renovation. The aircraft has been suffering from severe corrosion for several decades. Figures 1c and1d show an example of a corroded stringer made of aluminium alloy that had to be removed. After discussing the issue of corrosion with members of the association, it was decided to focus the study on parts made of aluminium alloy in order to understand the specific corrosion involved and to propose a diagnosis. Two lines of action were pursued: in-situ observation of the evolution of the corrosion and the physicochemical analysis of the collected parts.

Corrosion evolution was observed and documented on various parts of the aircraft by taking pictures every six months over a period of two years. For material analysis, some parts were collected after being removed by members of the association. These parts suffered from corrosion and needed to be replaced. The first step was to document these pieces thoroughly, i.e. their functional role (structural, cladding, etc.), their exact location on the aircraft and environmental conditions. In the second step, a full metallographic study was carried out on selected representative parts: stringers, plates, rivets [START_REF] Cochard | Natural aging on Al-Cu-Mg structural hardening alloys -Investigation of two historical duralumins for aeronautics[END_REF][START_REF] Brunet | Study of post-World War 2 French aeronautical aluminium alloy and coatings: Historical and materials science approach[END_REF]. It consisted, for the bulk, of determining the elemental composition, the microstructure and the precipitation by optical and electronic microscopy techniques at different scales. For this, samples were embedded in epoxy resin and mechanically polished. On the cross section, the bulk metal, the different protective coatings employed and the corrosion features could be observed. Scanning electron microscopy was carried out with a JEOL JSM 6460 LV operated at 20 kV and equipped with an Oxford INCA PentaFETx3 energy dispersive x-ray spectrometer (SEM-EDS). The use of destructive methods was possible because the removed parts were numerous and were otherwise disposed of by the association members. The results of the metallographic study are summarised below. This article focuses on the alterations and diagnosis.

Results

General observations on the alterations and on the environment

A first observation of the aircraft revealed that corrosion had affected the stringers in general, whereas the skin (the outer surface of an aircraft's fuselage and wings) was better conserved (Figure 2a). Environmental conditions inside the plane are quite unstable as it has never been sealed since it was stored in Evreux or in Toulouse and the humidity rates can easily be high. On the outside, rain can reach unprotected parts and water can remain stagnant in gaps. Although all parts are covered by a protective coating, such as primer (greenish) and paints (yellow/beige), corrosion has developed locally.

For stringers, severe exfoliation is sometimes observed. This corrosion causes the aluminium alloy to delaminate and eventually turn into powder. For plates, whether structural (skin of the wings, fuselage) or non-structural (shields, cladding), corrosion in the form of pits is generally observed.

Figure 3 shows the evolution of the corrosion on particular zones of the aircraft interior: a stringer (Figure 2c) and a plate (Figure 2d). There is a clear sign of the development of corrosion on the stringers (about 1 cm per year), whereas for the plates the evolution is not so clear: pit diameters remain constant but with more corrosion products. According to these observations, stringers seem to have a lower resistance to corrosion than plates. To understand and appreciate the extent of these specific alterations, several stringers and plates were collected and studied.

Material analysis: Bulk alloy

In the first step, analysis by SEM-EDS on polished samples provided identification of the bulk alloy of the parts collected on the Breguet 765. The elemental composition for each alloy is given in Table 1. All collected parts are found to be made of duralumin, a family of alloys containing copper (3.5-5.5 wt%), magnesium (0.4-1.5 wt%) and manganese (0.5-0.7 wt%). Over time, these age-hardening alloys, with their excellent properties (light weight and high strength, in particular), became the material of choice for aircraft construction [START_REF] Starke | Application of modern aluminium alloys to aircraft[END_REF]. In France, an alphanumeric denomination (A for aluminium, U for copper and G for magnesium followed by the nominal content in wt%) was adopted in the early 1940s (Lebouteux 1956) and this denomination was followed by the aeronautic standard AIR 3350/C of 1957 (AIR 3350/C 1957). The alloys used in the Breguet 765 were thus identified according to this standard. The collected stringers are made of A-U4G1. As for the plates, A-U4G was used for the non-structural parts whereas A-U4G1 was used for the parts in the primary structure. Here, the choice of alloy was governed by the mechanical properties resulting from its composition and thermomechanical treatments. The ultimate strength, yield strength and hardness of A-U4G1 is significantly higher than A-U4G (AIR 3350/C 1957) which justifies its use for the primary structure of the aircraft. In the second step, the microstructure of the different alloys was studied. Figure 4 shows representative SEM images in backscatter mode for a plate made of A-U4G (Figure 4a) and a stringer made of A-U4G1 (Figure 4b). After etching in Keller's solution (HF 1 mL, HNO 3 2.5 mL, HCl 1.5 mL in 95 mL demineralised water), metallic grains were revealed. The microstructure observed in the different parts can partially reveal the fabrication process. Plates have equiaxed grains (Figure 5a) typically obtained after successive rolling passes and heat treatments leading to recrystallisation, whereas stringers exhibit a highly oriented fibrous structure in the bulk and large grains on parts near the surface up to a depth of a couple of hundred microns (Figure 5b). This peculiar microstructure is linked to the manufacturing process where extruding generates severe plastic deformation giving rise to a very fine and oriented texture -the presseffekt [START_REF] Herenguel | Influence d'une addition de zirconium sur la texture cristalline des demi-produits en alliage d'aluminium filés à la presse et traités thermiquement[END_REF]Scheidecker 1954, Develay 1997) -to create higher mechanical resistance. In subsequent heat treatments, the microstructure undergoes an inhomogeneous recrystallisation with the formation of large grains on the cortex, as observed here. These large grains induce a reduction in mechanical properties and also influence resistance to corrosion.

In terms of protective coatings, and depending on whether the part was for internal or external use, it was found that anodisation and/or a primer was applied underneath several layers of paint. The full characterisation of the parts can be found in a previously published work [START_REF] Brunet | Study of post-World War 2 French aeronautical aluminium alloy and coatings: Historical and materials science approach[END_REF].

Alterations and diagnosis

As mentioned above, two types of alterations (pitting and exfoliation) were identified macroscopically on the parts collected from the Breguet aircraft. These forms of corrosion are highly representative of outdoor corrosion of aluminium alloys [START_REF] De Damborenea | Comparison of accelerated and atmospheric exposure tests for corrosion of aluminium alloys[END_REF]Conde 1995, De La Fuente et al. 2007). Figure 6 shows pictures of the corrosion, via a top view and in cross section, on plates (Figures 6a and6b) and on stringers (Figures 6c and6d).

Inside pits, white and blue corrosion products were observed. They are known to be hydrated variants of aluminium oxides and hydroxides [START_REF] Degrigny | Conservation et stabilisation d'alliages d'aluminium prélevés sur des épaves aéronautiques immergées en eau douce[END_REF], as well as aluminium sulfates [START_REF] Graedel | Corrosion mechanisms for aluminum exposed to the atmosphere[END_REF]). The blue colour comes from the copper ions released by the alloy. When observing these corrosion features on cross sections in larger scale with SEM (Figure 7), it is clear that intergranular corrosion has developed on both the plates and stringers. On the plates, the intergranular corrosion is coupled with evolving pitting in the crevices (Figure 6b), while on the stringers the intergranular corrosion further develops during exfoliation (Figure 6d). The observed forms of corrosion (pitting, intergranular, exfoliation) can be explained by environmental and intrinsic factors (the composition and microstructure of the alloy). According to the literature, when exposed to air, an amorphous oxide film (Al 2 O 3 ) is formed instantaneously on the aluminium surface. Upon prolonged exposure to humidity, the film grows and transforms into hydroxides (boehmite, bayerite, nordstrandite, etc.) [START_REF] Graedel | Corrosion mechanisms for aluminum exposed to the atmosphere[END_REF]). The resulting film is highly porous. In atmospheres that contain corrosive salts, humidity and constituents such as sulfur compounds and chlorides are absorbed and cause the film to rupture. By reaching the bulk metal, these contaminants may generate pitting corrosion (De la Fuente et al. 2007).

In duralumin alloys, different types of intermetallic particles are present (as shown in Figure 4) with different dissolution potentials [START_REF] Hughes | La symbolisation de l'aluminium et de ses alliages en France et dans quelques pays étrangers[END_REF]. Copper-rich particles (θ-Al 2 Cu) and iron-rich particles (Al-Cu-Fe-Mn-Si) are cathodic compared to the solid solution, whereas Mg 2 Si and S-Al 2 CuMg particles are anodic. In the presence of aqueous electrolytes, micro-galvanic coupling occurs between these particles and the matrix. This can occur readily after the protective coating is broken allowing humidity to penetrate. Anodic particles dissolve preferentially. Cathodic particles, on the other hand, deplete copper concentration in the surrounding matrix at microscale. This copper-depleted zone is more anodic compared to the matrix and oxidises easily, with the matrix dissolving preferentially. The case of S-Al-2 CuMg particles is specific: preferential dissolution of magnesium and aluminium creates a copper-rich zone around the particle. This zone, more cathodic than the particle, stimulates secondary pitting [START_REF] Guillaumin | Localized corrosion of 2024-T351 aluminium alloy in chloride media[END_REF].

All of these phenomena are localised corrosion processes originating from surface heterogeneities inducing either pitting or intergranular corrosion. Intergranular corrosion develops specifically when grain boundary regions are preferentially attacked, due to the presence of intermetallic particles at grain boundaries or the presence of a precipitate-free zone, as well as other factors such as misorientation [START_REF] Hughes | La symbolisation de l'aluminium et de ses alliages en France et dans quelques pays étrangers[END_REF]).

In the case of the parts from the Breguet 765, intermetallic particles are more numerous and denser on stringers than on plates (Figure 7), which partly explains why corrosion is an issue on stringers. To explain why the intergranular corrosion transforms into exfoliation on stringers, an important factor is the microstructure linked to the manufacturing process and heat treatments. On plates, exfoliation does not occur because of the homogeneous microstructure obtained after recrystallisation annealing. On stringers, due to the particular oriented and fibrous microstructure mentioned above, the intergranular corrosion develops easily into exfoliation due to the growth of corrosion products which force metal to move away from the body of the material.

To summarise, intergranular corrosion begins in the intermetallic precipitates present in the alloys as well as in the grain microstructure. It is a self-generating process as long as humidity can penetrate and thus very difficult to stop. The nature of the alloy is important: A-U4G1 containing S-Al 2 CuMg particles would be expected to be less resistant to corrosion; however, similar corrosion features could be observed on different alloys of the same family, i.e. A-U4G and A-U4G1, which leads to the conclusion that thermomechanical treatment during fabrication was, in this case, a determining factor for the corrosion mechanism.

Discussion

Corrosion affects aluminium alloys differently depending on many factors: intrinsic factors (such as chemical composition and thermomechanical treatments during fabrication) and extrinsic factors (such as protective coating efficiency, mechanical stress during usage and environmental conditions). Due to these specificities of aluminium alloys, it remains difficult, at first sight, to develop a global conservation strategy. Obtaining as complete a view as possible of the materiality of the cultural heritage object, via sampling and/or archival research, is therefore a particularly important step to evaluate the potential risks of alteration. In fact, when considering the long-term preservation of old aircraft exposed to the elements, decisions on conservation protocols are potentially easier to make if knowledge on the resistance to corrosion of specific aluminium alloys is acquired upstream. In the case of the Breguet 765, thanks to the study on various collected parts, a better understanding of factors which caused corrosion was achieved. Following this, several preventive conservation measures were transmitted to the association members.

In particular stringers, because of their low resistance to corrosion, have to be closely controlled. More generally, for aircraft kept outside, humidity/rain/pollution penetrates easily through damaged coatings initiating corrosion. Original protective coatings must therefore be conserved as far as possible.

When corrosion is detected, the methodology currently used by the association's members is the following: polishing with a non-metallic brush until corrosion products are completely removed, degreasing of the area and immediate application of an epoxy-base primer (used in aircraft industry maintenance). This method is not one hundred percent efficient as corrosion can start again. When the corrosion is more severe, such as exfoliation, the association's members have no choice but to change the affected parts, as this type of corrosion is difficult to stop. For this particular aircraft, it means changing a lot of parts, which is far from ideal.

Right now, adapted methods need to be defined upstream by the conservation-restoration community, together with renovation organisations, to conserve aluminium alloys in cultural heritage artefacts exposed to outdoor conditions. In particular, a methodical process should be undertaken to ensure aluminium alloys are exposed to corrosion conditions as little as possible.

Conclusion

This study highlights the interest in developing a major strategy when investigating complex industrial and cultural heritage. The relationship between the role of the parts (structural or non-structural) and the choice of materials was revealed through material analysis coupled with researching the constructor's technical documents. It was found that A-U4G and A-U4G1 were employed depending on the desired mechanical characteristics. Corrosion on the plates and stringers was then investigated and it was observed that the exfoliation on the plates is closely related to the microstructure created during the fabrication process. It was therefore shown that identifying the chemical nature and the microstructure of the alloys was a necessary step to a better understanding of the alterations involved.

Conservation and restoration practices on ancient aircraft remain complex due to the size of the aircraft and the high number of alloy types. However, similar aluminium alloys can be found in many aircraft from different periods.

Knowing in advance what the potential risks are for one part or another due to the chemical nature, fabrication process or environmental conditions is a useful source of information to be filed in a database and should help actors in the conservation field facing similar problems in the future.

Figure 1 .

 1 Figure 1. Photographs of (a) the Breguet 765; (b) the trailing edge; and (c) and (d) a corroded stringer on the centre wing section that was removed by a member of the association

Figure 2 .

 2 Figure 2. Photographs of (a) the interior; (b) exfoliation corrosion on stringers; and (c) pitting corrosion on fuselage plates

Figure 3 .

 3 Figure 3. Photographs of (a) exfoliating corrosion on stringers (interior) and (b) pitting corrosion on the fuselage (interior) on March 2017 and after two years (b and d)

  Coarse intermetallic particles analysed by EDS were identified as S-Al 2 CuMg, AlCuMgSi, θ-Al 2 Cu and particles containing Al, Cu, Fe, Mn and Si with varying stoichiometry. It should be noted that in A-U4G alloys, where the magnesium content is lower, the S-Al 2 CuMg phase is absent. Coarse intermetallic particles are deleterious to the macroscopic properties, potentially causing cracks and corrosion[START_REF] Hughes | La symbolisation de l'aluminium et de ses alliages en France et dans quelques pays étrangers[END_REF][START_REF] Derose | Microscopic and macroscopic characterisation of an aerospace aluminium alloy (AA2024)[END_REF]. It is therefore important to document them in terms of size and density to understand the alteration in old alloys. In stringers, particles are smaller and more numerous than in plates (see Table2for statistics).

Figure 4 .

 4 Figure 4. SEM images (backscatter electron mode) of collected pieces: (a) plate made of A-U4G; (b) stringer made of A-U4G1

Figure 5 .

 5 Figure 5. Optical microscope images after Keller's reagent etching: (a) plate; (b) stringer at 5× and 50×

Figure 6 .

 6 Figure 6. OM images on plates: (a) top view; (b) cross section showing pitting corrosion; and on stringers: (c) top view, (d) cross section showing intergranular corrosion leading to exfoliation

Table 1 .

 1 Elemental composition (wt%) of plates and stringers analysed by SEM-EDS vs reference alloy composition provided in AIR 3350/C(1957)

		Elements in wt%	Al	Cu	Mg	Mn	Si	Fe
		Structural
	Analyses	plates

Table 2 .

 2 Average density, size and area of particles as a fraction of the total alloy surface for a representative plate and stringer

		Density (/mm²)	Particle size (µm²)	Area fraction
	Plate (A-U4G)	12000	1.9 ± 4.2	2.3%
	Stringer (A-U4G1)	31200	1 ± 1.7	3.1 %

Acknowledgements

The authors would like to thank the volunteers of the Ailes Anciennes Toulouse association, especially the Breguet Deux-Ponts team. This study was partially supported by the NEXT grant (no. ANR-10-LABX-0037) within the framework of the Programme des Investissements d' Avenir.

Authors


Théo Rogliano

Guillermo Polito
email: guillermo.polito@univ-lille.fr

Pablo Tesone

Towards easy program migration using language virtualization

Keywords: Migration, modularity, virtualization

published or not. The documents may come

Introduction

Migrating programs is a complex task. A developer writes her programs targeting a version of a programming language. As languages, libraries and frameworks evolve, programs using them become obsolete. The developer tries to keep her programs as much as possible compatible but it is not always possible or straightforward [START_REF] Robbes | How Do Developers React to API Deprecation?: The Case of a Smalltalk Ecosystem[END_REF][START_REF] Wu | Aura: a hybrid approach to identify framework evolution[END_REF]. Changes in the language may break her programs. For example, in Pharo 2 there was a trait named TBehavior whereas now it does not exist anymore. Programs using that trait are now broken. Moreover, this problem is not exclusive to program forwardporting (Pharo2 -> Pharo7) but also to back-porting (Pharo7 -> Pharo2) and to porting between language dialects (Squeak -> Pharo).

When a language evolves to a certain point, the differences are so important that it becomes impossible to execute pieces of code written in an old version of the language. We identified the following evolutions provoking incompatible code (Section 2): Syntax changes. Changes in the syntax make programs that were valid for one version invalid in another.

IWST '19, July, 2019, Cologne, Germany 2019.

Standard Library changes. Changes in the classes of the standard library invalidate the code that uses it e.g., methods or classes removed, or methods with modified semantics. Meta model changes. Reflective languages expose their meta model to the programs [START_REF] Rivard | Smalltalk: a Reflective Language[END_REF]. If the meta model changes from one version to another, programs using it are not able to run correctly anymore.

We explore the problems of program migration using a virtualization approach. Virtualization is well-known in Operating System (OS) and the problem it solves is similar to ours. For example, Games running in Windows XP do not run natively on Windows 10 due to different kernel infrastructure, file system and so on. Windows uses virtualization in the form of a compatibility layer to solve this issue. The technique consists of interposing a layer between a program and the OS, called hypervisor. The role of the hypervisor is to be an adapter: if the behavior is present it transmits calls to the OS else it adapts them to make them compatible with the new API.

We want to achieve the same results with a programming language instead of an OS. This means interposing a virtualization layer between a program and a language in order to run old programs in a newer version of the language.

Toward this goal, we present a set of techniques required to be able to load and run programs intended for older versions of the host language (Section 3). We implemented the virtualization layer through the use of dynamic modules and metalinks for code rewriting. Once the program is loaded, developers are able to update the program to the new language version or to run it as it is using the virtualization layer. We validate the chosen infrastructure with different migrating scenarios of Pharo programs (Section 5).

Contribution. The contributions of this paper are:

1. the design of a dynamic module system that allows us to load partially broken code; 2. the identification of a set of migration problems and a corresponding set of intercession techniques to make them compatible to recent systems transparently; 3. an experience report on migrating two real-world libraries written from 7-9 years. Successfully loaded and running. This is the state we want the program to be in. Successfully loaded but not running. The program was loaded but some unexpected bugs appear. They make the program unusable. Since the program is loaded the developer is able to debug it. She changes the source code of the program thus making it incompatible again with the version it was conceived for. Unloadable. The program cannot be loaded. In order to correctly load the program, the developer should debug the loading process. Once the incompatibilities are discovered, the program source code is modified to comply with the newer language version. Finally, the program is loaded and it arrives to one of the previous state.

The 2 last cases are the problematic ones and are due to language changes. We illustrate these changes through examples:

Syntax changes

Syntax changes break the loading of a program. For example, in old Pharo versions, the parser accepted two different syntaxes for assignments, with an underscore a _ 2 or with a colon followed by an equal a := 2. The former gradually disappeared and now is not supported anymore. A program using underscore as assignment is then not understood anymore by the compiler therefore it does not compile.

Standard library changes.

Standard library changes break both loading and execution.

We can split them in three categories:

Renaming of methods or classes. For example, the method String » includesSubString: changed into String »includesSubstring:. Both the loader (to get the source code) and the program relied on the former one resulting in a doesNotUnderstand during the loading process then during the execution. Removal of methods or classes. The class PackageInfo does not exist anymore breaking program relying on it. Behavioral modifications. A method classNamed:

which was returning nil if the class is absent, now returns an Exception. The code expecting a nil in this case is not valid anymore and must catch the exception instead. 1

Meta-model changes.

Changes in the meta model also occur and break the loading process. As an example, the Trait class has its own hierarchy similar to the one of Class in Pharo 2. Both inherit from Behavior and ClassDescription and use a trait TPureBehavior.

In newer versions of Pharo, this hierarchy has been updated and Trait is now a subclass of Class. The meta side of traits has been reworked making their creation different and any code relying on reflection on traits is obsolete.

Modules for Virtualization

To illustrate with an image we will reuse, an object oriented program can be viewed as a patchwork or a puzzle consisting of different entities, namely packages, classes, methods and objects (Figure 1). They are linked by mainly three relationships: subclassing, reference and message-send. Changes are associated with loosing some pieces of the puzzles or the way they are linked (Figure 2). Our goal is to make new pieces looking alike the old ones and manage to link them. This is the role of the hypervisor. We propose the introduction of language hypervisor i.e., a compatibility layer at the level of the programming language. This component intercepts all the interactions of the loaded code and the language environment (Figure 3). In this section, we will detail the prerequisites for creating a hypervisor as we intend. The following features are mandatory.

Encapsulating changes

An unexpected side effect of loading an old application is the corruption of the host language environment. For example, the program depends on a different version of the class String. The loading process manages to install version of String required by the program, replacing its own String. The host environment ends up with this version of String which is not compatible with other current components. This is the worst scenario as it breaks all the new libraries and cannot be debugged. We require that the loading process does not affect the host environment. We propose to solve this problem using encapsulation techniques, here in the form of a module system (Figure 4) .

The module system in a nutshell

Our modules are composed of sets of name bindings:

Defined. A set containing the entities defined inside the module. Import. A set containing a binding to the entities we used that come from the outside. Undefined. A set containing existing references in the module to entities not defined nor imported. A module has the same API as the host environment API so tools in the host environment are able to interact with the modules transparently. Also the modules introduce the API needed for its own management such as class creation for itself, import, undefined references and so on. A same name is allowed to appear in different modules, as each of these bindings are independent. Now, with the earlier example, the loading process loads the program in a module. The class String expected by the program will be loaded in the module and will be different than the one of the host environment. Doing so, the incompatibility is isolated inside the loaded module. It only affects its execution. Moreover, the developer is able to debug this incompatibility and fix it without affecting the stability of the host environment.

In our proposed solution, we have 3 modules: the hypervisor, the incompatible program under test and the host language environment.

Late class creation

Now that we have the possibility to safely load the program to virtualize, we can take a look on the loading difficulties. The first cause of loading failure are missing classes that prevents us from loading all the hierarchy below them (Figure 5). New classes in Pharo are created by sending the message #subclass: to the superclass as shown in Listing 1. The superclass is then in charge of class creation by configuring a class builder with the arguments of the message. In case of a missing superclass, which is a common scenario, we cannot create all the subclasses, the compiler will not manage to resolve the receiver of the message subclass:. In Listing 1, if the class Point is not available, we cannot send the subclass message to it, hence we cannot create the class ColorPoint. A similar problem appears with missing traits, the users of the missing trait will not be configured properly and will certainly be broken. From now on, we will use the term behavior to refer to classes and traits.

To handle this problem, instead of executing a class definition directly; we transform the class definition message-send into an Abstract Syntax Tree. It allows us to detect missing references and to react to them. The class builder has been enhanced to be configurable with such ASTs. For example, a possible solution is to change the superclass of ColorPoint to another class (e.g., Object) in the model and ask the builder to make the class. This solution works when there is a direct replacement of the missing class. (e.g., if the class Point has just been renamed.) However, if there is no direct replacement we change the intended original definition and it will continue to break the program. So, we require to have a better abstraction for missing entities.

Representation of missing entities

We need to have a representation of missing behaviors for two reasons. As stated above, for resolving, at least in a temporary way, the missing references to those behaviors. The second reason is we want to keep track of the dependencies of the loaded program.

We want to load the program under test without modifying it. In term of pieces of a puzzle, we want to keep the expected shape of the pieces (Figure 6). Figure 6. We know a piece is missing. We know it was expecting a yellow part on the top. We create a stub piece (dashed lines) with a yellow part on top and link it, waiting for a better replacement For that purpose, we used stubs classes or traits that will contain the information obtained through static dependency analysis. We call those stubs undefined classes for classes and undefined traits for traits.

We encounter three scenarios:

Undefined classes. We create an undefined class by subclassing the class UndefinedClass. We followed the proposal solution of Polito et al [START_REF] Polito | First-Class Undefined Classes for Pharo[END_REF]. The latter redefine basicNew and doesNotUnderstand to prevent instantiation. Undefined traits. UndefinedTrait is a subclass of Trait.

Only the method isDefined is redefined to return false. The creation of undefined trait is the same as for regular trait. A trait composition with an undefined trait becomes undefined. An undefined trait is created when a behavior refer to a missing trait. Undefined traited classes. An undefined traited class is a class that uses an undefined trait. As for undefined classes we prevent the instantiation, here by applying UndefinedTraitedClass on the class side of the target class which redefines basicNew. At first, we load our program with stub classes (Figure 7). Once we found the corresponding classes, we are able to throw away those stubs easily and replace them.

Dependency management

In some cases, the missing entities are still present in the host environment and are compatible, so we want to use them. In the last example Point is missing in the module containing the program but is present in the host environment. We would like to create a stub for Point and make it inherit from the Point from the host environment. We need then to import the point from the host. This creates a name conflict, we have two times "Point" inside the same module. Point from the host which will stay in the host but is imported and the subclass Point we want to create. For doing so, we suggest aliasing as a solution for this problem. We import Point by giving it another name, an alias. With this mechanism, you can solve the problem in different ways. As show in Figure 8), you can use alias in the program's module or in the hypervisor. With late class creation, undefined entities, modules and aliases we are able to handle all the hindrance for creating a hypervisor.

Virtualizer

The hypervisor is a module containing all that it is necessary for the program to work and be compatible with the newer For example, it contains the undefined entities of the program's module, the program's module imports them from the hypervisor. Having the undefined entities in a module allows us to resolve them without modifying the host environment nor the loaded program (Figure 9).

Intercession techniques for virtualization

We have 3 strategies for resolving incompatibilities: Kernel indirection. We still have an entity with the same name in the host environment. We assume some methods are similar and we want to reuse them. We then discard the undefined behavior and declare a new subclass with the same format than the one from the host environment. This way the methods are found with a regular look up. If a method is still missing we create it in the newly created behavior in the virtualization layer. Catching messages. This strategy is for missing classes without similarities with the ones of the host environment. Our only information is their names, we lost their methods or their layout. In some cases, we still have the opportunity to consult old versions of the language to retrieve the original classes. Under other circumstances, we have to implement them from the start. We define those by subclassing Object. We then run the tests and catch the doesNotUnderstand messages which contains the names of the expected methods.

We then implement them by assuming the behavior by testing (similar to Test Driven Developpement [START_REF] Beck | Test Driven Development: By Example[END_REF]). Metalinks. In less common cases, a method still exists but has been renamed. The lookup raises a doesNotUnderstand since the method was not found. We solved the problem with metalinks [START_REF] Röthlisberger | Unanticipated Partial Behavioral Reflection: Adapting Applications at Runtime[END_REF]. Metalinks are used to annotate AST nodes. An annotated AST is expanded, compiled and executed on the fly thanks to the Reflec-tiveMethod/CompiledMethod twin. In our case, using metalinks allows us to replace the execution of the original method with the new one. Even more, we are able to translate different message-sends (e.g., the parameters have different orders between the versions).

The source code stays untouched while we still execute the expected method.

Using the virtualizer: an example

In order to use our virtualization solution the developer should perform the following steps. 1. She installs the program that works in a different version of our language inside a module. During the loading of the program, the module system detects missing dependencies and generates undefined entities for them. 2. The virtualizer component transfers the undefined entities to another module that is going to become the hypervisor. We decomposed this in 2 stages, creating the missing dependencies in the hypervisor and then importing them. 3. She runs the program's tests to find out potential problems to solve.

She analyzes and determines the best course of options

(if there is one) to simulate the missing behaviors or the semantic mismatchs applying one of the stated strategies. 5. When all the tests are processed and passed, it means that the program is operational.

Validation

In order to validate our infrastructure, we port 2 old Pharo programs to a newer version of Pharo.

Methodology. We consider a migration is successful if all the tests are passed. If all the tests are passed, we assume the program is working. Moreover we assume that the tests are passed in the original version of Pharo. We only choose programs with tests for this purpose.

For each of the programs to run we executed the steps stated in Section 4.

Selected Scenarios. We chose 3 scenarios. The first one is an exchange of libraries and serves the purpose of testing the module system. The other two are program migrations bringing each different challenges. The migration of MuTalk was chosen for compiler challenges and the migration of Fuel for file and objects creation challenges.

Threat to validity. In the case the test coverage is low, we can only show that the tested parts are in the same state as in earlier version. Non tested code is still supposed broken.

System/container collection

This scenario is our calibration test for modules. We use the system tests (the tests of the current implementation of the We chose the Stack and LinkedList collections. In the system, the implementation of Stack is based on LinkedList whereas we introduce another implementation, called CT-Stack, using an array (Figure 10). In the modules containing the tests, we decide which implementation to use by redefining the Stack import. Both implementation pass the tests of the other one. For LinkedList the general principle is the same, except two redefinitions of import are done, LinkedList and Link. We noticed that it's possible to mix the system-LinkedList with the CT-Link and vice versa. As for the results, all tests pass with a green light. This scenario showed us that the module system produces isolated modules that are freely linkable between each other.

MuTalk

In this scenario, we produce a hypervisor for MuTalk 2 . Mu-Talk a mutation testing framework which last commit dates from 2013. We know the framework was working in old versions of the language (i.e., all tests were green). We chose it 2 https://github.com/pavel-krivanek/mutalk because mutation testing implies modification of methods at runtime bringing interesting challenges since there is a need of interfacing with the compiler.

Indeed thanks to this experiment we found a problem when the program is modifying CompiledMethod objects (object representing methods). In order to generate mutants the program asks methods for their source code with the getSource message and modifies it. In this scenario the getter for source code has changed to sourceCode and we are stuck with a doesNotUnderstand message (Figure 12). The hypervisor is not involved in the process since the compiler uses the CompiledMethod from the system. This problem is a metamodel problem and allows us to develop our metalinks strategy.

Figure 12. Scenario with a doesNotUnderstand

In this validation scenario, we identified 45 references to missing entities in the framework. Out of the 45, 30 are classes with the same name that a classes in the system. We used the kernel indirection strategy in those cases. For the others classes we used catching messages strategy. We retrieved methods from Pharo 2 and implemented them in only 3 classes. With our different strategies and thanks to the use of metalinks, we managed to pass 355 out of 362. The 4 failures and 3 errors remaining means some behaviors are still missing or that we did not manage to retrieve the correct semantic for some methods.

Note: We only talked about fixing 33 references out of 45. In the 12 remaining, 4 are global objects referenced with the same name that we still have in the system. We applied something similar to the kernel indirection strategy. The missing 8 references could be the cause of the failing tests or just present in the program but not used at all (dead code).

Fuel

This scenario is about the virtualization of Fuel3 version 1.6, last comitted in 2012. Fuel is a serialization/materialization program still maintened to this day. Serialization implies I/O management, file management and assumptions on objects. This scenario presents an extra challenge. A newer version of Fuel exists in Pharo and conflicts with our. This time, we identified 79 missing references. 66 have been resolved using the kernel indirection strategy. We quickly got results in applying the catching message strategy since the former bring us to our first hindrance.

This version of Fuel uses the class FileDirectory which does not exist anymore. We retrieved an implementation of FileDirectory from Pharo 1. In addition, a problem arises because Fuel relies on an old implementation of streams. To get around this matter we added in the hypervisor a stream compatibility for files using the new implementation of streams and FileReference. Thanks to this workaround we managed to use an erzatz of FileDirectory and to get back the file management.

Fuel uses extension methods on system classes but we do not have any support for them yet. The question is how to handle extension methods without breaking the properties of our modules. For example, an extension method foo expects to be installed in the class String. We do not want it to be installed in the class String of the host environment. Conflicts arise in case another method foo has been implemented in the meantime. Moreover, by doing so we break our property to keep the host environment intact. Creating a String class in the hypervisor specifically and installing the method do not work. Moreover, similarly to the Compiled-Method problem in MuTalk, the compiler use the String of the host environment for creating strings. Those strings will then not understand the method foo. We plan on handling extension methods in the future.

Finally, Fuel assumes that it works in a single environment, the Smalltalk global environment. It serializes and materializes objects in this environment. Since we installed it in an isolated environment, it does not have free access to the host environment (nowadays Smalltalk) creating incompatibilities. For example, asking Fuel to materialize a LargeInteger fails. Fuel asks the class using reflection to create the object. The class LargeInteger was not an import of Fuel and is not in its environment because it accesses it dynamically. It cannot ask LargeInteger to create the large integer requested. Moreover, Fuel also uses Smalltalk for reflective operations on itself and does not find itself in it provoking incompatibilities too. Reflective libraries require more work in case of their introduction into a module system, for example an installing environment for objects. We also plan to overcome this problem in future works.

The solution is incomplete with failure of a lot of tests (19 passes/239 tests) but this scenario taught us a lot on unforeseen difficulties and on a new kind of incompatibilities.

Lessons learned

Thanks to the previous validation scenarios, we learned that our solution encounters its limits when the program tries to do reflective operations. For example, in a library exists a specialization of String called MyString with a method lookForAnother that look for a specific method only in the superclass (String). Since in our solution, we insert a class between String and MyString, the method lookForAnother fails since it will look in the superclass which is not String anymore. Those cases need to be analyzed one by one and are resolved with metalinks. We have a similar problem with the resolution of symbols. They are, in Pharo, resolved in a global scope. With the introduction of a module system symbols are now resolved inside the module scope instead of the global one. Though, in some cases like in Fuel, we would like to not only resolve symbols in a module scope but in something more "global" like a set of modules.

6 Related Work

OS virtualization

A similar solution is used for porting applications in different versions of operating systems. Windows's application compatibility layers (Application Compatibility Toolkit4 ) attempts to run poorly written applications or those written for earlier versions of the platform. It exposes a layer that emulates the old versions of the API.

FreeBSD includes a Linux compatibility layer (https://www. freebsd.org/doc/handbook/linuxemu.html) that enables binaries built specifically for Linux to run on FreeBSD. FreeBSD also provides other Unix-like system emulations, including NDIS, NetBSD, PECoff, SVR4, and different CPU versions of FreeBSD. NetBSD includes similar Unix-like system emulation.

All these virtualization layers are provided by the platform without any support to modify them. Moreover, it is impossible to create extensions to support applications that expect old versions of third party libraries (i.e., libraries that are not part of the operating system).

Application migration

In the literature, solutions exist to help developers in migrating applications. For example, they analyze and extract the required refactorings from one version of the host environment to another [START_REF] Brito | APIDiff: Detecting API breaking changes[END_REF][START_REF] Chow | Semi-automatic update of applications in response to library changes[END_REF][START_REF] Henkel | CatchUp!: capturing and replaying refactorings to support API evolution[END_REF][START_REF] Wu | Aura: a hybrid approach to identify framework evolution[END_REF]. These solutions provide different level of automatic generation of refactorings. For example, Wu et al [START_REF] Wu | Aura: a hybrid approach to identify framework evolution[END_REF] propose a solution to automatically extract the required refactorings from one version to another of a library comparing the source code and the call graph. Henkel et al [START_REF] Henkel | CatchUp!: capturing and replaying refactorings to support API evolution[END_REF] propose to generate the set of refactorings from capturing the changes performed by the developer. However, they all modify the original program making it incompatible with the older version of the language. Capsules. Capsules in Fresco [START_REF] Wills | Capsules and Types in Fresco[END_REF] chose to modify the class definition in order to have the same name several times.

In their solution, a class owns meta-data such as the author name, the date of creation and the prerequisites of the classes. The idea is to encapsulate a class like data in a network. Modular Smalltalk [START_REF] Wirfs | An Overview of Modular Smalltalk[END_REF], The Java Module System [START_REF] Strniša | The java module system: core design and semantic definition[END_REF] Newspeak [START_REF] Bracha | Modules as Objects in Newspeak[END_REF] and Matriona [START_REF] Springer | Hierarchical Layer-Based Class Extensions in Squeak/Smalltalk[END_REF] offer encpsulation solutions based on name scoping. Some solutions based , this time, on methods scoping [START_REF] Bergel | Classboxes: A Minimal Module Model Supporting Local Rebinding[END_REF] also exist. Bergel et al. analyze module diversity and explain many of them [START_REF] Bergel | Analyzing Module Diversity[END_REF][START_REF] Schärli | Composable Encapsulation Policies[END_REF]. Finally some solutions [START_REF] Denker | Encapsulating and Exploiting Change with Changeboxes[END_REF][START_REF] Lincke | Scoping changes in selfsupporting development environments using context-oriented programming[END_REF] allow the developer to modify the program under migration without affecting the host environment. However, these solutions do not provide a way of performing the changes without affecting the original source code.

Conclusion

In this article, we presented a set of language changes causing problems in loading or running programs. We proposed a solution based on virtualization to migrate programs despite those problems. We designed an infrastructure based on dynamic modules and metalinks in this goal and chose to validate it with real migration scenarios. Although our solution does not yet cover the entire selected scenarios, the selected programs load and are expected to run. The infrastructure needs to take into account extension methods and have a better environment handling. As a future work, we plan to extend our solution to include the missing features. Moreover, we plan to continue using this solution to migrate old application to newer versions of Pharo. Other possible path of evolution is the automatic hypervisor generation using refactoring detection techniques [START_REF] Henkel | CatchUp!: capturing and replaying refactorings to support API evolution[END_REF][START_REF] Wu | Aura: a hybrid approach to identify framework evolution[END_REF].

Figure 1 .

 1 Figure 1. A program seen as many related entities forming a puzzle.

Figure 2 .

 2 Figure 2. Missing parts as time goes (e.g., removing classes from standard library)

Figure 3 .

 3 Figure 3. All the calls to missing parts from the program are intercepted by the hypervisor and redirect to an equivalent in the host environment.

Figure 4 .

 4 Figure 4. Encapsulated entities in different modules. They are only aware of what is inside the module (oval).

Listing 1 .

 1 Point subclass: #ColorPoint instanceVariableNames: 'color' classVariableNames: '' category:'' Example of class creation.

Figure 5 .

 5 Figure 5. Behaviors are missing and we cannot load the fractured pieces.

Figure 7 .

 7 Figure 7. A program loaded with two undefined pieces. The undefined pieces will be replaced later with real pieces.

Figure 8 .

 8 Figure 8. We cannot ask for the first subclass message in the hypervisor. The compiler will resolve it as the same and we will build a circular hierarchy. Instead we rename the Point from the host environment in the import.

  migration using language virtualization IWST'19, July, 2019, Cologne, Germany version of the language. It contains all modifications and adaptations required to run the program in the host environment without modifying the program nor the language environment.

Figure 9 .

 9 Figure 9. The undefined entities of the program are in a module called hypervisor. They are isolated and modifying them impact only the hypervisor.

  , July, 2019, Cologne, Germany Théo Rogliano, Guillermo Polito, and Pablo Tesone language) with an alternate implementations of some collections and, the opposite, use another tests implementation on the system collections. It allows us to assert that we can run tests on independent implementations.

Figure 10 .

 10 Figure 10. Exchanging tests between implementation.

Figure 11 .

 11 Figure 11. Feature diagram of linked list tests

  migration using language virtualization IWST'19, July, 2019, Cologne, Germany

IWST' 19 ,

 19 July, 2019, Cologne, Germany Théo Rogliano, Guillermo Polito, and Pablo Tesone 6.3 Encapsulation techniques Solutions exist to encapsulate changes. Allan Wills propose

We consider refactorings as a composition of the previous changes. We will not detail them.

https://rmod.inria.fr/web/software/Fuel

https://docs.microsoft.com/en-us/windows/desktop/ win7appqual/application-compatibility-toolkit--act-7

Acknowledgments

This work was supported by Ministry of Higher Education and Research, Nord-Pas de Calais Regional Council, CPER Nord-Pas de Calais/FEDER DATA Advanced data science and technologies 2015-2020. The work is supported by I-Site ERC-Generator Multi project 2018-2022. We gratefully acknowledge the financial support of the Métropole Européenne de Lille.