• Non ci sono risultati.

NEMO: un ambiente object-oriented per problemi di meccanica del continuo

N/A
N/A
Protected

Academic year: 2021

Condividi "NEMO: un ambiente object-oriented per problemi di meccanica del continuo"

Copied!
5
0
0

Testo completo

(1)

UN AMBIENTE OBJECT-ORIENTED

PER PROBLEMI

DI MECCANICA DEL CONTINUO

di Salvatore Filippone, Gino Bella e Marco Rorro

NEMO (Numerical Engine for Multiphysics Operators) è un ambiente per applicazioni di fluidodinamica che consente la scrittura delle applicazioni seguendo la struttura delle equazioni differenziali del problema, defi-nendo “oggetti” per i campi e le equazioni, ed “operatori” differenziali. NEMO utilizza tecniche numeriche ef-ficienti e si interfaccia con formati industriali standard e strumenti di visualizzazione.

• Abstract

NEMO (Numerical Engine for Multiphysics Operators) is a support library designed to build applications in the field of continuum mechanics; its basic design principle is to enable an application structure that closely follows the structure of the differential equa-tions describing the problem on hand, exploiting the availability of “objects” representing fields and equations, and the differential operators acting on them, normally assuming a finite volume discretization scheme. The library makes use of consolidated and efficient parallel computing libraries for internal subtasks, employing state of the art numerical techniques; it is also capable of interfacing with industry standard storage formats, such as CGNS and GAMBIT, and visualization tools.

Dott. Salvatore Filippone

Università “Tor Vergata”, Roma Dipartimento di Ingegneria Meccanica

filippone.salvatore@uniroma2.it

Lo sviluppo di un ambiente software per la soluzione di equazioni differenziali alle derivate parziali (PDE) che sia allo stesso tempo potente, efficiente, espressivo e (relativamente) semplice da usare è un argomento alla base di molti progetti di ricerca degli ultimi anni. L’interesse per le PDE è determinato dal fatto che mol-tissimi problemi della fisica e dell’ingegneria sono modellati con questo tipo di equazione; ad esempio le equazioni di Navier-Stokes per i problemi di fluidodi-namica (aerodifluidodi-namica, combustione, idrodifluidodi-namica, difluidodi-namica della atmosfera, etc.), le equazioni di Maxwell per i problemi di elettromagnetismo, le equazioni della elasticità per il calcolo strutturale, etc.

L’ambizione del progetto NEMO è lo sviluppo di un ambiente di risoluzione di problemi (Problem Solving Environment PSE) che fornisca i mattoni elementari necessari ad un certo campo applicativo, ad un livello di astrazione significativa-mente superiore di quello di un linguaggio di programmazione di base.

Dott. Marco Rorro

CASPUR

Gruppo di Matematica Computazionale e Applicazioni rorro@caspur.it

Prof. Gino Bella

Università “Tor Vergata”, Roma Dipartimento di Ingegneria Meccanica

(2)

Per fissare le idee consideriamo un caso semplice: supponiamo di voler risol-vere l’equazione di Poisson per la pressione con condizioni al contorno di Dirichlet su un certo dominio:

Ⱔ2 p=f(x) x僆Ω

p=g(x) x僆∂Ω

I passi per la soluzione di questa equazione comprendono:

1. creazione di un dominio di discretizzazione (mesh) su cui viene definita la funzione incognita (field);

2. definizione delle condizioni al contorno; 3. applicazione dell’operatore di Laplace; 4. iterazione.

La progettazione software orientata agli oggetti si propone di rispecchiare nella struttura del codice una rappresentazione il più possibile corrispondente alla rap-presentazione concettuale impiegata dallo specialista nel dominio applicativo di interesse. Una progettazione accurata degli “oggetti” informatici di base di tipo PDE, FIELD, MESH etc. rende estremamente agevole la costruzione e l’adattamento delle applicazioni per domini specialistici molto diversi.

Un esempio di applicazione non banale è quello presentato in [3], in cui l’equa-zione di Laplace viene applicata a monte del processo di simulal’equa-zione, avendo come funzione incognita la posizione dei punti nodali della griglia di discretizza-zione. Lo scopo è quello di migliorare la qualità della griglia di discretizzazione su cui poi verrà impostato il processo di simulazione (in questo caso la combustione in un motore di automobile); in altre parole, un’equazione differenziale ausiliaria viene applicata al processo di discretizzazione dello spazio su cui poi verrà impo-stata l’equazione differenziale principale. Il risultato del processo di miglioramento della qualità è mostrato in Figura 1.

