Implementation numérique
La description de phénomènes physiques par l’intermédiaire d’un outiî numérique passe par deux étapes : la modélisation et la simulation. Nous allons voir comment doivent être traitées ces deux parties pour optimiser un code de calcul. L’évolution dans le domaine numérique ces dernières années a surtout été marquée par les progrès en capacité de mémoire de machine et en vitesse de calcul. Toutefois, dans le même temps, les chercheurs se sont attachés à faire progresser les modèles décrivant les phénomènes physiques, par exemple la modélisation fine de la turbulence. De plus, la progression dans l’élaboration des algorithmes facilite l’écriture de ces modèles. Cette façon de procéder qui s’est maintenant généralisée aboutit à des outils ayant de nombreux points communs au niveau théorique. L’association de ces différents outils per met de construire des outils de simulation plus puissants. Cette démarche pose cependant plusieurs difficultés qui vont maintenant être analysées. Faciliter le chaînage de logiciels permet de profiter des compétences de leurs différents concepteurs sans qu’il y ait nécessairement une personne spécialisée dans l’ensemble des domaines concernés. Pour associer des codes de calcul de nature différente, il y a plusieurs solutions : Soit utiliser des fichiers intermédiaires si les entrées-sorties sont bien définies, soit passer par des bases de données, des envois de messages, des fichiers tampon…. L’inconvénient est que le code obtenu par l’association de ces logiciels est disparate et ralenti par le temps de lecture-écriture des fichiers intermédiaires. Par ailleurs, il est souvent laborieux de modifier ou améliorer un logiciel existant et c’est encore plus vrai lorsqu’il s’agit de l’association de plusieurs logiciels.
Assemblage et modification de modèles
Pour éviter ce temps perdu, des réflexions ont été menées visant non plus à développer des langages de programmation simples à écrire, facile à relire et bien structurés mais plutôt pour concevoir un environnement qui, quel que soit le langage utilisé, cumulera les propriétés de réutilisabilité et de facilité de maintenance grâce à sa modularité. Ce sont ces concepts, entre autres, que l’on place sous le terme de programmation orientée objet. Parmi les nombreux environnements manipulant ce type de concept, plusieurs sont particulièment adaptés au cas de la thermique du bâtiment notamment CLIM2000 [BRCG93], MOTOR-2 [Ebe93], ZOOM [BJP+89], ALLAN [Fra92] ou encore IDA [Sah91]. C’est dans cet état d’esprit qu’a été écrit le logiciel SPARK [And87], en cours de dé veloppement au Lawrence National Berkeley Laboratory en Californie, C’est un outil qui, bien qu’écrit par des spécialistes de thermique, est très général et adaptable à tous types de domaines. Le principe est de construire une bibliothèque de modèles classés selon le domaine d’application et facilement adaptables entre eux.
Il a donc semblé intéressant d’implémenter le modèle zonal dans cet environnement à cause de la souplesse qu’il offre au niveau de l’implémentation ce qui permet de tester de nombreuses configurations. D’autre part, il sera possible soit de l’intégrer dans une simula tion plus générale, soit de le coupler avec d’autres modèles écrits dans cet environnement. La description de la conception d’une simulation présentée au début du chapitre, montre que s’il est possible d’obtenir une description claire et structurée de l’outil informatique jusqu’à la phase algorithmique, l’écriture du code est davantage fonction de la personnalité du programmeur. Lui-même pourra, au bout de quelques mois, éprouver des difficultés à « se relire », aussi documenté et précis que soit son code. Cet état de fait est lié à la complexité des phénomènes décrits. Le remède (suggéré par l’illustre Descartes!) consiste à décomposer un système en autant de sous-systèmes plus simples et, si nécessaire, recommencer la démarche jusqu’à aboutir à de petits systèmes élémentaires. C’est là un des points clés des environnements orientés objet qui permet de transformer un modèle complexe en un système hiérarchisé de modèles élémentaires.