visualisation du maillage adaptatif du code ramses

43
Fidaali Yncia Master 1ère année à l'université Paris EST 77 Rapport de stage Visualisation du maillage adaptatif du code RAMSES Stage effectué du 2 mai 2007 au 31 août 2007 Responsable de stage : Daniel Pomarède Lieu de stage : Commissariat à l'Énergie Atomique au Centre de Saclay à la Direction des Sciences de la Matière (DSM) au laboratoire DAPNIA

Upload: others

Post on 20-Jun-2022

16 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Visualisation du maillage adaptatif du code RAMSES

Fidaali YnciaMaster 1ère année à l'université Paris EST 77

Rapport de stage

Visualisation du maillage adaptatifdu code RAMSES

Stage effectué du 2 mai 2007 au 31 août 2007Responsable de stage : Daniel Pomarède

Lieu de stage : Commissariat à l'Énergie Atomique au Centre de Saclayà la Direction des Sciences de la Matière (DSM)au laboratoire DAPNIA

Page 2: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Remerciements

Je tiens  à  remercier  toutes  les  personnes du département  DAPNIA du CEA de Saclay pour leur accueil et tout particulièrement M. Michel Mur, chef du service SEDI, ainsi que M. Shebli Anvar, chef du laboratoire LILAS pour m'avoir offert la possibilité d'effectuer mon stage au sein de leur département. 

Je   remercie   également   mon   responsable   de   stage  M.   Daniel   Pomarède,   pour   son   accueil,   sa disponibilité,  son soutien, son aide et son accompagnement dans la découverte du monde de la recherche, mais  aussi  pour  la  confiance  qu'il  m'a  accordée.  Merci  à  M. Romain Teyssier  pour  ses conseils  et  ses explications qui m'ont valu dans bien des domaines un enrichissement personnel et professionnel.

J'adresse mes remerciements à  Mme Valérie Gautard  qui m'a donné l'opportunité  de ce stage et sans qui je n'aurai pas pu approcher le domaine qui m'a toujours fait rêver à savoir l'astrophysique. Je la remercie également pour son amitié et son soutien. Un grand merci également à M. Bruno Thooris, chef du projet COAST, pour son support.

Enfin, je remercie tout le corps enseignant de l'Université de Marne la Vallée pour cette année de formation qui, bien qu'ayant été très chargée, m'a appris énormément de choses intéressantes qui m'ont servi dans le cadre de ce stage.

2

Page 3: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

SommaireIntroduction ................................................................................................................ page 4Le Commissariat à l'Énergie Atomique ................................................................... page 5

I.    Description générale .................................................................................................. page 51. Les secteurs d'activités ........................................................................................................ page 5

a) La défense et la sécurité .......................................................................................................... page 5b) L'énergie .................................................................................................................................. page 6c) Les technologies pour l'information et la santé ....................................................................... page 6d) La recherche fondamentale ..................................................................................................... page 7

2. Organigramme partiel du CEA ........................................................................................... page 73. Les centres du CEA ............................................................................................................. page 8

II.    Le CEA Saclay .......................................................................................................... page 8III. Le DAPNIA ................................................................................................................ page 9

1. Thèmes de recherche .......................................................................................................... page 102. Les services ......................................................................................................................... page 10

IV.  SEDI .......................................................................................................................... page 111. Sujets de recherche ............................................................................................................. page 112. Les laboratoires ................................................................................................................... page 113. Le LILAS ............................................................................................................................ page 11

Présentation du stage ................................................................................................. page 12I.  Le programme scientifique COAST ( Computational Astrophysics) .......................... page 12

1. Les codes HERACLES, JUPITER & FARGO, ASH, et RAMSES .................................... page 12a) HERACLES ............................................................................................................................ page 13b) ASH ......................................................................................................................................... page 13c) JUPITER ................................................................................................................................. page 13d) RAMSES ................................................................................................................................. page 14

2. SDvision .............................................................................................................................. page 14a) La plateforme logicielle d'analyse et de visualisation IDL (Interactive Data Langage) .......... page 14b) Visualisation avec SDvision .................................................................................................... page 15

II.  Mes missions ................................................................................................................ page 151. Présentation des données de RAMSES ............................................................................... page 152. Sélection interactive d'un sous­volume ............................................................................... page 173. Représentation visuelle de la grille AMR de RAMSES ..................................................... page 23

Conclusion ................................................................................................................... page 29Bibliographie ............................................................................................................... page 30

3

Page 4: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Introduction

Un stage de fin d'année est proposé en première année de master recherche de l'université de Marne la Vallée. J'ai eu l'opportunité de l'accomplir au Commissariat à l'Énergie Atomique (CEA) de Saclay pour une durée  de quatre  mois.   J'ai   intégré   le   laboratoire  LILAS (Laboratoire  Ingénierie  Logicielle  pour   les Applications  Scientifiques)  destiné  à  développer  des applications  informatiques dédiées  à   la physique et l'astrophysique.   J'ai   participé   au   projet   COAST   (Computational   Astrophysics)   qui   associe   le   travail d'astrophysiciens et d'informaticiens. Il est basé sur la simulation des objets de l'Univers et sur la gestion des résultats. 

Mon travail s'est porté sur la visualisation du maillage complexe du code de simulation RAMSES. C'est  un code simulant  la formation des grandes  structures de l'Univers.  Il  a un algorithme de maillage particulier appelé AMR (Adaptive Mesh Refinement). L'objectif de mon stage est d'exploiter et de visualiser ce maillage.

Je commencerai par vous présenter le Commissariat à l'Énergie Atomique, en particulier le centre de Saclay,   en  décrivant   rapidement   ses  objectifs.   Je  décrirai   ensuite  mon  stage   en   commençant   par  vous présenter le projet COAST, ainsi que le code RAMSES où j'expliquerai le fonctionnement de l'AMR. Enfin, je détaillerai mon travail qui a porté sur la réalisation d'un sous­volume interactif destiné à limiter la zone de visualisation ainsi que la visualisation de l'AMR en lui même. 

4

Page 5: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Le Commissariat à l'Énergie AtomiqueI. Description générale :

Le CEA s’insère désormais pleinement dans l’espace européen de la recherche, et accroît sans cesse sa présence au niveau international.

Expert dans ses domaines de compétences, il se positionne aujourd'hui comme un acteur majeur en matière de recherche, de développement et d'innovation. Il compte 15 000 chercheurs et collaborateurs aux compétences internationalement reconnues.

1. Les secteurs d'activités : Les travaux du CEA se font autour de trois grands domaines : 

• la défense et la sécurité,• l'énergie,• les technologies pour l'information et la santé.

Ces domaines s'appuient sur la recherche fondamentale dans des secteurs diversifiés tels que les sciences de la matière et les sciences de la vie.

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

Les principales missions sont : • Fournir aux armées des têtes nucléaires• Maintenir la capacité de dissuasion• Concevoir et entretenir les réacteurs nucléaires de propulsion 

navales• Surveiller les traités et lutter contre la prolifération et le 

terrorisme.Depuis l'arrêt définitif des essais nucléaires, en 1996 le CEA développe des 

simulations numériques afin de garantir, à long terme, la fiabilité et la sûreté des armes françaises. Il est amené à concevoir de nouveaux modèles physiques et à s'équiper   de   supercalculateurs   ainsi   que   des   moyens   expérimentaux   de validation.

5

Le Commissariat à l'Énergie Atomique  (CEA)  est  un organisme  de recherche public français,  né dela volonté du Général de Gaulle. Initialement destiné à la « recherches  scientifiques  et  techniques envue de l'utilisation  de  l'énergie nucléaire   dans  les domaines  de  la  science,  de l'industrie  et  de la défense nationale  »   (citation de l'article premier du décret du18 octobre 1945). 

Sous­marin de la marine nationale

Page 6: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

b) L'énergie

Principales missions : • Recherches sur les déchets nucléaires• Optimisation du nucléaire industriel• Systèmes nucléaires futur• Nouvelles technologies pour l'énergie (hydrogène, 

photovoltaïque, biomasse).

Le principal objectif du CEA en matière d'énergie est de doter la France, à court   et   moyen   terme,   d'énergies   non   émettrices   de   gaz   à   effet   de   serre respectueuses de l'environnement. D'actives recherches sont conduites sur les solutions techniques d'une gestion responsable des déchets radioactifs, ainsi que sur   les   réacteurs   et   les   combustibles   nucléaires   du   futur,   à   la   fois   plus économiques, plus sûrs et générant moins de déchets.

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

Principales missions : • Micro et nanotechnologies• Technologies logicielles• Biotechnologies• Technologies nucléaires pour la santé