CASPUR ANNU

AL REPOR

T EDIZIONE 2009

Figura 1

Qualità di una griglia non strutturata

(3)

Figura 2

Distribuzione di temperatura su un pistone con tazza.

Un’applicazione più convenzionale è invece lo studio dello stress termico in un componente meccanico mostrato in Figura 2; in questo caso il componente è un pistone con una “tazza” per un motore automobilistico. Le condizioni al contorno comprendono la modellazione del processo di lubrificazione e raffreddamento, oltre al flusso termico proveniente dalla camera di combustione.

La libreria NEMO ha due caratteristiche fondamentali: l’ implementazione in linguag-gio Fortran 95 e l’uso interno della libreria MPI per la gestione del parallelismo.

L’implementazione in linguaggio Fortran 95 consente una progettazione orien-tata agli oggetti attraverso la disponibilità dei tipi di dati definiti da utente, del-l’operator overloading e di altre caratteristiche, quali la gestione della memoria allocata.

Per quanto riguarda la parallelizzazione tramite MPI essa viene spesso (con ragione) percepita come complessa; nel nostro caso invece per l’utente finale il parallelismo risulta essere sostanzialmente trasparente, essendo incapsulato negli oggetti che compongono il programma stesso. In effetti le librerie di supporto im-plementano una sorta di estensione parallela del linguaggio di programmazione, specializzata per il dominio applicativo di interesse. Un approccio di estensione parallela di questo tipo è di solito complicato per dei domini applicativi di tipo completamente generale; nell’ambito di NEMO diventa invece possibile conciliare i problemi di espressività, facilità d’uso ed efficienza avendo assunto un dominio applicativo delimitato, quello della soluzione numerica delle PDE. Pertanto in que-sto conteque-sto si riesce a conciliare l’utilizzo delle best practices presenti in lettera-tura sfruttando una progettazione del codice ad oggetti, che realizza la flessibilità voluta.

La maggior parte dei metodi di soluzione delle PDE prevedono la formulazione e la soluzione di sistemi di equazioni lineari di grandi dimensioni; la soluzione di questi sistemi è un problema scientifico di grande complessità che richiede

(4)

che specializzate, basate di solito sull’uso di metodi di soluzione iterativi e di tra-sformazioni preliminari dette precondizionatori. Nel contesto di NEMO vengono uti-lizzate le librerie di supporto PSBLAS e MLD2P4 [1,2] realizzando diversi obiettivi: 1. incapsulare la piena generalità della libreria MPI in un formato di facile uso; 2. predisporre una serie di operatori per lo scambio dei dati orientati alle ap-plicazioni basate su griglie di discretizzazione;

3. fornire solutori iterativi per i sistemi lineari interni provenienti dalla discre-tizzazione, basati sulle più moderne tecniche di soluzione e precondizionamento; 4. ottenere prestazioni ottimali su una ampia gamma di architetture di elabo-razione, basandosi sia sulle caratteristiche del linguaggio Fortran 95 che sugli al-goritmi di soluzione dei sistemi lineari e di precondizionamento più moderni, presenti nella letteratura specializzata ma non necessariamente accessibili allo specialista applicativo.

Una volta che si sia garantito l’accesso a metodi di soluzione e precondiziona-mento adeguati, l’efficienza del codice parallelo per le applicazioni basate sulla discretizzazione del dominio di esistenza di una PDE viene a dipendere in maniera determinante dal criterio di decomposizione della griglia di calcolo. NEMO appar-tiene alla classe di codici per i quali la quantità di calcoli da effettuare è appros-simativamente proporzionale, per ogni passo temporale, al numero di dati trattati (nel nostro caso al numero di celle del dominio di-scretizzato), mentre, sempre ad ogni passo temporale, si devono scambiare dati fra i vari processi in quantità proporzionale alla super-ficie di separazione fra i vari sot-todomini in cui il dominio di calcolo è stato suddiviso.

