29
OSMONT Raphaël IFIPS INGE 3 Informatique 2006 - 2007 MEMOIRE INDUSTRIEL VERSION N o 1.4 . DU 11 juin 2007 Interface de contrôle du code RAMSES Société d’accueil : CEA Dates du stage : du 05/02/2007 au 30/06/2007 Tuteur de l’entreprise : Valérie GAUTARD Tuteur IFIPS : Hélène GAGLIARDI

memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

OSMONT Raphaël

IFIPS INGE 3 Informatique

2006 - 2007

MEMOIRE INDUSTRIEL

VERSION No 1.4.DU 11 juin 2007

Interface de contrôle du code RAMSES

Société d’accueil : CEA Dates du stage : du 05/02/2007 au 30/06/2007 Tuteur de l’entreprise : Valérie GAUTARD Tuteur IFIPS : Hélène GAGLIARDI

Page 2: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 1 11/06/07

Remerciements

A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du département DAPNIA du CEA pour leur accueil durant mon stage.

Plus particulièrement, je remercie M. Michel Mur, chef du service SEDI, et M.

Shebli Anvar, chef du laboratoire LILAS, pour m’avoir offert l'opportunité de ce stage. Je souhaite remercier Mme Valérie Gautard, ma tutrice, pour son accueil, son

encadrement et ses conseils tout au long de mon stage. J’associe mes remerciements également aux membres de l’équipe du LILAS, Bruno

Thooris et Daniel Pomarède, pour leur accueil, leur présence et leur aide précieuse. Enfin, je remercie Mme Hélène Gagliardi, ma tutrice IFIPS, pour son encadrement

et son aide.

Page 3: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 2 11/06/07

Sommaire

Introduction ..................................................................................................... 3

Présentation du CEA ...................................................................................... 4 1) Domaines d’activités ...............................................................................................4

a) L’énergie ..............................................................................................................4 b) Les technologies pour l'information et la santé ...................................................5 c) La défense et la sécurité......................................................................................5 d) La recherche fondamentale au service des programmes du CEA .....................6

2) Le centre de Saclay.................................................................................................7 a) Le DAPNIA...........................................................................................................8 b) Le SEDI................................................................................................................8 c) Le LILAS ..............................................................................................................9

Présentation du stage ................................................................................... 10 1) Contexte ................................................................................................................10 2) Objectif ..................................................................................................................10 3) Situation initiale .....................................................................................................11 4) Environnement et outils de développement..........................................................11

Mission réalisée ............................................................................................ 12 1) Apprentissage d'IDL et de RAMSES.....................................................................12 2) Analyse des besoins .............................................................................................12 3) Conception ............................................................................................................12

a) Documentation...................................................................................................12 b) Fonctionnement de l’application ........................................................................13

4) Développement des modules de l'application.......................................................14 a) Module de gestion des paramètres ...................................................................14 b) Module de contrôle de l'exécution .....................................................................17 c) Module de contrôle du résultat ..........................................................................18

5) Tests......................................................................................................................18

Difficultés rencontrées .................................................................................. 19

Bilan .............................................................................................................. 20

Table des illustrations ................................................................................... 21

Glossaire....................................................................................................... 22

Annexes ........................................................................................................ 23 1) Annexe 1 ...............................................................................................................23 2) Annexe 2 ...............................................................................................................24 3) Annexe 3 ...............................................................................................................25 4) Annexe 4 ...............................................................................................................26 5) Annexe 5 ...............................................................................................................27 6) Annexe 6 ...............................................................................................................28

Page 4: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 3 11/06/07

Introduction Dans le cadre de ma 5ème année à l’IFIPS (Institut de Formation d’Ingénieurs de

l’université Paris-Sud) dans le département informatique, j’ai réalisé un stage d’une durée de 5 mois.

J'ai effectué ce stage au Commissariat à l'Energie Atomique (CEA), sur le centre de

Saclay. Plus précisément, j'ai été accueilli au sein du DAPNIA (Département d’Astrophysique, de physique des Particules, de physique Nucléaire et de l’Instrumentation Associée) par le laboratoire LILAS (Laboratoire d'Ingénierie Logiciel pour les Applications Scientifiques). Ce laboratoire conçoit des logiciels informatiques pour des physiciens. Il est impliqué notamment dans le projet COAST (COmputational ASTrophysics), qui réunit le travail d'ingénieurs et d'astrophysiciens.

Le code RAMSES, code de simulation numérique de la formation de grandes

structures dans l'univers, est développé dans le cadre de ce projet. Mon stage s'attache à la création d'une application conviviale permettant de contrôler les paramètres et l'exécution de ce code RAMSES.

Je vous présenterai donc dans un premier temps le CEA, et en particulier le centre de

Saclay et le DAPNIA. Puis, dans un second temps je vous décrirai mon stage, le cadre dans lequel il s'inscrit, ainsi que son environnement technique. A la suite de cela, je vous exposerai le travail que j'ai réalisé au cours des différentes étapes de mon stage.

Page 5: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 4 11/06/07

Présentation du CEA Acteur majeur en matière de recherche, de développement et d’innovation, le Commissariat à l'Energie Atomique (CEA) intervient dans trois grands domaines : l’énergie, les technologies pour l’information et la santé, la défense et la sécurité ; en s’appuyant sur une recherche fondamentale d’excellence.