Le   CEA   développe   des   microsystèmes   (capteurs,   condensateurs, commutateurs…)   et   exerce   ses   compétences   dans   le   domaine   des   technologies logicielles (systèmes embarqués et interactifs, capteurs et traitement du signal). Il développe également des interfaces homme­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.  Ainsi,   il   fournit  des concepts  et  des  outils innovants   pour   l’ouverture   de   nouvelles   voies   diagnostiques   ou   thérapeutiques (biopuces, nouvelles méthodologies d’imagerie, neuro­imagerie  cérébrale…).

6

Panneaux solaires en silicium polycristallin au centre d’études de 

Cadarache.

Stimulateur électrique anti­Parkinson

Page 7: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

d) La recherche fondamentale

Principales missions : • Fusion thermonucléaire• Sciences du climat et de l'environnement• Connaissance  de  la  matière  (physique, physique  des 

particules,  astrophysique, chimie, ...)• Connaissance  du  vivant  (radiobiologie, 

radiopathologie, toxicologie, ...)

Cette   recherche   fondamentale   représente   environ   un   tiers   des activités de l'organisme et contribue à l'ensemble de ses thématiques : défense,   énergie   et   technologies   pour   l'information   et   la   santé. Différents programmes sont conduits 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.

2. Organigramme partiel du CEA 

7

Images de galaxies lointaines obtenues par le télescope spatial Hubble. La couleur et la forme des galaxies permettent d'étudier 

l'activité de formation d'étoiles dans l'Univers tel qu'il était il y a plus de 8 

milliards d'années.

CEA

DEN DSMDRTDAM

DRECAM DRFC DRFMCDAPNIA LSCEGANIL SPhT

SPPSPhNSISSACM SAp SENACSEDI

Laboratoire de développement de Systèmes Electroniques et OptoélectroniquesLaboratoire de physique des Détecteurs et d’Electronique FrontaleLaboratoire d’Informatique SystèmeLaboratoire d’Intégration des DétecteursLaboratoire Ingénierie Logicielle pour les Applications ScientifiquesL’antenne Cern

DSV

Page 8: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Mon stage s'est déroulé dans le Laboratoire Ingénierie Logicielle pour les Applications Scientifiques qui  appartient  au SEDI. Le SEDI est  un service  du  laboratoire  DAPNIA, qui   lui  même appartient  à   la Direction des Sciences et de la Matière (DSM). 

3. Les centres du CEA :

Implanté sur 9 centres répartis sur toute la France, le CEA bénéficie d’une forte insertion régionale et de solides partenariats avec les autres organismes de recherche. 

 

Le Centre d'Études Nucléaires de Saclay, dans lequel s'est effectué  ce stage, se trouve en Ile­de­France et regroupe près de 5000 employés.

II. Le CEA de Saclay

Le Centre CEA de Saclay, implanté sur le plateau de Saclay en Ile­de­France sud, constitue un site de recherches et d'innovations de tout premier plan à l'échelle nationale et européenne. Il se caractérise par une grande diversité des activités allant de la recherche fondamentale à la recherche appliquée.

● La   recherche   appliquée   nucléaire  a   pour   objectif   l'optimisation   du fonctionnement des centrales nucléaires françaises actuelles et le développement des systèmes nucléaires du futur. Des moyens spécifiques lui sont consacrés : le réacteur expérimental   Osiris,   des   laboratoires   chauds   et   l'installation   d'essais   sismiques Tamaris, par exemple. Ces travaux sont complétés par des recherches sur la gestion des déchets radioactifs.

8

Coeur du réacteur Osiris

Nombre d'employés :

Page 9: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

● La recherche technologique est orienté selon 3 axes : les systèmes informatiques embarqués,   les   systèmes   interactifs   (relations   homme­machine),   les   capteurs   et   le traitement du signal.

● La   recherche   dans   le   domaine   de   la   santé  est   axée   sur   l'effet   des rayonnements   sur   les   cellules   et   les   molécules,   l'ingénierie   des   protéines,   les recherches en imagerie médicale et les dosages radioimmunologiques.

● Les études sur l'environnement portent essentiellement sur la modélisation du climat et l'effet de serre.● Le   Centre   CEA   de   Saclay   accueille   également  l'Institut   National   des   Sciences   et   Techniques 

Nucléaires (INSTN), qui a pour mission de mettre en oeuvre et développer l'enseignement et la formation professionnelle.

● La recherche en sciences de la matière, de l'infiniment grand à l'infiniment petit : astrophysique, compréhension du noyau atomique, particules élémentaires et   interactions   fondamentales.   S'y   ajoutent   des   recherches   sur   les   états   de   la matière,   réalisées   grâce   à   des   moyens   sophistiqués   :   réacteur   Orphée,   lasers, résonance magnétique nucléaire, etc. C'est dans un laboratoire de la Direction des Sciences de la Matière que j'ai eu le plaisir de travailler.

III. Le DAPNIA Le DAPNIA, laboratoire de recherche sur les lois fondamentales de l'univers, est le 

Département d'Astrophysique, de Physiques des particules, de physique Nucléaire, et de l'Instrumentation  Associée,   appartenant   à   la  Direction   des  Sciences   de   la  Matière (DSM) du CEA.

Les  recherches  du DAPNIA ont  besoin  de grandes  compétences  humaines  et  de nombreux   moyens   matériels,   ainsi   que   des   équipements   lourds   faisant   appel   à   des technologies avancées qu’il faut développer. La plus grande partie de cette recherche se fait  dans le cadre de programmes internationaux, dans des institutions  ou laboratoires 

extérieurs en étroite collaboration avec de nombreux laboratoires français et étrangers.

9

Capteurs et traitement du signal

Tomographie par émission de positons

Image infrarouge du bulbe et du disque de la Voie Lactée.

Page 10: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

1. Thèmes de rechercheLes  domaines  de   recherche   les  plus  actifs  du DAPNIA concernent   l’astrophysique,   la  physique 

nucléaire   et   la   physique   des   particules   :   trois   disciplines,   fortement   corrélées,   couvrant   le   champ   de l'infiniment petit à l'infiniment grand, nécessaires à la compréhension des lois fondamentales de la nature. Les principaux thèmes de recherche du DAPNIA portent sur les sujets suivants : 

1. La matière nucléaires dans ses états extrêmes :• plasma de quarks et de gluons• noyaux exotiques

2. La structuration de l'univers :• Formation et évolution des galaxies• Cosmologie et formation des structures dans l'univers

3. Le contenu énergétique de l'Univers :• Matière noire• Antimatière et violation de CP• Énergie sombre

4. L'expertise du DAPNIA au service de la société :• Environnement• Physique et santé• Démantèlement   et   aide   à   la   conception   des   installations 

nucléaires

5. Les constituants ultimes de la matière :• Neutrinos• Structure des hadrons• Le modèle standard• La physique au LHC

6. Innovation pour les systèmes de détection :• Développements pour les accélérateurs de particules• Accélérateurs linéaires d'ions à haute intensité• Développement pour les électroaimants du futur• Collisionneurs   linéaires   d'électrons­positons   et   sources   de 

lumière• Calcul intensif et simulation• Développements de détecteurs

7. Structure et évolution des astres :• Formation des étoiles et des planètes• Plasmas stellaires et de laboratoire• Objets compacts• Source de rayons cosmiques

8. Physique pour l'énergie nucléaire :• Données nucléaires et modélisation• Recherches technologiques pour la fusion

9. Aimants et accélérateurs• Les accélérateurs de particules• Les aimants supraconducteurs• Les stations d'essais• Electroaimants supraconducteurs• Nouveaux  développements  pour   l'instrumentation  des  aimants 

et accélérateurs

2. Les servicesLa recherche au sein du Dapnia est réparti entre sept services différents : 

1. Le Service d'Astrophysique (SAp)2. Le Service des Accélérateurs, de Cryogénie et de Magnétisme (SACM)3. Le Service d'Expertises Nucléaires en Assainissement et Conception (SENAC)4. Le Service d'Ingénierie des Systèmes (SIS)5. Le Service de Physique des Particules (SPP)6. Le Service de Physique Nucléaire (SPhN)7. Le Service d'Electronique des Détecteurs et d'Informatique (SEDI)

10

Page 11: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

IV. SEDI ( Service d'Electronique des Détecteurs et d'Informatique )

L’activité  des 77 ingénieurs­chercheurs et 68 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 aux 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. 

1. Thèmes abordés par les projets en cours 

● Matière noire● Plasmas stellaires et de laboratoire● Source de rayons cosmiques● Physique et santé● Développements de détecteurs● Objets compacts● Calcul intensif et simulation

2. Les laboratoires● Laboratoire de développement de systèmes 

électroniques et optoélectronique● Laboratoire de physique des détecteurs et 

d'électronique frontale● Laboratoire d'informatique système● Laboratoire d'intégration des détecteurs● Laboratoire Ingénierie Logicielle pour les 

Applications Scientifiques (LILAS)● L'antenne CERN● Traitement des données, acquisition et processeurs 

spécialisés