Gli algoritmi per il partiziona-mento ottimo di un dominio di calcolo in sottodomini sono og-getto di una ricerca oggi estrema-mente attiva e molte alternative sono disponibili in letteratura; per-ciò si è stabilito di prevedere in NEMO una specifica funzionalità per l’interfacciamento a pro-grammi esterni di partiziona-mento, cosicché l’utente di NEMO possa sperimentare facilmente le diverse alternative che vengono man mano proposte in letteratura.

Nel 2008, lo sviluppo di NEMO ha riguardato principalmente il porting e l’otti-mizzazione del codice esistente sulle piattaforme disponibili presso il CASPUR, la

CASPUR ANNU

AL REPOR

T EDIZIONE 2009

• Lo schema di analisi: dettagli tecnici

La traduzione in codice NEMO del processo di modellazione si realizza in una serie di chiamate a metodi che istanziano degli oggetti , quali ad esempio:

call create_mesh(msh,input_file,’MESH’) call create_bc(bc,input_file,’BC’,msh)

call create_field(p,msh,bc=bc,dim=pressure_)

call create_pde(eqn,input_file,’Poisson PDE’,msh,pressure_ * length_) call create_source(src,input_file,’SOURCE’,pressure_/surface_)

laddove il nucleo fondamentale del codice prevede un semplice loop di itera-zione temporale; l’applicaitera-zione dei vari operatori all’oggetto equaitera-zione si tra-duce internamente nella discretizzazione secondo il metodo impostato nel momento della creazione della mesh.

big_iteration: do call increment(iter)

call pde_laplacian(‘+’,eqn,p) call pde_source(‘+’,eqn,src) call solve_pde(eqn,p,var=var)

(5)

I risultati ottenuti sono stati assolutamente lusinghieri, in termini di scalabilità su casi di test di medie dimensioni (circa 1 milione di celle), arrivando ad una effi-cienza della parte di calcolo fino al 50% su 64 processori dei cluster Linux con con-nessione Infiniband, e fino al 73% su 64 processori della piattaforma IBM SP5.

Attualmente si sta sviluppando un codice, basato su NEMO, per la fluidodinamica esterna che implementa lo schema computazionale proposto in [4]. Al momento si è in una fase avanzata di stesura del codice e, nella successiva fase di collaudo, oltre ai casi di riferimento noti e studiati in letteratura, si prevede di testare l’ap-plicazione su geometrie complesse derivanti dall’industria automobilistica.

· Bibliografia

[1] Filippone, S., & Colajanni, M. (Dec. 2000). PSBLAS: A library for parallel linear al-gebra computation on sparse matrices. ACM Trans. on Math. Software, 26(4), 527-50.

[2] D’Ambra, P., Filippone, S., & Di Serafino, D. (Nov.-Dec. 2007). On the Development of PSBLAS-based Parallel Two-level Schwarz Preconditioners. Applied Numerical Mathe-matics, 57(11-12), 1181-96.

[3] Schmidt, D., Toninel, S., Filippone, S., & Bianchi, G. M. (2008). Parallel Computation of Mesh Motion for CFD of IC Engines. SAE World Congress & Exhibition, Detroit.

Riferimenti

Documenti correlati

Il presente lavoro di tesi si propone di contribuire alla caratterizzazione idrogeochimica delle acque della Val di Cecina, con lo scopo di ottenere possibili

Molto spesso il polo nell’origine, semplice o doppio, viene volutamente introdotto nella funzione di trasferimento del regolatore (posto a monte del sistema controllato), al fine

La decisione della Consulta si radica sul contrasto di questa disposizione con il “diritto al silenzio” della persona sot- toposta a un procedimento inerente all’attività di

Il vero e proprio riconoscimento esplicito del diritto al silenzio è arrivato solo successivamente all’entrata in vigore della Carta costituzionale, tramite la

L’allotrapianto di isole nella terapia del diabete mellito di tipo 1: l’importanza di un nuovo sito di impianto.. Bertuzzi F 1 , Marazzi

Nei due mesi successivi il riscontro di frequenti ipoglicemie, insorgenti durante il corso di tutta la giornata, ci spingeva dapprima alla sospensione della somministrazione

durata di malattia 13 anni), da allora in terapia con ipoglice- mizzanti orali (insulino-sensibilizzanti e secretagoghi) fino a 3 anni fa, quando, per scadente compenso, la paziente

Essi sono stati suddivisi in due gruppi in relazione alla modalità del monitoraggio glicemico: un gruppo ha utiliz- zato apparecchi per il controllo continuo della glicemia con