Fort de ses 15 000 chercheurs et collaborateurs, aux compétences internationalement reconnues, le CEA constitue une force d’expertise et de proposition pour les pouvoirs publics. Implanté sur 9 centres répartis dans toute la France, le CEA bénéficie d’une forte insertion régionale et de solides partenariats avec les autres organismes de recherche.

Voyons plus en détails les domaines d'activités du CEA, puis le centre de Saclay dans lequel j'ai évolué.

1) Domaines d’activités

a) L’énergie

Disposer de formes d’énergie compétitives, sûres et propres, en particulier non émettrices de gaz à effet de serre, tel est l’objectif que poursuit le CEA à travers ses recherches et développements sur l’énergie.

Le CEA apporte un soutien permanent aux industriels nucléaires en France en cherchant à optimiser le parc actuel des réacteurs nucléaires et à optimiser le cycle du combustible. En aval, il met au point des solutions techniques pour la gestion des déchets radioactifs.

Illustration n°1 : Réacteur de recherche Osiris

À l’échelle internationale, le CEA participe aux programmes de recherche sur les réacteurs et combustibles nucléaires du futur qui assureront une production durable à la fois plus sûre et générant moins de déchets. Dans ce cadre, il a en charge la réalisation du prototype d’un réacteur de 4ème génération. Le CEA est responsable de l’assainissement et du démantèlement de ses installations nucléaires. Il conduit enfin des programmes sur l’impact sanitaire et environnemental de l’énergie nucléaire.

Acteur incontournable en matière de nouvelles technologies de l’énergie, le CEA est présent dans les recherches sur l’hydrogène et la pile à combustible, le solaire photovoltaïque et thermique.

Par ailleurs, il mène avec l’IFP (Institut Français du Pétrole) des réflexions préliminaires sur la fabrication de biocarburants à partir de biomasse ligno-cellulosique. Grâce au travail de ses équipes, il contribue aux études sur la maîtrise de l’énergie.

Page 6: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 5 11/06/07

b) Les technologies pour l'information et la santé

Acteur moteur de l’innovation industrielle, le CEA dispose d’une recherche technologique de haut niveau dans le domaine des micro et nanotechnologies, pour notamment les télécommunications et les objets communicants (téléphones mobiles, réseaux sans fils, cartes à puce…).

Illustration n°2 : Salle blanche

Partenaire de nombreux industriels, le CEA développe les microsystèmes (capteurs, condensateurs, commutateurs…) qui enrichiront nos objets quotidiens de nouvelles fonctions.

Le CEA exerce ses compétences dans le domaine des technologies logicielles : systèmes embarqués et interactifs, capteurs et traitement du signal, dont les applications concernent les industries nucléaire, automobile, aéronautique, de défense et de santé. Dans le domaine des systèmes interactifs, le CEA développe des interfaces hommes-machines s’appuyant sur la vision 3D, la robotique, le traitement des informations et la mécanique, pour les interventions dans le secteur nucléaire et médical.

Depuis sa création, le CEA s’attache également à faire bénéficier le secteur de la santé des avancées fondées sur les technologies issues du nucléaire. Il fournit des concepts et des outils innovants pour l’ouverture de nouvelles voies diagnostiques ou thérapeutiques, indispensables aux progrès de notre compréhension de la complexité du vivant (biopuces, génomiques fonctionnelle et structurale, ingénierie des biomolécules, nouvelles méthodologies d’imagerie, neuro-imagerie cérébrale, détection et transmission d’informations…).

c) La défense et la sécurité

Le CEA conçoit, fabrique, maintient en condition

opérationnelle puis démantèle les têtes nucléaires de la force de dissuasion française. Il est responsable de la conception, de la réalisation et de l’entretien des réacteurs qui équipent les bâtiments à propulsion nucléaire de la Marine nationale (sous-marins et porte-avions).

Depuis l’arrêt définitif des essais nucléaires, la garantie sur le long terme de la fiabilité et de la sûreté des armes repose sur la simulation. À cette fin, le CEA développe de nouveaux modèles physiques et s’équipe de supercalculateurs (Tera) et de moyens expérimentaux de validation (machine radiographique Airix, laser Mégajoule).

Illustration n°3 : Sous-marin nucléaire Le

Téméraire

Page 7: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 6 11/06/07

Le CEA contribue, pour les instances nationales et internationales, à la surveillance du respect des traités internationaux tels que le Traité d’interdiction complète des essais nucléaires (Tice).

Il participe à la lutte contre la prolifération des armes nucléaires.

En matière de lutte contre le terrorisme, le CEA conduit le programme interministériel de recherche dans les domaines nucléaire, radiologique, biologique et chimique, pour le compte du Secrétariat général de la Défense nationale (SGDN).

d) La recherche fondamentale au service des programmes du CEA

En amont des recherches et développements sur les énergies, le CEA conduit différents programmes dans les domaines des sciences du climat et de l’environnement, des sciences de la matière – de la physique des particules à l’astrophysique – de la chimie et des interactions rayonnement/matière. Ses recherches concernent également les sciences du vivant, notamment la radiobiologie et la toxicologie nucléaire.

Illustration n°4 : Coupe du

réacteur ITER

La fusion thermonucléaire, dont la maîtrise pourrait permettre à l’avenir de disposer d’une source durable d’énergie, est également au cœur de ses recherches. Le CEA est ainsi fortement impliqué dans le projet international du réacteur expérimental ITER qui sera implanté à Cadarache.

