Utilisation et conception des classes externes
Remarque :
Cette page constitue une introduction au mécanisme des classes externes de Thermoptim, qui permet d'étendre les fonctionnalités du progiciel
Le mécanisme des classes externes
L'environnement graphique de Thermoptim présente le grand intérêt de permettre de construire visuellement des modèles de nombreux systèmes énergétiques, des plus simples comme un réfrigérateur, aux plus complexes comme des centrales électriques à cycle combiné à gazéification intégrée mettant en jeu plusieurs centaines d'éléments.
Non seulement une telle manière de faire simplifie notablement la démarche de modélisation et facilite ultérieurement l'utilisation et la maintenance du modèle, mais surtout elle sécurise sa construction en automatisant l'établissement des couplages entre les différents éléments qui le composent et en garantissant leur cohérence.
Jusqu'à la version 1.4, seuls les composants disponibles dans le noyau de Thermoptim pouvaient être ainsi assemblés, ce qui limitait les possibilités de l'outil, et plusieurs utilisateurs ont exprimé le souhait de pouvoir définir leurs propres éléments ou leurs propres corps.
L'interfaçage de Thermoptim avec des classes (éléments de code Java) externes permet de répondre à cette demande et facilite l'inter-opérabilité du progiciel avec l'extérieur, notamment avec d'autres applications développées sous Java.
Son intérêt est double :
pouvoir réaliser des extensions de Thermoptim à partir du noyau commun, en ajoutant des modules externes reconnus par le progiciel, qui définissent des éléments qui apparaissent automatiquement dans ses écrans de manière transparente pour l'utilisateur. C'est ainsi qu'un utilisateur peut ajouter ses propres corps ou des composants non disponibles dans le noyau ;
pouvoir piloter Thermoptim à partir d'une autre application, soit pour guider un utilisateur (tuteur intelligent), soit pour contrôler l'exécution du code (pilotage, simulation de fonctionnement en régime non-nominal ou régulation, accès aux bibliothèques thermodynamiques).
Sur le plan pratique, ajouter une nouvelle transfo externe est très simple : il suffit de créer une classe spécifique, qui hérite de la classe mère abstraite extThopt.ExtProcess, l'interaction avec Thermoptim étant assurée à deux niveaux :
par des méthodes générales permettant d'effectuer les calculs requis ;
par un JPanel qui est incorporé dans l'écran de la transfo externe. De cette manière, le concepteur de la classe peut créer sa propre interface graphique, qui s'insère ensuite dans l'écran dans Thermoptim
Le mécanisme des classes externes permet aussi de coupler Thermoptim à des serveurs de propriétés thermodynamiques afin de lui donner accès à des modèles de fluides non disponibles dans le noyau, notamment des mélanges de vapeurs.
Utilisation des classes externes
L'utilisation de classes externes déjà développées est très simple : il suffit de rajouter ces classes aux bibliothèques de Thermoptim, en les plaçant dans une archive nommée extUser.zip pour la version 1.5, et extUser2.zip pour les versions 2.5 et supérieures. La seule contrainte est que, comme pour toute bibliothèque Java, la structure de cette archive doit respecter un format bien déterminé .
Ces classes font appel à certaines bibliothèques contenues dans une autre archive, appelée extThopt.zip pour la version 1.5 et extThopt2.zip pour la version 2.5. Il faut aussi s'assurer que la version de cette archive est compatible avec les classes utilisées.
Plus précisément, les classes externes sont réparties entre les deux fichiers extUser2.zip et extThopt2.zip. Le premier contient généralement les classes définies par l'utilisateur, et le second les classes génériques qui assurent la communication avec le noyau de Thermoptim.
Les fichiers extThopt.zip et extThopt2.zip valables pour les différentes versions de Thermoptim sont disponibles depuis cette page.
A partir de la version 2.51, le gestionnaire de classes externes permet d'intégrer des classes externes dans la bibliothèque extUser2.zip. Il est accessible depuis le menu Spécial du simulateur. Sinon, le plus simple est d'utiliser un compacteur standard comme expliqué dans le tome 3 du manuel de référence de Thermoptim.
La modélothèque de Thermoptim met à votre disposition cinq catégories de classes externes :
les corps externes
les transfos externes
les diviseurs externes
les mélangeurs externes
les pilotes
Le tome 3 du manuel de référence de Thermoptim vous expliquera comment utiliser et concevoir des classes externes pour Thermoptim, et la séance Diapason S07_ext vous guidera dans vos premiers pas.
Archives contenant l'ensemble des modèles
Historiquement, les classes externes ont commencé par être développées pour les versions 1.3 à 1.5 de Thermoptim, puis, à partir de 2012, les versions 2.51, 2.61, 2.71 et 2.81 de Thermoptim ont été développées, certains systèmes d'exploitation, comme MacOS, ne permettant plus d'exécuter les versions 1.3 à 1.5.
Quelques années plus tard, à partir d'octobre 2018, un changement dans les bibliothèques Java nous a malheureusement forcés à modifier le code source des classes externes et de Thermoptim, conduisant aux versions 2.52, 2.62, 2.72 et 2.82.
Trois versions des classes externes peuvent donc devoir être utilisées, en fonction de la version de Thermoptim dont vous disposez. Si vous ne la connaissez pas, elle est indiquée dans l'écran qui s'affiche quand vous cliquez sur la ligne "A propos de Thermoptim" du menu "Aide" du simulateur.
La nécessité de développer les classes externes correspondant aux versions 2.52 et suivantes a eu pour conséquence de multiplier les versions des fichiers extUser2.zip et extThopt2.zip correspondant à chaque modèle.
Pour simplifier les choses, nous avons rassemblé tous les modèles disponibles (à l'exception de ceux nécessitant des bibliothèques particulières comme CTPLib ou IF97) dans les fichiers extUser2.zip des archives ci-dessous, pour les quatre versions 2.51 et 2.61, 2.52 et 2.62, 2.71 et 2.81, ainsi que 2.72 et 2.82. Les fichiers proposés en téléchargement pour chaque modèle vous fourniront en complément de la documentation et des exemples.
Comme chaque fichier extUser2.zip doit être utilisé avec la version correspondante du fichier extThopt2.zip, les liens de téléchargement ci-dessous donnent chacun accès à une archive contenant les deux fichiers.
Téléchargez l'archive correspondant à vos besoins, extrayez les deux fichiers extUser2.zip et extThopt2.zip, et placez-les dans le répertoire d'installation de Thermoptim, après avoir pris la précaution de créer une sauvegarde du répertoire initial pour pouvoir y revenir en cas de difficulté.
Création de nouvelles classes externes
Sans être très difficile, la création de nouvelles classes externes demande un minimum de compétences en programmation Java. Les exemples présentés dans le tome 3 du manuel de référence vous permettront de vous initier à cet exercice, et un environnement de développement des classes externes vous est proposé ci-dessous.
Des explications spécifiques sur l'utilisation des classes externes pour calculer les propriétés des mélanges humides sont aussi disponibles.
Environnement de développement des classes externes (versions 2.5 et au-delà)
Pour mettre au point les classes externes, si vous ne disposez pas déjà d'un environnement de développement Java, vous pouvez utiliser un outil disponible en open source, appelé Eclipse, téléchargeable gratuitement sur Internet.
Eclipse vous permet d'écrire vos classes en langage Java, de les compiler et de tester directement leur intégration dans Thermoptim.
Une page de ce portail vous expliquant comment procéder pour installer et configurer cet environnement a été préparée à votre attention.
Bien évidemment, vous pouvez aussi configurer Eclipse pour développer des classes externes pour la version 1.5 de Thermoptim, mais nous vous recommandons de travailler avec les versions 2.5 et suivantes.
Création de pilotes externes
Le dimensionnement technologique des composants nécessite d'affiner les modèles phénoménologiques utilisés dans le noyau de Thermoptim, en les complétant de manière appropriée.
Les implémentations de ces nouvelles fonctionnalités de Thermoptim sont pour l'essentiel effectuées sous forme de classes externes, ce qui offre une grande latitude aux utilisateurs pour les personnaliser.
La version classique phénoménologique de Thermoptim reste inchangée : elle est complétée par une couche logicielle permettant de prendre en compte les modèles de dimensionnement technologique et de non-nominal.
Les classes de dimensionnement technologique (versions 2.7 et 2.8) complètent celles du noyau en permettant la prise en compte des équations propres aux choix technologiques effectués, comme par exemple le calcul du coefficient d'échange thermique U d'un échangeur de chaleur, ou bien le débit et le rendement isentropique d'un compresseur.
Le pilote assure quant à lui la coordination systémique des calculs relatifs aux différents composants qui entrent en jeu. Il recherche un ensemble de variables de couplage cohérent avec le problème physique et technologique posé, et permet ainsi de modifier le paramétrage du projet Thermoptim.
Vous trouverez l'ensemble des explications relatives à ces nouveaux développements dans le tome 4 du manuel de référence du progiciel , et des illustrations autour d'exemples concrets dans la rubrique Guides méthodologiques.