J'ai effectué mon stage au sein du laboratoire LILAS.

3. Le LILASLe 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. 

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.

11

Page 12: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Présentation du stage

I. Le programme scientifique COAST (Computational Astrophysics)

Le   programme   COAST   de   Simulations   Numériques   en Astrophysique a démarré en 2005 et a pour ambition la compréhension de la formation des structures observées de l'Univers. Il s'appuie sur quatre codes dédiés à des domaines de physiques différents : 

• Structure   et   distribution   des   amas   de   galaxies   à   partir   des conditions initiales du Big Bang (code RAMSES)

• Dynamique   des   nuages   moléculaires   où   se   forment   les   étoiles (code HERACLES)

• Magnétohydrodynamique   stellaire   (code  Anelastic  Spherical Harmonic ASH)

• Formation des systèmes protoplanétaires (code JUPITER)Au sein de ce programme, les développements logiciels sont organisés dans 

le  cadre  d'un  projet  d'ingénierie   indépendant.  L'objectif  est  de   favoriser   le  partage  des  expertises  et  de fournir des modules utilisables par les différents codes, ce qui implique :

• le   développement   d'algorithmes   numériques   novateurs   :   technique   de   maillage   adaptatif   AMR (Adaptive Mesh Refinement), maillage en grilles emboîtées

• le développement d'outils de post­traitement et de visualisation optimisés• l'unification du format des données basée sur la librairie HDF5 (Hierarchical Data Format)• la mise en place et la maintenance de bases de données distribuées• l'optimisation et la parallélisation des codes, basée sur la librairie MPI (Message Passing Interface)

1. Les codes HERACLES, JUPITER, ASH, et RAMSES

Ces quatre codes ont été développés par des astrophysiciens. Ils sont écrits en fortran 90 ou en C. Ils utilisent la parallélisation des calculs et sont basés sur des modèles  mathématiques. Ils ont des maillages spatio­temporels sur des grilles cartésiennes fixes ou à résolution adaptative.

12

L'Univers simulé avec RAMSES

Page 13: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

a) HERACLES

b) ASH

c) JUPITER

13

Écrit par E. Audit et ses collaborateurs, ce code d'hydrodynamique radiativeest  utilisé  dans  l'étude  de  la  formation  et  de  la  dynamique  des nuagesmoléculaires  dans  le  milieu  interstellaire.  Il  est  également utilisé dans lamodélisation d'expériences  de chocs radiatifs effectuées sur un laser,  ainsique  pour  la  modélisation  des  effets  radiatifs  dans  les  jets moléculairesd'étoiles jeunes.

Carte de densité d'une simulation 2D (10000x10000) du milieu interstellaire

Le  code  Anelastic  Spherical  Harmonic  (ASH)  est un programmeinformatique  modulaire  écrit  avec  le  langage  Fortran 90  par  S. Brun  encollaboration avec J. Toomre. Il permet de suivre l'évolution temporelle d'unfluide éventuellement conducteur (plasma). Son but principal est d'étudier lahydrodynamique  (MHD)  des  étoiles.  On  parle  de  dynamique des fluidesstellaires.

ASH  a  été  utilisé  sur  plus  de  2 000 processeurs en parallèle pourcalculer   des   modèles   permettant   de   comprendre   la   turbulence   et  lemagnétisme solaire. 

Vue 3D de la composante radiale de la vélocité dans la zone turbulente

  convective solaire, obtenue avec le code de simulation ASH

Champ de vitesse dans le disque au voisinage d'une planète géante 

immergée

Le  code  JUPITER  est  un  code  parallèle  lié  à  la  description desdisques protoplanétaires. Il peut utiliser des grilles de géométrie cartésienne,cylindrique ou  sphérique,  au choix de l'utilisateur,  et peut travailler en une,deux ou  trois  dimensions.  Il  utilise  le  concept  de  grilles  emboîtées,  quipermet d'accroitre la résolution sur une partie précise du système, et que l'onchoisit généralement à l'endroit où se trouve une  planète. Ce code a été écritpar l'astrophysicien F. Masset.

Page 14: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

d) RAMSES

Les astrophysiciens auteurs de ces codes de simulations ont eu à faire appel au service LILAS afin de les aider à mener à bien leurs projets. Les informaticiens issus de ce laboratoire vont participer à la création des outils de post­traitement capables d'interpréter et de visualiser les résultats des différents codes, de créer des bases de données distribuées des résultats, et de gérer les versions des sources d'une façon homogène.

Dans   le  cadre  de  mon  stage,   j'ai  participé   au  développement  de   l'outil  SDvision.   Il  permet  de visualiser les résultats des quatre codes.

2. SDvision

SDvision,  « the   Saclay/Dapnia   VISualizatION interface »,  est  un logiciel  de visualisation écrit  par Daniel Pomarède   afin   de   pouvoir   exploiter   scientifiquement   les données générées par les codes de simulation astrophysique précédemment  décrits.  Ce programme est  développé  dans l’environnement logiciel d’IDL.

a) La   plateforme   logicielle   d'analyse   et   de   visualisation   IDL   (Interactive   Data Langage)

IDL est  un   langage  de  programmation  propriétaire  apparu  à   la   fin  des  années  1970,   et  qui  est rapidement  monté   en  puissance  dans   les  domaines   scientifiques.   Il   permet  des  analyses   spécifiques  de données   mais   également   une   visualisation   personnalisée.   Surcouche   d'OpenGL,   c'est   un   langage   de programmation  procédurale  ou  orienté   objet   selon   le  choix  du  programmeur.   Il  possède  des     librairies graphiques complètes, des librairies mathématiques optimisées, ainsi que des widgets permettant de réaliser une interface Homme­Machine. 

Ce langage est multi­plateformes (supporté par Windows, Linux, Mac OS X ou Unix), multi­threadé 

14

Le code RAMSES a été développé par Romain Teyssier pour étudier laformation  des  grandes  structures  et  des  galaxies.  Il  résout  les équations del'hydrodynamique.  Il est écrit en  Fortran 90.  C'est  un code parallèle  (pouvanttourner simultanément sur de nombreux processeurs), qui utilise la bibliothèqueMPI  (Message  Passing  Interface) pour les communications entre processeurs.   

Densité de matière baryonique dans l'Univers

Page 15: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

et multi­écrans. Les analyses de données possibles sont : ➢ Analyse   numérique   et   statistique   (par   exemple   dérivation   et   intégration,   systèmes   linéaires, 

équations non­linéaires, probabilités, outils statistiques, transformées...)➢ Traitement   du   signal   et   de   l'image   (par   exemple   l'analyse   en   ondelettes,   filtres   et   contrastes, 

segmentation d'image...)

IDL   permet   de   faire   de   la   visualisation   de   données   en   donnant   accès   à   de   nombreux   objets graphiques permettant de créer des courbes, des images, des contours, des surfaces et des volumes. Il donne également la possibilité  de faire  de la  cartographie.  Il  est  principalement  utilisé  pour la visualisation de données   scientifiques   notamment   pour   l'astrophysique,   l'aéronautique,   l'océanographie,   la   médecine,   la physique des particules, la météorologie, la physique des plasmas...

b) Visualisation avec SDvision

SDvision   est   une   interface   graphique   dédiée   à   la   visualisation   des   résultats   des   simulations numériques obtenues avec les quatre codes décrits précédemment. Cette interface est conçue pour visualiser les champs scalaires et vectoriels en deux et trois dimensions, distribués sur des grilles à maillage régulier ou sur  des  structures  plus  complexes  de maillage  adaptatif.  Elle  est  également  adaptée  aux systèmes  à N­corps.

Elle   fournit  des  capacités  de  navigation   interactive.  Elle  donne   la  possibilité  de  se  mouvoir  en immersion   dans   le   volume   simulé.   Les   résultats   visualisés   peuvent   apparaître   sous   différentes   formes complémentaires : 

• Un champ scalaire : par projection volumique, par des isosurfaces ou par plans de coupe.• Un champ vectoriel : par ses vecteurs tangents ou par des lignes de courant.• Les systèmes à N­corps : par un nuage de points. 

Le   code   repose   sur   des   modules   communs   aux   quatre   codes   de   simulation   astrophysique.   En revanche, des routines spécifiques sont nécessaires pour charger les différents formats de données ou pour visualiser les maillages complexes, caractéristiques de certains codes. Mon stage s'est concentré uniquement sur le maillage du code RAMSES. 

II. Mes missions :

Mon   travail   a   porté   essentiellement   sur   l'exploitation   de   la   structure   AMR   (Adaptive   Mesh Refinement) dans la visualisation des données de RAMSES avec SDvision. Trois parties s'y distinguent. J'ai commencé  par étudier  la structure de l'AMR du code RAMSES, puis j'ai développé  deux modules : une sélection   interactive  d'un   sous­volume  pour   le   chargement  de   l'AMR,  et   la  visualisation   interactive  du maillage. L'étude du langage IDL et du code SDvision s'est  faite  et  approfondie au fur  et  à  mesure des besoins.