L’un des points forts du CEA est d’avoir une recherche appliquée qui se nourrit de la recherche fondamentale, notamment en nanophysique et ingénierie moléculaire, ainsi qu’en sciences des matériaux (du nano au macro). Le CEA développe une expertise en électronique moléculaire et quantique.

Page 8: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 7 11/06/07

2) Le centre de Saclay

Le CEA est implanté sur 9 centres dont celui de Saclay, sur lequel j'ai évolué. Plus précisément, mon stage s'est déroulé au sein du département du DAPNIA, dans le service SEDI, dans le laboratoire LILAS (cf Illustration n°5). Décrivons tout cela à présent.

Illustration n°5 : Organigramme partiel du CEA

Le centre CEA de Saclay, implanté sur le plateau de Saclay au sud de l'Ile de France, est un des 9 centres de recherche du CEA (cf Illustration n°6). Il constitue un centre de recherche et d'innovations de premier plan au niveau européen. Plus de 5000 personnes y travaillent. Il joue un rôle majeur dans le développement économique régional. Pluridisciplinaire, il exerce ses activités dans des domaines tels que l'énergie nucléaire, les sciences du vivant, les sciences de la matière, le climat et l'environnement, la recherche technologique et l'enseignement.

Illustration n°6 : Le centre du CEA de Saclay (vue du ciel)

Ce centre comprend plusieurs départements dont celui du DAPNIA.

CEA

DEN DSM DRT DAM

DRECAM DRFC DRFMC DAPNIA LSCE GANIL SPhT

SPP SPhN SIS SACM SAp SENAC SEDI

Laboratoire de développement de Systèmes Electroniques et Optoélectroniques Laboratoire de physique des Détecteurs et d’Electronique Frontale Laboratoire d’Informatique Système Laboratoire d’Intégration des Détecteurs Laboratoire Ingénierie Logicielle pour les Applications Scientifiques L’antenne Cern Traitement des données, Acquisition et Processus Spécialisés

DSV

Page 9: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 8 11/06/07

a) Le DAPNIA

Le DAPNIA, laboratoire de recherches sur les lois fondamentales de l’univers, est un département de recherches fondamentales appartenant à la Direction des Sciences de la Matière du CEA. Ses activités scientifiques relèvent de l’astrophysique, de la physique nucléaire, de la physique des particules et l'instrumentation associée. Dans ce champ de recherches très vaste, il doit évidemment choisir des objectifs ambitieux favorisés par les atouts spécifiques que sont ses compétences scientifiques et techniques, la concentration de moyens, son insertion au CEA, son organisation, sa culture de la gestion par projet, et enfin son histoire propre.

Le DAPNIA a concentré son activité dans les neuf thèmes majeurs suivants :

− la matière nucléaire dans ses états extrêmes,

− la structuration de l'univers,

− le contenu énergétique de l'univers,

− l'expertise du DAPNIA au service de la société,

− les constituants ultimes de la matière,

− l'innovation pour les systèmes de détection,

− la structure et l'évolution des astres,

− la physique pour l'énergie nucléaire,

− les aimants et les accélérateurs.

Ces neuf thèmes sont répartis dans six services dont le SEDI.

b) Le SEDI

L’activité des ingénieurs, des chercheurs et des techniciens regroupés au sein du

SEDI porte sur le développement des systèmes de détection et de traitement des données pour les expériences de physique du département.

Les performances des instruments et des systèmes informatiques sont depuis longtemps une composante essentielle de la qualité des expériences de physique. Celles ci conduisent à des exigences croissantes en termes de rapidité, de précision, de fiabilité, et de flux de données. Le SEDI dispose de compétences de pointe dans plusieurs domaines scientifiques et techniques comme la physique des détecteurs, l’électronique frontale analogique, l’électronique de filtrage et de déclenchement, l’informatique temps réel et le génie logiciel. Ces spécialités se déploient non seulement dans le cadre des programmes de physique mais aussi autour de programmes de R&D spécifiques. Les actions de valorisation en direction d’autres unités du CEA ou d’industriels témoignent de la capacité du service à apporter des solutions innovantes dans ces domaines.

Comme nous pouvons le voir sur l'organigramme précédent (cf Illustration n°5), le SEDI est composé de plusieurs laboratoires dont le LILAS.

Page 10: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 9 11/06/07

c) Le LILAS

Au sein du SEDI, le Laboratoire Ingénierie Logicielle pour les Applications Scientifiques (LILAS) a pour mission de développer les outils logiciels pour les expériences de physique du DAPNIA. Il veille en particulier à renforcer l’expertise du département en ingénierie logicielle.

Dans le cadre de ses missions, le LILAS est le point de contact pour les groupes de physique auxquels il apporte son expertise des environnements de développement et des technologies logicielles. Il contribue en collaboration avec le laboratoire Informatique et Système et les équipes de physique à la définition des systèmes spécifiques aux expériences.

Ses domaines de responsabilités couvrent :

− la définition, la conception, le développement et le déploiement des codes et logiciels spécifiques aux expériences,

− la gestion de projets logiciels,

− la poursuite de programmes de Recherche et Développement sur les méthodes et technologies logicielles.

Page 11: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 10 11/06/07

Présentation du stage Mon stage s'est déroulé au laboratoire LILAS du service SEDI du département

