• Aucun résultat trouvé

Partie 7 : La programmation des opérations unitaires

7.1 Les bibliothèques

Deux bibliothèques ont été utilisées pour la réalisation de notre travail. La première concerne les propriétés de l’eau et de la vapeur, la seconde les procédures mathématiques.

Les propriétés de l’eau et de la vapeur

La bibliothèque WaterSteamPro (6.5) commercialisée par Orlov et al. (2012) permet de calculer les propriétés thermodynamiques et physique de l’eau et de la vapeur. Elle est basée sur les dernières formulations conseillées par l’IAPWS pour la thermodynamique (Wagner et al. 2000), la viscosité et la conductivité thermique (White et Sengers 1995a, 1995b).

Cette bibliothèque s’est montrée très robuste à l’usage. Sa disponibilité sous forme de bibliothè-que statibibliothè-que permet un appel rapide des fonctions, appel bien plus lent dans le cas de l’utilisation de bibliothèque dynamique : les essais menés en comparaison des deux types de bibliothèques sont illustrés dans la Table 33, dont on déduit un temps d’appel à une fonction de librairie dyna-mique d’environ 3.6·10-4 seconde. La durée de calcul de cette fonction est 104 fois plus faible que ce temps d’appel.

Table 33. Comparaison des vitesses d'appel de fonction, dans le cas de la fonction h(P,T) pour la vapeur d’eau. Type de bibliothèque Durée pour 108 appels (s) Statique 37 DLL 360000

Les routines mathématiques

Les routines mathématiques ont été tirées de la bibliothèque commerciale « Numerical Recipes » (Press et al. 2007). Nous en utiliserons la recherche de racine en dimension simple, la recherche de minimum en dimensions simple et multiples et l’intégration numérique. Le code source des algorithmes étant directement accessible, une partie des routines a été modifiée avant leur utilisation.

Recherche de racine en une dimension

La recherche de racine en une dimension consiste à trouver x tel que : f(x) = 0. Deux types de méthodes sont principalement utilisées et construisent des valeurs de x successives s’approchant de la racine : les méthodes de type Newton, où l’itération suivante est construite à partir de la dérivée de la fonction f au pas précédent, et celles dont l’initialisation précise un encadrement de la racine (y et z tels que f(y)·f(z) < 0). Les méthodes du second type sont assurées de trouver une racine aux fonctions continues avec une précision importante en un nombre minimum de pas, alors que les méthodes se basant sur la pente peuvent diverger vers des extrémums locaux ou progresser lentement dans certains cas. Par contre, l’encadrement de la racine peut parfois être complexe à réaliser.

Notre compréhension des modèles permet de fournir une idée assez précise des racines recher-chées pour en proposer un encadrement à faible coût. La méthode de Brent garantit une conver-gence au pire aussi rapide que la méthode par dichotomie, mais en pratique bien meilleure. Elle applique une interpolation de la fonction dans l’intervalle de recherche de la racine. En cas de progression trop lente de l’algorithme, une dichotomie est réalisée (Press et al. 2007, p. 454). Le code de l’algorithme a été peu modifié. En effet, la version fournie présente une grande robus-tesse et la définition d’un intervalle de départ l’empêche d’explorer des zones où les propriétés physiques pourraient être mal définies. Nous avons simplement ajouté à la version commerciale la possibilité de fournir les valeurs de la fonction aux bornes de l’encadrement de la racine. Cette propriété évite deux évaluations supplémentaires de la fonction, évaluations qui peuvent être lourdes dans certains cas, et représentent une proportion non négligeable d’évaluations, la racine étant habituellement déterminée avec une très forte précision en 3 à 7 pas.

Recherche de racine en dimensions multiples

La recherche de racine en dimensions multiples reste une discipline complexe (Press et al. 2007, p. 473). La conversion de la recherche de racine à celle d’un minimum n’est pas une solution mira-cle, la difficulté devenant de trouver un minimum global de valeur zéro, et non des minimums locaux de valeur supérieure à zéro.

À l’utilisation, nous remarquerons que les fonctions implémentées se comportent « bien », et les recherches de racines en espace de plusieurs dimensions peuvent être gérées par des algorithmes de recherche de minimum. Ces algorithmes seront modifiés afin de vérifier que le minimum trou-vé est bien zéro, et renvoyer une erreur dans le cas contraire. Cette erreur n’est apparue que dans un cas pendant nos simulations, lors de la recherche de l’équilibre de précipitation de burkeite. Une réinitialisation du problème avec un pas plus petit permet de supprimer le problème.

Recherche de minimum en une dimension

Cette fonction sera appelée uniquement par les algorithmes de recherche de racines en dimensions multiples.

La méthode choisie est semblable à celle utilisée pour la recherche de racine : un encadrement du minimum est fourni, puis la fonction est approximée par une parabole. Selon la qualité de l’appro-ximation, le pas suivant est situé au minimum de la parabole, dans le cas contraire, le pas suivant est choisi pour garantir une décroissance rapide de l’encadrement du minimum (Press et al. 2007, p. 492).

