Programmazione ad oggetti per la simulazione numerica di strutture su grande scala dell’Universo di Daniele Giunchi Relatore: Prof. Antonio Messina Simulazione Numerica • Sistemi con numero elevato di corpi • Utilizzate in ambito astrofisico, fisica dei plasmi, fluidodinamica, dinamica molecolare… • Metodi PP, PM, PPPM, AMR, metodi gerarchici • Algoritmi Barnes-Hut , Fast Multipole Method (FMM) Metodo Gerarchico Vantaggi e Svantaggi: Caratteristiche principali: • Non sono necessarie • Suddivisione del dominio condizioni al contorno • Struttura ad albero a livelli • Nodo Root e’ il volumeper • Poco performante iniziale distribuzioni concentrate o asimmetriche • Nodi foglia contengono 0 o 1 corpo Algoritmo di Barnes-Hut 1. Costruzione dell’Albero 2. Attraversamento dal fondo per il calcolo dei Centri di Massa 3. Attraversamento da Root per il calcolo delle Forze (per ogni corpo, parametro di tolleranza) 4. Aggiornamento Posizione e Velocita’ di ogni corpo 5. Reiterazione dei punti precedenti Progettazione Barnes-Hut Classi del Sottosistema “Calcolo Forza”: • Body: e’ il corpo (posizione, velocita’, forza, potenziale...) • Node: e’ il nodo dell’albero (massa, c.d.m, centro geometrico, dimensione) • Tree: costruisce l’albero e chiama le procedure per l’attraversamento e il calcolo delle forze • Walk: collabora con Tree per l’attraversamento • Force: collabora calcolando la forza tra corpo-corpo o nodo-corpo Progettazione Barnes-Hut Diagramma relazionale tra le classi all’interno del sottosistema “Calcolo Forza”: Fast Multipole Method 1. Costruzione dell’Albero 2. Attraversamento dal fondo per il calcolo dell’espansione di multipolo per ogni nodo 3. Attraversamento da Root per il calcolo delle espansioni interne per ogni nodo 4. Calcolo dei contributi dei nodi e corpi vicini (PP) 5. Calcolo delle Forze e aggiornamento Posizioni e Velocita’ dei corpi 6. Reiterazione dei punti precedenti Progettazione FMM Diagramma relazionale tra le classi all’interno del sottosistema “Calcolo Forza FMM”: Altri Sottosistemi • Tools : collabora con “Calcolo Forza” per i calcoli piu’ semplici. • Gestione Tempo: gestisce l’aspetto temporale compreso l’aggiornamento delle velocita’ e delle posizioni, utilizza l’algoritmo Leapfrog. • Gestione I/O: contiene le classi adibite alle operazioni di Input / Output , dalla scrittura dei files alla lettura degli stessi. • Simulazione:accetta i parametri introdotti dall’utente e genera le coordinate dei corpi, attraverso tecniche standard utilizzate nella simulazione. GUI : wxWindows • Libreria di classi e procedure utili per la costruzione dell’ interfaccia grafica (GUI) • Libreria free multipiattaforma (Windows, Linux, Mac…) • Consente oltretutto di costruire grafici bidimensionali www.wxwindows.org 3D : OpenGL • Librerie per la visualizzazione 3D di oggetti • Consente l’utilizzo di procedure come la traslazione e la rotazione di oggetti • Libreria free e multipiattaforma www.opengl.org Conclusioni Sviluppi possibili: • Parallelizzazione del codice (MPI , OpenMP) • Aggiunta di Sottosistemi basati su altri Algoritmi di calcolo • Aggiunta di sottosistemi per la stima dei tempi e delle risorse • Funzionalita’ basate su OpenGL