DAPNIA, comme décrit précédemment. Il s'inscrit au sein du projet COAST (COmputational ASTrophysics). Nous allons donc d'abord décrire ce projet et les objectifs de mon stage, puis la situation initiale à mon arrivée ainsi que les outils et l'environnement technique liés à mon stage.

1) Contexte

Le projet COAST (COmputational ASTrophysics) a été lancé en 2005.

Le premier objectif est de mettre en place un programme massif de simulations numériques en astrophysique. Les astrophysiciens disposent de gros codes d'hydrodynamique qu'ils développent eux-mêmes dans les domaines de physique qu'ils étudient.

L'apport des ingénieurs du LILAS leur a permis à la création du projet COAST de se décharger de certaines tâches informatiques. C'est le deuxième objectif du projet, à savoir la mutualisation des méthodes numériques, des techniques de parallélisation, des outils de gestion des sources, et le développement d'outils communs de post-traitement, en particulier la gestion des données et la visualisation.

Le projet COAST regroupe 4 codes de simulation numérique 3D soit en hydrodynamique et systèmes à N-corps (RAMSES), soit en magnétohydrodynamique (HERACLES, ASH), soit en hydrodynamique et gravitation (JUPITER). Ces codes sont développés au Service d'Astrophysique, et chacun d’entre eux est rattaché (respectivement) à un domaine de physique : cosmologie, milieu interstellaire, physique stellaire, disques protoplanétaires.

2) Objectif

Au sein de ce projet, mon stage est lié au code RAMSES, écrit et développé par R. Teyssier.

Ce dernier est un code AMR (Adaptive Mesh Refinement) 3D de simulation des plasmas astrophysiques développé en fortran 90. L'AMR repose sur une technique de raffinement à maillage adaptatif : dans des zones nécessitant beaucoup de précisions, le maillage sera dense et très fin, et au contraire dans des zones moins intéressantes le maillage sera plus grossier.

Le code RAMSES permet de simuler la formation des galaxies, des grandes structures de l'univers (cf Illustration n°7). C'est un code complexe, donc très lourd à exécuter, et qui nécessite souvent beaucoup de temps et de ressources matérielles.

Illustration n°7 : Calcul de la densité de la matière avec le code RAMSES dans

le milieu interstellaire

Page 12: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 11 11/06/07

C'est pourquoi il est nécessaire de passer par une application en amont pour contrôler les simulations de ce code, et détecter ainsi rapidement les anomalies éventuelles de simulation. L'aspect pratique, convivial et intuitif est bien-entendu ici très important pour aider l'utilisateur et faciliter son travail.

L'objectif du stage est de réaliser cette application conviviale, qui est plus précisément une interface graphique de contrôle des paramètres et de l'exécution du code RAMSES.

De plus, cette application est une nouvelle application, puisqu'elle ne possédait pas de versions précédentes. Et si son utilisation s'avère satisfaisante, le même type d'application, permettant de contrôler le code d'un astrophysicien, sera développé pour les autres codes de simulation numérique 3D du projet COAST.

3) Situation initiale

A mon arrivée, le code RAMSES était principalement utilisé par des experts connaissant très bien ce code.

La situation était alors la suivante : avant de lancer l'exécution d'une simulation du

code RAMSES, il fallait configurer un fichier d'initialisation contenant un grand nombre de paramètres. Il n'existait donc pas de contrôles directs sur chacun des paramètres. De plus, lors de l'exécution de ce code, il n'y avait notamment pas de retour d'informations sur l'état du déroulement de la simulation. Si cette dernière s'avérait fausse, il fallait attendre la fin de la simulation pour s'en rendre compte.

Or pour un nouvel utilisateur, connaissant peu le code RAMSES, ce mode de

fonctionnement n'est pas convivial et peut être source de nombreuses erreurs. L'application développée s'attache donc à résoudre ces problèmes.

4) Environnement et outils de développement

L'application est développée avec le langage IDL1 (Interactive Data Language). C'est un langage de sur-couche d'OpenGL, très utilisé pour développer des applications de visualisation de données.

IDL est un langage orienté objet. Il contient un ensemble de classes objets prédéfinies, chaque classe étant conçue pour définir une représentation visuelle particulière.

A travers le code RAMSES, la librairie MPI2 est utilisée pour exécuter ce code sur

un ou plusieurs processeurs. Cette application est également multi plateformes, c'est-à-dire qu'elle peut être

exécutée sur plusieurs systèmes d'exploitation : LINUX, Mac OS et Windows. [1] http://www.ittvis.com/idl/ [2] http://www-unix.mcs.anl.gov/mpi/

Page 13: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 12 11/06/07

Mission réalisée

Mon stage s'est déroulé en plusieurs étapes. La première a consisté à me familiariser avec le langage IDL et le code RAMSES. Ensuite, j'ai rencontré l'astrophysicien, initiateur du code RAMSES, pour décrire ensemble les spécifications du logiciel. A la suite de cela, j'ai défini et proposé une conception pour répondre à ces besoins. L'étape suivante a été le développement du logiciel et de ses différents modules. Et enfin, la dernière étape a concerné la réalisation des tests pour valider l'application.

1) Apprentissage d'IDL et de RAMSES