15

Page 16: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

1. Présentation de l'AMR de RAMSES

RAMSES est   un  code  qui   simule   l'évolution  des  grandes   structures  de   l'Univers.   Il  permet  de comprendre la formation des galaxies. Il part de l'état initial du Big Bang et laisse les lois de la physique s'appliquer. 

Données visualisées par SDvision : 

SDvision permet de visualiser plusieurs champs de variables physiques simulés dans RAMSES : la densité  de matière, la pression et la vélocité hydrodynamique, ainsi que le système à N­corps décrivant la matière noire (une composante hypothétique de l'Univers). 

Les   résultats   générés   par   RAMSES   sont   conséquents.   A   chaque   pas   de   temps,   une   quantité importante   de   données   est   générée.   Afin   d'économiser   de   la   mémoire,   un   maillage   particulier   a   été implémenté. La résolution des données doit être meilleure aux endroits où de nombreux objets sont présents. La technique de maillage utilisée  est  le raffinement du maillage adaptatif  (AMR). Il permet de modifier dynamiquement   et   localement   la   résolution.   Au   moment   de   ma   prise   en   main   du   code,   SDvision   ne permettait pas de visualiser ce maillage.

Explication du maillage AMR : 

La structure de l'AMR est une grille (ici en 3 dimensions) non linéaire. Nous partons d'un cube, et nous le divisons en huit sous cubes si les données dans le cube ont besoin d'être raffinées. Puis, pour chaque sous cube, nous reprenons le procédé récursivement. Voici un exemple en deux dimensions : 

Dans  notre  cas,   l'uniformité  de   l'image  est  déterminée  par   les  valeurs  de pixels.  Une image  est uniforme si tous ses pixels ont une même valeur. Si ce n'est pas le cas, nous considérons que celle­ci doit être raffinée.

L'image de départ est composée de pixels différents.  Nous devons ainsi la diviser en quatre sous­images. Chacune d'elles est ensuite étudiée afin de déterminer son uniformité et ainsi savoir si une division est encore souhaitée. L'algorithme est récursif et sa condition d'arrêt dépend des besoins et de la résolution voulue.

16

Page 17: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Vocabulaire : 

On appelle chaque fraction une cellule. Il y a des cellules mères et des cellules filles. Une cellule mère est une fraction divisée en deux cellules filles suivant chaque direction (huit en trois dimensions). Nous voyons qu'une structure d'arbre se forme. Chaque cellule correspond à un niveau. Toutes les cellules ayant la même dimension appartiennent à un même niveau.

Intérêt de l'AMR : 

Ce système de maillage est estimé  intéressant  lorsque le rapport entre le nombre de cellules dans l'AMR sur le nombre de cellules dans un maillage cartésien de résolution équivalente, appelé  filling factor, est très inférieur à  1. Dans le cas de l'étude de la formation des structures cosmologiques, une feuille de résultat de RAMSES nous donne 4,1 x 107 cellules dans l'AMR pour les niveaux de 9 à 14. Dans une grille cartésienne, nous comptons 213 = 8 192 cellules dans chaque dimension soit 8 1923 = 5,5 x 1011 cellules au total. Le filling factor de l'AMR est donc égal à 4,1 x 107 / 5,5 x 1011  = 0,75 x 10 ­ 4. Ce rapport correspond au facteur de remplissage de l'AMR. Ici, il est intéressant car dans la formation des grandes structures, il y a de grandes zones de vide où il n'y a pas besoin de raffiner la résolution.

La visualisation des données : 

Pour visualiser des données, il faut rapporter la grille AMR à une grille cartésienne pour la carte graphique.   Or   les   données   sont   beaucoup   trop   volumineuses   pour   pouvoir   tenir   entièrement   avec   la meilleure résolution en mémoire (des tableaux de réels de dimensions 8 1923 pour le niveau 14 de l'AMR). 

Pour remédier à ce problème, un choix de  niveau à visualiser a été mis en place afin de limiter le nombre  de cellules  représentées.   Il   faut  donc sélectionner   le  niveau minimum et   le  niveau  maximum  à représenter. Ainsi, la résolution des données visualisée ne peut pas être optimale par rapport aux possibilités offertes par le code RAMSES. 

Afin de pouvoir  exploiter  les  possibilités  de l'AMR, mon premier  travail  a été  de créer  un sous volume qui sélectionne une partie de l'Univers. De ce fait, la partie visualisée sera plus petite et l'on pourra augmenter la résolution et ainsi la qualité de l'image. 

2. Sélection interactive d'un sous­volume

L'Univers étant représenté dans un grand cube, la sélection du sous­volume doit s'y contraindre. La première étape est  de comprendre comment  fonctionne le langage IDL, notamment  comment utiliser  les objets graphiques pour dessiner le sous­volume. Il s'agit également de comprendre le code de SDvision déjà existant  afin de voir  les  différentes  échelles  et   les transformations affectées au grand cube de base.  Les transformations  sont  essentielles  car   il   faut  également   les  affecter  au  sous­volume  que   j'ai   réalisé.  Ces transformations correspondent surtout  au facteur d'agrandissement ainsi qu'à  la translation effectuée pour 

17

Page 18: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

centrer le cube initial. 

Les  objets  graphiques  d'IDL doivent  être   reliés  à   un objet  model.  Tous   les  objets  d'un  modèle forment   un   ensemble   pouvant   être   manipulé   par   la   modification   des   propriétés   du   modèle   (rotation, translation et scaling). Dans SDvision, un modèle reliant tous les objets graphiques existe déjà. Grâce à ce modèle, les objets graphiques forment une vue qui peut être modifiée par l'utilisateur grâce aux clics et aux déplacements de la souris. Le sous­volume doit être relié à ce modèle afin de pouvoir suivre les mouvements des autres objets représentés. 

Interface : 

Une fois le sous­volume dessiné, il faut concevoir une interface graphique afin de le contrôler. Pour créer une fenêtre sous IDL : 

Il   faut   commencer   par   avoir   une   base   « WIDGET_BASE »   qui   correspond   à   la   fenêtre.   La commande   est   :   «   id_de_la_fenêtre  =   WIDGET_BASE(TITLE='titre   de   la   fenêtre') ».   Nous pouvons ajouter  plusieurs propriétés : «   id_de_la_fenêtre  = WIDGET_BASE(TITLE='titre  de la  fenêtre',/COLUMN, XPAD=15, YPAD=10, SPACE=1) »

On associe à cette base tous les objets que l'on veut dans cette fenêtre (sliders,  boutons, labels...). L'initialisation ainsi que les définitions d'évènements se font en même temps.

Enfin   nous   pouvons   afficher   la   fenêtre   avec   la   commande   « WIDGET_CONTROL, id_de_la_fenêtre,   /REALIZE ».  La  commande  « WIDGET_CONTROL »  permet  de  modifier   les propriétés des différents  widgets. L'identifiant de la fenêtre est donné lors de la création de l'objet « WIDGET_BASE ». Au moment de la réalisation de la base, tous les objets inclus dans cette base sont également créés. Une   fonction   de   destruction   de   la   fenêtre   est   également   demandée.   Elle   sera   appelée   lorsque 

l'utilisateur clique sur la croix pour fermer la fenêtre. De ce fait toute la base est détruite. Afin de pouvoir récupérer les données sélectionnées dans la fenêtre, il faut pouvoir mémoriser l'état des différentes variables. Pour ceci dans tout le programme nous avons une structure globale nommée « sState » dans laquelle nous mémorisons toutes les variables dont nous avons besoin. 

Une discussion avec Romain Teyssier,  l'astrophysicien auteur du code RAMSES, a été  organisée afin que l'interface et les transformations possibles sur le sous­volume correspondent à ses besoins. Cette discussion a conduit à réaliser les transformations suivantes : 

➔ translation de chacun des plans du sous­volume➔ translation sur chaque axe du sous­volume➔ homothétie globale sur tout le sous­volume (uniforme sur chaque axe)➔ transformation du sous­volume en cube.

18

Page 19: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Présentation de l'interface : 

1. Sliders permettant de positionner les plans du sous­volume2. Boutons sélectionnant le mode translation : Si le bouton est enfoncé, le déplacement d'un des sliders entraine 

un mouvement de translation et modifie les valeurs des deux sliders en conséquence.3. Slider et champ permettant de jouer sur la taille du sous­volume. Le slider prend des valeurs réelles de 0 à 2 

non inclus. Deux calculs différents sont faits : • pour réduire : le calcul prend la valeur exacte définit par le slider, • pour augmenter : le calcul effectué est 1 / (2 – x), où x la valeur du slider. La bonne valeur se trouve dans 

le champ Scale.La valeur du scale se remet à 1 lorsque l'on touche une translation d'un plan ou lorsque l'on clique sur le bouton « Make a cubic ». 

4. Bouton  permettant  de   transformer   le  sous­volume  en cube.  Je  prends   la  plus  grande  arête  pour redimensionner les autres. Je fais en sorte que le centre reste le même. De ce fait, de petits détails doivent être pris en considération pour éviter de sortir du cube initial.

Adaptation : 

Enfin, il faut adapter les visualisations afin qu'elles puissent se contraindre au sous­volume réalisé. Il faut comprendre la structure générale du code de SDvision afin de trouver l'endroit où mettre les limitations du chargement des données, ainsi que celles des dessins à réaliser. La difficulté est de bien comprendre les différentes transformations établies sur chaque dessin afin de faire correspondre les limites.

19

1

2

34

Page 20: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Résultats :

Le sous­volume permet de visualiser des détails localisés dans des endroits intéressants :Voici  une suite  d'images  représentant   la  densité  de   l'Univers.  Le but  de  ce  scénario  est  de   trouver  des galaxies en formation dans le volume. Pour ceci, nous partons de l'ensemble de l'Univers et nous jouons avec le sous­volume afin de limiter les données à visualiser et ainsi augmenter la résolution et distinguer les galaxies. 

 

 

20

Représentation   de   l'ensemble   de   l'Univers   et  sélection d'un   sous­volume  (en  rouge).  Le  niveau  représenté est seulement le niveau 7 sachant que le  niveau maximum est 13.

Grille : 128 X 128 X 128

Re­chargement des données jusqu'au niveau 10 de  l'AMR. La résolution a été améliorée par un facteur  8 par rapport à l'image précédente.

Grille : 416 X 384 X 344

Page 21: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

   

21

Zoom et augmentation de la résolution : niveau 11

Amélioration de la résolution d'un facteur 2.

Grille : 576 X 576 X 576

Sélection d'une région intéressante et augmentation  de la résolution au niveau 12 de l'AMR

Grille : 544 X 576 X 800

Augmentation maximum de la résolution, niveau 13  de l'AMR, sélection d'une zone où l'on commence à  distinguer les galaxies.

Grille : 448 X 1 152 X 640

Zoom   sur   la   partie   re­générée.   Nous   voyons   un  amas de galaxies. Nous voulons à présent agrandir  l'image avec une meilleure résolution

Page 22: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Voici plusieurs images visualisant des galaxies en se déplaçant et en agrandissant l'image :

22

Page 23: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

3. La représentation visuelle de la grille AMR de RAMSES

La visualisation de l'AMR de RAMSES m'a été demandée afin de pouvoir vérifier la cohérence des résultats. Elle permettra également de comprendre le fonctionnement de l'AMR en la superposant avec les résultats. Le premier objectif pour pouvoir dessiner l'AMR est de savoir comment parcourir la structure de l'AMR.  Le premier  problème s'est   trouvé  dans   le   fait  que  la  structure  de  l'AMR était  détruite  après   le chargement des résultats. Il a donc fallu la garder en mémoire à travers la structure « sState ». 

RAMSES est un code calculé  sur plusieurs processeurs en même temps. L'ensemble de données a été   séparé   en  morceaux   et   chaque  morceau   a  été   calculé   par  un  processeur  différent.  L'algorithme  de séparation est mathématique. Il utilise un algorithme de « Space­filling curve » de Peano­Hilbert : 

Exemple de décomposition en domaines utilisée par RAMSES  pour effectuer un calcul parallèle. Chaque couleur correspond  à un processeur.

La structure de l'AMR possède trois tableaux de trois dimensions. La première dimension liste les niveaux  de   l'AMR,   la   deuxième  correspond  à   la   séparation  de   l'ensemble  en  morceau,   et   la   troisième contient les coordonnées de points. Chaque tableau correspond aux coordonnées d'une dimension (x, y et z). Les points sont dans l'ordre suivant : 

Les    points   sont    rassemblés    par   huit.   Chaque ensemble  de  huit  points représentent un cube.  Pour  chaque niveau et pour chaque morceau,  nous avons ainsi une liste de cubes. 

Il  ne  reste  qu'à  parcourir  les  tableaux et à dessinerles cubes correspondant à chaque niveau.

23

0 1

2 3

4 5

6 7

Page 24: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Choix graphique :

Sous IDL, de nombreux objets graphiques sont disponibles. Plusieurs choix sont possibles pour le dessin  de   l'AMR.  Parmi  ces  objets  graphiques,   il  y  a   l'objet  « polyline ».  Dans  un  premier   temps,   j'ai commencé par dessiner chaque arête de chaque cube avec un objet « polyline » différent. Or avec le nombre d'arêtes à représenter, je me suis retrouvée face à un problème de mémoire. Afin d'y remédier, il m'a fallu étudier plus en détail le fonctionnement de l'objet « polyline ». 

Nous   pouvons   utiliser   cet   objet   de   plusieurs   manières.   Un   des   fonctionnements   possibles   est identique au fonctionnement d'OpenGL. Nous pouvons donner un tableau contenant tous les points que l'on veut représenter, puis un tableau donnant les indices des points à relier. Voici un exemple pour dessiner un cube : 

liste des points :

Ce tableau est en réalité trois tableaux donnant les coordonnées sur chaque axe de chaque point.liste des indices :

: nombre de points liés, suivi de la liste des indices des points.

Avec ce procédé, j'ai pu mettre en place un objet « polyline » par niveau, ce qui donne un nombre fini et raisonnable d'objets représentés en mémoire. La raison qui m'a poussée à différencier les niveaux est une   anticipation   à   d'éventuels   changements   de   propriétés   applicables   à   chaque   niveau   de   l'AMR   (par exemple pouvoir mettre une couleur par niveau).

La première visualisation donne un ensemble de cubes blancs difficilement compréhensible. 

24

0 1

2 3

4 5

67

31 2 4 5 6 70

5 0 1 3 2 0 2 0 4 2 1 5 2 3 7 2 2 6 5 4 5 7 6 4

5

A  gauche  une  vue d'un  maillage  AMR en 3D, complet,

  et  à  droite  le  même maillage  AMR  mais sur  une  vue  projetée en XY.

<=

=>

Page 25: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Après discussion avec l'astrophysicien Romain Teyssier, une interface graphique a été décidée :● le choix des niveaux à représenter,● le choix des couleurs par niveau,● la possibilité de sélectionner un sous­volume indépendamment des données chargées.

Interface :

Grâce   à   cette   interface,   l'utilisateur   a   la   possibilité   d'adapter   sa  vue   à   ses   besoins,   grâce  à   la possibilité d'attribuer des couleurs et des transparences pour chaque niveau. 

25

Boutons permettant sélectionner les 

niveaux de l'AMR à visualiser

Liste de choix de couleurs

Sliders gérant la transparence par 

niveau

Page 26: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Voici différentes images de l'AMR provenant du code RAMSES.

Nous avons à présent une visualisation en trois dimensions totalement interactive de l'AMR. Nous avons proposé la possibilité d'afficher des plans déterminés par le cube de sélection, dessinant des coupes de l'AMR. Mon travail a consisté à déterminer comment extraire un plan délimité de la structure de l'AMR, de l'afficher suivant le cube dessiné et de créer l'interface graphique permettant de contrôler ces plans.

Les plans de l'AMR :

La première étape est de cibler les cellules à dessiner. Il s'agit de sélectionner celles intersectant le plan. Il reste à projeter le cube sur le plan en tenant compte des limites imposées par le sous­volume. 

L'interface graphique permet de contrôler le sous­volume sur lequel les plans sont déterminés. Nous pouvons également choisir les plans du sous­volume à dessiner. 

26

Voici une vue projetée sur le plan XY de l'AMR. Nous  pouvons  déterminer  les  endroits  denses  en information grâce à un jeu de transparence sur les niveaux visualisés.Niveaux représentés : de 8 à 13

Voici  une  vue  en  trois  dimensions  de  l'AMR. Nous  pouvons  deviner  un  amas  de  galaxies  en formation à travers les niveaux élevés représentés. Niveaux représentés : de 9 à 14.

Page 27: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Voici un exemple de visualisation de plans d'AMR avec l'interface correspondante : 

27

Les objets sont exactement identiques à ceux du widget du 

sous­volume décrit précédemment.

Ces boutons permettent de choisir le plan du sous­volume 

que l'on veut visualiser. 

Page 28: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

J'ai réussi à mettre en place une vision de l'AMR interactive restreinte à des plans, ce qui permet de mieux appréhender les détails de sa géométrie. 

Optimisation à réaliser et perspectives :

Plusieurs petits problèmes restent à traiter afin d'optimiser les applications que j'ai développées. Le premier problème se situe  au niveau du nombre  d'arêtes redondantes  dans  le dessin.  En effet,   lorsqu'on représente un cube de niveau 1, le sous­cube de niveau 2 le recouvre. De ce fait, il y a des recouvrements d'arêtes et donc une redondance proportionnelle au nombre de niveaux représentés. L'objet graphique reste important en terme d'occupation de la mémoire, et le mouvement de l'objet en interactivité est un peu lent lorsque   de   nombreux   niveaux   sont   représentés.   Un   algorithme   pourrait   être   trouvé   afin   d'éviter   ces redondances.  La difficulté  dans  notre  cas  réside  dans   le  fait  que  l'on  puisse  choisir   interactivement   les niveaux à visualiser (ajout ou suppression de niveau). 

Un autre  problème  en relation  avec   le  précédent  se   trouve  sans  solution  évidente.  Lorsque   l'on visualise plusieurs niveaux de couleurs différentes, la couleur représentée suit une logique interne à la carte graphique selon l'ordre de calcul du niveau. De ce fait, la visualisation reste aléatoire par rapport au résultat attendu et est un peu difficile à interpréter. 

Une solution résolvant les deux problèmes précédemment décrits pourrait être trouvée. Mon stage pourrait éventuellement se poursuivre dans ce sens. 

Dans SDvision, nous avons la possibilité de créer des films en générant les images à chaque pas de temps et en faisant succéder les résultats. Nous pouvons ainsi voir le mouvement des galaxies en formation. Une simulation de RAMSES s'est concentrée sur un amas de galaxies et l'a suivi au cours de sa formation. Une idée de création du film de l'évolution de son AMR serait envisagée pour la suite de mon stage. 

28

Page 29: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Conclusion

Le projet sur lequel j'ai effectué  mon stage était passionnant. Mon travail  sur la visualisation m'a permis de me rendre compte que c'est une discipline qui me plaît beaucoup, en particulier dans le cadre de projets de physique et astrophysique. Au cours des conférences auxquelles j'ai assisté, j'ai appris que c'est un domaine  de plus  en plus demandé  qui  soulève  de nombreux problèmes car,   très  souvent,   les  données  à visualiser sont très volumineuses.

Ma   participation   au   projet   a   permis   de   mettre   en   place   de   nouvelles   applications   qui   sont importantes pour la suite du projet. La réalisation du sous­volume a permis de visualiser plus précisément et interactivement des régions intéressantes. Elle constitue une première étape vers l'adaptation dynamique de la résolution au fur et à mesure des déplacements effectués sur la vue. La visualisation de l'AMR est très importante pour l'astrophysicien. Elle lui permet de parcourir en trois dimensions son maillage et de pouvoir comparer le maillage avec les résultats obtenus. 

Ce stage au coeur de la recherche a été très enrichissant pour mes connaissances et m'a donné envie de continuer dans ce secteur. Au cours de ce stage, j'ai eu l'occasion de participer à plusieurs conférences et séminaires sur différents sujets : la visualisation, la physique et l'astrophysique. Mon nom apparaît déjà sur certaines présentations de mon responsable de stage, ainsi que sur un article :  "Interactive visualization of astrophysical plasma simulations with SDvision", D. Pomarède, Y. Fidaali, E. Audit, A.S. Brun, F. Masset, R. Teyssier, Proceedings of the IGPP/DAPNIA International Conference on Numerical Modeling of Space Plasma Flows, ASTRONUM2007, Paris, France, June 11­15, 2007, to appear in the Astronomical Society of the Pacific Conference Series. Daniel Pomarède m'a proposé de signer les articles à venir.

A travers ce stage, j'ai pu me rendre compte à quel point le mélange de compétences peut améliorer la recherche. J'ai eu l'opportunité de travailler directement avec l'astrophysicien Romain Teyssier, qui m'a beaucoup appris en matière d'astrophysique et de mathématiques. Je trouve très enrichissant de côtoyer de si près le monde de la recherche car nous avons l'opportunité  d'apprendre de nouvelles choses chaque jour. Enfin, ce stage m'a donné envie d'intégrer ce laboratoire car c'est un environnement que j'affectionne tout particulièrement.

29

Page 30: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Bibliographie / Sitographie

Description du CEA : http://www.cea.fr : Site internet sur le CEA.http://fr.wikipedia.org : Historique du CEA.http://www­centre­saclay.cea.fr/ : Site internet du CEA de Saclayhttp://www­dapnia.cea.fr/ : Site internet du Dapnia

Présentation de l'environnement de travail : http://www­dapnia.cea.fr/Projets/COAST/ramses.htm : Site internet sur le projet COASThttp://www.idris.fr/data/cours/visu/idl/idl.html : Documentation pour IDLhttp://www.ittvis.com/idl/ : Site officiel d'IDL

Articles décrivant les différents projets et codes présentés : Article sur ASH : 

G.A. Glatzmaier, T.C. Clune, J.R. Elliott, M.S. Miesch, J. Toomre : « Computational aspects of a code to study rotating turbulent convection in sphérical shells », Parallel Computing, 25 (1999) 361­380.

Article sur HERACLES : M.   González,   E.   Audit,   P.   Huynh   :   « HERACLES   :   a   three   dimensional   radiation hydrodynamics code », Astron. Astrophys., 464 2 (2007), 429­435

Article sur JUPITER : Voir la page web : http://www­dapnia.cea.fr/Projets/COAST/jupiter_fargo.htm, écrit par F. Masset.

Article sur RAMSES :R. Teyssier : « Cosmological hydrodynamics with adaptive mesh refinement – A new high resolution code called RAMSES », Atron. Atrophys., 385 (2002) 337­364.

Articles et compte­rendus de conférences soumis à une procédure de    peer review      :   

• D.   Pomarède   ,   E.   Audit,   R.   Teyssier,   B.   Thooris,   « Visualization   of   large   astrophysical simulations   datasets »,  Proceedings   of   the   Conference   on   Computational   Physics  (CCP2006),  Gyeongju,  Republic of  Korea, August  29­31,  2006, ed.  J.S.  Kim,  Computer Physics Communications, 177 (2007) 263 

• D.   Pomarède   ,   B.   Thooris,   E.   Audit,   R.   Teyssier,   «   Numerical   Simulations              of 

30

Page 31: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Astrophysical   Plasmas »,  Proceedings   of   the   6th  IASTED   International   Conference   on  Modeling, Simulations, and Optimization (MSO2006), Gaborone, Botswana, September 11­13, 2006, ed. H. Nyongesa, 507­058, Acta Press, ISBN:0­88986­618­X 

• E. Audit,  D. Pomarède,  R. Teyssier,  and B. Thooris,  « Numerical Simulations              of Astrophysical Plasmas : Status and Perspectives of the Saclay/DAPNIA Software Project », Proceedings of the 1st IGPP­CalSpace International Conference on Numerical Modeling of  Space  Plasma Flows   (ASTRONUM2006),  Palm Springs,  California,  USA,  March  26­30, 2006, ed. N.V. Pogorelov and G.P. Zank, Astronomical Society of the Pacific Conference Series, vol.359 (2006), 9­14, ISBN:978­1­583812­27­3 

31

Page 32: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Annexes

32

Page 33: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

Sommaire des annexes

A] Abstract de l'article "Interactive visualization of astrophysical plasma simulations with SDvision"

B] Fonction calculant les cellules de l'AMR à visualiser

