Laboratoire Virtuel de Systèmes Energétiques Solaires
Développement d'un outil de simulation thermique
SOMMAIRE
INTRODUCTION
1. Description du travail proposé.
1.1. Contexte du sujet.
1.2. Travail proposé.
2. Description du travail réalisé.
2.1. Etude de l’existant.
2.2. Amélioration du modèle objet matériaux du Web services.
2.3. Conception d’une librairie d’accès aux Web Services.
2.4. Développement du logiciel de simulation.
2.5. Implémentation de modules de calcul.
2.6. Déploiement de l’application.
2.7. Etude de l’accès au Web services sous IRIX.
2.8. Planning du stage.
2.9. Difficultés rencontrées.
3. Perpectives et objectifs de l’outil.
CONCLUSION
BIBLIOGRAPHIE
ANNEXES
1. Présentation de l’entreprise.
1.1. Généralités.
1.2. Les métiers du CSTB.
1.3. Les chiffres du CSTB.
1.4. Établissements du CSTB.
1.5. L'établissement de Sophia-Antipolis.
Figure 1 : Schéma de fonctionnement général de l’outil.
Figure 2 : Schéma UML du modèle objet matériaux du Web services.
Figure 3 : Capture d’écran de l’application.
Figure 4 : Capture d’écran des listes déroulante dans les grilles.
Figure 5 : Fenêtre pour le choix d’un matériau.
Figure 6 : Menu pour la manipulation de ligne dans la grille.
Figure 7 : Fenêtre d’information sur le projet bâtiment.
Figure 8 : Boite de dialogue pour le choix des modules.
Figure 9 : Installation de l’application.
Figure 10 : Programme de test sous IRIX.
Figure 11 : Planning du stage.
Figure 12 : Photo de la salle d’immersive.
Figure 13 : Capture d’écran d’un résultat d’un test.
Figure 14: Répartition du chiffre d'affaire en pourcentage, par branche d'activité.
Figure 15: Disposition géographique des centres du CSTB.
2. Description du travail réalisé
Mon stage s’est déroulé pendant 5 mois et s’est divisé en plusieurs tâches. Dans un premier temps, j’ai étudié le travail existant. Puis, je me suis occupé de l’amélioration de la structure de données des matériaux, suivit de la conception de la librairie d’accès au Web services et du développement de l’application. Ensuite, j’ai implémenté les modules de calcul. Et pour terminer, j’ai fait une étude et un programme de test sur les possibilités d’accès au Web services en C++ sous IRIX.
2.1. Etude de l’existant
La première étape du stage a été d’étudier le travail existant. En effet, avant mon arrivé, un projet similaire avait été développé dans une société externe. Par conséquent, je disposais, comme exemple, d’une application écrite dans le langage C++, d’une base de données matériaux et d’un serveur Web Services. Mais cette application souffrait de nombreux problèmes. Tout d’abord l’application avait une très mauvaise interface homme machine, ne facilitant pas du tout, la saisie de bâtiments. De plus, le module de calcul été écrit en C++. Ce qui ne permettait pas à l’utilisateur qui souhaitait modifier ce module de le faire aisément. Le module de calcul était aussi intégré à l’application et non sous forme de librairie. Une modification ou tout simplement l’insertion d’un module entraînait obligatoire la modification et la recompilation de toute l’application. Côté base de donnée, l’application devait gérer 2 bases de données : une base de donnée matériaux et une base de données composants. La base de donnée matériaux était créée mais celle composant était insérée dans l’application, n’offrant pas ainsi le partage de ces données aux autres utilisateurs de l’application. De plus, le serveur Web services ne gérait pas du tout la hiérarchie infinie des objets c’est à dire que nous pouvions stocker les matériaux qu’au maximum dans deux répertoires ce qui contraignait beaucoup surtout vu le nombre de matériaux.
2.2. Amélioration du modèle objet matériaux du Web services
Pour permettre d’unifier les bases de données matériaux, un Web services fait le lien entre les différentes bases de données en les transformant sous forme de modèle objet. Ainsi, une application peut accéder à toutes les bases de données de la même façon sans prendre en charge toutes les particularités de chaque base de données.
Lors d’un précédent projet un modèle objet avait été mit en place mais celui souffrait de 2 principaux problèmes :
- Le premier est qu’il n’acceptait de classer les matériaux que sur 2 niveaux. La base de données s’étant agrandie, nous avions besoin de plus de 2 niveaux pour classer les matériaux. Permettant ainsi à un utilisateur de retrouver plus facilement un matériau.
- La seconde est que le modèle objet ne prenait pas en compte qu’un matériau pouvait être composé de plusieurs autres matériaux. Dans le modèle qui existait, les matériaux étaient seulement décrits par des caractéristiques.
Figure 2: Schéma UML du modèle objet matériaux du Web services
Pour résoudre ces différents problèmes, le modèle objet ci-dessus a été implémenté. Le premier problème sur la hiérarchie a été corrigé en créant un attribut SubFamily dans chaque Family. Ce qui permet d’avoir une infinité de niveaux. Pour le second problème concernant les matériaux composé, a été corrigé en créant une classe abstrait AbstractMaterial d’où les Materials et les CompositeMaterial dérive. Cette solution permet de rajouter d’autre type de matériau dans le futur en dérivant le nouveau type de la classe abstrait.
2.3. Conception d’une librairie d’accès aux Web Services
Le but de la conception d’une librairie d’accès aux Web services est de permettre un accès simplifié et unifié aux bases de données matériaux par l’intermédiaire du Web services, de facilité la maintenance en cas de modification sur le serveur, et d’être utilisé par d’autres programmes pour éviter toute réécriture du code.
Comme nous l’avons vu ci-dessus, les Web services convertis les matériaux des bases de données sous forme de table en un modelé objet. Bien sur, la librairie utilise le même modèle objet que celui du serveur sinon il ne pourrait pas communiquer ensemble. Mais un problème se posait, l’utilisation de la librairie était liée à l’accessibilité du serveur Web service. Certain utilisateur avait le désir de pouvoir travailler chez eux ou tout simplement en cas de problème réseau ou de problèmes sur les serveurs, les différentes applications ne pouvaient fonctionner. Pour éviter ces problèmes, nous avons pris l’option de sauvegarder les bases de données en locale lors du premier chargement ou de mise à jour des bases de données. Ce qui permet, en cas de problème ou tout simplement si aucune donnée n’a été mise à jour, de récupérer la base en locale. Cette solution a été possible car les bases de données ne dépassent pas la taille de 2Mo.
Concernant le modèle objet, celui-ci est sensiblement différent de celui du serveur Web services. Pour faciliter la manipulation des bases de données, un certain nombre de fonctions et d’attributs ont été ajoutés. Comme par exemple, une liste de tous les matériaux est disponible, des fonctions de recherche de famille et de matériaux ont été implémentés….
L’utilisation de la librairie est très simple. L’utilisateur crée un objet MaterailsTree puis demande le chargement d’une base de données. La librairie vérifie si la base de donnée a été mise à jour par rapport à celle en local. Si c’est le cas ou si la base en local n’existe pas, la base de donnée est chargée par l’intermédiaire du Web services. En cas d’erreur, la base de donnée locale est chargée. La plus récente base de données utilisée est alors disponible à l’application.
2.4. Développement du logiciel de simulation
Le développement même du logiciel de simulation est une grosse partie d’IHM (Interface Homme Machine). L’application doit permettre à un utilisateur de créer un bâtiment le plus facilement possible. Le bâtiment est composé de parois. Les parois sont décrites en fonction de leur type (toiture, mur extérieur, plancher, …), de leur surface et de plusieurs autres paramètres. Chaque paroi peut être composée de plusieurs couches de matériaux. Chaque couche est décrite en fonction du matériau et de l’épaisseur de ce dernier.
Pour saisir facilement, les différentes parois et les couches de ces parois. L’application a été divisée en deux grilles. Celle de gauche affichant les parois et celle de droite affichant les couches de matériaux contenus dans la paroi sélectionnnée. Lorsque l’utilisateur sélectionne une paroi dans la grille de gauche, la grille de droite est mise à jour avec les couches de matériaux contenu dans la paroi sélectionnée.
Figure 3: Capture d’écran de l’application
La saisie des différents types de paroi et des matériaux est aidé par une liste déroulante. Par exemple, dès que l’utilisateur clique sur le type de paroi, la liste des types de paroi est affichée. L’utilisateur choisit simplement le type de paroi qu’il veut. En ce qui concerne les matériaux, il était impossible de remplir la liste avec tous les matériaux existant car l’utilisateur ne s’y retrouvera pas. La liste déroulante affiche alors seulement les matériaux déjà utilisés dans le bâtiment courant.
Figure 4: Capture d’écran des listes déroulante dans les grilles
Pour ajouter des matériaux, un champ «ajouter» se trouve à la fin de la liste. Lorsque l’utilisateur clique sur ajouter, une fenêtre s’ouvre. Dans celle-ci, les différentes bases de données de matériaux chargées sont insérées dans un arbre. Lorsque l’utilisateur clique sur un matériau ses caractéristiques sont affichées à droite. Après avoir choisi le matériau et avoir cliqué sur ajouter, le matériau est ajouté à la liste déroulante qui est sélectionné avec ce matériau. Le choix des types de parois et des matériaux se font donc très facilement.
Figure 5: Fenêtre pour le choix d’un matériau
La liste déroulante existe dans les composants graphiques de Visual .NET mais ceux-ci ne peuvent être créer dans une grille. Seul les textes et les cases à cocher sont actuellement créés dans les champs des grilles. Il a donc fallut dévelloper un nouveau composant de liste déroulante pour qu’il puisse être intégrer dans une grille.
De plus, les grilles par défault, ne supporte pas l’insertion, l’ajout et le déplacement de ligne aléatoirement. Ses fonctionnalités ont du être ajouter en modifiant le comportement des grilles. Elles sont accessibles dans l’application grâce à un menu sur chaque grille ou avec des touches de raccourci.
Figure 6: Menu pour la manipulation de ligne dans la grille
Pour chaque fichier bâtiment, l’application donne la possiblité de rentrer plusieurs informations. L’utilisateur peut rentrer le nom du projet ainsi qu’une description. De plus, il a la possiblité de charger des images comme un plan pour illustrer le bâtiment du projet.
Figure 7: Fenêtre d’information sur le projet bâtiment
Enfin, lorsque l’utilisateur a finit de décrire tout son bâtiment, il peut lancer l’un des modules de calcul créé. Pour permettre le choix des modules de calcul, une fenêtre affiche la liste de tous les modules de calcul disponible dans le répertoire courant de l’application. Après le choix du module et le lancement du calcul, l’application lance la fonction de calcul du module en passant en paramètre la description du bâtiment saisie. Une fois le calcul terminé, le module rend la main à l’application.
Figure 8: Boite de dialogue pour le choix des modules
2.5. Implémentation de modules de calcul
L’intérêt de créer une application qui permet de décrire un bâtiment est de pourvoir passer cette description dans différents modules de calcul. Ces modules de calcul ont pour but de transformer la description du bâtiment sous forme mathématique, dans notre cas en matrices. Ces matrices représentent le comportement thermique du bâtiment.
Dans le cahier des charges, les différents modules de calcul devaient pouvoir être développés sans devoir recompiler toute l’application et ainsi pouvoir en rajouter ou en effacer facilement. Le choix de mettre les modules sous la forme de librairie dynamique DLL (Dynamic Librairy Link) s’imposait. La seconde contrainte était que les utilisateurs connaissant Visual Basic devait pouvoir modifier ou créer leurs modules de calcul. Ainsi, nous avons pris le choix de développer ces modules en Visual Basic.
Pour charger et lancer les différents modules de calcul, l’application doit pouvoir les reconnaître. Pour cela, les modules doivent être copiés dans le même répertoire que l’application et surtout ils doivent implémenter une interface décrire dans l’application. Une fois les différentes fonctions de l’interface implémentée. L’application peut reconnaître la librairie comme étant un module de calcul, et peut lancer la fonction de calcul de ce module. Lors du lancement du calcul, l’application passe en paramètre la description du bâtiment.
2.6. Déploiement de l’application.
Pour permettre une installation facile de l’application et des modules associés, Microsoft a intégré à son environnement de développement un installateur. En quelques cliques de souris, un fichier d’installation a été crée. Néanmoins pour pouvoir utiliser les applications. NET, le framework. NET doit être installé sur la machine. En effet, les applications .NET comme JAVA, sont interprétées. Elles ont donc besoin que le framework .NET soit installé préablement sur la machine. Pour faciliter l’installation sur des ordinateurs ne possédant pas Internet, le framework .NET a été intégré dans l’installation. C’est à dire que lors de l’installation, le setup teste si le framework .NET est installé. Si ce n’est pas le cas, il l’installe puis l’installation de l’application continue. Pour effectuer ce changement, un fichier d’installation spéciale a été développé.
Figure 9: Installation de l’application
2.7. Etude de l’accès au Web services sous IRIX
Vers la fin du mois août, le développement de l’application, de la librairie et des modules de calcul étaient terminé. L’ensemble de l’application était testé par mes encadreurs et moi-même. En parallèle avec cette phase de test et de correction de bugs mineurs, on m’a demandé d’étudier les possibilités d’accès au Web services avec le langage C++ sous IRIX, dans l’hypothèse qu’une application soit développer sous ce système. En effet, au C.S.T.B., certain serveur de calcul fonctionne sous le système d’exploitation IRIX et pourrait avoir besoin d’accéder aux bases de données matériaux par l’intermédiaire du Web services.
Dans un premier temps, j’ai recherché une librairie gérant les Web services sous IRIX. Après plusieurs petits tests, une seule retiendra mon attention : gsoap. Ensuite, il me fallait faire un petit programme de test pour afficher sous forme d’arbre la liste des matériaux. J’ai donc choisit de créer une interface graphique en QT de la société Troll Tech. La librairie QT est un ensemble d’outil pour créer des interfaces graphiques sous différents systèmes d’exploitation et d’outils de développement.
Figure 10: Programme de test sous IRIX
Après, l’implémentation du programme avec QT et gsoap. L’appel des fonctions pour récupérer les bases de données de matériaux ne fonctionnait pas. Après de nombreuses recherches sur Internet et de test, il s’est avéré que Microsoft ne supportait pas entièrement la norme XML (eXtensible Markup Language). En effet, les échanges pendant un appel de Web services se font en XML. Microsoft ne supportant pas toute la norme, j’ai du modifié la librairie gsoap pour que le formatage XML puisse être bien interprété par le serveur Microsoft. Enfin, après ces modifiations, le programme de test fonctionnait parfaitement. L’accès à un web services était donc possible sous IRIX avec le langage C++. J’ai pu aussi fournir un programme de test et une petite documentation explicative sur toute l’installation et les modifications.
2.8. Planning du stage
Mon stage s’est déroulé sur une période de 5 mois. Il a était divisé en plusieurs étages comme le montre le graphique ci-dessous:
Figure 11: Planning du stage
La première étape (en vert) a été d’étudier l’existant et aussi d’installer et se familiariser avec les outils de développement. Ensuite (en vert), j’ai amélioré le modèle objet du Web Services pour permettre de prendre en compte plusieurs nouvelles contraintes et de faciliter sa manipulation. Après (en bleu), j’ai développé la librairie d’accès au Web Services permettant une manipulation aisée des bases de données matériaux. Après cela (en jaune), j’ai implémenté la partie IHM de l’application de simulation. Pour terminer le simulateur (en orange), l’implémentation de différents modules de calcul a été faite. Enfin (en rouge), comme j’avais terminé, on m’a demandé d’étudié l’accès au Web Services avec le langage C++ sous IRIX.
2.9. Difficultés rencontrées
Globalement, je n’ai pas rencontré de grosses difficultés au cours de mon stage. Aucun changement important du cahier des charges n’a été effectué. Mes encadreurs savaient clairement ce qu’ils voulaient. Malgré quelques changements ou améliorations au cours du stage, ces changements n’ont pas très gênant car ils ont pu être intégré facilement dans les différents programmes. Principalement, les difficultés ont été rencontrées du coté de la documentation. Effet, lors de la programmation de l’application et plus précisément de l’interface homme machine, je devais créer de nouveaux composants graphiques comme la sélection d’un élément dans la grille (Combo Box dans la dataGrid). Donc par manque de documentation, j’ai du tester de nombreuse fonction pour comprendre leurs fonctionnements.
Du coté des relations dans l’entreprise, je n’ai rien à dire. L’ambiance était bonne. J’ai été intégré tout de suite au sein de la division.
Travail proposé Perpectives et objectifs