Le début du stage a commencé par une phase d'apprentissage du code IDL, pour me familiariser avec celui-ci, le manipuler et le comprendre sur des exemples simples. Cela s'est fait en analysant des exemples déjà implémentés dans ce langage, en utilisant la documentation fournie par le langage IDL et grâce à l'aide d'un ingénieur connaissant déjà ce langage.

En parallèle de cela, j'ai appris à compiler et utiliser le code RAMSES, pour connaître son fonctionnement général et la façon dont sont utilisés ses paramètres.

2) Analyse des besoins

Un dialogue s'est ensuite instauré avec l'astrophysicien qui est l'initiateur du code RAMSES. Il m'a présenté les attentes et les besoins qu'il avait par rapport à cette application pour contrôler le code RAMSES.

A la suite de cette réunion, j'ai rédigé les spécifications de l'application, pour définir précisément les fonctionnalités et le contexte de développement sous forme d'un cahier des charges. Je lui ai ensuite proposé de nous rencontrer pour s'assurer mutuellement de la bonne compréhension du travail à réaliser.

Plus tard durant le stage, j'ai maintenu régulièrement ce dialogue enrichissant avec lui pour lui montrer l'état d'avancement du projet, m'assurer de la bonne orientation du projet et éventuellement apporter des modifications par rapport au projet initial.

3) Conception

Après cette phase d'analyse et de recueil des besoins, j'ai proposé une conception du logiciel, son architecture et la façon dont elle sera développée ensuite. Elle a été confrontée et validée avec l'astrophysicien du code RAMSES et deux ingénieurs.

a) Documentation

Plus précisément, j'ai réalisé plusieurs schémas. Premièrement j'ai créé des schémas fonctionnels (cf Annexe 1). Ces derniers

permettent de montrer les fonctionnalités de l'application, leur interdépendance et les conditions nécessaires pour accéder à chacune d'entre elles. Ensuite, j'ai décrit de manière technique comment sont implémentées les fonctionnalités.

Puis, j'ai réalisé des schémas de l'application, pour donner une ébauche de sa

Page 14: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 13 11/06/07

future apparence (cf Annexes 2 et 3). J’ai conçu également des schémas de la structure générale de l’application et de ses différentes parties dans le contexte IDL (cf Annexes 4 et 5).

Tout cela a été rédigé sous forme de documentation pour garder une trace du

fonctionnement de l'application dans le futur, et pour servir éventuellement de base pour réaliser d'autres applications dans un genre identique.

b) Fonctionnement de l’application

Avant d’expliquer le développement des modules de l’application, nous allons

détailler le fonctionnement de celle-ci. Ci-dessous se trouve un schéma du fonctionnement de l’interface de contrôle du code RAMSES au cours du temps.

Illustration n°8 : Schéma des fonctionnalités de l’application

Comme nous pouvons le voir sur le schéma ci-dessus, l’application se divise en

trois parties. Ces parties sont utilisées à des moments différents, suivant l’exécution du code RAMSES.

La première partie permet de gérer les conditions initiales. Cela se déroule avant l’exécution d’une simulation. Tous les paramètres utilisés pour lancer la simulation sont définis par l’utilisateur. Ce dernier peut charger une ancienne configuration ou en sauvegarder une nouvelle. Juste avant de lancer l’exécution, tous les paramètres sont contrôlés pour s’assurer de leur intégrité.

La deuxième partie permet de contrôler l’exécution du code RAMSES. Ce module est donc surtout intéressant au cours de cette exécution, pour suivre l’évolution de différents paramètres grâce à des courbes ou des indicateurs graphiques. Par exemple, un indicateur montrant l’utilisation de la mémoire peut alerter l’utilisateur si celle-ci est mal utilisée, et donc permettre à l’utilisateur d’arrêter rapidement cette simulation.

La troisième partie permet de contrôler le résultat généré par la simulation. Cela est donc possible lorsque celle-ci est terminée. Le but ici est d’avoir un aperçu des résultats, sous forme de courbes ou de graphiques, de l’exécution du code RAMSES qui vient d’être réalisée.

Gestion des conditions initiales (fichier namelist)

Contrôle de l’exécution

Contrôle du résultat

− Chargement − Sauvegarde − Contrôle

− Courbes − Tableau de bord

− Courbes 1D − Graphique 2D − Graphique 3D

Avant Après Pendant

Exécution du code RAMSES

Page 15: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 14 11/06/07

4) Développement des modules de l'application

Lorsque la conception de l'application fut clairement définie, le développement des différents modules de l'application a pu commencer.

Plus précisément, le premier module développé a été celui concernant la gestion des paramètres d'exécution du code RAMSES, module cœur de l'application contrôlant tous les paramètres. Ensuite, le module du contrôle de l'exécution a été développé pour suivre l'évolution d'une exécution du code RAMSES en temps réel. Et enfin, le dernier module développé a été celui permettant de contrôler le résultat, pour avoir un aperçu des résultats générés par le code d’astrophysique.

D'un point de vue général, le code de chacun de ces modules a été écrit de façon

simple, modulaire et lisible pour qu'il soit facilement compris et maintenu rapidement par une tierce personne dans le futur.

Décrivons à présent le module de gestion des paramètres.

a) Module de gestion des paramètres

Le premier module développé a concerné la gestion des paramètres d'initialisation

(cf Illustration n°9). C'est une partie très importante qui est en quelque sorte le coeur de l'application, puisque c'est ici que tous les paramètres sont contrôlés. Ces paramètres permettent de faire des choix de physique différents.