C] Posters des conférences auxquelles j'ai assisté

33

Page 34: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

A] Abstract de l'article "Interactive visualization of astrophysical plasma simulations with SDvision"

Title  : "Interactive visualization of astrophysical plasma simulations with SDvision"

Authors : D. Pomarède, Y. Fidaali, E. Audit, A.S. Brun, F. Masset, R. Teyssier

SDvision is a graphical interface developed in the framework of IDL Object Graphics   and   designed   for   the   interactive   and   immersive   visualization   of astrophysical   plasma   simulations.   Three­dimensional   scalar   and   vector   fields distributed over regular mesh grids or more complex structures such as adaptive mesh refinement data or multiple embedded grids, as well as N­body systems, can be   visualized   in   a   number   of   different,   complementary   ways.   Various implementations of the visualization of the data are simultaneously proposed, such as 3D isosurfaces, volume projections, hedgehog and streamline displays, surface and image of 2D subsets, profile plots, particle clouds. The SDvision widget allows to visualize complex, composite scenes both from outside and from within the simulated volume. This tool is used to visualize data from RAMSES, a hybrid N­body and hydrodynamical code which solves the interplay of dark matter and the baryon gas in the study of cosmological  structures formation, from HERACLES, a radiation hydrodynamics code used in particular to study turbulences in interstellar molecular clouds, from the ASH code dedicated to the study of stellar magnetohydrodynamics, and from the JUPITER multi­resolution code used in the study of protoplanetary disks formation.

