• Aucun résultat trouvé

Analyse des méthodes de résolution itérative

2. ASPECT NUMERIQUE

2.1. M ETHODE DE RESOLUTION

2.1.1. Analyse des méthodes de résolution itérative

Pour modéliser la dégradation des solides, il est nécessaire de résoudre une équation différentielle. Pour cela, des méthodes itératives sont aujourd’hui utilisées, comme le Runge-Kutta, des développements limités ou autres [Jedrzejewski, 2005].

2.1.1.1. Présentation des méthodes itératives

Les solveurs existant actuellement sont créés à partir d’un modèle type différence finie qui permet d’obtenir l’équation suivante :

( + ) ( ) ̇ (2.1)

Ce qui donne :

( + ) ( ) ( ) (2.2)

La vitesse de perte de masse, au pas de temps suivant, est calculée selon :

( )

( + ) (2.3)

Ce type de techniques de résolution est simple à mettre en place et peu gourmand en temps de calcul comparativement aux autres techniques itératives. Par contre, les équations de type Arrhenius et les mécanismes associés entrainent d’importants problèmes de raideurs, particulièrement sur des mécanismes complexes ainsi que dans certaines gammes de

78

paramètres. Ils interviennent quand la solution est perturbée par une erreur initiale ou par des erreurs d’arrondi pendant la résolution [Jedrzejewski, 2005 ; Poitevin, 2012].

Pour répondre à ces problèmes d’arrondis, nous pouvons :

- Soit diminuer le pas itératif utilisé, ce qui augmente la précision et diminue les instabilités. Par contre, le temps de calcul devient plus important.

- Soit, il existe des techniques spécifiques [Jedrzejewski, 2005] comme la méthode de Runge-Kutta, la méthode d’Euler… qui sont utilisées dans de nombreux solveurs, tels que ODE15s de Matlab.

Le solveur ODE15s a été utilisé par Lautenberger [Lautenberger, 2007] et Bustamante Valencia [Bustamante Valencia, 2009] lors de leurs travaux sur les algorithmes génétiques, ce solveur étant dédié aux problèmes raides de résolution des équations différentielles. Pour cela, il utilise une méthode Runge-Kutta d’ordre 1,5 avec la technique des matrices Jacobiennes [Ashino et al, 2000]. De plus, un système permet dans ce type de solveur d’avoir un pas d’itération adaptatif en fonction des problèmes de raideur rencontrés lors de la résolution. Ainsi, une réaction de dégradation d’un solide, qu’elle soit élémentaire, équivalente ou apparente, peut être résolue avec une méthode itérative. Toutefois, la description de la dégradation demande l’utilisation de mécanismes complexes (cf chapitre II).

Ceux-ci sont constitués de plusieurs réactions apparentes dans lesquelles la masse évolue et se transmet d’une réaction à une autre. Ainsi, nous pouvons utiliser les mêmes techniques que dans les paragraphes précédents en ajoutant le mécanisme multiétape.

Dans un mécanisme multiétape, les liens entre les réactions rendent plus importants les problèmes de raideur, car si, des instabilités apparaissent pour une réaction, alors ce sont toutes les réactions suivantes qui sont impactées. Par conséquent, plus il y a de réactions et plus l’instabilité du code est grande, mais, ce ne sont pas les seules sources d’instabilité.

2.1.1.2. Problèmes liés aux méthodes de résolution itératives

Les méthodes itératives permettent de résoudre des équations qui n’ont pas de solution analytique mais elles peuvent générer des problèmes.

Pour cela, étudions le solveur ODE15s qui est spécifique à ce type de résolution et qui a été utilisé dans des travaux précédents [Lautenberger, 2007]. Afin d’étudier les problèmes de solveur, Bustamante-Valencia utilise un programme [Bustamante Valencia, 2009] qui génère aléatoirement des jeux de paramètres qui sont ensuite implantés dans le système de résolution comprenant le solveur. Sur certaines gammes de paramètres, l’auteur identifie des incapacités de son programme à résoudre l’équation, ce qui se traduit par des temps de calcul infinis. La figure 2.1 suivante est extraite de la thèse de Bustamante-Valencia [Bustamante Valencia, 2009] et illustre cette situation. Elle montre le tracé des énergies d’activation en fonction de l’ordre de réaction. En rouge, les valeurs qui ont fonctionné et en bleu les valeurs qui n’ont pas fonctionné. Dans ce test, l’auteur utilise un mécanisme multiétape à deux étapes consécutives dans lequel une réaction étudiée est influente sur la vitesse de perte de masse (figure du haut) et une autre est faiblement influente sur la vitesse de perte de masse (figure du bas).

79

Figure 2.1 : Tracés des ordres de réaction en fonction de l’énergie d’activation. Premier graphique pour la réaction numéro deux et deuxième graphique pour la réaction 1. Extrait de

[Bustamante-Valencia, 2009]

Nous observons clairement que lorsque la réaction est influente, il apparait une zone dans laquelle le programme génère des erreurs tandis que lorsque la réaction n’est pas influente, la distribution des valeurs entrainant des erreurs est aléatoire. En effet, si la réaction est peu influente, alors les instabilités dues à celle-ci impactent très peu le résultat final. Par conséquent, les instabilités ne sont pas dues à cette réaction.

Par contre, dans le cas où la réaction est influente, une autre étude est nécessaire. Pour cela, un programme a été créé sur le même principe que pour l’étude précédente. Il sélectionne aléatoirement des paramètres dans la gamme suivante, représentative des valeurs couramment utilisées dans la littérature :

Paramètres Valeurs minimales Valeurs

maximales

Log A 6 13

E 80 260

n 0.5 3

0.3 0.9