La définition des paramètres est effectuée dans une documentation de RAMSES,

détaillant pour chacun, leur type et leur fonction. Ce module permet de saisir tous les paramètres qui vont être utilisés lors de

l'exécution du code RAMSES. Chacun des paramètres se regroupe au sein de blocs appelés « namelist ».

Dans le langage Fortran, l’instruction « Namelist » permet d’associer un nom à une liste de variables. L’intérêt est d’utiliser ensuite ce nom pour les opérations d’entrées/sorties sur ces variables.

Ces blocs « namelist » peuvent être de 2 types : − obligatoires : à chaque exécution tous les paramètres des blocs sont utilisés, − optionnels : le bloc peut être utilisé ou non suivant le choix de l'utilisateur.

Page 16: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 15 11/06/07

Illustration n°9 : Onglet « namelist » obligatoire

Plusieurs actions dans ce module sont possibles. La première action est de contrôler au travers d'une liste des blocs « namelist », la

sélection ou non d'un bloc « namelist » (cf illustration n°10). Seuls les blocs « namelist » optionnels peuvent l'être. Cela permet d'avoir une vision d'ensemble rapide sur les blocs qui vont être utilisés pour la prochaine simulation de RAMSES.

Illustration n°10 : Liste des blocs « namelist »

Page 17: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 16 11/06/07

La deuxième action est de charger un fichier de paramètres. Les valeurs des paramètres sont lues dans un fichier, puis chargées dans l'application. Les paramètres non présents dans le fichier d'initialisation sont initialisés avec leur valeur par défaut. La partie concernant la lecture du fichier est générique. Elle permet ainsi d'anticiper l'évolution des paramètres du code RAMSES, et de n'effectuer que très peu de modifications. Par exemple, si un nouveau paramètre était ajouté, il faudrait modifier l'affichage graphique et seulement quelques lignes de code pour tenir compte de cet ajout.

La troisième action est de sauvegarder les paramètres en cours dans un fichier.

Cela permet de garder une trace des paramètres d'une simulation de référence, et de les charger rapidement une autre fois. Cela permet également de partir d'une simulation existante, de modifier quelques uns de ses paramètres et d'exécuter cette nouvelle simulation.

La dernière action est le contrôle des paramètres. Cela est une des parties les plus

importantes. En effet, c'est elle qui va déterminer l'intégrité des données. Il existe plusieurs contrôles :

− certains sont effectués sur les paramètres eux même : un paramètre doit respecter un format précis (utilisation d'expressions régulières), ne contenir que certaines valeurs (liste déroulante, proposition de choix), être d'un type défini (nombre réel, chaîne de caractères), ...

− d'autres sont interdépendants : par exemple, un champ peut contrôler la valeur, le nombre ou la sélection ou non de plusieurs autres champs, ...

Chacune de ces actions a fait l'objet d'optimisation interne dans un second temps. Par exemple, l'enregistrement des paramètres dans un fichier se fait seulement

pour les paramètres qui ont été modifiés par rapport à leur valeur par défaut. Cela a nécessité un traitement différent et plus complexe des informations.

Un autre exemple concerne la lecture des fichiers contenant les « namelist ». En effet, lors de cette lecture, seuls les paramètres connus sont chargés, les autres sont ignorés. Cela permet d'éviter des erreurs de saisie dans ces fichiers.

Page 18: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 17 11/06/07

b) Module de contrôle de l'exécution

Le module que j'ai développé ensuite concerne le contrôle de l'exécution. Il permet

de suivre l'évolution d'une simulation RAMSES au travers de courbes, d'indicateurs ou de valeurs (cf Illustration n°11).

Illustration n°11 : Onglet contrôle de l’exécution

J'ai commencé par implémenter l'affichage des courbes (cf partie 1 de l’illustration

n°11). Au cours de l'exécution de RAMSES, ce dernier génère des informations dans un fichier. Le principe ici consiste à afficher sous forme de courbes ces informations. Cela est plus convivial et interprétable rapidement pour l'utilisateur.

La particularité de cette lecture réside dans son actualisation en temps réel. Plus précisément, au fur et à mesure que l'exécution de RAMSES se déroule, les données des courbes sont actualisées.

Ainsi, l'utilisateur peut par exemple suivre l'évolution de la mémoire utilisée sur l'ordinateur au cours de la simulation, et arrêter cette dernière si cela est nécessaire.

Ensuite, j'ai ajouté des indicateurs (cf partie 2 de l’illustration n°11). Ces derniers

permettent de visionner d'une manière différente certaines informations affichées dans les courbes, au travers de flèches indiquant l’évolution des données au fur et à mesure du temps.

Par exemple, l'utilisateur peut se rendre compte de la place occupée par la

Partie 2

Partie 1 Partie 3

Page 19: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 18 11/06/07

mémoire par rapport à la place totale disponible, avoir une indication du temps écoulé par rapport au temps total de la simulation, ou avoir une indication sur l’évolution du pas de temps en fonction du pas de temps moyen.

Une dernière partie dans ce module concerne l'affichage de valeurs (cf partie 3 de

l’illustration n°11). Les valeurs liées au dernier pas de la simulation, ou au pas de la simulation choisi, sont affichées. Ces valeurs concernent entre autre le temps, la mémoire, le pas de temps, l’énergie conservée ou la masse conservée.