Publication : Proceedings   of   the   IGPP/DAPNIA   International   Conference   on   Numerical Modeling of Space Plasma Flows, ASTRONUM2007, Paris, France, June 11­15, 2007, to appear in the Astronomical Society of the Pacific Conference Series

34

Page 35: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

B] Fonction calculant les cellules de l'AMR à visualiser

PRO drawTheAmrGeometry, grid, oAmrModel3D, oAmrModel2D, AmrLevels, MeshIJKboundaries, $    polylines, polylinesPlanes, colors, alpha, RamsesAmrLevelsFlags, is3DModelDrawn, planesSelected        ncpu=grid.ncpu        scale = 0.6    limite = 0.5*scale        hide3D = 0        color=intarr(3)    nlevelmax = grid.nlevelmax    if( nlevelmax gt 14 ) then nlevelmax = 14    for ilevel=1, nlevelmax do begin     ;if the level has been drawn, only hide the visualization         if (AmrLevels[ilevel­1] eq 0) then begin

     if( RamsesAmrLevelsFlags[ilevel­1] eq 1 ) then begin         polylines[ilevel­1]­>SetProperty, HIDE=1          for flag = 1, 6 do polylinesPlanes[flag­1, ilevel­1]­>SetProperty, HIDE=1

    RamsesAmrLevelsFlags[ilevel­1] = 2     endif     continue    endif        ; if the level is already visible, do nothing

         if (RamsesAmrLevelsFlags[ilevel­1] eq 1) then continue        ; if the level has been calculated but is hide, show the visualization

         if (RamsesAmrLevelsFlags[ilevel­1] eq 2) then begin     polylines[ilevel­1]­>SetProperty, HIDE=0      for flag = 1, 6 do begin

    hide2D = 1­planesSelected[flag­1]    polylinesPlanes[flag­1, ilevel­1]­>SetProperty, HIDE=hide2Dendfor

     RamsesAmrLevelsFlags[ilevel­1] = 1     continue    endif    print, 'ilevel = ', ilevel    

     for flag = 0, 6 do begin         polyline = lonarr(1)         X1 = fltarr(1)         Y1 = fltarr(1)         Z1 = fltarr(1)

    nElementsVect = 0L         nElementsPoly = 0L

         color = chooseColor(colors[ilevel­1])