Tableau 2.1 : Gammes de variations des paramètres dans le programme statistique (Attention, les valeurs pour la constante préexponentielle sont exprimées en log (A) car celle-ci est

pratique à utiliser).

80

La gamme choisie est très grande dans le but de tester les zones d’instabilités possibles dans un espace le plus grand possible. Dans un premier temps, ce programme a été testé sur un mécanisme multiétape constitué de trois étapes linéaires dont le coefficient stœchiométrique est fixé à 0,5 pour chaque réaction. La figure 2.2 présente alors les résultats des tests statistiques réalisés sur un mécanisme multiétape avec de très larges gammes de variations des paramètres. Le mécanisme multiétape est présenté dans la figure suivante :

Figure 2.2 : Mécanisme multiétape ayant servi pour les tests statistiques.

Le mécanisme présenté dans la figure 2.2 est linéaire, constitué de trois réactions consécutives.

Le temps moyen de calcul lorsque le programme fonctionne normalement est de 0,1-0,14 seconde. Un temps de calcul supérieur à 10 secondes est le critère alors retenu nous permettant de définir l’instabilité d’un jeu de paramètres.

Figure 2.3 : Résultats des tests statistiques sur les paramètres.

n

n

n

Réaction n°1 Réaction n°2

81

Les résultats obtenus montrent que dans les mécanismes complexes, de façon aléatoire, certains jeux de paramètres entrainent une non convergence du programme.

Ce phénomène est purement numérique. En effet, pour certaines réactions et valeurs de paramètres, la masse de la réaction est consommée instantanément. Dans ces cas, le solveur raffine le pas de temps, mais, comme la masse a été consommée instantanément alors → . Ce type de problèmes se pose seulement pour des mécanismes multiétape, tous les tests que j’ai pu effectuer sur des mécanismes simplifiés convergant.

Ce type d’instabilité semble être un problème interne au solveur Matlab, qui a des difficultés à résoudre ce type d’équation par une méthode itérative et pour certaines valeurs. Toutefois, il est difficile de savoir exactement quelle réaction n’a pas fonctionné et précisément quels jeux de paramètres entrainent une instabilité, du fait de « l’opacité » des solveurs ODE et de la difficulté à comprendre leur fonctionnement.

Il est également intéressant de faire le même type de tests sur un mécanisme simplifié en fixant des critères pour lesquels les résultats obtenus sont aberrants. Aberrant signifie que les résultats obtenus n’ont aucun sens du point de vue physique. Par exemple, il est possible d’obtenir des pics de vitesse de perte de masse de plusieurs grammes en une seconde alors que la masse dégradée est de l’ordre de quelques milligrammes.

Pour cela, le critère du temps de calcul est conservé et un critère sur la dérivée de la vitesse de perte de masse est ajouté afin d’identifier les variations trop importantes.

Pour définir ce critère, nous prenons la courbe de la partie 1.22 du chapitre I pour une vitesse de chauffage de 50°C.min-1. C’est une courbe classique dont la dérivée donne une valeur maximale de 2,5.10-4s-1 (masse normalisée à 1). Afin de montrer les valeurs aberrantes, j’ai fixé un critère 10 000 fois supérieur : quand la dérivée de la vitesse de perte de masse est supérieure à 1 le programme indique une erreur.

La figure 2.4 montre les valeurs des paramètres ayant servi à calculer les courbes de vitesse de perte de masse. Les points bleus représentent les paramètres pour lesquels la dérivée de la vitesse de perte de masse admet un maximum inférieur à 1s-1 et les points rouges représentent les paramètres pour lesquels la dérivée de la vitesse de perte de masse est supérieure à 1s-1.

Figure 2.4 : Résultats des simulations d’instabilité avec un mécanisme simple.

82

Nous observons clairement qu’il y a une zone rouge dans laquelle tous les jeux de paramètres entrainent des erreurs. De plus, n semble ne pas influencer les résultats. Ce sont, par conséquent, les paramètres A et E qui, en interaction, semblent entrainer des instabilités sur certaines de leurs valeurs. Pour bien comprendre ce qui se passe lorsque le programme ne converge pas, la figure 2.5 montre une courbe de vitesse de perte de masse calculée avec des paramètres dans la zone rouge de la figure précédente. Précisons que les essais ont commencé à -100°C et fini à 1000°C. Ce graphique est représentatif des autres résultats obtenus.

Figure 2.5 : Résultat (vitesse de perte de masse) représentatif des jeux de paramètres entrainant des erreurs dans le code.

Cette courbe montre que pour certains jeux de paramètres, la perte de masse devrait se situer bien avant les -100°C c’est-à-dire avant le début des calculs. Ceci fait qu’au début de la simulation, toute la masse est consommée instantanément et le programme ne converge pas, car il va raffiner le pas d’itération à l’infini.

Dans un mécanisme complexe, le résultat est le même. Quand de la masse arrive dans une réaction, elle est consommée instantanément, la résolution de l’équation ne peux alors être réalisée.

En conclusion, deux types de problème se posent :

- Les problèmes d’instabilité sont dus aux pas d’itération choisis lors des calculs réalisés par les méthodes de résolution itérative. Il y a deux manières de solutionner ce premier type de problème. La première est de travailler sur le solveur afin de résoudre les instabilités numériques. La deuxième, est de trouver une solution analytique pour les mécanismes complexes.

- Le jeu de paramètres choisi entraine des courbes de vitesse de perte de masse aberrantes. Ainsi, une analyse plus détaillée sur la sensibilité des paramètres est nécessaire. Toutefois, le plus important, est de bien définir les critères de sélection de ces paramètres afin qu’ils puissent représenter des réactions apparentes réelles.

83