c) Module de contrôle du résultat

Ce dernier module permet de visionner les résultats de l'exécution du code

RAMSES. Après avoir contrôlé son paramétrage puis son évolution au cours de son exécution,

cette partie permet de contrôler globalement le résultat de la simulation. Tout en restant dans le logiciel, l’utilisateur peut ainsi avoir un aperçu de la simulation qu’il vient d’effectuer, et s’apercevoir rapidement si elle correspond ou non à ses attentes.

Pour cela, trois affichages sont réalisés suivant le nombre de dimensions de la

simulation. Le premier concerne l’affichage des résultats d’une simulation sur une dimension.

Les valeurs affichées le sont sous forme de courbes selon différents critères, comme la densité, la vitesse ou la pression en fonction de la position.

Le deuxième affichage concerne celui d’une simulation sur deux dimensions. Pour

cela un graphique en deux dimensions est affiché montrant les résultats directement obtenus par la simulation.

Le troisième affichage concerne lui une simulation sur trois dimensions. Un

graphique est également affiché comme pour l’affichage précédent, mais cette fois ce graphique est réalisé sur trois dimensions.

5) Tests

Tout au long du développement de ces modules, des tests unitaires ont été effectués permettant d'assurer l'intégrité du code développé.

Des tests fonctionnels ont quant à eux été effectués lors du changement d'un module à un autre.

Page 20: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 19 11/06/07

Difficultés rencontrées

Le développement de l'application s'est réalisé avec le langage IDL. Or ce dernier m'était totalement inconnu au début du stage. Il a donc fallu que je m'adapte à cette nouvelle situation. Pour cela, dans un premier temps je me suis familiarisé avec ce code, et ensuite j'ai analysé et cherché à comprendre son fonctionnement. Cela a été possible d'une part grâce à l'aide apportée par un ingénieur-chercheur pour m'expliquer certains points ou apporter des réponses à mes questions, et d'autre part grâce à mes connaissances acquises tout au long de ma formation à l'IFIPS qui m'ont permis de m'adapter rapidement à cette nouvelle situation.

Le logiciel que j'ai réalisé concerne le code RAMSES. Ce code fait partie d'un

domaine d'astrophysique : la cosmologie. Pour être exécuté, il est nécessaire de définir beaucoup de paramètres, permettant ainsi de multiplier les simulations possibles. Ne connaissant ni ce code ni ce domaine d'application, il a donc été très important de les comprendre, pour éviter de confondre ces paramètres et de créer des erreurs.

Page 21: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 20 11/06/07

Bilan

Ce stage de fin d'études a été très enrichissant sur de nombreux aspects. Il m'a permis de travailler dans des environnements de simulation en 3D, autour d'un domaine d'application fort intéressant, l'astrophysique.

Durant ce stage, j'ai pu mettre en application mes connaissances acquises au cours

de mes 5 années de formation à l'IFIPS. En effet, au début du stage, cela m'a été utile pour déterminer les besoins et définir la conception du logiciel. Cela m'a aidé également lors du développement de l'application, puisque j'ai réussi à m'adapter à une situation inconnue, à un langage que je ne connaissais pas, IDL.

De plus, ce stage m'a permis d'améliorer ma rigueur de travail. Par exemple, lors du développement de l'application, il a fallu constamment être le

plus modulaire possible : d'une part pour anticiper et faciliter des évolutions futures, et d'autre part pour être rapidement compris par une tierce personne s'occupant de la maintenance future du logiciel.

Un autre exemple concerne la documentation du logiciel. Elle a été présente du début du projet jusqu'à sa fin. Elle est très importante car après mon départ, elle deviendra la seule source d'explications du logiciel que j'ai réalisé. Je me suis donc attaché à l'écrire de manière claire, concise et rigoureuse.

A la fin du stage, les objectifs initiaux ont été atteints. Malgré les difficultés

rencontrées, les délais ont été respectés et cela est satisfaisant. Cela est d’autant plus satisfaisant que mon projet a été soumis à la conférence

CCP 07 (Conference on Computational Physics 2007) pour présenter un poster sur le travail réalisé (cf Annexe 6).

Enfin, ce stage s'est déroulé au sein d'un organisme public de recherche, ce qui

constitue une nouvelle expérience pour moi. J'ai pu remarquer que l'environnement de travail est différent de celui d'une entreprise privée. Les projets s'inscrivent d'avantage dans le temps et sont à la pointe des dernières technologies existantes.

Pour ma part, je trouve toujours très intéressant de travailler dans une entreprise dont les domaines d'activités sont très variés (énergie, santé, défense, ...). Et cela confirme l’environnement de travail dans lequel je souhaite travailler d'ici les prochains mois…

Page 22: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 21 11/06/07

Table des illustrations Illustration n°1 : Réacteur de recherche Osiris ......................................................................4 Illustration n°2 : Salle blanche ...............................................................................................5 Illustration n°3 : Sous-marin nucléaire Le Téméraire ............................................................5 Illustration n°4 : Coupe du réacteur ITER..............................................................................6 Illustration n°5 : Organigramme partiel du CEA ....................................................................7 Illustration n°6 : Le centre du CEA de Saclay (vue du ciel)...................................................7 Illustration n°7 : Calcul de la densité de la matière avec le code RAMSES dans le milieu interstellaire..........................................................................................................................10 Illustration n°8 : Schéma des fonctionnalités de l’application..............................................13 Illustration n°9 : Onglet « namelist » obligatoire ..................................................................15 Illustration n°10 : Liste des blocs « namelist ».....................................................................15 Illustration n°11 : Onglet contrôle de l’exécution .................................................................17

