visualisation du maillage adaptatif du code ramses
Post on 20-Jun-2022
17 Views
Preview:
TRANSCRIPT
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
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
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 sousvolume ............................................................................... page 173. Représentation visuelle de la grille AMR de RAMSES ..................................................... page 23
Conclusion ................................................................................................................... page 29Bibliographie ............................................................................................................... page 30
3
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 sousvolume interactif destiné à limiter la zone de visualisation ainsi que la visualisation de l'AMR en lui même.
4
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).
Sousmarin de la marine nationale
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 hommemachines 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, neuroimagerie cérébrale…).
6
Panneaux solaires en silicium polycristallin au centre d’études de
Cadarache.
Stimulateur électrique antiParkinson
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
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 IledeFrance 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 IledeFrance 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 :
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 hommemachine), 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.
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'électronspositons 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
Visualisation du maillage adaptatif du code RAMSES
IV. SEDI ( Service d'Electronique des Détecteurs et d'Informatique )
L’activité des 77 ingénieurschercheurs 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
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 posttraitement 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 spatiotemporels sur des grilles cartésiennes fixes ou à résolution adaptative.
12
L'Univers simulé avec 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.
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 posttraitement 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 HommeMachine.
Ce langage est multiplateformes (supporté par Windows, Linux, Mac OS X ou Unix), multithreadé
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
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 nonliné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 à Ncorps.
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 à Ncorps : 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 sousvolume 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
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 à Ncorps 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 celleci doit être raffinée.
L'image de départ est composée de pixels différents. Nous devons ainsi la diviser en quatre sousimages. 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
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 sousvolume
L'Univers étant représenté dans un grand cube, la sélection du sousvolume 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 sousvolume. 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 sousvolume que j'ai réalisé. Ces transformations correspondent surtout au facteur d'agrandissement ainsi qu'à la translation effectuée pour
17
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 sousvolume doit être relié à ce modèle afin de pouvoir suivre les mouvements des autres objets représentés.
Interface :
Une fois le sousvolume 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 sousvolume correspondent à ses besoins. Cette discussion a conduit à réaliser les transformations suivantes :
➔ translation de chacun des plans du sousvolume➔ translation sur chaque axe du sousvolume➔ homothétie globale sur tout le sousvolume (uniforme sur chaque axe)➔ transformation du sousvolume en cube.
18
Visualisation du maillage adaptatif du code RAMSES
Présentation de l'interface :
1. Sliders permettant de positionner les plans du sousvolume2. 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 sousvolume. 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 sousvolume 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 sousvolume 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
Visualisation du maillage adaptatif du code RAMSES
Résultats :
Le sousvolume 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 sousvolume 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 sousvolume (en rouge). Le niveau représenté est seulement le niveau 7 sachant que le niveau maximum est 13.
Grille : 128 X 128 X 128
Rechargement 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
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 regénérée. Nous voyons un amas de galaxies. Nous voulons à présent agrandir l'image avec une meilleure résolution
Visualisation du maillage adaptatif du code RAMSES
Voici plusieurs images visualisant des galaxies en se déplaçant et en agrandissant l'image :
22
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 « Spacefilling curve » de PeanoHilbert :
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
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.
<=
=>
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 sousvolume 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
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 sousvolume.
L'interface graphique permet de contrôler le sousvolume sur lequel les plans sont déterminés. Nous pouvons également choisir les plans du sousvolume à 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.
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
sousvolume décrit précédemment.
Ces boutons permettent de choisir le plan du sousvolume
que l'on veut visualiser.
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 souscube 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
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 sousvolume 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 1115, 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
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://wwwcentresaclay.cea.fr/ : Site internet du CEA de Saclayhttp://wwwdapnia.cea.fr/ : Site internet du Dapnia
Présentation de l'environnement de travail : http://wwwdapnia.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) 361380.
Article sur HERACLES : M. González, E. Audit, P. Huynh : « HERACLES : a three dimensional radiation hydrodynamics code », Astron. Astrophys., 464 2 (2007), 429435
Article sur JUPITER : Voir la page web : http://wwwdapnia.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) 337364.
Articles et compterendus 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 2931, 2006, ed. J.S. Kim, Computer Physics Communications, 177 (2007) 263
• D. Pomarède , B. Thooris, E. Audit, R. Teyssier, « Numerical Simulations of
30
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 1113, 2006, ed. H. Nyongesa, 507058, Acta Press, ISBN:088986618X
• 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 IGPPCalSpace International Conference on Numerical Modeling of Space Plasma Flows (ASTRONUM2006), Palm Springs, California, USA, March 2630, 2006, ed. N.V. Pogorelov and G.P. Zank, Astronomical Society of the Pacific Conference Series, vol.359 (2006), 914, ISBN:9781583812273
31
Visualisation du maillage adaptatif du code RAMSES
Annexes
32
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
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. Threedimensional 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 Nbody 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 Nbody 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 multiresolution 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 1115, 2007, to appear in the Astronomical Society of the Pacific Conference Series
34
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[ilevel1] eq 0) then begin
if( RamsesAmrLevelsFlags[ilevel1] eq 1 ) then begin polylines[ilevel1]>SetProperty, HIDE=1 for flag = 1, 6 do polylinesPlanes[flag1, ilevel1]>SetProperty, HIDE=1
RamsesAmrLevelsFlags[ilevel1] = 2 endif continue endif ; if the level is already visible, do nothing
if (RamsesAmrLevelsFlags[ilevel1] eq 1) then continue ; if the level has been calculated but is hide, show the visualization
if (RamsesAmrLevelsFlags[ilevel1] eq 2) then begin polylines[ilevel1]>SetProperty, HIDE=0 for flag = 1, 6 do begin
hide2D = 1planesSelected[flag1] polylinesPlanes[flag1, ilevel1]>SetProperty, HIDE=hide2Dendfor
RamsesAmrLevelsFlags[ilevel1] = 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[ilevel1])
35
Visualisation du maillage adaptatif du code RAMSES
;Mesh size at current level dx=0.5d0^(ilevel1)
for icpu=0,ncpu1 do begin if(grid.ngrid(ilevel1,icpu) gt 0)then begin
x=(*grid.level[ilevel1,icpu]).xg(*,0) y=(*grid.level[ilevel1,icpu]).xg(*,1) z=(*grid.level[ilevel1,icpu]).xg(*,2)
case flag of 0 : begin ind=where(xdx/2. ge MeshIJKboundaries[0] and x+dx/2. le MeshIJKboundaries[1] and $
ydx/2. ge MeshIJKboundaries[2] and y+dx/2. le MeshIJKboundaries[3] and $ zdx/2. ge MeshIJKboundaries[4] and z+dx/2. le MeshIJKboundaries[5], nplot)
end 1 : begin ind=where(xdx/2. ge MeshIJKboundaries[0] and x+dx/2. le MeshIJKboundaries[1] and $
ydx/2. ge MeshIJKboundaries[2] and y+dx/2. le MeshIJKboundaries[3] and $ zdx/2. le MeshIJKboundaries[4] and z+dx/2. ge MeshIJKboundaries[4], nplot)
end 2 : begin ind=where(xdx/2. ge MeshIJKboundaries[0] and x+dx/2. le MeshIJKboundaries[1] and $
ydx/2. ge MeshIJKboundaries[2] and y+dx/2. le MeshIJKboundaries[3] and $ zdx/2. le MeshIJKboundaries[5] and z+dx/2. ge MeshIJKboundaries[5], nplot)
end 3 : begin ind=where(xdx/2. le MeshIJKboundaries[0] and x+dx/2. ge MeshIJKboundaries[0] and $
ydx/2. ge MeshIJKboundaries[2] and y+dx/2. le MeshIJKboundaries[3] and $ zdx/2. ge MeshIJKboundaries[4] and z+dx/2. le MeshIJKboundaries[5], nplot)
end 4 : begin ind=where(xdx/2. le MeshIJKboundaries[1] and x+dx/2. ge MeshIJKboundaries[1] and $
ydx/2. ge MeshIJKboundaries[2] and y+dx/2. le MeshIJKboundaries[3] and $ zdx/2. ge MeshIJKboundaries[4] and z+dx/2. le MeshIJKboundaries[5], nplot)
end 5 : begin ind=where(xdx/2. ge MeshIJKboundaries[0] and x+dx/2. le MeshIJKboundaries[1] and $
ydx/2. le MeshIJKboundaries[2] and y+dx/2. ge MeshIJKboundaries[2] and $ zdx/2. ge MeshIJKboundaries[4] and z+dx/2. le MeshIJKboundaries[5], nplot)
end 6 : begin ind=where(xdx/2. ge MeshIJKboundaries[0] and x+dx/2. le MeshIJKboundaries[1] and $
ydx/2. le MeshIJKboundaries[3] and y+dx/2. ge MeshIJKboundaries[3] and $ zdx/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(ilevel1,icpu))
36
Visualisation du maillage adaptatif du code RAMSES
yf=dblarr(8,grid.ngrid(ilevel1,icpu)) zf=dblarr(8,grid.ngrid(ilevel1,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)+(i0.5)*dx)*scale yf(ind1,ind)=(y(ind)+(j0.5)*dx)*scale zf(ind1,ind)=(z(ind)+(k0.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, nplot1 do begin
i = ind[j] if flag eq 3 then begin
X1[nElementsVect+j*edges+0] = MeshIJKboundaries[0]*scalelimite X1[nElementsVect+j*edges+1] = MeshIJKboundaries[0]*scalelimite X1[nElementsVect+j*edges+2] = MeshIJKboundaries[0]*scalelimite X1[nElementsVect+j*edges+3] = MeshIJKboundaries[0]*scalelimite X1[nElementsVect+j*edges+4] = MeshIJKboundaries[0]*scalelimite X1[nElementsVect+j*edges+5] = MeshIJKboundaries[0]*scalelimite X1[nElementsVect+j*edges+6] = MeshIJKboundaries[0]*scalelimite X1[nElementsVect+j*edges+7] = MeshIJKboundaries[0]*scalelimite
endif else if flag eq 4 then begin X1[nElementsVect+j*edges+0] = MeshIJKboundaries[1]*scalelimite
X1[nElementsVect+j*edges+1] = MeshIJKboundaries[1]*scalelimite X1[nElementsVect+j*edges+2] = MeshIJKboundaries[1]*scalelimite X1[nElementsVect+j*edges+3] = MeshIJKboundaries[1]*scalelimite X1[nElementsVect+j*edges+4] = MeshIJKboundaries[1]*scalelimite X1[nElementsVect+j*edges+5] = MeshIJKboundaries[1]*scalelimite X1[nElementsVect+j*edges+6] = MeshIJKboundaries[1]*scalelimite X1[nElementsVect+j*edges+7] = MeshIJKboundaries[1]*scalelimite
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
Visualisation du maillage adaptatif du code RAMSES
if flag eq 5 then begin Y1[nElementsVect+j*edges+0] = MeshIJKboundaries[2]*scalelimite Y1[nElementsVect+j*edges+1] = MeshIJKboundaries[2]*scalelimite Y1[nElementsVect+j*edges+2] = MeshIJKboundaries[2]*scalelimite Y1[nElementsVect+j*edges+3] = MeshIJKboundaries[2]*scalelimite Y1[nElementsVect+j*edges+4] = MeshIJKboundaries[2]*scalelimite Y1[nElementsVect+j*edges+5] = MeshIJKboundaries[2]*scalelimite Y1[nElementsVect+j*edges+6] = MeshIJKboundaries[2]*scalelimite Y1[nElementsVect+j*edges+7] = MeshIJKboundaries[2]*scalelimite
endif else if flag eq 6 then begin Y1[nElementsVect+j*edges+0] = MeshIJKboundaries[3]*scalelimite
Y1[nElementsVect+j*edges+1] = MeshIJKboundaries[3]*scalelimite Y1[nElementsVect+j*edges+2] = MeshIJKboundaries[3]*scalelimite Y1[nElementsVect+j*edges+3] = MeshIJKboundaries[3]*scalelimite Y1[nElementsVect+j*edges+4] = MeshIJKboundaries[3]*scalelimite Y1[nElementsVect+j*edges+5] = MeshIJKboundaries[3]*scalelimite Y1[nElementsVect+j*edges+6] = MeshIJKboundaries[3]*scalelimite Y1[nElementsVect+j*edges+7] = MeshIJKboundaries[3]*scalelimite
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]*scalelimite Z1[nElementsVect+j*edges+1] = MeshIJKboundaries[4]*scalelimite Z1[nElementsVect+j*edges+2] = MeshIJKboundaries[4]*scalelimite Z1[nElementsVect+j*edges+3] = MeshIJKboundaries[4]*scalelimite Z1[nElementsVect+j*edges+4] = MeshIJKboundaries[4]*scalelimite Z1[nElementsVect+j*edges+5] = MeshIJKboundaries[4]*scalelimite Z1[nElementsVect+j*edges+6] = MeshIJKboundaries[4]*scalelimite Z1[nElementsVect+j*edges+7] = MeshIJKboundaries[4]*scalelimite
endif else if flag eq 2 then begin Z1[nElementsVect+j*edges+0] = MeshIJKboundaries[5]*scalelimite
Z1[nElementsVect+j*edges+1] = MeshIJKboundaries[5]*scalelimite Z1[nElementsVect+j*edges+2] = MeshIJKboundaries[5]*scalelimite Z1[nElementsVect+j*edges+3] = MeshIJKboundaries[5]*scalelimite Z1[nElementsVect+j*edges+4] = MeshIJKboundaries[5]*scalelimite Z1[nElementsVect+j*edges+5] = MeshIJKboundaries[5]*scalelimite Z1[nElementsVect+j*edges+6] = MeshIJKboundaries[5]*scalelimite Z1[nElementsVect+j*edges+7] = MeshIJKboundaries[5]*scalelimite
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
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
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[ilevel1] polylines[ilevel1] = OBJ_NEW('IDLgrPolyline',X1,Y1,Z1,POLYLINE=polyline,color=color, hide=0) polylines[ilevel1]>SetProperty, ALPHA_CHANNEL=alpha[ilevel1]/100. oAmrModel3D>Add, polylines[ilevel1] endif else begin OBJ_DESTROY, polylinesPlanes[flag1, ilevel1]
hide2D = 1planesSelected[flag1] polylinesPlanes[flag1, ilevel1] = OBJ_NEW('IDLgrPolyline',X1,Y1,Z1,POLYLINE=polyline,color=color, hide=hide2D) polylinesPlanes[flag1, ilevel1]>SetProperty, ALPHA_CHANNEL=alpha[ilevel1]/100. oAmrModel2D>Add, polylinesPlanes[flag1, ilevel1] endelseendforRamsesAmrLevelsFlags[ilevel1] = 1
endfor X1 = 0 Y1 = 0 Z1 = 0 polyline = 0END
40
Visualisation du maillage adaptatif du code RAMSES
C] Posters des conférences auxquelles j'ai assisté
41
Visualisation du maillage adaptatif du code RAMSES
42
Visualisation du maillage adaptatif du code RAMSES
43
top related