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
Scarica

Programmazione ad oggetti per la simulazione