Page 23: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 22 11/06/07

Glossaire CEA : Commissariat à l'Energie Atomique DAPNIA : Département d’Astrophysique, de physique des Particules, de physique Nucléaire et de l’Instrumentation Associée SEDI : Service d’Electronique des Détecteurs et d’Informatique LILAS : Laboratoire d'Ingénierie Logiciel pour les Applications Scientifiques COAST : projet COmputational ASTrophysics RAMSES : code AMR 3D de simulation des plasmas astrophysiques AMR : Adaptive Mesh Refinement IDL : Interactive Data Language, langage de surcouche d'OpenGL MPI : Message Passing Interface

Page 24: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 23 11/06/07

Annexes

1) Annexe 1

Extrait du document de conception de l’application : schéma des relations entre les fonctionnalités principales.

Chargement valeur défaut

Etat exécution = 'aucune'

Choisir action

Gérer paramètres Exécuter QuitterArrêterContrôler exécution Contrôler résultat

Vérification

Etat exécution!= 'en cours'

Etat exécution= 'en cours'

oui

Gestionparamètres

Etat exécution= 'terminée'

Etat exécution!= 'aucune'

Choisir critères

Affichagevaleurs

oui

non

nonEtat

exécution!= 'aucune'

non

Choisir critères

oui

Affichagevaleurs

Etat exécution== 'en cours'

oui

Etat exécution= 'arrêtée'

pas ok

ok

.

non

Page 25: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 24 11/06/07

2) Annexe 2

Extrait du document de conception de l’application : schéma général de l’application.

Namelist

Obligatoire

Namelist

Optionnel

Contrôle

Exécution

Contrôle

Résultat

Fichier Namelist RAMSES ?

Page 26: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 25 11/06/07

3) Annexe 3

Extrait du document de conception de l’application : schéma de l’onglet « Contrôle de l’exécution ».

Namelist

Obligatoire

Namelist

Optionnel

Contrôle

Exécution

Contrôle

Résultat

Affichage

itération n°

itération en cours

Etat de l'exécution

aucune / en cours / arrêtée / terminée

Courbes Valeurs

temps

Données

mémoire

pas de temps

Mode

linéaire

logarithme

Courbe

Tableau de bord

Temps Mémoire Pas de temps

énergie conservée

énergie cinétique

Arrêter Résultat

Page 27: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 26 11/06/07

4) Annexe 4

Extrait du document de conception de l’application : structure générale de l’application dans le contexte IDL.

Base

Base Base

Button

Button ButtonButton

Tab

Base Base Base Base

Onglets Namelist

Obligatoire et Optionnel

Onglets Contrôle

Exécution et Résultat

Sous-Menu

Menu

MenuBar Contenu

TabOnglets

Fenêtre

1 2 3 4

Page 28: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 27 11/06/07

5) Annexe 5

Extrait du document de conception de l’application : structure de l’onglet « Contrôle de l’exécution » dans le contexte IDL.

Base

1. Base 2. Base 3. Base 4. Base

3

1. Base 2. Base 3. Label 4. Draw

1. Tab

1. Base 2. Base

Draw

3. Table Button Cw_Field

1. Onglet Courbes2. Onglet Valeurs3. Texte4. Graphique

Onglet Contrôle Exécution

3. Button

1. Configuration2. Affichage3. Tableau de bord4. Boutons

2. Base

1. Onglets2. Indicateurs (x3)3. Boutons (x2)

1. Critères2. Courbes3. Tableau de valeurs

Graphique

Page 29: memoire industriel v1.4 - irfu.cea.frirfu.cea.fr/Projets/COAST/OSMONT_Raphael_memoire_industriel.pdf · A l’issu de ce stage, je tiens à remercier l’ensemble du personnel du

Interface de contrôle du code RAMSES

OSMONT Raphaël 28 11/06/07

6) Annexe 6

Résumé envoyé pour la conférence CCP 07 (Conference on Computational Physics 2007) du 5 au 8 septembre 2007 à Bruxelles.

Monitoring and control of the RAMSES simulation program

R. Osmont, V. Gautard, D. Pomarède, R. Teyssier, and B. Thooris CEA/DAPNIA, Saclay, France

Interactive control and monitoring is a key element in the development of large numerical simulation codes and the distribution to their users’ community. In this paper, we describe an application designed to interactively control and monitor the initialization and execution of the RAMSES simulation program. RAMSES is a parallelized, AMR, hybrid N-body and hydrodynamical code running on massively parallel mainframes. The program is used to perform simulations of astrophysical plasmas which solve in particular the interplay of dark matter and the baryon gas in the study of cosmological structures formation. The baseline technology of the application is the object-oriented programming offered by the IDL analysis and visualization platform. It is implemented as an interactive widget providing the opportunity of managing the parameters of the simulation, controlling the correctness of the execution and visualizing intermediate results. This includes loading, testing and saving of configuration files, the interactive edition of the simulation parameters, the run-time control of the execution and the display of graphical objects ranging from 1D curves to 3D scenes, showing the evolution of physical quantities.