35

Page 36: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

         ;Mesh size at current level    dx=0.5d0^(ilevel­1)

    for icpu=0,ncpu­1 do begin         if(grid.ngrid(ilevel­1,icpu) gt 0)then begin    

                      x=(*grid.level[ilevel­1,icpu]).xg(*,0)                                  y=(*grid.level[ilevel­1,icpu]).xg(*,1)                                  z=(*grid.level[ilevel­1,icpu]).xg(*,2)

    case flag of     0 : begin         ind=where(x­dx/2. ge MeshIJKboundaries[0] and x+dx/2. le MeshIJKboundaries[1] and $

                            y­dx/2. ge MeshIJKboundaries[2] and y+dx/2. le MeshIJKboundaries[3] and $                            z­dx/2. ge MeshIJKboundaries[4] and z+dx/2. le MeshIJKboundaries[5], nplot)

     end     1 : begin         ind=where(x­dx/2. ge MeshIJKboundaries[0] and x+dx/2. le MeshIJKboundaries[1] and $

                            y­dx/2. ge MeshIJKboundaries[2] and y+dx/2. le MeshIJKboundaries[3] and $                            z­dx/2. le MeshIJKboundaries[4] and z+dx/2. ge MeshIJKboundaries[4], nplot)

     end     2 : begin         ind=where(x­dx/2. ge MeshIJKboundaries[0] and x+dx/2. le MeshIJKboundaries[1] and $

                            y­dx/2. ge MeshIJKboundaries[2] and y+dx/2. le MeshIJKboundaries[3] and $                            z­dx/2. le MeshIJKboundaries[5] and z+dx/2. ge MeshIJKboundaries[5], nplot)

     end     3 : begin         ind=where(x­dx/2. le MeshIJKboundaries[0] and x+dx/2. ge MeshIJKboundaries[0] and $

                            y­dx/2. ge MeshIJKboundaries[2] and y+dx/2. le MeshIJKboundaries[3] and $                            z­dx/2. ge MeshIJKboundaries[4] and z+dx/2. le MeshIJKboundaries[5], nplot)

     end     4 : begin         ind=where(x­dx/2. le MeshIJKboundaries[1] and x+dx/2. ge MeshIJKboundaries[1] and $

                            y­dx/2. ge MeshIJKboundaries[2] and y+dx/2. le MeshIJKboundaries[3] and $                            z­dx/2. ge MeshIJKboundaries[4] and z+dx/2. le MeshIJKboundaries[5], nplot)

     end     5 : begin         ind=where(x­dx/2. ge MeshIJKboundaries[0] and x+dx/2. le MeshIJKboundaries[1] and $

                            y­dx/2. le MeshIJKboundaries[2] and y+dx/2. ge MeshIJKboundaries[2] and $                            z­dx/2. ge MeshIJKboundaries[4] and z+dx/2. le MeshIJKboundaries[5], nplot)

     end     6 : begin         ind=where(x­dx/2. ge MeshIJKboundaries[0] and x+dx/2. le MeshIJKboundaries[1] and $

                            y­dx/2. le MeshIJKboundaries[3] and y+dx/2. ge MeshIJKboundaries[3] and $                            z­dx/2. ge MeshIJKboundaries[4] and z+dx/2. le MeshIJKboundaries[5], nplot)

     end    endcase

                 if nplot gt 0 then begin                  xf=dblarr(8,grid.ngrid(ilevel­1,icpu))

36

Page 37: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

                  yf=dblarr(8,grid.ngrid(ilevel­1,icpu))                  zf=dblarr(8,grid.ngrid(ilevel­1,icpu))                  for i=0,1 do begin                         for j=0,1 do begin                          for k=0,1 do begin                                 ind1=i+2*j+4*k                                 xf(ind1,ind)=(x(ind)+(i­0.5)*dx)*scale                                 yf(ind1,ind)=(y(ind)+(j­0.5)*dx)*scale                                 zf(ind1,ind)=(z(ind)+(k­0.5)*dx)*scale                          endfor                         endfor                  endfor

     edges = 8     if flag eq 0 then points = 24 else points = 6         X1 = [X1, fltarr(edges*(nplot+1))]

               Y1 = [Y1, fltarr(edges*(nplot+1))]               Z1 = [Z1, fltarr(edges*(nplot+1))]

     polyline = [polyline, fltarr(points*(nplot+1))]         for j=0L, nplot­1 do begin

    i = ind[j]    if flag eq 3 then begin 

          X1[nElementsVect+j*edges+0] = MeshIJKboundaries[0]*scale­limite          X1[nElementsVect+j*edges+1] = MeshIJKboundaries[0]*scale­limite          X1[nElementsVect+j*edges+2] = MeshIJKboundaries[0]*scale­limite          X1[nElementsVect+j*edges+3] = MeshIJKboundaries[0]*scale­limite          X1[nElementsVect+j*edges+4] = MeshIJKboundaries[0]*scale­limite          X1[nElementsVect+j*edges+5] = MeshIJKboundaries[0]*scale­limite          X1[nElementsVect+j*edges+6] = MeshIJKboundaries[0]*scale­limite          X1[nElementsVect+j*edges+7] = MeshIJKboundaries[0]*scale­limite

    endif else if flag eq 4 then begin     X1[nElementsVect+j*edges+0] = MeshIJKboundaries[1]*scale­limite

          X1[nElementsVect+j*edges+1] = MeshIJKboundaries[1]*scale­limite          X1[nElementsVect+j*edges+2] = MeshIJKboundaries[1]*scale­limite          X1[nElementsVect+j*edges+3] = MeshIJKboundaries[1]*scale­limite          X1[nElementsVect+j*edges+4] = MeshIJKboundaries[1]*scale­limite          X1[nElementsVect+j*edges+5] = MeshIJKboundaries[1]*scale­limite          X1[nElementsVect+j*edges+6] = MeshIJKboundaries[1]*scale­limite          X1[nElementsVect+j*edges+7] = MeshIJKboundaries[1]*scale­limite

    endif else begin     X1[nElementsVect+j*edges+0] = xf(0, i)­limite

          X1[nElementsVect+j*edges+1] = xf(1, i)­limite          X1[nElementsVect+j*edges+2] = xf(2, i)­limite          X1[nElementsVect+j*edges+3] = xf(3, i)­limite          X1[nElementsVect+j*edges+4] = xf(4, i)­limite          X1[nElementsVect+j*edges+5] = xf(5, i)­limite          X1[nElementsVect+j*edges+6] = xf(6, i)­limite          X1[nElementsVect+j*edges+7] = xf(7, i)­limite

    endelse

37