Recherche de minimum en dimensions multiples

Les méthodes de recherche de minimum en dimensions multiples peuvent être classées en deux grandes catégories : celles qui nécessitent le gradient de la fonction à minimiser, et celle n’en ayant pas besoin.

L’évaluation du gradient, dans notre cas, serait faite numériquement en calculant les dérivées partielles en différences finies. Cette méthode a quelques inconvénients : la lourdeur (qui sera également le cas pour d’autres méthodes), et les risques de discontinuité ou de sortie du domaine de définition du problème physique. Ces points étant assez délicats à traiter, nous avons décidé de laisser de côté ces méthodes, classiquement de gradient conjugué, de Newton ou quasi-Newton.

Deux méthodes ne nécessitant pas l’évaluation de gradients ont été utilisées : la méthode du simplexe et une méthode par direction de pente.

Méthode du simplexe

Cette méthode classique est efficace pour se diriger lentement vers le minimum d’une fonction, en construisant le pas d’itération suivant par réflexion de la plus « mauvaise » des dernières évaluations de la fonction à minimiser sur la « surface » définie par les autres. Une illustration graphique de la méthode en deux dimensions est donnée sur la Figure 48. Le simplexe est reconnu pour être relativement lent à converger mais particulièrement robuste et insensible aux cassures de pentes car les valeurs des évaluations successives sont comparées, sans calcul de pente ni de direction. Son utilisation reste relativement simple lorsque le minimum recherché est proche d’une zone où la fonction à minimiser est non évaluable. Sa précision et sa vitesse de convergence sont améliorées par l’utilisation de pas de taille variable. Le détail de la procédure utilisée pourra être trouvé dans (Press et al. 2007, p. 502).

Figure 48. Illustration graphique de l'algorithme du simplexe en deux dimensions. a-b-c sont les points initiaux.

La méthode du simplexe a été choisie en début de programmation pour profiter de sa robustesse. Notre expérience a montré qu’elle restait plus efficace que les autres méthodes dans le cas de la recherche de l’équilibre solide-liquide de la burkeite, elle a donc été conservée dans la version finale.

Méthode directionnelle

Si l’on veut éviter l’évaluation de gradients, l’utilisation de méthodes directionnelles reste possible. On utilise ici une méthode de Powell, qui construit une direction comparable à celle du gradient :

L’initialisation de la minimisation nécessite un point de départ et une série (linéairement

indépendante) de vecteurs directionnels décrivant l’espace (par exemple, les vecteurs unitaires de l’espace utilisé). Le minimum de la fonction est recherché sur la droite passant par le point initial selon la première direction, puis à partir de ce point sur la deuxième, puis les autres directions. Le point obtenu alors définit avec le point initial une nouvelle direction, selon laquelle le minimum est à nouveau recherché. La procédure est reprise au départ. Une illustration de la méthode en deux dimensions est donnée dans la Figure 49. Les détails pourront être trouvés dans (Press et al. 2007, p. 512).

Figure 49. Illustration de l'algorithme de Powell en deux dimensions. a est le point de départ, i et j les directions fournies.

Intégration

Si les méthodes d’intégration de type Euler restent plébiscitées en modélisation, elles ont un défaut majeur et souvent oublié : il est difficile d’estimer et de maîtriser l’erreur d’intégration introduite. Des procédures plus élaborées existent et sont d’utilisation relativement aisée. Les méthodes de type Richardson (extrapolation de l’intégrale à un nombre de pas infini) ne sont utilisables que sur des fonctions dont la dérivée seconde reste faible et sont mises de côté dans notre cas. On se reporte sur les méthodes robustes de Runge-Kutta.

La méthode de Runge-Kutta propage la fonction intégrale dans des intervalles d’intégration successifs en l’assimilant à son développement de Taylor. En fin d’intervalle, les valeurs intégrales issues de deux développements de Taylor d’ordres différents sont comparées afin d’estimer l’erreur introduite. Les méthodes à pas variables utilisent cette information pour valider le pas d’intégration, ou le rejeter si l’erreur estimée est trop importante, et recommencer avec un pas plus petit.

L’estimation de l’erreur couplée à un pas de taille variable permet en particulier l’intégration de fonctions discontinues avec des résultats fiables en un nombre de pas limité.

La méthode proposée par la bibliothèque commerciale (Press et al. 2007) a été adaptée au pro-blème physique considéré : lorsque le pas d’intégration est trop grand par rapport aux échelles du procédé, les caractéristiques physiques nécessaires à l’intégration peuvent ne plus être calcula-bles au point extrapolé (par exemple, une enthalpie de l’eau inférieure à celle de l’eau à 0°C). L’algorithme rattrape l’erreur, rejette le pas d’intégration et recommence avec un pas plus petit.

Documents relatifs