Page 38: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

    if flag eq 5 then begin          Y1[nElementsVect+j*edges+0] = MeshIJKboundaries[2]*scale­limite          Y1[nElementsVect+j*edges+1] = MeshIJKboundaries[2]*scale­limite          Y1[nElementsVect+j*edges+2] = MeshIJKboundaries[2]*scale­limite          Y1[nElementsVect+j*edges+3] = MeshIJKboundaries[2]*scale­limite          Y1[nElementsVect+j*edges+4] = MeshIJKboundaries[2]*scale­limite          Y1[nElementsVect+j*edges+5] = MeshIJKboundaries[2]*scale­limite          Y1[nElementsVect+j*edges+6] = MeshIJKboundaries[2]*scale­limite          Y1[nElementsVect+j*edges+7] = MeshIJKboundaries[2]*scale­limite

    endif else if flag eq 6 then begin     Y1[nElementsVect+j*edges+0] = MeshIJKboundaries[3]*scale­limite

          Y1[nElementsVect+j*edges+1] = MeshIJKboundaries[3]*scale­limite          Y1[nElementsVect+j*edges+2] = MeshIJKboundaries[3]*scale­limite          Y1[nElementsVect+j*edges+3] = MeshIJKboundaries[3]*scale­limite          Y1[nElementsVect+j*edges+4] = MeshIJKboundaries[3]*scale­limite          Y1[nElementsVect+j*edges+5] = MeshIJKboundaries[3]*scale­limite          Y1[nElementsVect+j*edges+6] = MeshIJKboundaries[3]*scale­limite          Y1[nElementsVect+j*edges+7] = MeshIJKboundaries[3]*scale­limite

    endif else begin     Y1[nElementsVect+j*edges+0] = yf(0, i)­limite

          Y1[nElementsVect+j*edges+1] = yf(1, i)­limite          Y1[nElementsVect+j*edges+2] = yf(2, i)­limite          Y1[nElementsVect+j*edges+3] = yf(3, i)­limite          Y1[nElementsVect+j*edges+4] = yf(4, i)­limite          Y1[nElementsVect+j*edges+5] = yf(5, i)­limite          Y1[nElementsVect+j*edges+6] = yf(6, i)­limite          Y1[nElementsVect+j*edges+7] = yf(7, i)­limite

    endelse             if flag eq 1 then begin          Z1[nElementsVect+j*edges+0] = MeshIJKboundaries[4]*scale­limite          Z1[nElementsVect+j*edges+1] = MeshIJKboundaries[4]*scale­limite          Z1[nElementsVect+j*edges+2] = MeshIJKboundaries[4]*scale­limite          Z1[nElementsVect+j*edges+3] = MeshIJKboundaries[4]*scale­limite          Z1[nElementsVect+j*edges+4] = MeshIJKboundaries[4]*scale­limite          Z1[nElementsVect+j*edges+5] = MeshIJKboundaries[4]*scale­limite          Z1[nElementsVect+j*edges+6] = MeshIJKboundaries[4]*scale­limite          Z1[nElementsVect+j*edges+7] = MeshIJKboundaries[4]*scale­limite

    endif else if flag eq 2 then begin     Z1[nElementsVect+j*edges+0] = MeshIJKboundaries[5]*scale­limite

          Z1[nElementsVect+j*edges+1] = MeshIJKboundaries[5]*scale­limite          Z1[nElementsVect+j*edges+2] = MeshIJKboundaries[5]*scale­limite          Z1[nElementsVect+j*edges+3] = MeshIJKboundaries[5]*scale­limite          Z1[nElementsVect+j*edges+4] = MeshIJKboundaries[5]*scale­limite          Z1[nElementsVect+j*edges+5] = MeshIJKboundaries[5]*scale­limite          Z1[nElementsVect+j*edges+6] = MeshIJKboundaries[5]*scale­limite          Z1[nElementsVect+j*edges+7] = MeshIJKboundaries[5]*scale­limite

    endif else begin     Z1[nElementsVect+j*edges+0] = zf(0, i)­limite

          Z1[nElementsVect+j*edges+1] = zf(1, i)­limite          Z1[nElementsVect+j*edges+2] = zf(2, i)­limite

38

Page 39: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

          Z1[nElementsVect+j*edges+3] = zf(3, i)­limite          Z1[nElementsVect+j*edges+4] = zf(4, i)­limite          Z1[nElementsVect+j*edges+5] = zf(5, i)­limite          Z1[nElementsVect+j*edges+6] = zf(6, i)­limite          Z1[nElementsVect+j*edges+7] = zf(7, i)­limite

    endelse

    polyline[nElementsPoly+j*points+0] = 5         if flag le 2 then begin          polyline[nElementsPoly+j*points+1] = 0+j*edges+nElementsVect          polyline[nElementsPoly+j*points+2] = 1+j*edges+nElementsVect          polyline[nElementsPoly+j*points+3] = 3+j*edges+nElementsVect          polyline[nElementsPoly+j*points+4] = 2+j*edges+nElementsVect          polyline[nElementsPoly+j*points+5] = 0+j*edges+nElementsVect

    endif else if flag eq 3 OR flag eq 4 then begin     polyline[nElementsPoly+j*points+1] = 0+j*edges+nElementsVect

          polyline[nElementsPoly+j*points+2] = 2+j*edges+nElementsVect          polyline[nElementsPoly+j*points+3] = 6+j*edges+nElementsVect          polyline[nElementsPoly+j*points+4] = 4+j*edges+nElementsVect          polyline[nElementsPoly+j*points+5] = 0+j*edges+nElementsVect

    endif else begin     polyline[nElementsPoly+j*points+1] = 0+j*edges+nElementsVect

          polyline[nElementsPoly+j*points+2] = 1+j*edges+nElementsVect          polyline[nElementsPoly+j*points+3] = 5+j*edges+nElementsVect          polyline[nElementsPoly+j*points+4] = 4+j*edges+nElementsVect          polyline[nElementsPoly+j*points+5] = 0+j*edges+nElementsVect

    endelse

    if flag eq 0 then begin      polyline[nElementsPoly+j*points+6] = 2

          polyline[nElementsPoly+j*points+7] = 0+j*edges+nElementsVect          polyline[nElementsPoly+j*points+8] = 4+j*edges+nElementsVect              polyline[nElementsPoly+j*points+9] = 2           polyline[nElementsPoly+j*points+10] = 1+j*edges+nElementsVect          polyline[nElementsPoly+j*points+11] = 5+j*edges+nElementsVect              polyline[nElementsPoly+j*points+12] = 2           polyline[nElementsPoly+j*points+13] = 3+j*edges+nElementsVect          polyline[nElementsPoly+j*points+14] = 7+j*edges+nElementsVect              polyline[nElementsPoly+j*points+15] = 2          polyline[nElementsPoly+j*points+16] = 2+j*edges+nElementsVect          polyline[nElementsPoly+j*points+17] = 6+j*edges+nElementsVect              polyline[nElementsPoly+j*points+18] = 5          polyline[nElementsPoly+j*points+19] = 4+j*edges+nElementsVect          polyline[nElementsPoly+j*points+20] = 5+j*edges+nElementsVect          polyline[nElementsPoly+j*points+21] = 7+j*edges+nElementsVect          polyline[nElementsPoly+j*points+22] = 6+j*edges+nElementsVect          polyline[nElementsPoly+j*points+23] = 4+j*edges+nElementsVect

39

Page 40: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

    endif         endfor     nElementsVect = nElementsVect+edges*(nplot+1)

          nElementsPoly = nElementsPoly+points*(nplot+1)    endif

          endif        endfor    if flag eq 0 then begin         OBJ_DESTROY, polylines[ilevel­1]     polylines[ilevel­1] = OBJ_NEW('IDLgrPolyline',X1,Y1,Z1,POLYLINE=polyline,color=color, hide=0)     polylines[ilevel­1]­>SetProperty, ALPHA_CHANNEL=alpha[ilevel­1]/100.     oAmrModel3D­>Add, polylines[ilevel­1]    endif else begin     OBJ_DESTROY, polylinesPlanes[flag­1, ilevel­1]

hide2D = 1­planesSelected[flag­1]     polylinesPlanes[flag­1, ilevel­1] = OBJ_NEW('IDLgrPolyline',X1,Y1,Z1,POLYLINE=polyline,color=color, hide=hide2D)     polylinesPlanes[flag­1, ilevel­1]­>SetProperty, ALPHA_CHANNEL=alpha[ilevel­1]/100.     oAmrModel2D­>Add, polylinesPlanes[flag­1, ilevel­1]    endelseendforRamsesAmrLevelsFlags[ilevel­1] = 1

    endfor                     X1 = 0    Y1 = 0    Z1 = 0    polyline = 0END

40

Page 41: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

C] Posters des conférences auxquelles j'ai assisté

41

Page 42: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

42

Page 43: Visualisation du maillage adaptatif du code RAMSES

           Visualisation du maillage adaptatif du code RAMSES

43