il calcolo parallelo ad alte prestazioni: applicazioni di
Transcript
il calcolo parallelo ad alte prestazioni: applicazioni di
UNIVERSITA DEGLI STUDI DI TRIESTE FACOLTA DI INGEGNERIA Dipartimento di Elettrotecnica, Elettronica e Informatica TESI DI LAUREA IN FONDAMENTI DI TEORIA DEI SISTEMI IL CALCOLO PARALLELO AD ALTE PRESTAZIONI: APPLICAZIONI DI TERMOFLUIDODINAMICA COMPUTAZIONALE SUL CRAY-T3D Laureando : Luka ONESTI Relatore Chiar:mo Prof: Mario POLICASTRO : Correlatore Dott: Ing: Enrico NOBILE : Anno Accademico 1993-94 Indice 1 Introduzione ai sistemi paralleli 3 1.1 1.2 1.3 1.4 1.5 Perche parallelo? . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Un po' di storia . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 In difesa del parallelismo . . . . . . . . . . . . . . . . . . . . . . 6 Classicazione di Flynn . . . . . . . . . . . . . . . . . . . . . . 8 Sistemi Multiprocessore . . . . . . . . . . . . . . . . . . . . . . 9 1.5.1 Sistemi a memoria distribuita - Shared Memory Systems 9 1.5.2 Sistemi a memoria locale - Private Memory Systems . . 10 1.6 Campi di applicazione . . . . . . . . . . . . . . . . . . . . . . . 10 1.7 Il Supercalcolo in Fluidodinamica Computazionale . . . . . . . 12 2 Il sistema Parallelo CRAY T3D 2.1 Introduzione alla famiglia T3D . . . . . . . . . . . . 2.2 Il nodo di calcolo . . . . . . . . . . . . . . . . . . . . 2.2.1 Topologia del nodo . . . . . . . . . . . . . . . 2.2.2 Architettura del processore . . . . . . . . . . 2.3 Rete di interconnessione . . . . . . . . . . . . . . . . 2.3.1 Connessione a topologia toroidale . . . . . . . 2.3.2 I/O Gateways . . . . . . . . . . . . . . . . . . 2.4 Ambiente di programmazione del T3D . . . . . . . . 2.4.1 Paradigma Message Passing . . . . . . . . . . 2.4.2 Modelli impliciti di programmazione parallela 2.4.3 Paradigma Data Parallel . . . . . . . . . . . . 2.4.4 Paradigma Work Sharing . . . . . . . . . . . 2.5 Osservazioni . . . . . . . . . . . . . . . . . . . . . . . I . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 15 17 17 17 20 23 27 28 29 33 33 36 42 II INDICE 3 Il fenomeno della convezione 3.1 3.2 3.3 3.4 3.5 Introduzione . . . . . . . . . . . . . . . . . . . . . . Formulazione matematica . . . . . . . . . . . . . . Determinazione delle equazioni adimensionali . . . Determinazione delle equazioni discrete nel tempo Sistema risolvente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 45 48 51 54 56 4 Utilizzo del metodo dei Volumi Finiti 57 5 Risoluzione dell'equazione di Navier Stokes 70 4.1 Il metodo dei Residui Pesati . . . . . . . . . . . . . . . . . . . . 4.2 Il metodo dei Volumi Finiti . . . . . . . . . . . . . . . . . . . . 4.3 Equazione discretizzata dell'energia . . . . . . . . . . . . . . . . 5.1 Formulazione tradizionale delle equazioni di Navier-Stokes . 5.2 Equazioni di Navier-Stokes viste come proiezioni . . . . . . 5.2.1 Denizione dell'operatore di proiezione . . . . . . . . 5.3 Algoritmi di proiezione nel continuo . . . . . . . . . . . . . 5.3.1 Metodo Optimal Projection2 per un sistema chiuso . 5.3.2 Metodo Projection2 semplicato per sistemi chiusi . 5.3.3 Metodo Projection2 per un sistema continuo aperto 5.3.4 Metodo Projection2 per un sistema discreto aperto . 6 Soluzione numerica dell'equazione di Poisson 6.1 6.2 6.3 6.4 6.5 Introduzione . . . . . . . . . . . Formulazione matematica . . . Matrix Decomposition . . . . . Implementazione dell'algoritmo Risultati e prestazioni . . . . . . . . . . . . . . . . . . . . 7 Implementazione del codice sul T3D . . . . . . . . . . . . . . . . . . . . 7.1 Esempi di applicazione del modello CRAFT 7.2 Risultati e prestazioni . . . . . . . . . . . . 7.2.1 Poisson Solver . . . . . . . . . . . . 7.2.2 Codice NUSUMIC . . . . . . . . . . 7.3 Osservazioni conclusive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 59 60 70 73 75 77 77 79 79 81 84 84 85 88 92 95 98 99 103 104 109 114 INDICE 8 Risultati 8.1 Convezione naturale . . . . . . . . . . . . . . . . . . . . 8.1.1 Confronto con altri autori . . . . . . . . . . . . . 8.2 Convezione mista . . . . . . . . . . . . . . . . . . . . . . 8.2.1 Condizioni al contorno sulla supercie d'ingresso 8.2.2 Condizioni al contorno sulla supercie in uscita . 8.2.3 Confronto con prove sperimentali . . . . . . . . . 8.2.4 Simulazione di diversi regimi di moto . . . . . . . 9 Conclusioni A Fast Poisson Solver in 3D III . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 117 117 120 121 122 123 129 143 146 Introduzione Il primo luglio 1994 e entrato in servizio presso il CINECA (Centro di Calcolo Elettronico dell'Italia Nord Orientale) il primo esemplare di Cray T3D disponibile in Italia. Si tratta del nuovo Supercalcolatore Parallelo, della Cray Research Inc., capace di 9.6 Gop/s e con una memoria totale di 4Gbyte. Contemporaneamente il CINECA ha selezionato alcune proposte di ricerca, fra quelle inviategli, meritevoli di possedere tutte le caratteristiche per poter sfruttare al meglio questa nuova architettura. Una di queste e risultata essere quella presentata dalla sezione di Fisica Tecnica del Dipartimento di Ingegneria Navale, del Mare e per l'Ambiente-DINMA dell'Universita di Trieste. Il progetto proposto riguarda la simulazione numerica parallela di fenomeni di tipo convettivo non stazionario in canali rettangolari. In questa tesi verra presentato il lavoro che e stato richiesto per la realizzazione di questo progetto ed i risultati ottenuti. Verranno mostrate le motivazioni che si trovano alla base della scelta di utilizzare un Supercalcolatore, come il Cray T3D, per la risoluzione di un problema come quello che ci siamo pressati. L'utilizzo di questa macchina non e da considerarsi quindi come un semplice esercizio di calcolo parallelo ma un applicazione pratica nalizzata alla soddisfazione di una ben precisa richiesta. Data la grande eterogeneita di contenuti, che vanno a comporre il progetto che abbiamo realizzato, la tesi puo considerarsi suddivisa principalmente in due parti: Nella prima parte verra descritto il nuovo sistema di calcolo parallelo Cray T3D, proponendo una visione sia dell'archittetura nel suo insieme che dei nuovi paradigmi di programmazione disponibili per esso. In par1 2 INDICE ticolare mostreremo come si puo passare dalle tecniche tradizionali di programmazione sequenziale a quelle emergenti, costituite da primitive per l'elaborazione parallela. La seconda parte illustra l'analisi del problema termouidodinamico della convezione. Vista la vastita di tale problema non ci soermeremo molto sul problema sico, peraltro gia esaurientemente descritto da altri autori, bens sulle tecniche di discrettizzazione delle equazioni che lo regolano e sugli algoritmi che ne permettono la soluzione numerica. Una consistente parte del lavoro svolto e rappresentata dalle simulazioni eseguite e dai dati raccolti. Abbiamo suddiviso i risultati per dare rilievo a tutte e due le parti sopra citate. Presenteremo quindi un insieme di dati che riassume le prestazioni ottenute sul T3D, anche in relazione a sistemi piu tradizionali ed un insieme di risultati, di valenza prettamente termouidodinamica, comprendenti confronti con altri autori e soluzioni innovative. Capitolo 1 Introduzione ai sistemi paralleli 1.1 Perche parallelo? Per uno studente d'ingegneria elettronica l'approccio alla programmazione e un fatto automatico, si comincia dai primi anni di corso, con i primi algoritmi, proseguendo la carriera universitaria, queste conoscenze vengono consolidate ed ampliate no a costituire quel bagaglio di conoscenze informatiche che sono fondamentali per il giusto svolgimento del proprio mestiere. Nella maggior parte dei casi il modello di programmazione che si apprende e di tipo tradizionale, cioe Sequenziale, contrapposto al modello Parallelo che viene generalamente presentato come un esempio e quasi mai come un'eciente alternativa nelle applicazioni pratiche. Perche programmare in parallelo? Sembra essere la domanda piu comune di chi si avvicina per la prima volta a questo nuovo mondo, a cui non si puo che consigliare l'osservazione dell'ambiente in cui si muove. Il mondo, la societa in cui siamo immersi e in cui operiamo, presenta diversi aspetti in cui possiamo identicare entrambe le tipologie di evoluzione. Quindi esistono eventi che non si succedono secondo una scaletta ma sono in concorrenza tra loro ed insieme raggiungono l'obiettivo pressato. L'evolvere in parallelo e quindi un avvenimento del tutto naturale, si muovono all'unisono le note di un accordo musicale come gli impulsi elettrochimici alla 3 4 1. Introduzione ai sistemi paralleli base del pensiero umano e l'uomo ha fatto inconsciamente proprio questo principio riproponendolo nelle sue creazioni. Sono esempi di parallelismo le macro strutture sociali dove le azioni uiscono parallelamente, attraverso le istituzioni locali, verso il singolo utente, i sistemi di comunicazione dove migliaia di canali viaggiano contemporaneamente sullo stesso mezzo di trasmissione ed ancora i sistemi produttivi dove una molteplicita di componenti viene realizzata concorrentemente per poi conuire nel prodotto nale. Ora non resterebbe che applicare questi concetti nello sviluppo e implementazione dei programmi che, in sostanza, ci servono a capire e gestire in modo migliore l'ambiente che ci ospita. In realta, no ad ora, quest'operazione e stata ostacolata da alcuni fattori che hanno frenato lo sviluppo del Calcolo Parallelo, favorendo invece metodologie piu tradizionali, come ad esempio la mancanza di macchine parallele di larga diusione e l'oggettiva dicolta che si incontra arontando la maggior parte dei paradigmi di programmazione no ad ora disponibili. Come mostreremo nell'ambito di questa tesi, queste difcolta si stanno progressivamente attenuando grazie all'uscita sul mercato di nuovi sistemi paralleli, apristrada dei Super Calcolatori Paralleli della prossima generazione. Inoltre l'introduzione, come supporto alla programmazione parallela, di sistemi molto piu essibili e orientati verso l'utilizzatore, come ad esempio l'ambiente CRAFT della Cray, sta richiamando un sempre maggior numero di persone disposte ad apprendere ed utilizzare questo che sembra essere l'approccio al calcolo automatico, ed in particolare di quello ad alte prestazioni del futuro (HPC - High Performance Computing). 1.2 Un po' di storia Il primo calcolatore elettronico digitale venne sviluppato nel 1946 dall'universita della Pennsylvania, si trattava dell'ENIAC, primo esempio di macchina calcolatrice programmabile1. Il primo calcolatore programmabile con istruzioni in memoria, invece, era l'UNIVAC 1 (1951); si trattava del primo esempio di macchina sviluppata con il cosidetto modello di von Neumann2 . Questi elabo1 Il programma veniva "inserito" nell'ENIAC tramite apposito cablaggio dei componenti, se si voleva modicare le istruzioni bisognava ricablare la componentistica. 2 Il modello di von Neumann si applica a macchine totalmente sequenziali che posseggono una memoria centrale comune a dati e istruzioni e ad ogni intervallo di tempo esse eseguono una sola istruzione per volta. 1.2. Un po' di storia 5 ratori facevano parte della cosidetta prima generazione, si trattava di macchine totalmene sequenziali, perno l'accesso in memoria avveniva bit per bit, realizzate con tecnologia valvolare che permettevano un delay gate time3 di circa 1s. Nel 1953 l'IBM commercializza il modello 701 il primo calcolatore ad accedere in memoria tramite un bus parallelo, si tratta del primo timido esempio di parallelismo presente in una macchina calcolatrice. La seconda generazione di calcolatori subentra alla prima con l'avvento dei dispositivi a semiconduttore: nel 1960 l'IBM 7090, calcolatore basato su transistor al germanio, porta il delay gate time a circa 0:3s. Gli anni successivi sono caratterizzati dallo sviluppo frenetico delle tecnologie elettroniche, dal 1965 al 1975 si assiste al miglioramento delle prestazioni che aumentano di circa un fattore 10 ogni cinque anni. Grazie all'introduzione della SSI (smallscale integration) permessa dallo sviluppo di circuiti integrati planari (ICS) il delay gate time si riduce no a 1ns e contemporaneamente la comparsa dei primi dispositivi MOS permette un sempre maggior integrazione di porte logiche su singolo chip. La seconda meta degli anni settanta e gli anni ottanta si contraddistinguono dalla tendenza alla sempre maggior integrazione componentistica con la nascita delle famiglie VLSI (Very-Large Scale Integration), che permette nalmente un'evoluzione del modello di von Neumann nel quale il concetto di sequenzialita non risulta essere piu preponderante. Si sviluppano quindi modelli, come la vettorizzazione, in cui l'esecuzione parallela di operazioni aritmetiche si dimostra essere la strada vincente per il Super-Calcolo. Nel 1976 diviene operativo il Cray-1, il primo successo commerciale per un calcolatore vettoriale, dotato di 12 unita funzionali capaci di operare su 8 registri vettoriali con una potenza di picco di 130 Mop/s. Gli anni ottanta presentano invece le nuove macchine in cui l'accoppiamento di piu unita vettoriali spinge le prestazioni verso nuovi limiti, sono di questo genere il NEC SX2 da 1.3 Gop/s, il Cray YMP (1987/8) che con 8 processori raggiunge i 2.1 Gop/s, il Cray C916 (inizio anni novanta) capace di 16 Gop/s con 16 processori. Contemporaneamente la disponibilita di microprocessori di medio/alte prestazioni ma di costo ridotto ha permesso lo sviluppo di sistemi massicciamente paralleli4. Super calcolatori 3 Il delay gate time e il tempo che trascorre anche un informazione logica si trasferisca da un gate di un componente elettronico a quello successivo. 4 Per sistema massicciamente parallelo si intende una macchina dotata di un numero elevato di unita di elaborazione il cui costo deve essere contenuto anche la macchina risulti 6 1. Introduzione ai sistemi paralleli paralleli, sono ad esempio sistemi di questo tipo l'IBM SP1 da 64 processori e potenza di picco attorno agli 8Gop/s, la KSR1 della Kendall Square con 1088 cpu e 43.5 Gop/s oppure il Cray T3D con 2048 cpu che raggiunge i 300 Gop/s. Attualmente e aperta la corsa al raggiungimento del Teraop/s di picco (si tratta di una limite teorico), obiettivo che si sta per raggiungere probabilmente gia entro il 1995, con l'avvento delle nuove macchine sia vettoriali multiprocessore (Cray TRITON) che macchine a parallelismo massivo (CRAY T3E). Per il prossimo futuro invece si pensa gia ad ottenere 1TFlop/s sostenuto (Cray T3xx), cioe raggiungibile operativamente. Come si puo vedere quindi il calcolo parallelo si e aancato ed ha superato il calcolo tradizionale per quanto riguarda le prestazioni, rimangono pero alcune obiezioni sull'eettiva ecacia di tali metodologie nella risoluzione di particolari problemi e situazioni. A questo proposito riportiamo alcune interessanti considerazioni fatte da Quinn [1] dove l'autore analizza i pro e i contro l'utilizzo del modello parallelo. 1.3 In difesa del parallelismo Legge di Grosch. Grosch aerma che la velocita dei calcolatori e proporzionale al quadrato del loro costo. Risulta chiaro che conviene acquistare un calcolatore superveloce piuttosto che due piu piccoli connessi in parallelo. Critica alla legge di Grosch. La legge risulta sicuramente applicabile ai piccoli sistemi, come personal computer o workstation, ma non ai sistemi di supercalcolo perche in realta la massima velocita raggiungibile da un calcolatore e nita, non si puo aumentarla spendendo di piu. Se si ha la necessita di prestazioni maggiori bisogna collegarne di piu in parallelo. Congettura di Minsky. Minsky ipotizza che lo speedup ottenibile da un calcolatore parallelo sia proporzionale al logaritmo del numero di unita di calcolo. Critica alla congettura di Minsky. Prove sperimentali hanno mostrato economicamente competitiva. 1.3. In difesa del parallelismo 7 come lo speedup di una macchina parallela e strettamente correlato al particolare algoritmo implementato ed all'architettura del sistema. Eettivamente lo speedup di algoritmi tradizionali implementati su calcolatori paralleli ha mostrato un andamento logaritmico ma e anche vero che algoritmi paralleli hanno prodotto speedup quasi lineari per un numero di nodi superiore al centinaio. Ragioni storiche. La storia ci insegna che la velocita degli elaboratori sequen- ziali viene incrementata di un fattore 10 ogni 5 anni. Perche quindi spendere tempo e denaro nello sviluppo di un calcolatore parallelo che sia 10 volte piu veloce se basta attendere lo sviluppo di nuove architetture sequenziali che saranno ugualmente veloci? Critica alle ragioni storiche. Non si vede il motivo per cui non investire gia da subito nel calcolo parallelo, tanto piu che anche il tasso di crescita di un elaboratore parallelo dovrebbe essere pari a quello dei sequenziali. In secondo luogo con l'incremento delle prestazioni aumenta anche la complessita degli algoritmi, quindi meglio parallelizzare che aspettare. La legge di Amdahl. Un piccolo numero di operazioni sequenziali possono seriamente limitare lo speedup di un algoritmo parallelo. Sia f la percentuale di operazioni che vanno eseguite sequenzialmente su un calcolatore parallelo, dove 0 f 1. Risulta facile vedere come il massimo speedup S ottenibile da un calcolatore dotato di p processori sia: S f + (11, f )=p ; S = TT1 (1.1) p Dove T1 e Tp sono rispettivamente i tempi di esecuzione dell'algoritmo parallelo su un processore e su p processori. Per un esempio di quanto le operazioni sequenziali possano deteriorare le prestazioni di un calcolattore parallelo si consideri di implementare su una macchina ideale cioe con inniti processori (p = 1) un algoritmo che presenti il 10% di istruzioni sequenziali. In tal caso la legge di Amdahl ci dice che non otteremo mai uno speedup maggiore di 10. Critiche alla legge di Amdahl. Questa legge e una delle piu forti argomentazioni contro il calcolo parallelo, perche sembrerebbe che un calcolatore 8 1. Introduzione ai sistemi paralleli parallelo non riuscira mai ad andare 15 o 20 volte piu veloce di un calcolatore tradizionale. In realta non ci si deve limitare all'implementazione degli algoritmi tradizionali, ma bisogna svilupparne di nuovi adatti alle nuove piattaforme di calcolo. La legge di Amdahl rimane in ogni caso un ottimo metodo per valutare se un algoritmo e adatto alla parallelizzazione. L'inerzia del software. Milioni di dollari di software esistente per sistemi tradizionali, chi convertira questi strumenti? Critiche all'inerzia dell'software. Si tratta di un argomentazione priva di spessore, perche assume che il presente ed il futuro del calcolo parallelo sia strettamente legato agli stessi problemi risolvibili dal calcolo tradizionale. Sembra molto piu sensato ipotizzare l'aorare di problemi che possono trovare nel calcolo parallelo la loro soluzione. Quindi si prevede la nascita di nuovo software che non sostituira quello esistente, ma gli si aanchera. 1.4 Classicazione di Flynn Si tratta di una classicazione in cui si presentano le diverse tipologie standard di macchine calcolatrici. Il criterio proposto da Flynn(1972)[2] tiene conto delle modalita di manipolazione sia dei dati che delle istruzioni. Macchine SISD (Single Instruction stream - Single Data stream) Si rifanno al modello di von Neumann. La maggior parte degli elaboratori scalari fa parte di questa categoria. Ad ogni passo di tempo viene eseguita una sola istruzione. Macchine SIMD (Single Instruction stream - Multiple Data stream) Sono macchine SIMD tutti gli elaboratori vettoriali che manipolano una sola istruzione ad ogni istante di tempo ma che contengono piu unita funzionali aritmetiche capaci di operare contemporaneamente su piu dati. Macchine MISD (Multiple Instruction stream - Single Data stream) Non esistono applicazioni di questo modello. 1.5. Sistemi Multiprocessore 9 Macchine MIMD (Multiple Instruction stream - Multiple Data stream) Sotto questa dicitura si possono classicare tutti gli elaboratori con piu unita di elaborazione (sia scalari che vettoriali), da quelli che possiedono una bassa interazione tra processi concorrenti (es. Cray C90) a quelli progettati per sfruttare al massimo le interazioni tra processori (es. Cray T3D). Per specicare meglio la tipologia di macchine MIMD e opportuno dare alcune denizioni che ci permettano di distinguere meglio la grande varieta di macchine che ricadono in questa categoria. 1.5 Sistemi Multiprocessore Sono sistemi multiprocessore tutti quei sistemi che si compongono da un numero piu o meno elevato di unita di elaborazione (dette anche nodi), capaci di operare indipendentemente uno dall'altro. Ogni nodo, che puo essere di tipo scalare o vettoriale, comunica con gli altri attraverso una rete di interconnessione (Network). Pur esistendo molteplici dierenze da macchina a macchina possiamo identicare due fattori principali di dierenziazione dei vari sistemi: La gestione della memoria, possiamo troviamo sistemi che fanno uso di una memoria distribuita (Shared Memory) attraverso tutti i nodi, e sistemi in cui ogni processore riconosce solo la propria memoria locale (Private memory). Il grado di parallelismo, si tratta di un indice qualitativo che identica la quantita di lavoro svolta in parallelo ed il grado di cooperazione dei nodi. 1.5.1 Sistemi a memoria distribuita - Shared Memory Systems In questo modello la memoria e vista come risorsa unica per tutti i processori, essi vi accedono indipendentemente tramite la rete di interconnessione. Essendo i dati presenti in memoria accessibili da tutti i nodi vanno potenziati sia la rete di communicazione sia il software di gestione, al ne di evitare accessi in memoria contemporanei di piu nodi. Vediamo alcuni esempi di elaboratori con diverso grado di parallelismo che implementano questo modello di memoria : 10 1. Introduzione ai sistemi paralleli Basso parallelismo - Il Cray-2 (1884/5) con 4 unita di calcolo vettoriale e capace di indirizzare 256 Mword di memoria condivisa. Medio parallelismo - I sistemi CONVEX C3800 con 8 processori all'arseniuro di gallio riescono ad indirizzare no a 4GB ed il sistema Cray C916 no a 8GB di memoria shared. Alto parallelismo - Il Cray T3D puo ospitare no a 2048 nodi ciascuno con 8Mword, che puo essere vista sia come condivisa sia privata. 1.5.2 Sistemi a memoria locale - Private Memory Systems Si tratta di elaboratori in cui ogni nodo di calcolo possiede una propria memoria locale indirizzabile solo dal nodo stesso. Array di dati molto estesi vanno spezzati in sottoinsiemi piu piccoli e distribuiti sui nodi, le comunicazioni sono piu ridotte e l'accesso a dati residenti su un processore remoto avviene con modalita di tipo Message Passing5 . Questo tipo di gestione della memoria e caratteristico dei sistemi ad alto parallelismo. La famiglia di calcolatori Intel iPSC/860 Hypercube monta no a 128 processori ciascuno con 8MB di memoria, la CM-5 della Thinking Machine riesce a gestire, teoricamente, no a 16384 nodi ciascuno con una memoria locale di 128MB. 1.6 Campi di applicazione In passato molte perplessita sono state esposte allo sviluppo dei sistemi paralleli. Alcune di queste argomentazioni possono essere facilmente rigettate, altre permangono ancora. Alcune applicazioni non potranno mai essere portate su macchine parallele data la bassa propensione al parallelismo di alcuni algoritmi, percio la loro resa risultera sempre piu conveniente su delle macchine convenzionali. Comunque rimane un gran numero di problemi che richiedono una potenza di calcolo molto maggiore di quella disponibile attualmente, per i quali una soluzione parallela risulta sicuramente insostituibile. Possiamo citare a proposito applicazioni come : 5 Per Message Passing si intende un paradigma della programmazione parallela, che prevede delle comunicazioni tra nodi di tipo a interrogazione (Polling) in cui un dato uisce tra due nodi solo se il canale relativo e stato aperto. 1.6. Campi di applicazione 11 Le previsioni atmosferiche, in cui si realizzano elaborazioni per la previ- sione del tempo su domini quadridimensionali, tre dimensioni spaziali piu una temporale. In una previsione sulle 24 ore un calcolatore Cray-1 impiegava 100 minuti per risolvere un problema discretizzato su una griglia di circa 270 miglia di lato; se per una richiesta di maggior accuratezza spaziale si riduceva la dimensione della cella della meta si incrementava il numero delle operazioni di un fattore 16 e questo portava il tempo di calcolo ben oltre le 24 ore. Intelligenza articiale. In Giappone gli studi per lo sviluppo della prima generazione di calcolatori con interfaccia uomo macchina di tipo intelligente, cioe capace di interazioni ad alto livello come la sintesi vocale, uso di un linguaggio naturale e il riconoscimento visivo e vocale in tempo reale, utilizzano codici che dovrebbero sostenere 1 milliardo di inferenze logiche al secondo. Ogni inferenza e mediamente costituita da 100 a 1000 istruzioni macchina, questo porta alla richiesta di elaboratori capaci di almeno 1Tera istruzioni al secondo (1Tips). Sistemi di telerilevamento. L'analisi delle informazioni trasmesse dai satelliti trova grandi applicazioni in vari campi come l'agricoltura, ecologia, geologia e pianicazione del territorio. La quantita di questi dati pero implica che la loro elaborazione deve essere adata a sistemi di supercalcolo capaci di alte prestazioni ed enormi disponibilita di memoria. Per esempio le immagini inviate dal satellite Landsat sono formate da 8 parti, ciascuna rappresentante un data set di 6000x6000 pixel, ad ogni pixel vengono associati 8 bit. Questo porta a 288MB la quantita di memoria richiesta per una singola immagine che viene gestita ed elaborata da un sistema Massively Parallel Processor (MPP) della Goodyear Aerospace installato presso la NASA. Nell'ambito di tale tesi viene arontato un'altro campo di applicazione per il quale i sistemi ad alte prestazioni si dimostrano insostituibili, la Fluidodinamica Computazionale (Computational Fluid Dynamics o CFD). Nel paragrafo successivo riportiamo quindi alcune delle motivazioni per cui la CFD trova nel super calcolo, in particolare nelle metodologie e architetture parallele, una naturale risposta ai sui problemi. 12 1. Introduzione ai sistemi paralleli 1.7 Il Supercalcolo in Fluidodinamica Computazionale L'incremento della velocita dei calcolatori, della capacita delle memorie e delle possibilita oerte dai supporti per la visualizzazione e gestione delle immagini, ha promosso le tecniche numeriche per l'analisi dei fenomeni termouidouidodinamici come una valida alternativa alla sperimentazione sul campo. Infatti, mentre il costo delle prove sperimentali, sia su modello che su prototipo, e andato continuamente aumentando, sono nel contempo diminuiti i costi, a parita di "carico computazionale", delle simulazioni CFD. Inoltre, in moltissime circostanze, le prove sperimentali non sono possibili (per esempio conseguenze a lungo termine dell'eetto serra, guasti gravi in impianti chimici e nucleari), oppure possono venir eseguite su "modelli" che riproducono la realta in modo molto parziale (es. solidicazione in regime di non gravita, comportamento di organi del corpo umano). Le tecniche CFD, nate originariamente nel settore areonautico, aereospaziale ed in quello delle previsioni metereologiche, si sono poi aermate in numerosissimi altri campi applicativi, quali l'industria automobilistica, navale, chimica e manifatturiera. Recentemente le tecniche di CFD hanno fatto la loro comparsa anche in altre discipline quale ad esempio la bioingegneria. Un campo della CFD che ha tratto particolare giovamento dallo sviluppo delle prestazioni delle macchine elaboratrici e quello della Simulazione di Turbolenza con metodi diretti (Direct Numerical Simulation o DNS), cioe senza far uso di modelli stocastici per la rappresentazione dei fenomeni turbolenti, oppure con tecniche LES - Large Eddy Simulation. In quest'ultimo caso vengono risolte le scale spaziali e temporali di tipo inerziale, mentre si ricorre ad un semplice modello sub-grid per approssimare il comportamento delle scale dissipative, in generale isotropico ed indipendente dalla geometria. Per mostrare come in questo campo la presenza di adeguate risorse informatiche sia fondamentale citiamo alcune considerazioni esposte da Smits [3] a proposito della simulazione diretta di turbolenza per uidi con numero di Reynolds6 non troppo elevato. Con l'aumentare di questo parametro aumentano anche i fenomeni di vorticosita, le tecniche di DNS devono quindi utilizzare grigliature sempre piu ni, poiche, in termini semplicistici, le strutture 6 Il numero di Reynolds, Re, e un parametro di similitudine che, espresso come V L=, con V ed L velocita e lunghezza caratteristica del fenomeno in esame e viscosita cinematica, rappresenta il rapporto fra le forze d'inerzia e le forze viscose. 1.7. Il Supercalcolo in Fluidodinamica Computazionale 13 turbolente (vortici) diventano via via piu piccole. L'autore ci mostra quindi come il numero di Reynolds agisce su due punti critici per gli elaboratori e cioe la velocita di calcolo e la quantita di memoria disponibile e come le attuali disponibilita tecnologiche limitino l'implementazione di problemi sempre piu realistici: 1. La richiesta di CPU e proporzionale a Re3 e la quantita di memoria richiesta cresce con Re9=4 . Visti questi dati e considerato il trend di crescita tecnologico degli elaboratori, risulta che l'aumento di un fattore 10 del numero di Reynolds7 sarebbe possibile solo ogni 20 anni. 2. I piu comuni problemi di CFD sfruttano gia a pieno le potenze di calcolo disponibili e generalmente si tratta di problemi che si rifanno a geometrie molto semplici e a uidi canonici. Grigliature piu complesse rappresentanti strutture esistenti in realta non possono essere ancora nemeno utilizzate in LES a causa di un appesantimento (overhead) del calcolo insostenibile. 3. La simulazione diretta di turbolenza necessita di potenti mezzi di postprocessing, i risultati ottenuti (data set) da un elaborazione numerica diretta tridimensionale, come campi vettoriali delle velocita o campi scalari di pressione e temperatura, richiedono decine di MWord per ogni istante di tempo (time step). Oltre all'implementazione del codice di simulazione si rendono pertanto necessari altri ausili informatici adatti alla manipolazione di una tale mole di dati. Risulta chiaro come l'implementazione di codici CFD sempre piu aderenti alle problematiche reali produca un esponenziale richiesta di Supercalcolo che storicamente sta trovando soddisfazione nelle capacita degli elaboratori vettoriali. Oggi giorno invece questa tipologia di problemi ha trovato risposta nelle proposte di Calcolo Parallelo grazie anche al carattere di parallelismo intrinseco di alcune applicazioni di CFD che vanno dalla "semplice" soluzione di equazioni di Poisson (capitolo 6) alla soluzione diretta di fenomeni convettivi (capitolo 3). La sempre maggiore richiesta di prestazioni in questo caso non e limitata dallo sviluppo di nuove risorse ma puo essere soddisfata aumentando il grado 7 Attualmente il limite di Re e inferiore a 104 , mentre la gran parte dei problemi realistici e caratterizzata da valori di Re maggiori 106 , ed in certi casi (areonautica, navale) dell'ordine di 108 o piu. 14 1. Introduzione ai sistemi paralleli di parallelismo delle macchine gia esistenti, si puo ad esempio aumentare il numero dei nodi di un calcolatore massivamente parallelo (es. Cray-T3D) oppure si possono formare "cluster" di elaboratori a basso parallelismo (es. SGI Power Challenge). Per comprendere quanto il calcolo parallelo sia importante per lo sviluppo di problemi CFD e quale sia l'interesse in questo campo, possiamo citare la Numerical Aerodynamic Simulation Systems Division (NAS), presso la NASA Ames Research Center, uno dei centri piu avanzati per gli studi aereodinamici. Il NAS ha aumentato la propria potenza di calcolo accostando ad un sistema Cray C916 da 16 processori ben quattro sistemi massivamente paralleli, un IBM SP-2 a 160 nodi, un INTEL PARAGON da 224 nodi, una TMC CM-5 da 128 nodi e un cluster di 16 SGI R8000. Al ne di testare le prestazioni delle proprie macchine il NAS ha sviluppato un kernel di procedure CFD (the NAS PARALLEL BENCHMARKS) che in breve tempo e diventato "de facto" uno dei test standard piu importanti per tutti i sistemi di calcolo parallelo. Capitolo 2 Il sistema Parallelo CRAY T3D 2.1 Introduzione alla famiglia T3D La Cray Research, presentando il sistema CRAY T3D nel 1993, ha varato un progetto suddiviso in tre fasi che, partendo dall'attuale CRAY T3D portera allo sviluppo prima del sistema CRAY T3E (1995/96) capace di 1Top/s di picco e poi nel 1997 del sistema CRAY T3xx che sara capace di sostenere il Top/s anche in produzione continuata. Il T3D e un sistema massicciamente parallelo (Massively Parallel Processor) che puo ospitare no a 2048 processori, chiamati anche nodi. Lo sviluppo dell'ambiente di lavoro e stato particolarmente attento alla essibilita, tanto che l'utente puo contare su diversi paradigmi di programmazione come il Data Parallel, Work sharing ed il Message Passing. Il sistema T3D non e un sistema stand-alone, cioe deve essere connesso ad un altro sistema Cray che fa da host (si veda lo schema di collegamento in gura 2.1). Tutte le applicazioni per il T3D vengono compilate dal sistema host e poi eseguite sul sistema MPP T3D. Tutte le operazioni di lettura o scrittura sui sistemi di memorizzazione di massa sono gestite dal sistema host. I sistemi Cray abilitati ad essere un host per il sistema MPP sono quelli dotati di un sistema input/output di tipo IOS-E, cioe CRAY YMP/E, CRAY YMP M90 e CRAY YMP C90. 15 16 2. Il sistema Parallelo CRAY T3D Figura 2.1: Sistema host+T3D 2.2. Il nodo di calcolo 17 Figura 2.2: Architettura del nodo 2.2 Il nodo di calcolo 2.2.1 Topologia del nodo Per nodo intendiamo l'unita di calcolo elementare di un sistema massicciamente parallelo, ogni nodo comunica con gli altri attraverso la rete di interconnessione. In realta ogni nodo del T3D, schematizzato in gura 2.2, contiene due unita di elaborazione (processor element PE) indipendenti, quindi il numero di nodi sici corrisponde alla meta di quelli logici. L'accesso al nodo e garantito da un controller DMA (Direct Memory Access) asincrono, chiamato block transfer engine BLT. Il BLT gestisce il usso d'informazioni per i due PE riesce a distribuire no a 65536 Word senza che i PE debbano subire interruzioni. 2.2.2 Architettura del processore L'unita di elaborazione e rappresentata dal microprocessore DEC APLHA 21064 con tecnologia RISC, della Digital Equipment Corporation con le seguenti 18 2. Il sistema Parallelo CRAY T3D caratteristiche tecniche: 150 Mop/s di picco clock da 6.67ns superscalare (dual issue) interi a 64 bit oating point IEEE 64 bit 32 registri per gli interi 32 registri per i oating point 8KByte instruction cache (icache) 8KByte data cache (dcache) unita funzionali: integer, FP, load, store, branch Un sistema T3D puo contenere 32, 64, 128, 512, 1024 e 2048 PE come unita di elaborazione, inoltre sono presenti dei processori preposti solo alle operazioni di I/O ed alcuni PE ridondanti che vengono utilizzati in caso di guasto di quelli primari. La memoria locale consiste in una DRAM (dynamic random access memory) che puo contenere 2MWord o 8MWord. La memoria locale di un PE va a far parte della, memoria globale del sistema, sicamente distribuita ma logicamente condivisa. Il sistema si dice a memoria condivisa o shared perche un processore puo interagire con la memoria di un'altro senza che quest'ultimo se ne avveda. Per completezza riportiamo in gura 2.3 il diagramma funzionale del processore e del nodo. 2.2. Il nodo di calcolo Figura 2.3: Diagramma funzionale del processore e del nodo 19 20 2. Il sistema Parallelo CRAY T3D Utilizzando questo processore la Cray ha dimostrato come anche una CPU commerciale, progettata per altri scopi, puo essere adatta ad un sistema MPP. Il Chip in ogni caso presenta, a mio avviso, anche degli inconvenienti, come ad esempio: La cache memory e troppo piccola per molte applicazioni. La velocita della DRAM e insuciente. Non esistono istruzioni che eseguono direttamente le conversioni da intero a oating point e la radice quadrata. Le operazioni di divisione e moltiplicazione intera non sono gestite in modalita pipeline. Questo implica per una moltiplicazione intera necessiti di 20 cicli di clock ed una divisione ben 64 cicli di clock. 2.3 Rete di interconnessione La rete di interconnessione e preposta alle comunicazioni tra i PE, inoltre collega il sistema ai dispositivi di I/O (gateway). La rete (network) forma una matrice tridimensionale come si puo osservare in gura 2.4. Tra due nodi contigui esiste quindi un canale di communicazione bidirezionale (link) gestito da un network router come si puo notare in gura 2.5. Il canale prevede il passaggio di dati, segnali di controllo e di riconoscimento (gura 2.6). I dati vengono inviati sotto forma di pacchetti a 16 bit ed ogni pacchetto si compone di 2 parti: header (indirizzo, informazioni di routing) body (dati eettivi) Il body a sua volta puo presentare due tipi di informazione, identicate da opportune linee di controllo : Richiesta: il body contiene informazioni utili anche il nodo destinatario inizi un operazione ( ad esempio il PE0 vuole leggere un dato nella memoria remota del PE16). 2.3. Rete di interconnessione 21 Figura 2.4: Schema semplicato di una rete di interconnessione tridimensionale Risposta: , il body contiene delle informazioni su un'operazione eseguita dal nodo mittente (ad esempio, il PE16 risponde al nodo PE0 ponendo nel body il dato richiesto). Le Risposte e le Richieste sono dati logicamente dierenti quindi anche sicamente sono stati implementati 2 buer dierenti. 22 2. Il sistema Parallelo CRAY T3D Figura 2.5: Schema del nodo connesso alla rete tramite il network router Figura 2.6: Segnali che percorrono la rete di interconnessione 2.3. Rete di interconnessione 23 2.3.1 Connessione a topologia toroidale Il collegamento tra i nodi utilizzato sul T3D non e solo di tipo reticolare tridimensionale ma prevede anche una serie di collegamenti tra il primo e l'ultimo nodo per ogni direzione spaziale, realizzando cos una topologia toroidale. In gura 2.7 vediamo un esempio di network a toro monodimensionale . Le in- Figura 2.7: Network toroidale monodimensionale formazioni possono muoversi dal nodo 00, attraverso gli altri nodi, per poi ritornare sul mittente compiendo un'operazione ciclica. Le reti toroidali offrono una serie di vantaggi per le comunicazioni, ad esempio il nodo 00 puo comunicare con il nodo 07 senza passare per gli altri sfruttando la distanza minore. Se si verica un guasto nella linea l'informazione puo giungere ugualmente a destinazione percorrendo un altro tragitto. In gura 2.8 e 2.9 sono presentate le topologie a toro bidimensionale e tridimensionale, quest'ultima e quella implementata sul T3D. Figura 2.8: Network toroidale bidimensionale 24 2. Il sistema Parallelo CRAY T3D Figura 2.9: Network toroidale tridimensionale L'algoritmo di routing del T3D, che permette di raggiungere un dato nodo all'interno del toro tridimensionale, e memorizzato sotto forma di una tabella di look-up nel network router di ogni nodo (gura 2.3). L'indirizzo logico del nodo destinatario (ad esempio PE 16) viene tradotto in una successione ordinata di spostamenti relativi nelle tre direzioni spaziali. Possiamo osservare un esempio di connessione tra due nodi nella gura 2.10, dove l'informazione viaggia dal nodo A attraverso altri nodi raggiungendo il nodo B. In questo caso la tabella di look-up del nodo A fornisce in uscita gli spostamenti X = 1, Y = 1 e Z = 1. Nel caso di un guasto nel sistema di interconnessione la tabella di look-up fornisce un percorso alternativo che permetta di raggiungere lo stesso il nodo. 2.3. Rete di interconnessione 25 Figura 2.10: Esempio di routing tra due nodi Nella gura 2.11 il network router per poter raggiungere il nodo B, deve eseguire gli spostamenti X = 1, Y = ,2 e Z = 1. Vista l'importanza del sistema di interconnessione nei sistemi MPP, la Cray ha posto grande attenzione nel progetto della rete portando la velocita di trasmissione (Bandwidth o data rate) a 300MB/s, valore nettamente superiore a quello delle altre macchine MPP attualmente presenti sul mercato. 26 2. Il sistema Parallelo CRAY T3D Figura 2.11: Esempio di routing alternativo tra due nodi a causa di un guasto sulla linea 2.3. Rete di interconnessione 27 Figura 2.12: Nodo preposto alle comunicazioni con l'host (I/O Gateway) 2.3.2 I/O Gateways Come si osserva in gura 2.1 oltre ai nodi di calcolo esistono anche alcuni nodi dedicati alle operazioni di I/O tra il T3D ed l'elaboratore che gli fa da host. In gura 2.12 si puo notare la struttura di questi nodi ed in particolare il sistema di comunicazione tra i 2 elaboratori. Il sistema costituito da due canali di trasmissione ad alta velocita si compone: HISP, canale per trasmissione dati, capace di 200MB/s. LOSP, canale per le comunicazioni di controllo con velocita di 6MB/s. 28 2. Il sistema Parallelo CRAY T3D 2.4 Ambiente di programmazione del T3D Figura 2.13: Modello di programmazione CRAFT La Cray Research ha cercato di riunire sotto un solo ambiente, il CRAFT (Cray Research Adaptive ForTran Programming Model), una serie di paradigmi di programmazione cercando di creare un eciente e standard tool di applicazioni, che possa essere anche una base per le future architetture. Nel modello CRAFT sono conuite le conoscenze del Fortran 77, Fortran 90, HPF, Fortran D e PVM ed in piu sono stati svilupati alcuni nuovi paradigmi, come 2.4. Ambiente di programmazione del T3D 29 il Data Parallel e Work sharing, dedicati esclusivamente alle architetture di tipo Shared Memory. Lo schema dell'ambiente CRAFT puo essere osservato in gura 2.13 dove si vede la collocazione delle varie metodologie di programmazione in funzione della piu o meno esplicita gestione del parallelismo. Analizziamo ora brevemente i diversi paradigmi denendone le varie peculiarita. 2.4.1 Paradigma Message Passing Si tratta di un modello che viene utilizzato su architetture di tipo Private Memory, quindi anche il Cray T3D puo venire utilizzato in questa modalita ed in tal caso le risorse sono private per ciascun nodo. Ogni elemento di calcolo esegue un processo indipendente dagli altri (spazio degli indirizzi logici disgiunti) e le comunicazioni avvengono attraverso uno scambio di messaggi. Il sistema di comunicazione fra due processi consente fondamentalmente due tipi di operazioni: send, invio di messaggio. receive, ricezione di messaggio. Anche ci sia una communicazione tra due PE bisogna attivare il canale tra loro utilizzando queste due primitive. Le modalita di attivazione del canale sono molteplici, possiamo quindi darne una semplice descrizione. - Comunicazione diretta, ogni processo che intende inviare o ricevere un messaggio deve nominare esplicitamente il nodo ricevente o trasmittente. send(p1, messaggio), invia messaggio a p1. receive(p2, messaggio), riceve messaggio da p2. - Comunicazione indiretta, i processi utilizzano dei buer o mailbox comuni a piu nodi. send(A, messaggio) invia il messaggio alla mailbox A. receive(A, messaggio) leggi il messaggio nella mailbox A. 30 2. Il sistema Parallelo CRAY T3D - Comunicazione asimmetrica, il mittente nomina esplicitamente il desti- natario, il destinatario invece non indica il nome del processo con cui vuole comunicare. Si tratta di uno schema adatto a comunicazioni del tipo da molti a uno, da uno a molti, da molti a molti. send(p, messaggio), invio di messaggio al processo P. receive(all, messaggio), riceve messaggio da un PE qualsiasi. Oltre alla tipologia della comunicazione tra due nodi bisogna denire anche una sincronizzazione anche la trasmissione abbia luogo. Nel modello Message Passing troviamo la seguente classicazione per la temporizzazione: - send asincrono, il processo mittente e completamente asincrono, dopo aver inviato il messaggio continua immediatamente la sua esecuzione. Di conseguenza lo stato attuale del mittente non puo essere identicato dal ricevente. - send sincrono, il mittente si blocca ed attende no a che il messaggio non viene ricevuto. In questo caso il ricevente sa esattamente in che stato si trova il mittente. - receive bloccante, il processo ricevente si blocca no a che sul canale da cui vuole ricevere non viene inviato un messaggio. Il mittente conosce lo stato del ricevente. - receive non bloccante, il ricevente verica lo stato del canale, se c'e un dato lo preleva altrimenti procede nell'esecuzione. Il mittente non puo conoscere in che stato si trova il ricevente. Queste primitive fanno parte di qualsiasi compilatore che preveda l'implementazione di un paradigma di programmazione parallela basato sul Message Passing esplicito. Bisogna anche dire che essendo stato questo il primo approccio al calcolo parallelo si sono gia da tempo imposti degli standard, non uciali, ma utilizzati dalla grande maggioranza dei produttori di software. Uno di questi e certamente il PVM (Parallel Virtual Machine), del quale la Cray ha implementato su T3D la versione proposta dalla Oak Ridge Nat. Laboratory di Emory University, University of Tennessee [4]. La libreria di PVM presentata dalla Cray prevede: 2.4. Ambiente di programmazione del T3D 31 Funzioni richiamabili da Fortran, C, C++ che provvedono a: { Controllo e gestione dei Task. { Sincronizzazione dei processi. { Trasmissione e ricezione dati. { Gestione dei buer. { Conversione automatica di tipo. { Costrutti di comunicazione ad alto livello come broadcast, barrier, rendez-vous. Tre diverse versioni per i sistemi Cray: { Versione per T3D ottimizzata per sistemi omogenei massicciamente paralleli. { Versione per reti eterogenee (T3D$C90, C90$C90, C90$Workstation). { Versione per emulatore del T3D. Serie di funzioni per poter operare insieme agli altri paradigmi implementati sul T3D. Il PVM, essendo stato il primo serio apporto fornito per la programmazione parallela, risente oramai del passare del tempo. Inizialmente scritto per sistemi a basso parallelismo, il PVM, presenta seri problemi di gestione quando viene utilizzato su sistemi da centinaia o migliaia di nodi. Le comunicazioni tra processori, che costituiscono la parte piu signicativa in un sistema massicciamente parallelo, possono risultare in questo caso appesantite in modo insostenibile. Inoltre trattandosi di un modello esplicito di comunicazione (cioe si comunica solo quando e come lo stabilisce il programmatore) l'errore dovuto alla componente umana non e assolutamente da trascurarsi. Un altro fattore che ha reso obsoleto il PVM e l'oggettiva dicolta della trattazione di data-set molto grandi. Il Message Passing e dedicato ad architetture Private Memory quindi risulta chiaro che ad esempio una matrice molto grande va suddivisa in sottosistemi e distribuita ai vari PE quindi oltre all'algoritmo normale bisogna anche pensare all'overhead introdotto dalla gestione di queste strutture. 32 2. Il sistema Parallelo CRAY T3D A favore del PVM si puo in ogni caso dire che per ora esso e l'unico standard presente (o per lo meno lo diventera con il MPI Message Passing Initiative). Quindi risulta uno strumento insostituibile per quanto riguarda il porting di sorgenti su diverse piattaforme. Inoltre rimane ancora validissimo per le applicazioni di calcolo parallelo su sistemi eterogenei. Al ne di rendere piu essibile l'uso del PVM sono state aggiunte nel CRAFT due funzioni che si possono pensare collocate a meta strada tra la comunicazione esplicita con dati privati e la comunicazione implicita con dati condivisi (it Work Sharing e Data Parallel). shmem get (target, source, Pe), si trasferisce il contenuto della variabile source del nodo Pe nella variabile target senza interferire con il suo normale funzionamento. shmem put (target, source, Pe), si scrive nella variabile target del nodo Pe il contenuto della variabile source. Si puo osservare che in questa modalita di funzionamento non viene richiesta l'attivazione del canale tra i due nodi che si scambiano informazioni, questo potrebbe portare a degli errori nel caso di letture non sincronizzate pero aumenta notevolmente la velocita delle comunicazioni. 2.4. Ambiente di programmazione del T3D 33 2.4.2 Modelli impliciti di programmazione parallela L'aumento del grado di parallelsimo delle nuove architetture e di conseguenza dell'importanza delle comunicazioni tra i nodi ha creato l'esigenza di un modello secondo il quale l'utente non debba piu gestire esplicitamente gli scambi di informazioni. Nasce cos il modello MPP [5] per il T3D che e costituito fondamentalmente da due parti: Data Parallel, si tratta di un insieme di primitive che permette la distribuzione e gestione di variabili attraverso i processori (Shared Data), e la gestione di variabili private o locali a particolari nodi (Private Data). Work Sharing, rappresenta le primitive introdotte per la distribuzione, gestione e sincronizzazione dei carichi di lavoro (task) sui processori. Riferendosi a questi modelli si utilizza l'aggettivo implicito perche all'utente, che vede la memoria come un tutt'uno, risulta del tutto trasparente il lavoro eseguito dal compilatore MPP, che si accolla l'onere di gestire le memorie locali ad ogni processore. 2.4.3 Paradigma Data Parallel Le primitive del Data Parallel fondamentalmente possono essere riassunte in due istruzioni o direttive1 per il compilatore MPP: CDIR$ SHARED var1, var2, .. , varN Le variabili utilizzate come argomento della direttiva vengono distribuite omogeneamente a tutti i processori disponibili. Se un nodo modica il valore di una variabile questo sara visibile a tutti gli altri. CDIR$ PRIVATE var1, var2, .. ,varN Le variabili, argomento di questa direttiva, invece vengono replicate su ogni processore. Qualsiasi operazione eseguita su una variabile di questo tipo rimane circoscritta al nodo che l'ha eseguita, gli altri continuano a vedere la loro copia locale immutata. 1 Si usa la dicitura direttiva al compilatore per indicare un istruzione che viene inserita nel testo sorgente, Fortran nel caso del MPP Cray, ma che verra interpretata solo in fase di compilazione. Per distinguere una direttiva MPP dal resto del testo questa va fatta precedere dalla stringa CDIR$. 34 2. Il sistema Parallelo CRAY T3D Il meccanismo di distribuzione dei dati puo essere variato utilizzando il construtto :BLOCK(N), dove N rappresenta la dimensione di un blocco di elementi contigui che deve risiedere sullo stesso PE. Vediamo quindi alcuni semplici esempi di distribuzione di un array su 4 processori. REAL A(16) CDIR$ SHARED A(:BLOCK(2)) la distribuzione in cui l'array viene scomposto in blocchi da due elementi e la seguente: PE0 PE1 PE2 PE3 A(1) A(2) A(3) A(4) A(5) A(6) A(7) A(8) A(9) A(11) A(13) A(15) A(10) A(12) A(14) A(16) Se non si specica la grandezza del blocco il sistema lo determina autonomamente dividendo il numero degli elementi dell'array per i PE disponibili. REAL A(16) CDIR$ SHARED A(:BLOCK) la distribuzione in cui l'array viene scomposto risulta essere costituita da blocchi di quattro elementi: 2.4. Ambiente di programmazione del T3D 35 PE0 PE1 PE2 PE3 A(1) A(2) A(3) A(4) A(5) A(9) A(13) A(6) A(10) A(14) A(7) A(11) A(15) A(8) A(12) A(16) Per alcune applicazioni e interessante poter disporre di una distribuzione non omogenea su tutti i PE, si ricorre quindi ad una distribuzione detta degenere. Questa puo essere ottenuta omettendo la primitiva BLOCK nella dichiarazione delle variabili shared. REAL A(16) CDIR$ SHARED A(:) la distribuzione in cui l'array viene scomposto risulta essere la seguente: PE0 PE1 PE2 PE3 A(1) A(2) A(3) A(4) .. . A(16) In quest ultimo caso tutto l'array risulata memorizzato su PE0, pero rimane sempre shared e tutti gli altri processori possono leggerne o variarne il contenuto. Il meccanismo distributivo per gli array multidimensionali segue quello appena visto per i vettori monodimensionali, anche se il maggior numero di gradi di liberta porta ad un notevole appesantimento nella trattazione, quindi per 36 2. Il sistema Parallelo CRAY T3D un maggiore comprensione sara opportuno riferirsi ai manuali della CRAY. 2.4.4 Paradigma Work Sharing Dopo aver visto come si possono rendere condivise o locali le variabili sul sistema MPP introduciamo ora il modello Work Sharing che, all'interno dell'ambiente CRAFT, svolge i compiti di distribuzione, sincronizzazione e gestione dei processi. Un programma compilato per il T3D viene contemporaneamente caricato ed eseguito su ogni PE, viene cioe creato un task su ogni nodo. L'utente puo intervenire sull'escuzione dei task utilizzando alcune primitive che descriviamo ora brevemente utilizzando alcuni esempi semplicativi. MASTER Permette l'esecuzione solo su un PE, per la precisione quello indicato logicamente come PE0, tutti gli altri processi si fermano. END MASTER [,COPY (var1,....)] Si trova alla ne di un blocco MASTER, fa ripartire i task su tutti i processori dall'istruzione seguente questa direttiva. Bisogna porre molta attenzione sul fatto che tutte le istruzioni, comprese tra queste due direttive, sono eseguite solo dal processo master (quello residente su PE0). Per gli altri queste istruzioni non esistono! L'opzione COPY permette di distribuire agli altri processori, che si sono fermati, eventuali variabili locali che il master vuole far conoscere. Si esegue un cosidetta operazione di broadcast. REAL X, A(1024) CDIR$ SHARED A(:BLOCK) CDIR$ MASTER READ(5) A,X CDIR$ END MASTER, COPY X Questo esempio rappresenta un classico utilizzo della direttiva MASTER, come si puo osservare un solo processore esegue l'operazione di I/O. La variabile A essendo shared viene vista da tutti i processori, la X invece e locale e per farla 2.4. Ambiente di programmazione del T3D 37 conoscere agli altri processi bisogna specicarlo esplicitamente con l'opzione COPY. CRITICAL Identica un blocco d'istruzioni particolarmente delicato che deve essere percorso da tutti i processi pero non contemporaneamente. END CRITICAL Fine della zona critica le istruzioni successive vengono eseguite di nuovo in modalita concorrente. REAL SUM , X CDIR$ SHARED SUM CDIR$ CRITICAL SUM=SUM+X CDIR$ END CRITICAL In questo esempio si vuole ottenere la somma di tutte le variabili locali X. Se non ci fosse la zona critica ogni processore eseguirebbe contemporaneamente l'operazione sulla variabile SUM che e comune a tutti con il risultato di sovrascritture errate. BARRIER Si tratta della direttiva primaria per quanto riguarda la sincronizzazione dei processi. Quando un processo incontra questa direttiva si ferma ed attende l'arrivo di tutti gli altri e solo quando tutti hanno raggiunto questo punto essi ripartono insieme. Si tratta di una direttiva molto critica per due ragioni: puo rallentare di molto il programma e se un processo non giunge alla barriera gli altri rimangono bloccati (si entra in un live lock). Bisogna ricordare anche che esistono dei punti di sincronizzazione impliciti come: Prima di una regione MASTER 38 2. Il sistema Parallelo CRAY T3D Alla ne di un ciclo distribuito (DOSHARED) All'inizio ed alla ne di subroutine Le barriere implicite possono essere eliminate usando l'istruzione NOBARRIER. Attenzione peroo questa operazione velocizza l'esecuzione ma puo essere causa di errore! Presentiamo ora il construtto piu importante per la suddivisione dei lavori e cioe : DOSHARED Con questa istruzione si distribuiscono i cicli di un loop attraverso i PE. Ogni iterazione viene associata ad un processore dierente, cos che alla ne del ciclo ogni PE ha processato un sottoinsieme dello spazio delle iterazioni. La sintassi di un DOSHARED e la seguente: CDIR$ DOSHARED (I1,I2,... ,In) ON array-ref DO I1 = L1, U1, S1 DO I2 = L2, U2, S2 ... DO In = Ln, Un, Sn ... END DO ... END DO END DO Il ciclo deve essere strettamente nidicato ed inoltre I1,I2,... ,In devono comparire nell'ordine esatto di nidicazione. Vediamo ora un esempio per cercare di capire la legge di distribuzione delle iterazioni. REAL X(0:63), Y(0:63) CDIR$ SHARED X(:BLOCK), Y(:BLOCK) CDIR$ DOSHARED (I) ON X(I) DO I = 0, 63 Y(I) = X(I) + Y(I) END DO 2.4. Ambiente di programmazione del T3D 39 La variabile X e distribuita omogeneamente su 64 processori, quindi un elemento per processore. Ogni iterazione viene adata al PE sul quale si trova X(I), il PE0 sul quale e presente X(0) esegue l'iterazione per I=0, il PE1 sul quale e presente X(1) esegue l'iterazione per I=1 e cos di seguito per ogni PE. Il tempo totale di esecuzione del ciclo si e quindi ridotto ad 1=64. Bisogna porre molta attenzione su come viene distribuito l'array Y: Se Y ha la medesima distribuzione di X l'operazione di somma viene ese- guita su entita locali ad ogni PE quindi non esiste nessuna comunicazione tra nodi. Se Y e distribuita diversamente bisogna attendere che l'elemento Y(I) venga letto da un PE remoto, si esegua localmente la somma con X(I) e che si riscriva il nuovo valore di Y(I) nel PE remoto. Questo puo portare ad un rapido decadimento delle prestazioni. Presentiamo ora un esempio in cui si mostra come una programma sequenziale possa essere minimamente modicato con i construtti di Work Sharing e Data Parallel ottenendo pero un incremento delle prestazioni straordinario. Il programma risolve un classico prodotto fra matrici : SUBROUTINE MATMUL(A, B, C, L, M, N) DIMENSION A(L,M), B(M,N), C(L,N) DO K=1,N DO I=1,L DO J=1,M C(I,K) = C(I,K) + A(I,J) * B(J,K) ENDDO ENDDO ENDDO END L'utente che vuole implementare questo codice su una macchina MPP utilizzando un paradigma implicito non deve far altro che stabilire la disposizione degli array attraverso i PE e distribuire le iterazioni dei cicli nidicati, ottenendo cos il seguente risultato: SUBROUTINE MATMUL(A, B, C, L, M, N) 40 2. Il sistema Parallelo CRAY T3D DIMENSION A(L,M), B(M,N), C(L,N) CDIR$ SHARED A(:BLOCK,:),B(:,:BLOCK),C(:BLOCK,:BLOCK) CDIR$ DOSHARED (K,I) ON C(I,K) DO K=1,N DO I=1,L C **** QUESTO CICLO NON VIENE DISTRIBUITO **** DO J=1,M C(I,K) = C(I,K) + A(I,J) * B(J,K) ENDDO C *********************************************************** ENDDO ENDDO END Si e cercato una distribuzione che garantisca il maggior numero di dati locali su ogni processore che esegue le iterazioni. Si noti come ogni PE, gestendo per intero il ciclo piu interno (indice j), si trovi ad operare con tutta la parte delle matrici identicata dallo stesso indice j, cioe la riga j-esima di B e la colonna j-esima di A. Si e scelta una distribuzione degenere per la matrice A secondo le colonne e per B invece degenere secondo righe. Questo fa si che il ciclo interno lavori sempre con dati che si trovano contemporaneamente sullo stesso PE. Nel descrivere le opportunita oerte dal CRAFT non possiamo dimenticare le funzioni intrinseche introdotte dal MPP e quelle gia presenti nel Fortran 90 che sono state modicate per l'utilizzo di dati distribuiti come ad esempio: FUNZIONI INTRINSECHE DEL MODELLO MPP RESULT RESULT RESULT RESULT RESULT RESULT = = = = = = SUM(ARRAY,DIM,MASK) PRODUCT(ARRAY,DIM,MASK) MINVAL(ARRAY,DIM,MASK) MAXVAL(ARRAY,DIM,MASK) MINLOC(ARRAY,MASK) MAXLOC(ARRAY,MASK) Parallel Prefix Functions 2.4. Ambiente di programmazione del T3D RESULT RESULT RESULT RESULT = = = = PRESUM(ARRAY,DIM,MASK) PREPROD(ARRAY,DIM,MASK) PREMIN(ARRAY,DIM,MASK) PREMAX(ARRAY,DIM,MASK) Segmented Scan Functions RESULT RESULT RESULT RESULT = = = = SCANSUM(ARRAY,STOP,DIM,MASK) SCANPROD(ARRAY,STOP,DIM,MASK) SCANMIN(ARRAY,STOP,DIM,MASK) SCANMAX(ARRAY,STOP,DIM,MASK) Data Mapping Functions CT LOW HIGH HOME PES = BLKCT(A,D,P) = LOWIDX(A,D,P,K) = HIIDX(A,D,P,K) = HOME(X) = PES(A,D) Query Functions RESULT = IN_PARALLEL() RESULT = IN_DOSHARED() RESULT = IS_SHARED(A) Data Access Routines CALL READ_UNKNOWN(V,A(I)) CALL WRITE_UNKNOWN (A(I),V) Task Identity Function RESULT = MY_PE() Shared Pointer Routines 41 42 2. Il sistema Parallelo CRAY T3D CALL CALL CALL CALL SHLOC (ptr, ary) SHMALLOC (ptr, allocation_status) SHMALLOC (ptr, allocation_status, length) SHFREE (ptr) FUNZIONI INTRINSECHE DEL FORTRAN 90 1. ALL 2. ANY 3. COUNT 4. CSHIFT 5. DOT_PRODUCT 6. EOSHIFT 7. MATMUL 8. MAXLOC 9. MAXVAL 10. MERGE 11. 12. 13. 14. 15. 16. 17. 18. 19. MINLOC MINVAL PACK PRODUCT RESHAPE SPREAD SUM TRANSPOSE UNPACK 2.5 Osservazioni In questo capitolo si e voluta dare un panoramica su alcune delle possibilita oerte da un sistema come il Cray T3D e dal suo ambiente di sviluppo CRAFT. La capacita di sfruttare al meglio queste potenzialita rimane pero un problema di non facile soluzione. Infatti, nei problemi applicativi, le variabili in gioco sono molte e non ben denite, come ad esempio: La distribuzione dei dati. E meglio utilizzare dati globali o privati? Distribuiti uniformemente o no? Il numero di processori. Si puo puntare su un sistema massicciamente parallelo o questo non e strettamente necessario? La scelta dell'algorimo piu adatto. Quali sono i fattori che possono inuenzare una determinata scelta, il numero di operazioni da eseguire, la 2.5. Osservazioni 43 memoria richiesta, la percentuale di lavoro che si puo parallelizzare, la quantita di communicazioni, la scalabilita, la portabilita? La distribuzione dei task. E meglio puntare su macro task che svolgono compiti anche impegnativi o piuttosto distribuire il lavoro in modo atomico puntando sul parallelismo estremo? Il programmatore non puo aspettarsi neanche grande aiuto nel software esistente; ci troviamo appena nella fase iniziale dello sviluppo di queste metodologie, in cui non esiste praticamente nulla di standardizzato e consolidato. E peraltro importante notare che l'elevato tasso di mortalita di aziende, la cui unica linea di produzione era costituita da calcolatori paralleli, e imputabile, a mio avviso, ad una scarsa penetrazione di tali macchine proprio nei settori applicativi per i quali il calcolo intensivo rappresenta una risorsa insostituibile. L'utilizzazione pratica di tali elaboratori e stata senza dubbio frenata da un strategia di mercato che ha privilegiato dei settori di nicchia come puo essere l'informatica di base ma ha fornito pochissimi strumenti, specialmente software, utilizzabili nelle applicazioni reali. La CRAY quindi, in concorrenza con altri nomi famosi quali IBM, Silicon Graphics etc., si sta muovendo in questa direzione proponendo nuove versioni delle sue applicazioni che sono destinate a diventare, senza dubbio, un punto di riferimento per lo sviluppo delle metodologie parallele. Le istruzioni e le direttive, presentate nell'ambito di questa tesi, rappresentano quindi solo una minuscola pare di quelle eettivamente esistenti, servono pero ad aiutare l'utente nella scelta piu adatta. Una completa risposta alle piu diverse esigenze puo essere indubbiamente ottenuta consultando i manuali della CRAY RESEARCH INC. come: CF77 Fortran Language Reference Manual (SR-3772) MPP Fortran Reference Manual (SR-2504) CF77 Compiling System, Volume 4: Parallel Processing Guide (SR-307) PVM Message-Passing Library Interface EMU T3D Emulator User's Guide Intoduzione alla Programmazione Parallela su Cray T3D[6], Cineca 44 2. Il sistema Parallelo CRAY T3D Inoltre possono essere consultate le guide on-line dei sistemi Cray come man ed docview per l'utilizzo di tutti i tool come Apprentice, Xbrowse e TotalView. Ricordiamo inne la disponibilita del seguente nodo INTERNET Web : <http://www.cray.com> dove sono disponibili, on-line, informazioni, aggiornamenti e notizie utili su tutti i sistemi Cray. Da tale nodo sono stati prelevati gli schemi riportati in questo capitolo. Capitolo 3 Il fenomeno della convezione 3.1 Introduzione Fra le modalita di scambio termico (trasmissione del calore), quella detta per convezione e dovuta a due meccanismi: oltre al trasferimento di energia termica associata ai moti di agitazione delle molecole, detto conduzione termica, vi e il trasporto di calore dovuto al moto macroscopico medio (bulk) del uido. Infatti, in presenza di gradienti di temperatura, tale moto del uido da luogo a scambi termici e poiche la trasmissione del calore per convezione e intimamente legata al moto macroscopico del uido, lo studio di tale modalita di scambio termico comporta l'utilizzo delle conoscenze e della metodologie proprie della uidodinamica. I problemi che riguardano la convezione possono essere distinti in tre classi, in relazione all'origine del moto del uido. Se il uido e in movimento rispetto alla supercie del corpo con velocita imposta da un propulsore ed e indipendente dalla temperatura del corpo la convezione e chiamata forzata. Quando il movimento del uido e provocato unicamente da gradienti locali di densita, indotti da dierenze di temperatura nel uido, la convezione e naturale o libera. Si parla di convezione mista quando gli eetti dovuti al moto e alle spinte di galleggiamento sono comparabili e, quindi, non e lecito trascurare un processo rispetto all' altro. Al ne di determinare il tipo di problema convettivo, e percio, importante 45 46 3. Il fenomeno della convezione individuare i contributi relativi ai due meccanismi; a questo riguardo risulta molto utile introdurre il rapporto tra le forze di galleggiamento e le forze inerziali, che puo essere assunto come criterio di analisi di un fenomeno convettivo generico. Tale rapporto e comunemente espresso in funzione di due gruppi adimensionali, chiamati numero di Reynolds, Re, e numero di Grashof, Gr. Sebbene le loro espressioni, per i problemi arontati, veranno precisate nel seguito, essi vanno cos interpretati: d'inerzia ; Gr = Forze di galleggiamento Re = Forze Forze viscose Forze viscose Per individuare i diversi regimi di scambio termico, si adatta quindi la seguente classicazione: , Gr=Re2 >> 1 convezione naturale prevalente , Gr=Re2 ' 1 convezione mista , Gr=Re2 << 1 convezione forzata prevalente Riguardo la trasmissione del calore, gli eetti della sovrapposizione del galleggiamento e del usso forzato dipendono dalla direzione relativa tra forze di galleggiamento e direzione del usso. Si suole distinguere tre casi: stessa direzione (assisting ow), direzione opposta (opposing ow) e direzione perpendicolare (transverse ow). Un usso forzato verso il basso, ovvero verso l'alto, che lambisce un piano verticale riscaldato, sono esempi rispettivamente di opposing ow e di assisting ow. E importante sottolineare che il trasporto di calore in presenza di convezione mista e molto diverso dai casi di sola convezione naturale o convezione forzata. Per esempio, nel caso di un piano verticale riscaldato, nell' ipotesi di assisting ow, if usso termico e quindi il relativo coeciente di scambio termico convettivo, ha un valore anche cinque volte superiore al corrispondente usso termico in convezione forzata; nell' ipotesi di opposing ow, invece, si ha una riduzione del coeciente convettivo associato alla convezione mista. La caratteristica piu importante della convezione mista, in condotti orizzontali, e dovuta all'insorgere di instabilita non-stazionarie di Rayleigh-Benard, rappresentate da moti secondari di diversa natura e complessita. Questi possono manifestarsi, a seconda delle condizioni termosiche, come vortici longitudinali stazionari - allineati cioe con la direzione principale del moto, come onde trasversali non stazionarie o come una loro combinazione nonlineare. All'aumentare del valore di Gr, a parita di Re, il moto puo evolvere da 3.1. Introduzione 47 stazionario in periodico, deterministico aperiodico ed inne caotico/turbolento [7]. Questi vortici (celle di convezione) sono dovuti alle forze di galleggiamento generate dalle variazioni della temperatura nel uido, ed hanno la caratteristica di incrementare in modo signicativo lo scambio termico relativo alla convezione forzata. Altri parametri che inuenzano il fenomeno sono: regime di moto (laminare o turbolento), usso con direzione principale verso l'alto o verso il basso, geometria, inclinazione del condotto e condizioni al contorno. Nel caso di un canale in cui la temperatura delle pareti venga mantenuta uniforme, la temperatura del uido tendera asintoticamente verso la temperatura delle pareti, riducendo di conseguenza l'eetto del galleggiamento e quindi i moti secondari ridurranno la loro intensita, sino a scomparire del tutto per le sezioni lontane dalla regione di ingresso. In convezione mista, altri due aspetti recitano un ruolo importante. Essi sono il rapporto tra la lungezza lx e la larghezza ly del condotto e l'eventuale presenza di un tratto iniziale non riscaldato, in cui il uido abbia la possibilita di raggiungere il completo sviluppo idrodinamico e iniziare quindi il tratto di sviluppo termico con il prolo di velocita parabolico. Quest'ultimo aspetto e molto importante per numeri di Reynolds Re bassi, mentre lo e di meno se consideriamo fuidi con elevato numero di Prandtl Pr. Le conoscenze no ad ora acquisite nel campo della convezione mista in canali orizzontali o variamente inclinati, sono alquanto limitate e frammentarie, ottenute perloppiu attraverso misure sperimentali, mirate soprattutto ad ottenere correlazioni di scambio termico. Tuttavia, aspetti quali stabilita del moto, stazionarieta, i meccanismi di transizione laminare-turbolenta, rimangono ancora, in buona parte, sconosciuti. Gli studi nora eseguiti a tal ne, per via sperimentale o per via numerica, denotano una notevole discordanza, attribuibile, a mio avviso, alle dicolta associate alla sperimentazione in condizioni controllate, ed alle notevolissime risorse di calcolo necessarie qualora il problema venga arontato a mezzo di completi modelli numerici tridimensionali. Parte dell'attivita svolta durante questa tesi e stata nalizzata alla messa a punto di modelli numerici accurati ed ecienti, che consentono di migliorare le conoscenze della termouidodinamica nei problemi di convezione mista. 48 3. Il fenomeno della convezione 3.2 Formulazione matematica Il fenomeno della convezione mista viene descritto da un sistema di equazioni composto da: Equazione di continuita Equazione della quantita di moto Equazione dell' energia Queste equazioni descrivono il comportamento e l'evoluzione delle componenti di velocita u e delle proprieta termodinamiche: pressione P , densita e temperatura T in funzione del tempo e delle coordinate spaziali. Tale sistema di equazioni e comunemente detto equazioni di Navier-Stokes. In riferimento agli obiettivi di questa tesi, e lecito introdurre immediatamente delle semplicazioni nelle equazioni, e cioe: 1. Il uido e Newtoniano, cioe la relazione fra sforzi di taglio e deformazioni e di tipo lineare; 2. L'unica forza di volume e dovuta al galleggiamento (spinta di Archimede); 3. Il uido non partecipa agli scambi termici per irraggiamento; 4. La dissipazione viscosa, nel bilancio dell'energia, e trascurabile; 5. Il uido puo considerarsi incomprimibile, cioe la densita dipende solo dalla temperatura (e non dalla pressione) ed il termine di comprimibilita, nell'equazione dell'energia, e trascurabile. In tali ipotesi le equazioni dimensionali, in forma scalare e per un sistema di riferimento cartesiano, sono: Equazione della continuita @ + @u + @v + @w = 0 @ @x @y @z (3.1) 3.2. Formulazione matematica 49 Equazione della quantita di moto in direzione x @u @P @ @u 2 @ + u ru = , @x + @x 2 @x , 3 r u + (3.2) @u @v @ @w @u @ + @y @y + @x + @z @x + @z Dove rappresenta la viscosita dinamica del uido, che puo essere espressa come: = : viscosita cinematica Equazione della quantita di moto in direzione y @v @P @ @v @u @ + u rv = , @y + @x @x + @y + @ @v 2 @ @w @v + @y 2 @y , 3 r u + @z @y + @z (3.3) Equazione della quantita di moto in direzione z Avendo assunto l'asse z parallelo al campo di forze gravitazionale, nella componente z dell'equazione della quantita di moto compare la forza di galleggiamento, ,g. Il segno negativo deriva dall'aver scelto il verso positivo dell'asse z verso l'alto. @w @P @ @w @u @ + u rw = , @z + @x @x + @z + @ @w @v @ @w 2 + @y @y + @z + @z 2 @z , 3 r u , g Equazione dell'energia c @T @ + cu rT = r (krT ) (3.4) (3.5) dove c e il calore specico e k la conduttivita termica del uido. La (3.5) e stata scritta nell'ipotesi di assenza di sorgenti (o pozzi) di energia termica nel uido. 50 3. Il fenomeno della convezione Assumendo ulteriormente che il fenomeno sico in esame sia caratterizzato da dierenze di temperatura non particolarmente elevate, si puo utilizzare l'ipotesi di Oberbeck-Boussinesq per cio che riguarda le caratteristiche del uido: a. Tutte le proprieta termosiche del uido sono costanti (indipendenti dalla pressione e dalla temperatura), con l'eccezzione della densita nel termine di galleggiamento ,g. b. La legge di dipendenza della densita dalla temperatura, nel termine di galleggiamento, puo essere linearizzata secondo la: =0 = 1 , (T , T0 ) (3.6) dove e il coeciente di dilatazione termica, considerato costante e pari a: @ = , 1 @T (3.7) Per cio che riguarda il termine di galleggiamento, si puo osservare che, nell'ipotesi di uido in quiete (u = 0) ed isotermo a temperatura T0 , in assenza di ussi termici, il gradiente verticale di pressione e dovuto alla sola componente idrostatica. L'equazione di quantita di moto si riduce alla: 0 0 = , @P @z , 0 g (3.8) con P0 pressione statica corrispondente alla densita 0 e temperatura T0 . Con le ipotesi viste, e tenendo conto delle (3.6)-(3.8), le equazioni (3.1) - (3.5) si semplicano nelle: Equazione della continuita @u + @v + @w = 0 @x @y @z (3.9) 51 3.3. Determinazione delle equazioni adimensionali Equazione della quantita di moto Direzione x: @u + u ru = , 1 @P + r2u @ 0 @x Direzione y: @v + u rv = , 1 @P + r2v @ 0 @y Direzione z : @w + u rw = , 1 @ (P , P0) + r2 w , g (T , T ) 0 @ @z 0 (3.10) (3.11) (3.12) Equazione dell'energia @T + u rT = ,r2 T (3.13) @ dove = k=c rappresenta la viscosita termica, e la (3.12) e stata ottenuta sottraendo la (3.8) alla (3.4). Si noti, inne, che nel caso dell'equazione di trasporto dell'energia, (3.13), il campo di velocita e assunto noto, e quindi il termine convettivo risultera lineare. Viceversa, per l'equazione di quantita di moto , il campo delle velocita e incognito, e quindi il termine convettivo diventa non lineare. 3.3 Determinazione delle equazioni adimensionali In questa sezione, per chiarezza, utilizzeremo la convenzione di indicare le grandezze dimensionali con l'apice e quelle adimensionali senza apice. Introducendo delle grandezze caratteristiche del problema possiamo normalizzare i termini nelle equazioni, secondo le metodologie tipiche della similitudine. Si ottengono quindi delle equazioni che esprimono il comportamento di grandezze non dimensionali. I vantaggi di tale approccio sono, essenzialmente: Riduzione del numero di parametri caratterizzanti il problema, tramite la loro combinazione in opportuni gruppi adimensionali; 52 3. Il fenomeno della convezione Generalita delle soluzioni ottenute. Le grandezze di riferimento sono : H dimensione di riferimento del problema. q uref = gH (Ts0 , T00 ), velocita di riferimento del problema. Le equazioni precedenti vengono quindi normalizzate attraverso l'uso delle seguenti variabili non dimensionali: x0i xi = H per le coordinate spaziali 0 ui = uui = q u0i gH (Ts0 , T00 ) ref = 0 uref = 0 H per le velocita q gH (Ts0 , T00 ) per il tempo H 0 0 P = gP(T,0 ,PT0 0 ) H per la pressione 0 T 0) 0 T = ((TT 0 , , T 0) per la temperatura s 0 s 0 0 Ricordiamo anche le seguenti denizioni per i gruppi adimensionali: 3 0 0 Re = uref H ; Gr = gH (Ts , T0) ; Pr = 2 Con Re, numero di Reynolds; Gr, numero di Grashof; Pr, numero di Prandtl. Si ottengono in questo modo le seguenti formulazioni non dimensionali delle equazioni di trasporto: 3.3. Determinazione delle equazioni adimensionali 53 Equazione di continuita @u + @v + @w = 0 @x @y @z (3.14) Equazione della quantita di moto Direzione x: @u + u ru = , @P + 1 r2 u @ @x Gr 12 Direzione y: @v + u rv = , @P + 1 r2v @ @y Gr 12 Direzione z : @w + u rw = , @P + 1 r2w + T @ @z Gr 12 (3.15) (3.16) (3.17) Equazione dell'energia @T + u rT = 1 r2 T @ Gr 21 Pr (3.18) 54 3. Il fenomeno della convezione 3.4 Determinazione delle equazioni discrete nel tempo Nel ricavare ora le corrispondenti espressioni discrete delle precedenti equazioni continue adimensionali, si utilizzera la "~" per indicare le grandezze incognite relative al passo di tempo successivo (n + 1) nell'equazione della quantita di moto. La ragione di questa scelta e dovuta al desiderio di mantenere una certa omogeneita di scrittura delle variabili con i capitoli successivi. Si esegue la discretizzazione temporale, come proposto da Biringen[8], utilizzando uno schema implicito alla Crank-Nicolson per il termine diusivo ed uno schema esplicito alla Adams-Bashforth per il termine convettivo. Riscriviamo i termini convettivi, nora espressi nella forma non conservativa, preferendo utilizzarli in modo conservativo. Consideriamo la seguente uguaglianza, dove ' indica la generica quantita scalare: r (u') = (r u)' + u r' Utilizzando l'equazione di continuita r u = 0 risulta: r (u') = u r' Possiamo quindi denire i seguenti termini: u ru = r (uu) = ,Hu u rv = r (uv) = ,Hv u rw = r (uw) = ,Hw u rT = r (uT ) = ,HT Per semplicita deniamo anche: @P = L P x @x @P = L P y @y @P = L P z @z 3.4. Determinazione delle equazioni discrete nel tempo 55 Equazione della quantita di moto Direzione x: u~n+1 , un = 1 h3H n , H n,1i + 1 1 r2 u~n+1 + un u 2 u 2 Gr 12 (3.19) ,LnxP Direzione y: v~n+1 , vn = 1 h3H n , H n,1 i + 1 1 r2 v~n+1 + vn v 2 v 2 Gr 21 (3.20) ,LnyP Direzione z : w~n+1 , wn = 1 h3H n , H n,1 i + 1 1 r2 w~n+1 + wn (3.21) w 2 w 2 Gr 12 n n ,Lz P + T Equazione dell'energia T n+1 , T n = 1 h3H n , H n,1 i + 1 1 r2 T n+1 + T n T 2 T 2 Gr 21 (3.22) 56 3. Il fenomeno della convezione 3.5 Sistema risolvente Se, nelle equazioni precedentemente scritte, portiamo a sinistra le grandezze incognite, individuate con la ~ e relative al passo di tempo nuovo (n + 1); ed a destra tutte le grandezze note, in quanto relative ai passi di tempo attuale (n) e precedente (n , 1), otteniamo il seguente sistema: 8 > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > < > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > : , , 2 v~n+1 , vn , 2 + , n w~ n+1 , w , 2 + , 2 , n+1 , un = 3H n , H n,1 12 r u~ u u 2 Gr + 1 21 r2 un , Lnx P Gr u~n+1 , un , 1 1 r Gr 2 1 1 1 Gr 2 1 Gr 21 , vn = 2 3Hvn , Hvn,1 r2vn , LnyP 1 Gr 21 2 ,v~n+1 2, n r w~n+1 , w = 2 3Hwn , Hw r2wn , LnzP + T n h 2 ,T n+1 , T n = 3H n , H n,1 r 12 T T 2 Gr Pr 1 r2T n + 1 Gr 2 Pr T n+1 , T n , 2 1 (3.23) n,1 i Capitolo 4 Utilizzo del metodo dei Volumi Finiti 4.1 Il metodo dei Residui Pesati Il concetto base di questo metodo, descritto in dettaglio da Finlayson[9], e semplice ed interessante. Rappresentiamo un'equazione dierenziale nel seguente modo: L() = 0 (4.1) Approssimiamo la soluzione con un polinomio : = a0 + a1 x + a2 x2 + + am xm (4.2) dove ai sono dei parametri incogniti. La sostituzione della nell'equazione (4.1) produce un residuo R, denito da: R = L() (4.3) Si cerchera quindi di minimizzare il residuo introducendo l'integrale: Z Wi R dx = 0 (4.4) dove Wi e una funzione peso ed i limiti di integrazione sono deniti dal dominio di interesse. 57 58 4. Utilizzo del metodo dei Volumi Finiti Φ(2) Φ(3) Φ(1) Φ(4) Φ(5) Φ(6) Φ(7) X x(1) x(2) x(3) x(4) x(5) x(6) x(7) Figura 4.1: Funzione lineare a tratti approssimante la soluzione Risolvendo l'integrale (4.4) con m +1 funzioni peso dierenti si ottengono il numero necessario di condizioni sucienti per determinare gli m + 1 paramentri incogniti (ai ). Esistono molte versioni del metodo che pero si dierenziano sostanzialmente solo per la scelta di opportune famiglie di funzioni peso. Invece di considerare come approssimazione della un polinomio con i coe. incogniti, prendiamo come parametri i valori della in alcuni punti e consideriamo come la funzione a tratti che ne deriva (gura 4.1). Consideriamo una sezione del dominio di integrazione ottenendo dei sottoinsiemi ,i che chiameremo celle (esempio in gura 4.2). Applichiamo il metodo dei Residui Pesati, scegliendo come funzioni peso una particolare famiglia di funzioni: Wi (x) = ( 1 x 2 ,i 0 altrove (4.5) otteniamo cos degli integrali deniti ciascuno sulla propria cella : Z ,i L() dx = 0 (4.6) Questa variante del metodo dei Residui Pesati viene anche detta Metodo dei Volumi Finiti (Control Volume Method[10]). 59 4.2. Il metodo dei Volumi Finiti Φ(2) Φ(3) Φ(4) Φ(5) Φ(6) Φ(7) X ∆ x(2) ∆x(3) ∆ x(4) ∆ x(5) ∆x(6) ∆x(7) Figura 4.2: Esempio di scomposizione di un dominio 1D in celle di grandezza xi 4.2 Il metodo dei Volumi Finiti Questo metodo per la discretizzazione delle equazioni dierenziali puo essere quindi schematizzato secondo i seguenti punti: 1. Comporre la griglia (grid o mesh) dei punti per quali si vuole determinare la soluzione approssimata. 2. Suddividere il dominio originale in tante celle disgiunte (volumi di controllo). Ciascuna cella contiene al suo interno un nodo della griglia. 3. Integrare l'equazione dierenziale su ogni volume di controllo. 4. Utilizzare la (funzione a tratti) per valutare la variazione della tra i punti della griglia. L'ordine di approssimazione ovviamente dipende dalla funzione a tratti scelta. L'operazione che si e fatta, cioe integrare un'equazione dierenziale per poi discretizzarla assomiglia molto, come dice il Patankar[10], a "voler preparare le patatine fritte partendo dal pure". In realta l'approccio classico per la descrizione di molti problemi sici, come quelli termouidodinamici, parte dal 60 4. Utilizzo del metodo dei Volumi Finiti volume di controllo nito. Su di questo vengono applicati i principi di conservazione, ad esempio quelli ottenuti dalla termodinamica classica per sistemi aperti, si ottengono cos le equazioni in forma integrale. Solo l'introduzione del passaggio al limite trasforma poi l'equazione integrale in quella dierenziale. L'equazione discreta ottenuta con il metodo dei Volumi Finiti(Finite Volume) mantiene quindi il carattere di conservativita della grandezza interessata sul volume di controllo nito, cos come l'equazione dierenziale lo mantiene per il volume innitesimo. E senz'altro questa la caratteristica (ed il vantaggio rispetto ad altre tecniche) piu saliente del metodo dei Volumi Finiti. Ricordiamo che la proprieta di conservativita integrale delle grandezze come massa, quantita di moto ed energia, permane tale per ogni sottoinsieme di celle e per qualsiasi numero di celle, anche se questo diviene molto basso (cioe la griglia si dirada di molto). Questa ultima proprieta non e assolutamente vera per altre tecniche come le Dierenze Finite per le quali la conservativita globale non e garantita. Presentiamo ora un esempio di applicazione di questa tecnica all'equazione dell'energia. 4.3 Equazione discretizzata dell'energia Ricordiamo l'equazione dell'energia discretizzata nel tempo, proposta nel capitolo 3: , T n+1 , T n , 2 ,T n+1 2 Gr 12 Pr r + 1 1 Gr 12 Pr , T n h = 2 3HTn , HTn,1 i r2 T n Utilizzando le seguenti denizioni cerchiamo di riscrivere l'equazione in modo piu compatto: T n+1 = T n+1 , T n k = 1 Gr 12 Pr Si ottiene la seguente forma: [T n+1 , 2 kr2 T n+1 ] = , 2 [3r (uT )n , r (uT )n,1 ] + kr2 T n (4.7) 61 4.3. Equazione discretizzata dell'energia Utilizzando la tecnica dell'Approximate Factorisation1 scomponiamo il termine sinistro di questa equazione nel prodotto di piu fattori ottenendo: " #" #" # @ 2 1 , k @ 2 1 , k @ 2 T n+1 = rhsn 1 , 2 k @x 2 2 @y2 2 @z 2 (4.8) dove rhsn rappresenta il termine destro dell'equazione (4.7). Questa equazione puo quindi essere scomposta nel seguente sistema: 8 " > > > > > > > > > > > " > > > > < # @ 2 T^ 1 , 2 k @x 2 = rhsn # @ 2 T~ 1 , 2 k @y 2 > > > > > " > > > > > > > > > > : = T^ (4.9) # @ 2 T n+1 = T~ 1 , 2 k @z 2 Risoluzione in direzione x Applichiamo ora la tecnica dei Volumi Finiti alla prima equazione: " # 2 T^ @ T^ , 2 k @x2 = , 2 [3r (uT )n , r (uT )n,1 ] +kr2T n (4.10) Integriamo sul volume di controllo, rappresentato come proiezione nelle gure 4.3 e 4.4, il termine sinistro: " # 2 ^ T^ , 2 k @@x2T dx dy dz v:c: Z (4.11) 1 L'Approximate Factorisation consiste nel sostituire al termine sinistro dell'equazione (4.7) un prodotto di fattori, ciascuno contenente la derivata rispetto ad una sola direzione. L'errore che si compie e funzione di ( )2, cioe dello stesso ordine di quello introdotto dalla discretizzazione temporale utilizzata. Per maggiori approfondimenti si veda in [11], al capitolo 8, pp. 254-255 62 4. Utilizzo del metodo dei Volumi Finiti x T i j-1 k ∆ Y j-1 y Vi j-1 k Ti-1 j k Ti U i-1 j k T i+1 j k jk ∆Y j Uijk Vi j k ∆ Y j+1 Ti j+1 k ∆ X i-1 ∆X i ∆ X i+1 Figura 4.3: Volume di controllo e griglia secondo il piano X-Y 63 4.3. Equazione discretizzata dell'energia z T i j k+1 x ∆ Z k+1 Wi j k Ti-1 j k Ti U i-1 j k T i+1 j k jk ∆Z k Uijk W i j k-1 ∆ Z k-1 Ti j k-1 ∆ X i-1 ∆X i ∆ X i+1 Figura 4.4: Volume di controllo e griglia secondo il piano X-Z 64 4. Utilizzo del metodo dei Volumi Finiti Z ^ dy dz , k Tdx 2 v:c: ZZ s:c " # @ T^ j , @ T^ j dy dz @x E @x W (4.12) Introduciamo delle semplicazioni ipotizzando che T^ sia costante su tutto il volume di controllo, valutiamo inoltre il valore delle derivate sulle pareti E ed W supponendo che l'andamento della funzione tra i punti della griglia sia lineare a tratti. In questo modo la derivata viene rappresentata con una dierenza centrale del secondo ordine, l'ordine di approssimazione spaziale quindi viene a coincidere con quello della discretizzazione temporale. @ T^ j ' T^i+1;j;k , T^i;j;k @ T^ j ' T^i;j;k , T^i,1;j;k (4.13) xi+1 +xi xi +xi,1 @x E @x W 2 2 Deniamo i coecienti: x+i = 2 k x 2+ x ; x,i = 2 k x +2x ; xi = ,x+i , x,i i+1 i i i,1 Per il generico volume di controllo v:c:(i; j:k) integrando l'equazione (4.12) il risultato e: T^i;j;k xi yj zk , [x,i T^i,1;j;k + xi T^i;j;k + x+i T^i+1;j;k ]yj zk che si puo scrivere in forma piu compatta come: [x,i T^i,1;j;k + (xi , xi )T^i;j;k + x+i T^i+1;j;k ]yj zk (4.14) Applichiamo il metodo dei Volumi Finiti al termine destro (rhsn ). Questo termine si compone di due fattori che vanno discretizzati : r uT ; r2T Vediamo prima come trasformare r uT : Z v:c: r (uT )dv = = Z s:c Z s:c T u n^ ds = Tu dy dz + Z s:c Tv dx dz + Z s:c Tw dx dy 4.3. Equazione discretizzata dell'energia 65 L'integrazione sul volume di controllo produce il seguente risultato: Z v:c: r (uT )dv ' (TE ui;j;k , TW ui,1;j;k)yj zk + (TS vi;j;k , TN vi;j ,1;k )xi zk (4.15) + (TT wi;j;k , TB wi;j ,1;k )xi yj Dove TE ; TW ; TS ; TN ; TT e TB rappresentano le temperature sulle sei pareti2 della cella di controllo. Come approssimazione della funzione T abbiamo scelto una funzione lineare a tratti quindi queste quantita possono essere ottenute come interpolazione lineare dei valori nelle celle adiacenti: + xi Ti+1;j;k TE = xi+1Ti;j;k x + x i+1 i TW = xiTi,1x;j;k++xxi,1 Ti;j;k i i,1 + yj Ti;j +1;k TS = yj+1Ti;j;k y + y j +1 j TN = yj Ti;j,y1;k++yyj,1Ti;j;k j j ,1 (4.16) + zk Ti;j;k+1 TT = zk+1Ti;j;k z + z k+1 k ,1 + zk,1 Ti;j;k TB = zk Ti;j;k z + z k k ,1 2 Per caratterizzare le superci della cella si e scelta una denominazione topograca del tipo: E per East, W per West, S per South, N per North, T per Top, B per Bottom. 66 4. Utilizzo del metodo dei Volumi Finiti Discretizziamo ora il termine r2 T : Z v:c: r dv = 2T Z s:c: rT n^ dS = + + s:c: @T j ] dy dz [ @T j , E @x @x W s:c: @T j ] dx dz [ @T j , S @y @y N s:c: @T j ] dx dy [ @T j , T @z @z B Z Z Z (4.17) Come visto precedentemente, per le derivate in direzione x (equazione (4.13)), le derivate in direzione y e z vengono espresse con delle dierenze nite centrali. @T j ' Ti;j +1;k , Ti;j;k yj +1 +yj @y S 2 @T j ' Ti;j;k+1 , Ti;j;k zk+1 +zk @z T 2 @T j ' Ti;j;k , Ti;j ,1;k yj +yj ,1 @y N 2 @T j ' Ti;j;k , Ti;j;k,1 zk +zk,1 @z B 2 In conclusione, quindi, per il volume di controllo (i; j; k) si ottiene: Z @T j ]y z j , r2T dv ' [ @T E @x @x W j k v:c: @T (4.18) + [ @T @y jS , @y jN ]xi zk @T j ]x y j , + [ @T T @z @z B i j Le equazioni (4.15) e (4.18), calcolate negli istanti di tempo n e n , 1, sostitu- ite nel termine destro della (4.10) determinano la sua approssimazione con il metodo dei Volumi Finiti. Chiameremo ora questo termine rhsni;j;k, per indicare che si riferisce al volume di controllo v:c:(i; j; k). Riprendendo l'equazione (4.14), che rappresentava la discretizzazione del termine sinistro, possiamo ora scrivere per intero l'equazione discreta, per il bilancio dell'energia, associata al volume di controllo (i; j; k): [x,i T^i,1;j;k + (xi , xi )T^i;j;k + x+i T^i+1;j;k ]yj zk = rhsni;j;k (4.19) 4.3. Equazione discretizzata dell'energia 67 Consideriamo le condizioni al contorno per le celle sulla frontiera. Supponiamo, per esempio, di avere delle condizioni di Neumann sulla parete x = 0, del tipo ^ = 0 e una condizione di Dirichlet, per semplicita T^ = 0, sulla parete @ T=@x x = lx: Condizione di Neumann: @ T^ j ' T^1;j;k , T^0;j;k = 0 =) T^ = T^ 8j; k 1;j;k 0;j;k x1 +x0 @x 0 2 Condizione di Dirichlet: xm+1 Ti;j;m + xm Ti;j;m+1 = 0 =) T^ m+1;j;k = ,T^m;j;k 8j; k xm+1 + xm dove xm+1 rappresenta la cosidetta cella fantasma, e Ti;j;m+1 la sua temperatura. L'utilizzo delle celle fantasma, esterne al dominio, nei problemi risolti con il metodo dei Volumi Finiti, semplica l'imposizione delle condizioni al contorno. Essendo xm+1 arbitraria, si e considerato, per semplicita: xm+1 = xm Scrivendo tutte le equazione per le celle nella direzione x otteniamo il seguente sistema lineare tridiagonale : 2 3 (x1 , x1 ) + x,1 x+1 6 7 ... ... ... 6 7 6 7 6 7 Xj;k = 66 x,i xi , xi x+i 7(4.20) 7 . . . 6 7 . . . . . . 4 5 x,m (xm , xm ) , x+m 2 2 3 3 T^1;j;k rhs1;j;k 6 6 .. 77 .. 77 6 6 . 7 . 7 6 6 6 7 6 n ^ ^ rhs;j;k = 66 rhsi;j;k 77 T;j;k = 66 Ti;j;k 777 .. 75 .. 75 6 6 4 4 . . rhsm;j;k T^m:j;k 68 4. Utilizzo del metodo dei Volumi Finiti Per concludere, la soluzione della prima equazione, e adata alla risoluzione di N P sistemi lineari tridiagonali simmetrici, dove N e P rappresentano il numero di celle, rispettivamente, in direzione y e z . yj zk Xj;k T^;j;k = rhsn;j;k 8j; k (4.21) Risoluzione in direzione y Scriviamo ora il sistema risolvente l'equazione dipendente dalla direzione y. Operiamo analogamente a quello visto per la prima equazione (derivata parziale rispetto a x): " # 2 @ 1 , 2 k @y2 T~ = T^ (4.22) Il sistema che ne deriva risulta essere il seguente: 2 3 (y1 , y1 ) + y1, y1+ 6 7 ... ... ... 6 7 6 7 6 7 , + yj yj , yi yj Yi;k = 66 7(4.23) 7 6 7 . . . .. .. .. 4 5 yn, (yn , yn) , yn+ T^i;1;k 6 .. 6 . 6 T^i;;k = 666 T^i;j;k .. 6 4 . ^ Ti;n;k 2 3 7 7 7 7 7 7 7 5 T~i;1;k 6 .. 6 . 6 T~i;;k = 666 T~i;j;k .. 6 4 . ~ Ti;n;k 2 3 7 7 7 7 7 7 7 5 La soluzione della seconda equazione, e adata quindi alla risoluzione di M P sistemi lineari tridiagonali simmetrici, dove M e P rappresentano il numero di celle, rispettivamente, in direzione x e z : xi zk Yi;kT~i;;k = T^i;;k 8i; k (4.24) Come si puo notare il termine destro di questo sistema e rappresentato dalla soluzione appena ottenuta risolvendo il sistema (4.21). 69 4.3. Equazione discretizzata dell'energia Risoluzione in direzione z Scriviamo ora il sistema risolvente l'equazione dipendente dalla direzione z , anche in questo caso le condizioni al contorno sono analoghe a quelle in direzione x: " # 2 @ 1 , 2 k @z 2 T n+1 = T~ (4.25) Il sistema che ne deriva risulta essere il seguente: 2 3 (z1 , z1 ) + z1, z1+ 6 7 ... ... ... 6 7 6 7 6 7 , + zk zk , zk zk Zi;j = 66 7 (4.26) 7 . . . 6 7 .. .. .. 4 5 zp, (zp , zp) , zp+ ~ Ti;j;1 6 .. 6 . 6 ~Ti;j; = 66 ~ Ti;j;k 6 .. 6 4 . ~Ti;j;p 2 3 7 7 7 7 7 7 7 5 n+1 Ti;j; 1 6 .. 6 . 6 6 n+1 n +1 T Ti;j; = 66 i;j;k .. 6 4 . n+1 Ti;j;p 2 3 7 7 7 7 7 7 7 5 La soluzione della terza equazione, e adata quindi alla risoluzione di M N sistemi lineari tridiagonali simmetrici, dove M e N rappresentano il numero di celle, rispettivamente, in direzione x e y. n+1 = T~ xi yj Zi;j Ti;j; (4.27) i;j; 8i; j In questo caso il termine destro e rappresentato dalla soluzione del sistema (4.24). Capitolo 5 Risoluzione dell'equazione di Navier Stokes 5.1 Formulazione tradizionale delle equazioni di NavierStokes Le equazioni di Navier-Stokes o della quantita di moto, in condizioni nonstazionarie, uido incomprimibile e denite su un contorno chiuso + @ , possono essere riassunte nel seguente sistema, dove le incognite sono il vettore velocita u = (u; v; w)T e la pressione P . 8 @ u + u ru = , 1 r P + r2 u + f > > < @ (5.1) > > : ru=0 Per questo sistema le condizioni al contorno possono essere di due tipi: Condizioni di Dirichlet, ovvero sulla velocita: u = w su ,1 (5.2) dove ,1 indica la porzione del contorno @ sul quale vengono denite le condizioni di Dirichlet. Condizioni di Neumann, ovvero sulla derivata della velocita: n ,P + @u @n = Fn (5.3) 70 5.1. Formulazione tradizionale delle equazioni di Navier-Stokes e @u @n = F su ,2 71 (5.4) dove ,2 indica la porzione del contorno @ sul quale vengono denite le condizioni di Dirichlet. Risulta inoltre: ,1 L ,2 = @ . n rappresenta la componente normale, positiva se in direzione uscente, per cui risulta ad esempio un u n rappresenta la componente tangenziale Fn e la componente normale della trazione sul contorno F e la componente tangenziale della trazione sul contorno Condizioni iniziali: per tutti i punti appartenenti ad , si impone che: u (x; 0) = u0 (x) (5.5) con u0 campo di velocita a divergenza nulla su , cioe: r u0 = 0 (5.6) sul contorno ,1 deve essere inoltre vericata la condizione n u0 (x) = n w (x; 0) (5.7) Se tutte queste condizioni sono rispettate allora si dice che il problema e ben posto, e che esiste una soluzione. Per una analisi completa sulle condizioni al contorno relative alle equazioni di Navier-Stokes si rimanda all'articolo di P.M. Gresho e R.L. Sani [12]. Passiamo ora al ricavo dell'equazione della pressione. Con questo tipo di condizioni al contorno l'equazione della pressione associata puo essere ottenuta applicando l'operatore di divergenza all'equazione della quantita di moto: @ u r + u ru , f + 1 r2 P = + r r2 u (5.8) @ dato che valgono le seguenti identita: 72 5. Risoluzione dell'equazione di Navier Stokes 1. r2u = r (r u) , r r u 2. r (r u) = 0 si ottiene r (u ru , f) + 1 r2 P = r2r u , @ r u (5.9) @ Dovendo risultare per 0 sul dominio chiuso ru = 0 si ottiene l'equazione della pressione (N.B. e un' equazione di Poisson, ovvero un'equazione ellittica): r2 P = r (f , u ru) (5.10) le condizioni al contorno per 0 sono: @P = n r2 u + f , @ u , u ru @n @ n P = @u @n , Fn su ,2 su ,1 Il sistema (5.1) puo quindi essere riscritto sostituendo all'equazione di continuita quella della pressione: 8 @ u + u ru = , 1 r P + r2 u + f > > < @ (5.11) > > : r2 P = r (f , u ru) Le incognite da considerare sono quindi la pressione e le tre componenti della velocita. Nei uidi incomprimibili, pero, la pressione non risulta essere associata ad alcuna equazione di stato, mentre la velocita sottosta anche all'equazione di continuita. In particolare, dato che la soluzione accoppiata del sistema (5.11) e particolarmente onerosa, si sono cercati dei metodi che permettano il disaccopiamento della velocita dalla pressione in modo da non dover risolvere contemporaneamente tale sistema. Si introduce allora una classe di algoritmi numerici, approssimanti le equazioni di Navier-Stokes, che vanno sotto il nome di Metodi di Proiezione (Projection Methods1 )[13, 14]. In particolare si fara riferimento ad alcuni algoritmi, 1 In letteratura, tali metodi vengono inoltre chiamati Fractional Step Methods o anche, impropriamente, Time-Splitting Methods. 5.2. Equazioni di Navier-Stokes viste come proiezioni 73 proposti in maniera molto rigorosa, da P.M. Gresho[15]. Senza voler enterare nel merito degli algoritmi e delle relative dimostrazioni, che sono gia state presentate nella tesi di laurea di D. Bandelli [16], verra di seguito data solo una breve descrizione di queste metodologie riportando l'algoritmo implementato nel codice. 5.2 Equazioni di Navier-Stokes viste come proiezioni Riscriviamo ora le equazioni di Navier-Stokes, precedentemente espresse nella formulazione tradizionale, in modo dierente: @ u + 1 r P = S (u) (5.12) @ con S (u) = r2 u + f , u ru sul dominio aperto e r u = 0 sul dominio chiuso . Il vettore S (u) e un Funzionale di u ed in generale risulta a divergenza non nulla e non irrotazionale. Seguendo le indicazioni di Chorin [13, 14] si puo aermare che: assegnato il vettore velocita u, il vettore S (u) puo essere considerato \noto" e proiettato in due subspazi vettoriali, quello dei vettori a divergenza nulla (@ u=@ ) ed in quello dei vettori irrotazionali rP . Matematicamente: @ u = }S (u) e r P = QS (u) (5.13) @ dove } e Q sono gli operatori della proiezione. Riassumendo, si puo dire che } proietta ogni vettore nel nucleo dello spazio vettoriale della divergenza r } = 0; mentre Q proietta ogni vettore nel nucleo dello spazio vettoriale dei rotori r Q = 0. Si noti che la prima delle due rende il campo vettoriale formato dall'accelerazione un campo a divergenza nulla, come richiesto dall' equazione di continuita.2 2 Se si dierenzia l'equazione della continuita rispetto al tempo @ (r u) = 0 @ si ottiene r @ u =0 @ 74 5. Risoluzione dell'equazione di Navier Stokes Consideriamo la seguente rappresentazione approssimata, nella quale alla pressione, ovvero al gradiente di pressione, si assegna un valore di tentativo, che indicheremo rP~ , l'equazione (5.12) diventa: @ u~ = S (~u) , 1 r P~ (5.14) @ nella quale la velocita u~ e generalmente a divergenza non nulla, in quanto risulta P~ 6= P . Si supponga inoltre che a u~ siano applicate le stesse condizioni iniziali di u, e che venga proiettato nel sottospazio a divergenza nulla, attraverso l'operatore }. Se indichiamo con v, il vettore ottenuto dalla proiezione, sara: v = }u~ Purtroppo l'assunzione che risulti v = u 8 e prevedibilmente non molto buona. Sempre Chorin [13, 14], a questo punto suggerisce il passaggio alla forma discreta nel tempo delle equazioni di Navier-Stokes (5.1). Cos facendo, si puo imporre che all'inizio di ogni passo di tempo risulti: u~ = u in modo da non permettere alla soluzione calcolata di allontanarsi troppo dalla soluzione vera (l'errore commesso sara ovviamente legato all'intervallo di tempo scelto). Per la discretizzazione della derivata temporale si puo, ad esempio, scegliere la fomula di Eulero, e quindi le equazioni(5.13) diventano: un+1 , un = }S (u ) n+1 e r Pn+1 = QS (un+1) (5.15) per cui, se introduciamo la proiezione, la seguenza logica di calcolo diventa: Primo passo: calcolo velocita intermedia u~ n+1 , un = }S (~u ) , rP~ n+1 n+1 (5.16) 75 5.2. Equazioni di Navier-Stokes viste come proiezioni Secondo passo: proiezione vn+1 = }u~ n+1 (5.17) La risoluzione delle equazioni (5.15) e tutt'altro che facile, infatti essa richiede la contemporanea soluzione della velocita e della pressione, mentre la risoluzione della (5.16) e (5.17) e molto piu semplice. Infatti, in questo secondo caso, ammesso che si sia riusciti a calcolare il valore di u~ n+1 , la proiezione puo essere realizzata con la seguente condizione: u~ n+1 = vn+1 + r e r vn+1 = 0 (5.18) dove e un moltiplicatore di Lagrange associato alla proiezione di u~ n+1 . In questo modo vn+1 puo essere presa come approssimazione della soluzione esatta. L'obbiettivo centrale dei metodi di proiezione e quello di riuscire a determinare un calcolo sequenziale del tipo prima u e dopo P , invece del calcolo accoppiato di u e P allo stesso tempo. Note 1. E importante ricordare che e vn+1 6= un+1 e che un+1 risultera sempre piu vicina al valore vero u (tn+1 ) di quanto potra mai esserlo vn+1 ! 2. Il Metodo di Proiezione e l'approssimazione(proiezione) di una approssimazione(discretizzazione temporale). 3. Nel caso di uido incomprimibile, mentre l'accelerazione e la pressione possono essere legittimamente calcolate in modo sequenziale attraverso una proiezione, la velocita e la pressione non possono esserlo in alcun modo, essendo esse intimamente accoppiate. 5.2.1 Denizione dell'operatore di proiezione Vediamo ora un generico algoritmo di proiezione nel quale si puo osservare come viene denito l'operatore di proiezione e dal quale poi derivano gli altri procedimenti che presentiamo di seguito. 76 5. Risoluzione dell'equazione di Navier Stokes Passo 1: calcolo della velocita intermedia Assegnata la velocita iniziale u0 , il corrispondente campo di pressione P0 (x) nel dominio aperto , e P_0 (x) sul contorno , 3 , si risolve l'equazione di Navier-Stokes: @ u~ + 1 rP = r2u~ + ~f in @ 0 (5.19) Si noti che ~f comprende, in questo caso, il termine convettivo e la generica forza esterna. Sul contorno bisogna invece risolvere l'equazione u~ = w ( ) + r 1 P0 + 2 P_0 con ; 0 < T (5.20) Come condizioni iniziali per = 0 va scelta u~ = u0 . Le costanti 1 e 2 vengono determinate in funzione della versione del metodo che si implementa, nel caso teorico esse sono ricavate in modo che la soluzione calcolata abbia una compatibilita del secondo ordine con le condizioni al contorno; in questo caso si ottengono le cosidette condizioni al contorno ottime (OBC) , di cui si vedra successivamente l'algoritmo. Passo 2: proiezione Nota u~ (x; T ) possiamo, su di essa, applicare la proiezione v (x; T ) = }v~ (x; T ) la quale viene realizzata, in questo caso, imponendo la soluzione del seguente sistema: 8 > < u~ = v + r > : rv =0 questo sul dominio chiuso . In pratica poi, questo sistema, viene implementato in due semipassi: 3 In questo caso trattiamo un sistema chiuso, siamo in presenza percio di condizioni di Dirichlet su tutta la supercie di contorno. 77 5.3. Algoritmi di proiezione nel continuo semipasso i Si risolve mediante r2 = ru~ su (5.21) mentre sul contorno si impone @ = T @ P + P_ @n @n 1 0 2 0 semipasso ii v = u~ , r (5.22) Passo 3: aggiornamernto della pressione Se si accetta v come la ve- locita vera all'istane T , allora si possono calcolare P (T ) e P_ (T ), concludendo cos un ciclo di calcolo. Il legame tra campo delle velocita reale u e campo delle velocita proiettate v, come dimostrato in [15], risulta essere del tipo: v = u (T ) + O T 3 in Con questo metodo le equazioni di Navier-Stokes vengono risolte con un'approssimazione dell'secondo ordine. Presentiamo di seguito gli algoritmi, proposti sempre da Gresho [15], per sistemi chiusi ed aperti, nel continuo e nel discreto, che vanno sotto la denominazione di Projection2. 5.3 Algoritmi di proiezione nel continuo 5.3.1 Metodo Optimal Projection2 per un sistema chiuso Passo 0 assegnati u0 , con r u0 = 0, P0 et P_0 . Passo 1 Calcolo di u~ , con condizioni al contorno u~ 0 = u0 per = 0 mediante la formula @ u~ , r2 u~ = ~f , 1 rP @ 0 78 5. Risoluzione dell'equazione di Navier Stokes con condizioni al contorno per la velocita, vedi ( 5.2), u~ = w + 12 t2 rP_0 Passo 2 calcolo della variabile r2 = r u~ (T ) su con condizioni al contorno @ = T 2 @ P_0 su , @n 2 @n Passo 3 calcolo della velocita esatta v = u~ (T ) , r su Passo 4 calcolo della pressione P (T ) r2 P = r f (v) su con condizioni al contorno @P = n h r2 v + f , w_ (T )i @n su , Passo 5 calcolo della derivata della pressione P_ (T ) r2 P_ = r f_ (v) su con condizioni al contorno @ P_ = n h r2 v_ + f_ , w (T )i @n su , dove v_ r2 v_ + f (v) , 1 rP e f_ (v) (@ f=@ v) v_ Passo 6 Memorizzare la velocita v e la pressione P , porre t = 0 e u0 = v eccetto nella direzione tangenziale sul contorno ,, ed ancora, P = P0 e P_ = P_0 e ripartire dal Passo 1 Questo algoritmo richiede il calcolo di ben tre equazioni di Poisson per ciclo, cio non e conveniente si passa quindi da questi metodi ottimi a quelli semplicati. 5.3. Algoritmi di proiezione nel continuo 79 5.3.2 Metodo Projection2 semplicato per sistemi chiusi Passo 0 assegnato il campo di velocita iniziale u0 , con r u0 = 0 e la pressioneP0 Passo 1 Calcolo di u~ , con condizioni al contorno u~0 = u0 per = 0 mediante la formula @ u~ , r2 u~ = ~f , 1 rP su @ 0 con condizioni al contorno u~ = w su , Passo 2 calcolo della variabile r2 = r u~ (T ) su con condizioni al contorno @ = 0 su , @n Passo 3 calcolo della velocita esatta v = u~ (T ) , r su Passo 4 calcolo della pressione P (T ) P (T ) = P0 + 2 T su Passo 5 Memorizzare la velocita v e la pressione P , porre = 0, u0 = v solo nel dominio aperto ,, ed ancora, P = P0 e ripartire dal Passo 1 5.3.3 Metodo Projection2 per un sistema continuo aperto Finora e stata considerata come condizione al contorno la sola condizione di Dirichlet, ovvero ,1 , e ,2 = 0; vediamo ora come i due metodi si modicano se ipotizziamo sul contorno anche le condizioni di Neumann, quindi ,2 6= 0. 80 5. Risoluzione dell'equazione di Navier Stokes Questo caso viene chiamato Condizioni al contorno per un sistema aperto cioe con deusso (Outow Boundary Conditions OBC). Passo 0 assegnato il campo di velocita iniziale u0 , con r u0 = 0 e la pressione P0 Passo 1 Calcolo di u~ , con condizioni al contorno u~ 0 = u0 per t = 0 mediante la formula @ u~ , r2u~ = ~f , 1 rP su 0 @ con condizioni al contorno 1. u~ = w su ,1 2. (@ u~n =@n) = Fn (t) + P0 Passo 2 ed (@ u~ =@n) = F (t) su ,2 calcolo della variabile ausiliaria r2 = r u~ (T ) su con condizioni al contorno @ = 0 su , 1 @n = , T2 [Fn (t) + P0 ] su ,2 Passo 3 calcolo della velocita esatta v = u~ (T ) , r su Passo 4 Aggiornamento della pressione P (T ) = P0 + 2 T Passo 5 su Memorizzare la velocita v e la pressione P , porre = 0, u0 = v solo nel dominio aperto ,, ed ancora, P = P0 e ripartire dal Passo 1 81 5.3. Algoritmi di proiezione nel continuo 5.3.4 Metodo Projection2 per un sistema discreto aperto Passo 0 assegnato il campo di velocita iniziale u0 , a divergenza nulla, ovvero ru0 = 0; la condizione iniziale per la pressione viene calcolata con la: r2P0 = r f (u0) su con condizioni al contorno @P0 = n h r2 u + f (u ) , w_ i 0 0 0 @n u~0n , F (0) P0 = @@n n su ,1 su ,2 Passo 1 Calcolo di u~ n+1 , con condizioni al contorno u~ 0 = u0 per t = 0 mediante la formula u~ n+1 , u~ n + 1 rP = 1 r2u~ + u~ + ~f (u ) n+1 n n n 2 con condizioni al contorno 1. u~ n+1 = wn+1 su ,1 2. @n@ (n u~n+1 ) = Fn (tn+1 ) + Pn e @n@ (~un )n+1 = F (tn+1) su ,2 Passo 2 calcolo della variabile ausiliaria r2 = r u~ n+1 su con condizioni al contorno (@=@n) = 0 su ,1 (5.23) 82 5. Risoluzione dell'equazione di Navier Stokes = , (T=2) [Fn (tn+1 ) + Pn ] su ,1 Passo 3 calcolo della velocita esatta un+1 = u~ n+1 , r su (5.24) Passo 4 Aggiornamento della pressione Pn+1 = Pn + 2 su (5.25) Passo 5 Fine ciclo e ritorno al Passo 1 L'algoritmo implementato nel codice da noi sviluppato segue il metodo appena visto utilizzando le equazioni discrete (3.23) ricavate nel capitolo 3. La sequenza di operazioni da eseguire puo essere schematizzata come segue: Passo 1 Calcolo della temperatura T n+1 con la quarta equazione di (3.23). Passo 2 Risoluzione delle tre equazioni discrete della quantita di moto (3.23) ottenendo u~ n+1 . Passo 3 Determinazione della variabile ausiliaria tramite (5.23). Passo 4 Calcolo della velocita esatta un+1, dalla (5.24). Passo 5 Aggiornamento della pressione P n+1 con (5.25). 5.3. Algoritmi di proiezione nel continuo 83 E opportuno far notare che, sebbene P.Gresho[15] indichi di utilizzare la condizione al contorno di Neumann (OBC su ,2 ) per quelle parti del dominio attraversate dal uido in uscita (outows), nel caso della convezione mista si e rilevato molto piu soddisfacente l'utilizzo di una particolare condizione di Dirichlet, che verra descritta nel capitolo 8. Il maggior peso in termini di tempo macchina viene speso, in questo algoritmo, nella risoluzione dell'equazione di Poisson 5.23. Per questo motivo si e anche realizzata una procedura per la risoluzione rapida di generiche equazioni ellittiche (Fast Poisson Solver) che verra presentata nel capitolo successivo. Capitolo 6 Soluzione numerica dell'equazione di Poisson 6.1 Introduzione Come visto nel Capitolo n. 5, i metodi di tipo projection, usati per la soluzione numerica delle equazioni di Navier-Stokes per uidi incomprimibili, nella loro formulazione piu generale non-stazionaria, richiedono la soluzione di una equazione di Poisson per la variabile ausiliaria 1 ad ogni passo di tempo. In questa tesi, l'interesse e centrato su problemi uidodinamici tridimensionali non-stazionari o caotici, per i quali il numero dei nodi, e quindi il numero di gradi di liberta, puo essere dell'ordine di 106 , o piu. Il numero di passi di tempo necessari a caratterizzare completamente il fenomeno sico, inoltre, puo essere molto rilevante, dell'ordine di 105 , o piu. Inne, la soluzione di tale equazione va ricercata in modo estremamente accurato, cio per evitare sia l'eventuale divergenza della procedura, sia per ridurre al minimo la propagazione degli errori. Da tutto cio si evince che la corretta applicazione delle metodologie di calcolo uidodinamico di tipo projection possono richiedere carichi computazionali formidabili, associati ad esempio alla accennata risoluzione sequenziale di decine di migliaia di sistemi lineari con equazioni contenenti milioni di incog1 La grandezza e talvolta chiamata, in letteratura pseudo-pressure, poiche si tratta, in eetti, di un'approssimazione della pressione vera p. 84 85 6.2. Formulazione matematica nite. Per tale ragione, e necessario adottare o sviluppare delle metodologie di soluzione dell'equazione di Poisson caratterizzate da: Elevata accuratezza, e quindi insensibilita alla propagazione degli errori di arrotondamento; Elevatissima ecienza computazionale; Ridotta memoria richiesta. Cio puo essere ottenuto solo tenendo in opportuna considerazione la forma delle equazioni discretizzate nonche la topologia del dominio di soluzione . I metodi che soddisfano ai requisiti suddetti (si veda [17] per una loro classicazione) vanno sotto il nome di Fast Poisson Solvers, e trovano il piu comune campo d'impiego sia nella uidodinamica computazionale, che in altri problemi di campo (es. eq. di Maxwell). Nel seguito viene presentato il metodo adottato e sviluppato nel corso di questa tesi. 6.2 Formulazione matematica Il problema che si vuole arontare e quello della risoluzione numerica diretta, che eviti cioe il ricorso a metodi iterativi, di un' equazione di Poisson , espressa dalla: r2 = c L'equazione e denita su un dominio bidimensionale , costituito da un rettangolo con i lati di lunghezza arbitraria: (x; y) x 2 [0; lx ]; y 2 [0; ly ] Le condizioni al contorno su sono costituite dalla condizione di Neumann : @ = 0 @n Questa condizione implica che la soluzione e denita a meno di una costante arbitraria, e la condizione di risolvibilita e data dalla: Z c dS = 0 86 6. Soluzione numerica dell'equazione di Poisson Nel nostro caso la soluzione numerica dell'equazione di Poisson viene ottenuta ricorrendo ad una discretizzazione ai Volumi Finiti su una grigliatura non uniforme, dove m e n rappresentano, rispettivamente il numero di Volumi Finiti nelle due direzioni x ed y. Analizziamo questa operazione riferita all'equazione gia vista in precedenza: r2 = r u Integriamo l'equazione sul volume di controllo v:c:: Z v:c: r2 = Z v:c: r u dS applicando il teorema della divergenza si ottiene: Z s:c: Z r n^ dS = s:c: u n^ dS dove n^ e il vettore normale alla supercie di controllo (s.c). Deniamo per semplicita: rhs = Z s:c: u n^ dS Indicando con E; W; N; S le 4 facce della superce di controllo elementare, si ha: Z @ j ] dy + Z [ @ j , @ j ] dx = rhs j , [ @ @x E @x W @y S @y N s:c: s:c: Approssimiamo le derivate sulle superci con delle dierenze nite centrali: @ j ' i+1;j , i;j @x E xi+12+xi @ j ' i;j , i,1;j @x W xi +2 xi,1 @ j ' i;j +1 , i;j @y S yj+12+yj @ j ' i;j , i;j,1 @y N yj +2 yj,1 Deniamo i coecienti: x+i = x 2+ x ; i+1 i yj+ = y 2+ y ; j +1 j (6.1) x,i = x +2x ; i i,1 xi = ,x+i , x,i (6.2) yj, = y +2y ; j j ,1 yj = ,yj+ , yj, (6.3) 6.2. Formulazione matematica 87 Per il generico volume di controllo v:c:(i; j ) discretizziamo quindi i due termini dell'equazione: - usso del vettore u attraverso la superce s:c: del volume di controllo v:c:(i; j ). Z s:c: u n^ dS = [ui;j , ui,1;j ]yj + [vi;j , vi;j,1]xi = rhsi;j - integrando la derivata parziale di sulla superce s:c: del volume di controllo v:c:(i; j ), @ j ]y + [ @ j , @ j ]x = rhs j , [ @ E @x @x W j @y S @y N i Sostituendo in questa equazione le (6.1), (6.2) e (6.3) [x,i i,1;j + xi i;j + x+i i+1;j ]yj + [yj, i;j ,1 + yj i;j + yj+ i;j +1 ]xi = rhsi;j e eguagliando i termini omogenei : x,i yj i,1;j + yj, xii;j ,1 + [xi yj + yj xi ]i;j + + yj xii;j+1 + x+i yj i+1;j = rhsi;j 8i; j (6.4) Si ottiene cos un sistema lineare di nm equazioni in altrettante incognite. Per la sua risoluzione si e optato per un metodo, Matrix Decomposition, appartenente alla categoria dei citati Fast Poisson Solvers. Questo metodo pur non raggiungendo le prestazioni di altri metodi, come ad esmpio quelli Spettrali 2 , conserva una maggiore essibilita d'impiego, permettendone l'applicazione anche a problemi deniti su griglie non uniformi e con le piu svariate condizioni al contorno. 2 Si tratta di metodi che fanno largo uso di FFT e quindi molto veloci, ma pretendono rigide condizioni per quanto riguarda grigliature e condizioni al contorno. 88 6. Soluzione numerica dell'equazione di Poisson 6.3 Matrix Decomposition L'equazione (6.5) e l'equazione generica associata ad un punto interno al dominio , vediamo cosa succede per i punti al contorno sulle superci y = 0; y = ly . Per il contorno y = 0 applicando le condizioni al contorno: @ j ' i;0 , i;1 = 0 =) = 8i i;0 i;1 y0 @y 0 y1 + 2 si ottiene l'equazione: x,i y1i,1;1 + [xi y1 + (y1, + y1 )xi ]i;1 + y1+xii;2 + x+i y1i+1;1 = rhsi;1 (6.5) Per il contorno y = ly applicando le condizioni al contorno: @ j ' i;n , i;n+1 = 0 =) = i;n i;n+1 8i @y ly yn+12+yn si ottiene l'equazione: x,i yn i,1;n + yn,xii;n,1 + [xi yn + (yn+ + yn)xi ]i;n + x+i yni+1;n = rhsi;n (6.6) Scriviamo ora, per il generico i, il sistema di equazioni in forma compatta introducendo le seguenti matrici: 2 Y = 6 6 6 6 6 6 6 4 y1 3 ... yj ... yn 7 7 7 7 7 7 7 5 (6.7) 89 6.3. Matrix Decomposition 2 A= 6 6 6 6 6 6 6 4 (y1 + y1, ) y1+ 3 ... ... ... yj, yj yj+ ... ... ... yn, (yn + yn+ ) Poniamo inoltre: 2 6 6 6 6 6 6 6 4 i;1 .. . i; = i;j .. . i;n 3 2 7 7 7 7 7 7 7 5 6 6 6 6 6 6 6 4 7 7 7 7 7 7 7 5 rhsi;1 .. . rhsi; = rhsi;j .. . rhsi;n (6.8) 3 7 7 7 7 7 7 7 5 (6.9) Otteniamo il sistema scritto in forma compatta nel seguente modo: x,i Yi,1; + [xi A + xiY]i; + x+i Yi+1; = rhsi; (6.10) per le equazioni corrispondenti ad i = 1 ed i = m vanno introdotte le condizioni al contorno sulle superci x = 0; x = lx : @ j ' 0;j , 1;j = 0 =) = 8j 0;j 1;j x0 @x 0 x1+ 2 @ j ' m;j , m+1;j = 0 =) = m;j m+1;j 8j @x lx xm+12+xm La globalita delle equazioni, cioe quelle rappresentanti punti interni come la (6.10) e quelle ottenute applicando le condizioni appena viste, vanno a costituire il sistema rappresentante l'equazione di Poisson discretizzata: 8 > [x1 A + (x,1 + x1 )Y]1; + x+1 Y2; = rhs1; < x,i Yi,1; + [xi A + xi Y]i; + x+i Yi+1; = rhsi; (6.11) > : x, Y = rhsm; m,1; + [xm A + (x, m m + xm )Y]m; Utilizzando una descrizione matriciale, il sistema precedente puo essere scritto nella forma: M = RHS 90 6. Soluzione numerica dell'equazione di Poisson dove 2 M= 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 4 x1 A+ y1+ Y (x,1 + x1 )Y ... 3 ... ... x,i Y xi A + xi x+i Y ... 2 = 6 6 6 6 6 6 6 4 1; .. . i; .. . m; ... ... x,m Y xmA+ (x,m + xm )Y 2 3 rhs1; 3 7 7 7 7 7 7 7 5 RHS = 6 6 6 6 6 6 6 4 .. . rhsi; .. . rhsm; 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 5 7 7 7 7 7 7 7 5 Moltiplicando m.a.m per Y,1 il sistema (6.11), si ottiene: 8 > < [x1 Y,1A + (x,1 + x1 )I]1; + x+1 I2; = Y,1 rhs1; x,i Ii,1; + [xi Y,1 A + xi I]i; + x+i Ii+1; = Y,1 rhsi; > : x, I , 1 , = Y,1 rhsm; m m,1; + [xm Y A + (xm + xm )I]m; E ora possibile procedere alla diagonalizzazione della matrice Y,1A : 2 U,1Y,1AU = ; = 6 6 6 6 6 6 6 4 1 3 ... j ... 7 7 7 7 7 7 7 5 (6.12) n dove 1 ; j ; ; n sono gli autovalori della Y,1 A con n = 0 perche A e singolare. Denendo: g = U,1 Y ,1 rhs ei; = U,1 i; rhs i; i; (6.13) 91 6.3. Matrix Decomposition 8 > < g [x1 + (x,1 + x1 )I]e1; + x+1 Ie2; = rhs i=1 1; , + e e e g xi Ii,1; + [xi + xi I]i; + xi Ii+1; = rhsi; 1 < i < m > : , e g xmIm,1; + [xm + (x+m + xm)I]em; = rhs i=m m; Scriviamo ora i sistemi di equazioni associati a ciascun autovalore j : 8 > < g [x1 j + (x,1 + x1 )]e1;j + x+1 e2;j = rhs i=1 1;j , + e e e g x + [ x + x ] + x = rhs 1 < i<m i j i i;j i;j i i,1;j i i+1;j > : ,e + e g xmm,1;j + [xmj + (xm + xm )]m;j = rhsm;j i = m In forma matriciale: g Tje;j = rhs ;j Dove 2 Tj = 6 6 6 6 6 6 6 4 x1 j + (x,1 + x1 ) x+1 ... ... 3 ... x,i xi j + xi x+i ... ... ... x,m xmj + (x+m + xm) 7 7 7 7 7 7 7 5 (6.14) L'algoritmo, quindi, per la risoluzione di questo sistema lineare si compone di 2 parti, la prima di prefattorizzazione, la seconda di risoluzione. La prefattorizzazione consiste in: 1. Costruire le matrici (6.7) e (6.8). 2. Soluzione del problema degli autovalori (6.12). La risoluzione consiste invece in: g. 1. Eseguire il prodotto matrice per vettore (6.13) per ottenere rhs 2. Risolvere gli n sistemi lineari tridiagonali della (6.14) ottenendo e. 3. Eseguire il prodotto matrice per vettore (6.13) per ottenere . 92 6. Soluzione numerica dell'equazione di Poisson 6.4 Implementazione dell'algoritmo L'algoritmo sviluppato in realta risolve un problema di Poisson in tre dimensioni e per questo problema la dimostrazione, data la sua estensione, viene presentata nell'appendice A. In questa sezione vengono presentati i principali problemi riscontrati nell'implementazone dell'algoritmo e le soluzioni introdotte per risolverli. Il problema principale e costituito della condizione di Neumann su tutto il contorno. Come visto precedentemente questo vincolo determina una soluzione, R a meno di una costante, solo se e vericata la condizione c dV = 0. I problemi quindi sono due: capire come questa condizione si trasferisce sul termine destro discretizzato e come si deve arontare la non univocita della soluzione del sistema lineare M = RHS ottenuto dalla discretizzazione del problema originale. La non univocita della soluzione implica che il sistema lineare diagonale a bande, identicato dalla matrice M, sia singolare. Anche il sistema sia risolvibile il termine destro deve appartenere all'immagine della matrice M. Come abbiamo visto il metodo Matrix Decomposition scompone la risoluzione del sistema globale nella risoluzione di sottosistemi piu semplici associati agli autovalori del sistema totale; di questi l'ultimo, quello associato all'autovalore nullo, risulta essere ancora singolare ed il suo termine destro, dopo essere passato attraverso i cambi di variabile, deve appartenere ancora all'immagine del sistema altrimenti non esiste soluzione. Il problema quindi nell'applicazione dell'algoritmo, peraltro molto semplice, si riduce all'eciente e corretta soluzione di quest'ultimo sistema tridiagonale lineare. In una prima fase la discretizzazione dell'equazione di Poisson e stata affrontata con la tecnica alle Dierenze Finite che in ultima analisi si diversica da quella ai Voluni Finiti solo per la diversita dei coecienti (6.2) e (6.3). Il problema principale riscontrato nel tentativo di voler risolvere l'equazione di Poisson con questo metodo si e vericato nel momento in cui si andava a risolvere l'ultimo sistema lineare, quello singolare: g Tne;n = rhs ;n Lavorando con griglie non uniformi ci si e accorti che la matrice singolare Tn , caratteristica dell'ultimo sistema, era una tridiagonale non simmetrica, alla cui 6.4. Implementazione dell'algoritmo 93 g 3 . Tutto questo dopo aver immagine non apparteneva il termine destro rhs ;n vericato che il termine destro globale RHS appartenesse all'immagine della matrice originale del sistema M. La causa di questo errore e attribuibile alle operazioni oating point e agli arrotondamenti che amplicano l'errore introdotto dalla discretizzazione con le Dierenze Finite del termine destro. In queste condizioni l'errore quadratico medio, calcolato come sommatoria al quadrato delle dierenze tra RHS originale e quello ottenuto reintroducendo la soluzione nel sistema originale, non e mai sceso sotto 10,3 . Quindi per ridurre tale errore si e simmetrizzata la matrice Tn , operazione che ha introdotto altre operazioni oating point; cos facendo la somma delle righe della matrice risultava nulla, di conseguenza anche la somma dei termini destri doveva essere nulla per garantire la risolvibilita del sistema. In realta questa somma risultava diversa da zero, sebbene di poco, quindi si e pensato di redistribuire questo errore su tutti i termini anche la condizione fosse rispettata, come suggerito in [18]. Questa operazione ha migliorato le prestazioni del Poisson solver portando l'errore a valori dell'ordine di 10,5 10,6 . Purtroppo pero le Dierenze Finite centrali del secondo ordine risentono della disuniformita della griglia 4 , di conseguenza l'errore aumentava tanto da divenire insostenibile per griglie anche solo modestamente non uniformi. Visti questi problemi si e passati al metodo dei Volumi Finiti, che possiede la caratteristica di conservativita assoluta, sia a livello globale sia a livello locale. Con tale metodo il calcolo dei ussi attraverso le superci delle celle elementari non cambia se la grigliatura diventa non uniforme. Questa osservazione si riferisce particolarmente alla discretizzazione del termine destro nel caso particolare da noi arontato. Infatti calcolare il valore discreto dell'equazione : ru e sempre un'approssimazione dato che si utilizzano Dierenze Finite. Invece calcolare il usso nella cella di controllo dell'equazione Z u n^ dS s:c: 3 Questo termine viene ottenuto dal termine destro originale dopo i cambi di variabile, per la precisione un cambio per il problema in 2D e due cambi per il problema in 3D (vedi appendice A) 4 Per le Dierenze Finite centrali del secondo ordine l'ordine di approssimazione e 2 solo per griglie uniformi, decresce invece con l'aumentare della disuniformita della griglia. 94 6. Soluzione numerica dell'equazione di Poisson R risulta essere un "calcolo esatto". Se la condizione c dV = 0 e vericata risulta quindi che la somma dei termini destri sara rigorosamente nulla, questa caratteristica si mantiene anche dopo i cambiamenti di variabile infatti la somma dei termini destri dell'ultimo sistema rimane nulla, indipendentemente dalla disuniformita della griglia. Questo assicura sempre la risolvibilita del sistema (senza correzioni di alcun genere), inoltre il metodo garantisce delle matrici Tj sempre simmetriche che sono piu immuni dagli errori di troncamento e piu facili da trattare e risolvere. Con questo metodo si sono ottenuti degli errori dell'ordine di 10,20 anche per griglie particolarmente non uniformi (stretched). Analizziamo ora come e stata trattata la non univocita della soluzione. Per l'ultimo sistema il Tn associato all'autovalore nullo e del tipo: 2 6 6 6 6 6 6 6 4 (x,1 + x1 ) x+1 ... ... ... x,i xi x+i ... ... ... x,m (x,m + xm ) 3 2 7 7 7 7 7 7 7 5 6 6 6 6 e 6 i;n 6 6 4 e e1;n .. . .. . m;n 3 2 7 7 7 7 7 7 7 5 6 6 6 6 6 g i;n 6 6 6 4 g = g rhs 1;n .. . rhs .. . rhsm;n 3 7 7 7 7 7 7 7 7 5 Come abbiamo gia detto la somma delle righe del sistema e dei termini noti e nulla, cioe le equazioni sono linearmente dipendenti. Possiamo quindi eliminare dal sistema l'ultima equazione ed imporre un valore ad una delle variabili in modo da ssare una delle innite soluzioni. Poniamo quindi per semplicita em;n = 0, come proposto anche in [18] e [19]. Vediamo come diviene il sistema con questa nuova condizione. 2 6 6 6 6 6 6 6 4 (x,1 + x1 ) x+1 ... ... ... x,i xi x+i ... ... ... 0 1 3 2 7 7 7 7 7 7 7 5 6 6 6 6 e 6 i;n 6 6 4 e e1;n .. . .. . m;n 3 2 7 7 7 7 7 7 7 5 6 6 6 6 g 6 i;n 6 6 4 = g rhs 1;n .. . rhs .. . 0 3 7 7 7 7 7 7 7 5 Come osservazione nale si puo dire che questo e l'unico sistema tridiagonale non simmetrico che ha portato ad una scelta di tipo implementativo e cioe se usare due solver di sistemi lineari (librerie standard LAPACK, NAPACK 6.5. Risultati e prestazioni 95 ecc.), uno per sistemi simmetrici e uno per sistemi asimmetrici tridiagonali, favorendo cos la velocita di calcolo, oppure scegliere un solo solutore per sistemi tridiagonali generali rendendo piu leggibile il codice (nessuna istruzione di scelta, una sola chiamata a subroutine, ecc.). La scelta e caduta sulla seconda opzione perche, come si vedra piu avanti, la maggior parte dei calcoli viene spesa nei prodotti matriciali rendendo trascurabile il tempo speso nella soluzione dei sistemi lineari. 6.5 Risultati e prestazioni L'algoritmo e stato implementato su diverse piattaforme di calcolo al ne di valutarne le prestazioni, inoltre e stato scritto in FORTRAN con le seguenti caratteristiche : E stata favorita la portabilita a scapito della ricerca delle prestazioni migliori, peraltro funzione del tipo di processore ed architettura; E stata utilizzata, in forma sorgente, la libreria LAPACK ove possibile; La codica comprende alcune elementari estensioni FORTRAN 90, peraltro accettate tranquillamente da tutti i compilatori; La struttura dati e stata scritta al ne di un'agevole implementazione parallela, in modalita shared-memory. Tutti i risultati presentati sono stati ottenuti in singola precisione a 32 bit (tranne CRAY e SGI R8000 per cui la singola precisione e di 64 bit) su macchine scalari o vettoriali sempre in modalita monoprocessore e fanno riferimento solo alla parte dell'algoritmo in cui si esegue la soluzione del problema. A questo proposito vediamo come e distribuita la mole dei calcoli in questo nucleo (kernel) del problema uidodinamico. Assumendo di lavorare su griglie 3D aventi dimensioni, cioe numero di celle nelle tre direzioni x, y e z , pari a M N P , il numero di operazioni (ordine di grandezza) svolte dalla routine e distribuito nel seguente modo: 2 trasformazioni di variabile tramite prodotti matrice-vettore O(N N M P ); 96 6. Soluzione numerica dell'equazione di Poisson soluzione di n p sistemi lineari tridiagonali O(N M P ); 2 trasformazioni di variabile tramite prodotti matrice-vettore O(N M P P ). Come si vede la maggior parte del lavoro e spesa nei prodotti matriciali. La parte di prefattorizzazione delle matrici invece viene eseguita una sola volta e non interviene piu nelle succesive applicazioni. Nella tabella 6.1 presentiamo un riassunto delle prestazioni ottenute su diversi elaboratori. Tabella 6.1: Prestazioni su diverse piattaforme di calcolo Tempo (secondi) Computer Opzioni compilatore Griglia 403 Griglia 1003 CRAY YMP-C90 SGI Power Challenge R8000 CRAY XMP/116se cf77 -Wf"-o agress -o loopalign" f77 O2 -OPT:round=3: alias=typed CGM:cerr:static cf77 -Wf"-o agress -o loopalign" FOR f77 -O5 f77 -O ALPHA 7000 ALPHA 3000 SUN SparcStation 10 PC Pentium 60Mhz Microsoft Fortran PCI Bus - 16MB PowerStation /G4 /Ox /D"NDEBUG" SGI indigo R3000 f77 -O2 Cray T3D-64 Pe cf77 -Oscalar3 .516 9.95 0:384? 27:40? 1.31 39.31 1.86 2.48 2.023 85.95 116.90 226.79 4.94 447 6.82 593.38 3 Griglia 62 Griglia 1263 0.211 3.62 ? Problemi nella ricerca degli autovalori nella fase di prefattorizzazione Come si puo notare nella tabella sono riportati alcuni dati sulle prestazioni ottenute dall'algoritmo sul CRAY-T3D a 64 processori, per tale macchina le 6.5. Risultati e prestazioni 97 prestazioni ottenute non sono paragonabili con quelle delle piattaforme piu tradizionali, sia a causa delle diverse griglie sia a causa dell'utilizzo di istruzioni non standard per il FORTRAN 77, ma sono pur sempre interessanti come esempio di evoluzione delle architetture e delle modalita di implementazione di questi algoritmi. I risultati completi e la trattazione particolareggiata del porting e parallelizzazione del Poisson Solver sul Calcolatore parallelo Cray T3D sono invece presentati nel Capitolo n. 7. Capitolo 7 Implementazione del codice sul T3D Ricordiamo brevemente l'algoritmo adottato per la simulazione, attraverso il metodo dei Volumi Finiti, delle equazioni di conservazione di massa, quantita di moto-Navier-Stokes ed energia. Queste sono utilizzate per i problemi di convezione mista (e quindi, come caso limite Re ! 0, anche convezione naturale) non stazionaria, caotica e turbolenta in canali rettangolari. Rimandando al Capitolo [5] per la descrizione completa dell'algoritmo, questo, ad ogni passo di tempo, si compone delle seguenti fasi: 1. Soluzione dell'equazione dell'energia (temperatura T ), noti i valori del campo di velocita. Si ricorre all'Approximate Factorization, utilizzando Crank-Nicholson per i termini diusivi e Adams-Bashfort per i termini convettivi (non lineari). Tale fase si compone essenzialmente della soluzione di sistemi tridiagonali simmetrici, indipendenti lungo le tre direzioni x; y e z. 2. Soluzione delle tre equazioni scalari della quantita di moto (componenti della velocita u:u,v,w) anche in tal caso attraverso la tecnica Approximate Factorization; i termini diusivi sono trattati implicitamente alla CrankNicholson mentre i termini convettivi sono trattati esplicitamente con Adams-Bashfort. Anche tale fase si compone della soluzione di sistemi tridiagonali simmetrici, indipendenti lungo le tre direzioni x; y e z . 98 7.1. Esempi di applicazione del modello CRAFT 99 3. Soluzione dell'equazione di Poisson per la variabile ausiliaria (pseudopressure); tale soluzione e eseguita con un algoritmo diretto (Fast Poisson Solver) del tipo Matrix Decomposition presentato nel Capitolo [6]. 4. Aggiornamento delle componenti della velocita e della pressione, sulla base della variabile ausiliaria . Denito l'ordine delle operazioni da eseguire gli oggetti da trattare sono fondamentalmente due: Soluzione di sistemi tridiagonali, utilizzati sia nella risoluzione delle equazioni di conservazione che nel Poisson Solver. Prodotto di matrici, necessari nella risoluzione della variabile ausiliaria , rappresentano il maggior onere computazionale dell'intero algoritmo. 7.1 Esempi di applicazione del modello CRAFT Per l'implementazione (porting) del sorgente su una piattaforma parallela come il Cray T3D si e scelto il modello implicito a memoria condivisa. Questo paradigma non modica la struttura dell'algoritmo, rende anzi l'operazione di parallelizzazione del tutto invisibile se si implementa il programma su un calcolatore tradizionale1 . Data l'ampiezza dell'intero sorgente non e possibile illustare in questo contesto l'intera operazione di parallelizzazione del codice, mostreremo invece alcune modiche apportate all'algoritmo per la risoluzione dell'equazione di Poisson. Questo algoritmo, come e stato gia detto, detiene il maggior peso nella soluzione dell'intero problema (piu del 50% del tempo di CPU). Il numero (ordine di grandezza) delle operazioni eseguite dal Kernel dipende dalle dimensioni del problema M, N e P (numero di celle) nelle tre dimensioni spaziali x; y e z : il Poisson Solver raggiunge l'ordine di (2 N 2 M P + 2 N M P 2) operazioni contro le (3 M N P ) per la soluzione delle equazioni di trasporto. 1 Un programma parallelizzato con le operazioni di Work Sharing e Data Parallel presenta delle direttive che si identicano per la presenza nelle prime colonne del testo della stringa CDIR$.. Un compilatore tradizionale interpreta questa stringa come l'inizio di un commento, non interviene quindi in alcun modo 100 7. Implementazione del codice sul T3D Seguendo l'algoritmo proposto nell'Appendice A per la risoluzione dell'equazione di Poisson in tre dimensioni vediamo come sono state implementate le operazioni principali: prima utilizzando i construtti standard del Fortran 77 e poi le opportunita oerte dall'ambiente CRAFT. g Codichiamo il cambio di variabile rhs i;j; = U,1 Z,1 rhsi;j;: Versione FORTRAN 77 Si tratta di un semplice prodotto matrice-vettore che va ripetuto i j volte. Alla ne dell'operazione il risultato si trova nella matrice phi. do i=1,m do j=1,n c *******Prodotto (inv_u)x(inv_dz)x(rhs(i,j,.)) ************** do k=1,p phi(i,j,k) = 0. end do do kk=1,p t=rhs(i,j,kk)/dz(kk) do k=1,p phi(i,j,k) = phi(i,j,k) + inv_u(k,kk)*t end do end do c ************************************************************ end do end do Per snellire e rendere piu leggibile il codice introduciamo, laddove risulta possibile, la sintassi e le Funzioni Intrinseche del FORTRAN 90. do j=1,n do i=1,m w10 = rhs(i,j,1:p)/dz(1:p) !w10(1:p) vettore ausiliario phi(i,j,1:p) = matmul(inv_u,w10) ! funzione intrinseca del ! Fortran 90 per il prod. ! matriciale end do end do 101 7.1. Esempi di applicazione del modello CRAFT PE0 PE1 PE2 PE3 Figura 7.1: Esempio di distribuzione degenere delle matrici su 4 PE Il codice risulta piu compatto e piu eciente. Rendiamo il ciclo parallelo tramite le direttive di DOSHARED e distribuiamo opportunamente le matrici rhs e phi che sono quelle rappresentanti i data-set piu importanti. Gli altri array, di dimensioni piu contenute, possono essere deniti privati. Si osservi che per ogni iterazione (i; j ) viene interessata solo la terza dimensione di queste matrici: e opportuno quindi utilizzare una distribuzione degenere che localizzi sui diversi PE tutti gli elementi caratterizzati dagli stessi indici (i; j ) (gura 7.1): cdir$ shared cdir$ shared phi rhs ( :block, :block, : ( :block, :block, : ) ) Questa distribuzione garantisce la massima localita dei dati, cioe il PE che esegue l'iterazione assegnatagli possiede sulla propria memoria locale tutti i dati richiesti. Non sono quindi necessarie comunicazioni tra nodi di calcolo. Vediamo quindi come si presenta questo algoritmo, versione MPP, pronto per essere eseguito sul T3D: 102 7. Implementazione del codice sul T3D cdir$ doshared (j,i) on rhs(i,j,0) do j=1,n do i=1,m w10 = rhs(i,j,1:p)/dz(1:p) phi(i,j,1:p) = matmul(inv_u,w10) end do end do Per dimostrare come il modello CRAFT sia estremamete facile da implementare mostriamo come viene modicato il modulo che risolve i sistemi lineari tridiagonali. L'algoritmo e molto semplice, si tratta di estrarre dalla matrice rhs i termini destri passarli insieme alle tre diagonali alla routine SGTL2 , il cui risultato va poi inserito nella matrice phi. cdir$ doshared (k,j) on all_diag(0,j,k) do k=1,p do j=1,n w6 = sub_x ! diag. inferiore w7 = all_diag(1:m,j,k) ! diag. principale w8 = sup_x ! diag. superiore w9 = rhs (1:m,j,k) if ((j.eq.n).and.(k.eq.p)) then w6(m)=0. end if call SGTSL (m, w6, w7, w8, w9, info) phi(1:m,j,k) = w9 end do end do Come si puo osservare l'intera operazione di parallelizzazione si riduce all'introduzione della direttiva DOSHARED, ogni processore risolve un sistema lineare. Le ma2 La routine SGTL e uno dei codici per la risoluzione di problemi di algebra lineare appartenente alla libreria matematica SLATEC (modulo LINPACK). 7.2. Risultati e prestazioni 103 trici phi e rhs sono gia state distribuite come visto precedentemente quindi in questo caso bisogna sostenere un overhead dovuto alle comunicazioni. L'intero nucleo dell'algoritmo per la soluzione dell'equazione, oltre al modulo per la risoluzione dei sistemi lineari di Poisson ed al prodotto matriciale presentato precedentemente, presenta altri 3 prodotti matriciali. In Appendice B vengono presentate le due implementazioni, quella sequenziale (Fortran 77) e quella parallela (CRAFT), nella loro globalita al ne di mostrarne tutte le dierenze. Anche se le modiche proposte sono molto semplici, questo non vuole dire che la loro corretta implementazione sia stata immediata: i primi tentativi, infatti, sono stati alquanto deludenti, specialmente per quanto riguardava la distribuzione dei dati. Trovata poi l'ottimale scomposizione dei data-set, il miglioramento e stato davvero notevole. L'introduzione delle istruzioni del tipo array syntax e della funzione intrinseca MATMUL ha poi ridotto ancora i tempi di esecuzione. Per dare un'idea del miglioramento ottenuto si osservino i seguenti dati, ottenuti con 64 PE, risolvendo una griglia non uniforme di 623 celle. Prestazioni del sorgente FORTRAN 77 + DATA PARALLEL & WORK SHARING nelle seguenti congurazioni: 32.36 sec con matrici distribuite erroneamente (enorme overhead per le comunicazioni). 1.44 sec con matrici distribuite correttamente (ricerca della massima localita). 0.21 sec con matrici distribuite correttamente + array syntax FORTRAN 90 + array intrinsic MATMUL. 7.2 Risultati e prestazioni Riportiamo ora i dati che riguardano la tempistica e le prestazioni ottenute implementando i codici sul Cray T3D. Lo strumento con cui si sono eseguite le misure e rappresentato da una routine di libreria, la IRTC, che ritorna il numero di clock intercorsi tra due chiamate; il tempo e stato ottenuto moltiplicando quest'ultimo per 6:67 109 sec (periodo di clock). 104 7. Implementazione del codice sul T3D 7.2.1 Poisson Solver Le tabelle seguenti riportano le prestazioni ottenute, in termini di tempo di esecuzione e di Speedup (equazione 1.1) per tre griglie non uniformi, caratterizzate, rispettivamente, da circa 2 105 ; 2 106 e 4 106 celle. I tempi riportati riguardano solo la soluzione del sistema di equazioni, poiche, in una tipica simulazione, la fase di inizializzazione e prefattorizzazione, va eseguita solo una volta all'inizio del calcolo. Inoltre, il tempo proporzionalmente speso durante tale fase diminuisce all'aumentare del problema, sino a diventare trascurabile. Per la griglia 623 viene proposto anche il confronto con le prestazioni ottenute sul Cray C90. Il codice in questo caso non ha subito nessuna modica, il compilatore ha semplicemente trascurato le direttive per la programmazione parallela interpretandole come semplici commenti. Poisson Solver - Griglia 623 n. PE Speedup teorico Speedup reale Tempo (sec) 1 1. 1.000 12.325 2 2. 1.959 6.293 4 4. 3.774 3.266 8 8. 7.492 1.645 16 16. 14.76 0.837 32 32. 29.35 0.420 64 64. 58.41 0.211 Cray C90 0.767 7.2. Risultati e prestazioni Poisson Solver - Griglia 1263 n. PE Speedup teorico Speedup reale Tempo (sec) 2 1. 1.000 113.14 4 2. 1.982 57.07 8 4. 3.923 28.84 16 8. 7.771 14.56 32 16. 15.54 7.28 64 32. 31.25 3.62 Poisson Solver - Griglia 254 126 126 n. PE Speedup teorico Speedup reale Tempo (sec) 4 1. 1.000 114.40 8 2. 1.981 57.75 16 4. 3.940 29.04 32 8. 7.873 14.53 64 16. 15.74 7.27 105 106 7. Implementazione del codice sul T3D Di seguito vengono riportati i dati relativi allo speedup in forma graca, per una piu agevole interpretazione. Si puo notare, in particolare, che la scalabilita migliora all'aumentare della dimensione del problema, cioe incrementando le dimensioni della griglia. Poisson solver - Griglia 62 3 64 Speedup Speedup reale Speedup teorico 32 16 8 4 2 1 12 4 8 16 32 64 No. processori T3D Figura 7.2: Speedup per una griglia con circa 2 105 nodi 107 7.2. Risultati e prestazioni Poisson solver - Griglia 126 3 32 Speedup Speedup reale Speedup teorico 16 8 4 2 1 2 4 8 16 32 64 No. processori T3D Figura 7.3: Speedup per una griglia con circa 2 106 nodi 108 7. Implementazione del codice sul T3D Poisson solver - Griglia 254x126x126 16 Speedup Speedup reale Speedup teorico 8 4 2 1 4 8 16 32 64 No. processori T3D Figura 7.4: Speedup per una griglia con circa 4 106 nodi 7.2. Risultati e prestazioni 109 7.2.2 Codice NUSUMIC I risultati globali ottenuti per la procedura di calcolo termouidodinamico (package NUSUMIC) sono stati riportati per due casi: convezione naturale e convezione mista. Le dierenze fra i due casi sono, dal punto di vista numerico, trascurabili, ma dal punto di vista dei possibili eetti sulle prestazioni, non secondarie. Queste sono: Nel caso di convezione naturale, il numero dei nodi e uguale in tutte le tre direzioni, mentre per la convezione mista vi e una direzione (x) lungo la quale il numero di nodi e circa quattro volte quello nelle altre due. Nel caso della convezione naturale non vi sono inow ed outow, mentre nel caso della convezione mista vi e un ingresso ed un'uscita che richiedono sicuramente altro tempo di calcolo. Convezione naturale Le tabelle seguenti riportano le prestazioni ottenute (tempo per l'esecuzione e speedup) per due griglie non uniformi, caratterizzate, rispettivamente da circa 2:4 105 e 2 106 celle (gradi di liberta). I tempi riportati non includono la fase di inizializzazione e prefattorizzazione, che va eseguita solo una volta all'inizio della simulazione. Al ne di ottenere una maggiore accuratezza nella temporizzazione, le prove sono state eseguite sia per uno che per cinque time-step, ed i dati di tabella si riferiscono a quest'ultimo caso, avendo diviso per cinque il tempo ottenuto. Per la griglia maggiore, a causa della memoria richiesta, il numero minimo di processori necessario per il calcolo e stato pari a 16 PE. A titolo di confronto, si sono riportati pure i tempi ottenuti sul Cray C90 in modalita monoprocessore. 110 7. Implementazione del codice sul T3D Convezione naturale - Griglia 623 n. PE Speedup teorico Speedup reale Tempo (sec) 1 1. 1.00 48.755 2 2. 1.92 25.428 4 4. 3.75 12.986 8 8. 7.25 6.724 16 16. 14.06 3.468 32 32. 27.62 1.765 64 64. 54.29 0.898 Cray C90 1.940 Poisson Solver - Griglia 1263 n. PE Speedup teorico Speedup reale Tempo (sec) 16 1. 1.00 34.96 32 2. 1.99 17.61 64 4. 3.94 8.88 Cray C90 14.570 111 7.2. Risultati e prestazioni Di seguito i risultati relativi allo speedup sono riportati in forma graca. Convezione naturale - Griglia 62 3 64 Speedup Speedup reale Speedup teorico 32 16 8 4 2 1 12 4 8 16 32 64 No. processori T3D Figura 7.5: Speedup per una griglia con circa 2:4 105 nodi Convezione mista Anche in questo caso riportiamo alcune tabelle riportanti temp di esecuzione e speedup per due griglie non uniformi di circa 1:1 105 e 1 106 volumi niti. Come per il problema della convezione naturale anche in questo caso il tempo riportato si riferisce a quello medio ricavato su cinque time-step. Per la griglia maggiore, a causa della memoria richiesta, il numero minimo di processori richiesto per il calcolo e stato pari a 4PE. 112 7. Implementazione del codice sul T3D Convezione naturale - Griglia 126 3 4 Speedup Speedup reale Speedup teorico 2 1 16 32 64 No. processori T3D Figura 7.6: Speedup per una griglia con circa 2 106 nodi 7.2. Risultati e prestazioni Convezione mista - Griglia 126 30 30 n. PE Speedup teorico Speedup reale Tempo (sec) 1 1. 1.00 24.780 2 2. 1.95 12.690 4 4. 3.83 6.470 8 8. 7.18 3.450 16 16. 13.62 1.819 32 32. 26.67 0.929 64 64. 50.47 0.491 Cray C90 1.101 Convezione mista - Griglia 254 62 62 n. PE Speedup teorico Speedup reale Tempo (sec) 4 1. 1.00 63.105 8 2. 1.93 32.680 16 4. 3.78 16.690 32 8. 7.49 8.430 64 16. 14.88 4.240 Cray C90 7.495 113 114 7. Implementazione del codice sul T3D Anche in tal caso i risultati sono riportati in forma graca, per una piu agevole interpretazione. Convezione mista - Griglia 126x30x30 64 Speedup Speedup reale Speedup teorico 32 16 8 4 2 1 12 4 8 16 32 64 No. processori T3D Figura 7.7: Speedup per una griglia con circa 1:1 105 nodi 7.3 Osservazioni conclusive I risultati sin qui ottenuti possono senz'altro considerarsi positivi, soprattutto per cio che riguarda la scalabilita e lo speedup. Si e inoltre notato, come era ovvio attendersi, che la scalabilita migliora all'aumentare della dimensione del problema. Va per altro osservato che l'algoritmo originale non e stato in alcun modo modicato, ma piuttosto si sono solo aggiunte le direttive opportune del MPP, 115 7.3. Osservazioni conclusive Convezione mista - Griglia 254x62x62 16 Speedup Speedup reale Speedup teorico 8 4 2 1 4 8 16 32 64 No. processori T3D Figura 7.8: Speedup per una griglia con circa 1 106 nodi questo rende il codice portabile anche su altre piattaforme non parallele, come e stato fatto con il Cray C90. Per quanto riguarda le prestazioni, in termini di Mop/s sustained, si sono ottenuti circa 700 Mop/s nel Poisson Solver, mentre per l'intero codice non si sono superati i 300 Mop/s. Tale dato, certamente non entusiasmante, deriva, a nostro avviso, da: Dimensioni limitate della cache in rapporto alle dimensioni dei data-set del nostro problema; Struttura dell'algoritmo, in particolare dell' Approximate Factorisation, che non permette una distribuzione eciente dei dati attraverso i nodi, introducendo cos un signicativo overhead dovuto alle comunicazioni. 116 7. Implementazione del codice sul T3D Il rapporto fra il tempo di calcolo sul Cray C90 in modalita monoprocessore e quello sul Cray T3D con 64 PE, varia fra circa 3.6 per il Poisson solver e (2.11.6) per il programma globale, con numeri inferiori per le griglie di dimensioni maggiori. Tale dato, all'apparenza contraddittorio, deriva, a nostro avviso, da due fatti: aumento dell'overhead dovuto alle comunicazioni all'aumentare dei nodi; aumento delle prestazioni sul Cray C90, all'aumentare della griglia, a seguito della maggiore lunghezza dei vettori e quindi del grado di vettorizzazione. Capitolo 8 Risultati I programmi di calcolo sviluppati, sono stati utilizzati per la simulazione numerica di due tipologie di problemi: la convezione naturale in una cavita chiusa, e la convezione mista per un canale rettangolare. Si tratta di due tipologie di problemi che, oltre ad essere di fondamentale importanza nella termouidodinamica di base, sono caratteristiche di numerose applicazioni tecnologiche. Si citano a titolo d'esempio, la tecnologia produttiva con cambiamento di fase, la produzione di lm sottili con processi CVD (Chemical Vapor Deposition) ed il controllo termico in elettronica. 8.1 Convezione naturale 8.1.1 Confronto con altri autori I risultati del codice per la simulazione di fenomeni convettivi di tipo naturale sono stati confrontati con altri risultati presenti in bibliograa, al ne di valutare l'accuratezza delle procedure di calcolo sviluppate nel corso della tesi. In gura 8.1 e rappresentato il dominio considerato, costituito da una cavita chiusa nella quale due pareti sono mantenute alle temperature di Tc e Th , mentre le altre sono assunte perfettamente adiabatiche. Le dimensioni sono state considerate uguali in tutte tre le direzioni e pari ad H. Al ne di valutare il risultato ottenuto si e considerato un intervallo di tempo sucientemente lungo, in modo da permettere il raggiungimento del regime stazionario. 117 118 8. Risultati z g lx x y Th lz Tc ly Figura 8.1: Geometria della cavita utilizzata per lo studio della convezione naturale Sono stati scelti alcuni parametri per caratterizzare e confrontare la soluzione ottenuta. Il numero di Nusselt, Nu, che rappresenta il usso termico adimensionale per la parete calda: 1 Nu = , H T H Z H @T Z 0 0 @x x=0 dz dy (8.1) La massima velocita verticale wmax lungo la retta (x; H=2; H=2). La massima velocita orizzontale umax lungo la retta (H=2; H=2; z). La straticazione termica nel centro della cavita (H=2; H=2; H=2): S = HT @T @x (8.2) 119 8.1. Convezione naturale Autore 303 503 Nu wmax umax S 8.6685 0.2610 0.08150 0.9273 8.6547 0.2581 0.08163 0.9113 Janssen et al. [20] (303 ) 8.6172 0.2620 0.08154 0.9293 3 (60 ) 8.6330 0.2597 0.08108 0.9138 (1203 ) 8.6393 0.2585 0.08099 0.9103 Fusegi et al. [21] (623 ) 8.7689 0.2588 0.08415 , Tabella 8.1: Valori caratteristici del problema con Ra = 106 Presentiamo ora in tabella 8.1 i risultati ottenuti per un valore del numero di Rayleigh pari a 106 e per un uido con numero di Prandtl uguale a 0:71. Di conseguenza il numero di Grashof risulta pari a: 6 Gr = Ra Pr = 1:40845 10 Come si puo osservare dalla tabella 8.1, i risultati ottenuti sono molto ben allineati con quelli degli altri autori. In particolare, con riferimento ai valori di Nu, questi sembrano leggeremente sovrastimati, sebbene la dierenza con il valore ottenuto da Jansen et al. [20] per la griglia piu ne (1203 ), utilizzata come soluzione di riferimento, e dell'ordine del 0:2%. Per le altre variabili, velocita e straticazione termica, l'accordo con la soluzione di Janssen at al. e estremamente soddisfacente ed indicativo dell'elevato grado di accuratezza della procedura di calcolo. 120 8. Risultati Anche in tal caso e opportuno sottolineare l'ecenza computazionale del programma di calcolo: la soluzione per ambedue le griglie, infatti, e stata ottenuta utilizzando una workstation Digital DEC3000. 8.2 Convezione mista L'implementazione del programma di calcolo per la simulazione dei fenomeni convettivi di tipo misto e stata eseguita per una geometria come quella proposta in gura 8.2. In questo caso, al contrario della convezione naturale, siamo in presenza di suz x g Tc y Out flow lx lz In flow Th ly Figura 8.2: Geometria del canale utilizzato per lo studio della convezione mista perci attraversate dal uido (Inow e Outow). Per queste vanno quindi denite delle opportune condizioni al contorno al ne di determinare una soluzione che si avvicini il piu possibile a quella, teorica, ottenibile nelle condizioni in cui il dominio non sia troncato ma si estenda all'innito. 121 8.2. Convezione mista z a b o y Figura 8.3: Sezione del canale utilizzato per lo studio della convezione mista 8.2.1 Condizioni al contorno sulla supercie d'ingresso Per quanto riguarda la velocita u si vuole imporre sulla supercie d'ingresso una condizione di Dirichlet che realizzi, quanto piu accuratamente possibile, il prolo di velocita completamente sviluppato per un uido in moto in un canale rettangolare, con una sezione come quella rappresentata in gura 8.3. E stata quindi utilizzata l'approssimazione della soluzione di tale problema presentata da Shah e London[22]. Le componenti di velocita trasversali v e w vengono considerate nulle sulla supercie d'ingresso, mentre per la componente longitudinale u viene utilizzata la seguente formulazione: u = m + 1 n + 1 1 , z , b=2 n 1 , y , a=2 m (8.3) u m n b a mean umean = m n umax m+1 n+1 (8.4) Dove m e n sono deniti come: ,1:4 m = 1:7 + 0:5 ab (8.5) 122 8. Risultati 8 > > > > < per ab 31 n=> (8.6) > b 1 b 1 > > : 2 + 0:3 a , 3 per a 3 Nelle (8.3) e (8.4), la velocita media umean caratterizza il numero di Reynolds1 cos denito: H Re = umean (8.7) Considerando le denizioni proposte nel capitolo 3, la velocita media, espressa in forma adimensionale, risulta quindi data dalla: 2 umean = pRe Gr (8.8) 8.2.2 Condizioni al contorno sulla supercie in uscita In uscita si e adottata la condizione proposta da Orlanski [23] denominata Monochromatic travelling wave. Alla base di tale condizione al contorno, originariamente formulata per sistemi di equazioni di tipo iperbolico, vi e l'ipotesi che il moto delle particelle di uido, e quindi delle grandezze termouidodinamiche, a ridosso della supercie d'uscita (volumetto di lunghezza @x), sia approssimabile con un'onda che viaggia con velocita pari a c: @' + c @' = 0 per x = lx @ @x (8.9) Nel nostro caso, in anologia con altri autori, si e adottato la relazione semplicata c = umean . Nella (8.9) ' rappresenta una delle grandezze u; v; w e T . La relazione di Dirichlet,quindi da imporre, considerando la forma discreta dell'equazione (8.9): umean ('n , 'n +1 = 'n (8.10) 'nm;j;k m;j;k m,1;j;k ) m;j;k , x m 1 Si e scelta tale denizione per Re in accordo con altri autori, sebbene per condotti e canali il numero di Reynolds e usualmente denito come : u D Re = mean h dove Dh indica il diametro idraulico[22]. 123 8.2. Convezione mista Per poter utilizzare questa condizione bisogna assicurarsi che questa non alteri il usso del vettore velocita attraverso la supercie S della cavita. In altre parole la (8.10) deve garantire la rigorosa conservazione della massa, cioe: Z Z n+1 n u ^ dS = un n^ dS S S Anche cio accada, e suciente che il usso in uscita sia uguale al usso costante in ingresso umean Sin . Calcoliamo quindi il usso discreto della componente un+1 (per la vn+1 e la wn+1 il usso e nullo) attraverso la sezione d'uscita: XX +1 z y = X X un z y unm;j;k k j m;j;k k j k j ,umean x k j (unm;j;k , unm,1;j;k )zk yj XX m k j Assumendo il campo di velocita all'istante (n) a divergenza nulla (il usso entrante e uguale al usso uscente), risulta: XX unm;j;k zk yj = umean Sin k j XX k j (unm;j;k , unm,1;j;k )zk yj = 0 Di conseguenza risulta facile vedere che: XX +1 z y = u unm;j;k mean Sin k j k j In denitiva la condizione (8.10) puo essere applicata solo nel caso in cui la procedura di calcolo garantisca il rigoroso rispetto della conservazione della massa ad ogni istante di tempo (r u = 0). Nel nostro caso, l'utilizzo di un Fast Poisson Solver diretto, garantisce tale condizione. 8.2.3 Confronto con prove sperimentali Per vericare l'accuratezza e l'adabilita del codice per la simulazione di fenomeni convettivi di tipo misto, ci siamo riferiti ai dati sperimentali proposti da K.C.Chiu e F.Rosenberger[24]. Nel loro esperimento viene considerato 124 8. Risultati un canale rettangolare largo 15:24cm, alto 1:58cm e lungo 87:5cm. Si tratta, quindi, del tentativo sperimentale di rilevare il moto fra piastre piane parallele. La dierenza di temperatura tra supercie superiore ed inferiore e mantenuta costante e pari a T = 24 0:2 . Le condizioni al contorno sulla supercie d'ingresso sono state create ponendo, prima dell'ingresso nella parte riscaldata un tratto di condotto con la stessa sezione, lungo 63:5cm ma uniformemente riscaldato. Questa condizione si discosta da quella utilizzata nel codice di simulazione che non prevede, per ora, tale opportunita. La simulazione da noi eseguita si riferisce alla parte di canale, piu precisamente i primi 40cm, corrispondenti all'intera lunghezza di sviluppo termico (il campo di velocita rimane sostanzialmente invariato nella sezione successiva). Adimensionalizzando secondo la lunghezza di riferimento (H = 1:58cm) abbiamo ottenuto una cavita di dimensioni pari a (25 9:65 1) la quale e stata discretizzata con una griglia di (126 62 30) volumi niti. Le caratteristiche del uido in esame (; ; ) e del problema considerato (H; T ), in accordo con le denizioni gia viste nel capitolo 3, determinano i seguenti gruppi adimensionali: Pr = 0:71 Gr = 6884 Per quanto riguarda invece il numero di Reynolds gli autori dell'esperimento, pur utilizzando la nostra stessa denizione, equazione (8.7), considerano per la velocita media la seguente denizione: umean = u1max :5 (8.11) umean = u1max :6 (8.12) in modo da simulare, come gia detto, un problema indenitamente largo(ly ! 1). Nel nosto caso invece la denizione di velocita media e stata data in accordo con [22] come visto nella (8.4). Per la sezione d'ingresso considerata nel problema reale risulta: Di conseguenza se con Re = 44:8 indichiamo il numero di Reynolds proposto da Chiu e Rosenberger, il corrispondente numero di Reynolds utilizzato nel 8.2. Convezione mista 125 programma di simulazione e pari a: Re = Re 11::65 = 42 (8.13) Proponiamo ora i valori della componente longitudinale della velocita (u) ottenuta con i due metodi, sperimentale e numerico. Si sono considerati i seguenti proli di velocita: u(6:33; y; 0:2); u(6:33; y; 0:5) u(12:66; y; 0:2); u(12:66; y; 0:5) u(19:00; y; 0:2); u(19:00; y; 0:5) Di seguito sono presentati i graci rappresentanti questi proli. I dati numerici sono stati ottenuti eseguendo il codice in forma parallela sul Cray-T3D con 64 processori. L'intera simulazione ha richiesto 6000 passi di tempo per la quale sono stati necessari 6683 secondi di cpu, con un tempo medio, per passo di tempo, di circa 1.11 secondi. E peraltro opportuno osservare che, in accordo con i rilievi sperimentali, la simulazione numerica ha realizzato condizioni di regime stazionario. 126 8. Risultati Re = 42; Pr = 0.71; Ra = 4878 z = 0.2; x = 6.33 longitudinal velocity 1.00 0.75 0.50 Experimental Calculated 0.25 0 1 2 3 4 5 y Re = 42; Pr = 0.71; Ra = 4878 z = 0.5; x = 6.33 longitudinal velocity 1.00 0.75 0.50 Experimental Calculated 0.25 0 1 2 3 y 4 5 127 8.2. Convezione mista Re = 42; Pr = 0.71; Ra = 4878 z = 0.2; x = 12.7 longitudinal velocity 1.00 0.75 0.50 Experimental Calculated 0.25 0 1 2 3 4 5 y Re = 42; Pr = 0.71; Ra = 4878 z = 0.5; x = 12.7 longitudinal velocity 1.00 0.75 0.50 Experimental Calculated 0.25 0 1 2 3 y 4 5 128 8. Risultati Re = 42; Pr = 0.71; Ra = 4878 z = 0.2; x = 19 longitudinal velocity 1.00 0.75 0.50 Experimental Calculated 0.25 0 1 2 3 4 5 y Re = 42; Pr = 0.71; Ra = 4878 z = 0.5; x = 19 longitudinal velocity 1.00 0.75 0.50 Experimental Calculated 0.25 0 1 2 3 4 5 y Figura 8.4: Confronto fra misure sperimentali e valori calcolati del prolo di velocita longitudinale per un canale rettangolare. Pr=0.71, Re=42, Ra=4878 8.2. Convezione mista 129 Il confronto con misure sperimentali, ottenute con anemometro laser doppler, e risultati ottenuti dalla simulazione e quasi sorprendente, considerando il fatto che la griglia adottata e a malapena suciente a descrivere il complesso campo di moto. Si puo notare, infatti, che il prolo di velocita sperimentale a dente di sega, a meta altezza, z = 0:5, per x = 19, e praticamemte sovrapponibile a quello calcolato, ed indica che il numero e la forma dei vortici longitudinali stazionari sono stati correttamente riprodotti dalla simulazione. La forma diversa del prolo in prossimita della supercie orizzontale inferiore, z = 0:2, e anch'essa riprodotta fedelmente dal calcolo, ed e dovuta al fatto che i vortici longitudinali -Celle di Benard- sono disposti in modo alternato: celle dispari verso il basso e celle pari verso l'alto. L'accordo sperimentale-calcolato e buono anche per valori di x intermedi, x = 12:7, ma e meno soddisfacente per il valore di x inferiore, x = 6:33, come evidenziato nei due proli per z = 0:2 e z = 0:5. Tale scostamento, tuttavia, e agevolmente attribuibile alle dierenze fra condizioni d'ingresso utilizzate nel calcolo e quelle eettivamente presenti nell'esperimento di K.C.Chiu e F.Rosenberger [24]; in quest'ultimo caso, infatti, vi e la presenza di un tratto di canale non riscaldato prima dell'ingresso, che consente, dato il basso valore di Re, la propagazione di calore (diusione assiale) in direzione opposta a quella del moto. 8.2.4 Simulazione di diversi regimi di moto Per questa serie di prove si e simulato un condotto di dimensioni (adimensionali) pari a (10 2 1) utilizzando una mesh di (100 21 21), (100 25 25) e (120 31 31) rispettivamente per Gr = 5 103 ; 2 104 e 1 105 . Presentiamo, per ragioni di chiarezza, il campo di temperature e il campo di velocita, per delle sezioni signicative del canale. 130 8. Risultati Re=10, Gr=5 103 Figura 8.5: Re=10, Gr=5000, 1500 passi di tempo, = 12:18. Sezione (x; 1; z ). Figura 8.6: Re=10, Gr=5000, 2500 passi di tempo, = 20:30. Sezione (x; 1; z ). 8.2. Convezione mista 131 Figura 8.7: Re=10, Gr=5000, 4000 passi di tempo, = 32:48. Sezione (x; 1; z ). 132 8. Risultati Figura 8.8: Re=10, Gr=5000, 15000 passi di tempo, = 121:80. Sezione (x; 1; z ). Figura 8.9: Re=10, Gr=5000, 15000 passi di tempo, tempo 121.80. Sezioni (2; y; z ), (4; y; z ), (6; y; z ), (8; y; z ), (10; y; z ). 8.2. Convezione mista 133 Figura 8.10: Re=10, Gr=5000, 15000 passi di tempo, tempo 121.80. Campo delle velocita sulla sezione (5; y; z ) . 134 8. Risultati Re=10, Gr=2 104 Figura 8.11: Re=10, Gr=20000, 6000 passi di tempo, = 90:60. Sezione (x; 1; z ). Figura 8.12: Re=10, Gr=20000, 7500 passi di tempo, = 113:25. Sezione (x; 1; z ). 8.2. Convezione mista 135 Figura 8.13: Re=10, Gr=20000, 9000 passi di tempo, = 135:90. Sezione (x; 1; z ). 136 8. Risultati Figura 8.14: Re=10, Gr=20000, 10500 passi di tempo, = 158:55. Sezione (x; 1; z ). Figura 8.15: Re=10, Gr=20000, 10500 passi di tempo, = 158:60. Sezioni (x; 1; z ), (x; 2; z ), (x; 3; z ), (x; 4; z ), (x; 5; z ), (x; 6; z ), (x; 7; z ), (x; 8; z ), (x; 9; z ), (x; 10; z ). 8.2. Convezione mista 137 Figura 8.16: Re=10, Gr=20000, 10500 passi di tempo, = 158:60. Campo delle velocita sulla sezione (x; 1; z ). 138 8. Risultati Re=10, Gr=1 105 Figura 8.17: Re=10, Gr=100000, 11000 passi di tempo, = 138:60. Sezione (x; 1; z ). 8.2. Convezione mista 139 Figura 8.18: Re=10, Gr=100000, 11000 passi di tempo, = 138:60. Sezioni (x; 1:25; z ), (x; 2:50; z ), (x; 3:75; z ), (x; 5:0; z ), (x; 6:25; z ), (x; 7:5; z ), (x; 8:75; z ), (x; 1; z ),. 140 8. Risultati Figura 8.19: Re=10, Gr=100000, 11000 passi di tempo, = 138:60. Campo delle velocita sulla sezione (x; y; 0:5). 141 8.2. Convezione mista Andamento temporale del numero di Nusselt medio 5 Gr = Gr = Gr = Gr = Nu/Gr 1/4 2 5 1x10 4 2.5x10 4 1x10 3 5x10 1 0.5 0.2 0.1 0 20 40 60 80 100 120 Time Figura 8.20: Andamento del valore medio del numero di Nusselt, Nu, sulla supercie calda in funzione del tempo In gura 8.20 e riportato l'andamento temporale del numero di Nusselt medio, sulla parete calda, per diversi valori di Gr. Nel graco il numero di Nusselt e stato scalato con Gr1=4 , e si puo notare che le tracce sono, praticamente, sovrapposte. Cio e in accordo con le piu note correlazioni sperimentali per il usso termico in convezione mista per canali orizzontali, usualmente espresse da relazioni del tipo: Nu = Cost Gr1=4 Prb (8.14) Dall'osservazione delle gure 8.5-8.18, si deduce che, per il valore piu basso di Grashof, Gr = 5 103 , il campo di moto e stazionario, ed e costituito dalla 142 8. Risultati sovrapposizione del campo medio di moto e da due vortici longitudinali. E interessante notare l'assenza, a regime, di onde trasversali, che tuttavia, come evidenziato dalle gure 8.5, 8.6 e 8.7, sono presenti all'inizio del transitorio. Nel caso Gr = 2 104 , l'incremento delle forze di galleggiamento provoca l'insorgere di onde trasversali non stazionarie che si propagano nella stessa direzione del moto medio. Esse, come evidenziato nelle gure 8.11-8.14, hanno un carattere ordinato e quasi periodico, e si sovrappongono alla presenza dei vortici longitudinali (come visibile in gura 8.15). Sempre nelle gure 8.5-8.18, e visibile la minima inuenza, e quindi la validita, della condizione di Orlanski: la lunghezza d'onda, infatti, non varia in prossimita dell'uscita. Inne il caso Gr = 1 105 , illustrato in un generico istante di tempo nelle gure 8.17 e 8.18, corrisponde a condizioni caotiche, o di incipiente turbolenza (transitional conditions). Dalle gure, infatti, risulta chiara la perdita del carattere quasi-periodico ottenuto per Gr = 2 104 , poiche ora le onde trasversali sono molto piu irregolari e ravvicinate, ed assumono la forma distinta di colonne ascendenti (thermals). Nella gura 8.18, inoltre, sono ancora visibili le perturbazioni di tipo longitudinale, che si presentano anche'esse piu irregolari. Per una maggiore comprensione in Appendice B vengono rappresentate delle visualizzazioni tridimensionali di questi fenomeni. In conclusione, le pur limitate simulazioni eettuate per tale geometria hanno consentito di individuare tre diversi regimi di moto: stazionario, quasi periodico e caotico-transizionale. La simulazione diretta, ancora piu interessante ai ni pratici, per valori di Re e soprattutto Gr maggiori, in condizione quindi di turbolenza completamente sviluppata, richiede tuttavia la disponibilita di ben maggiori risorse di calcolo (peraltro richieste al CINECA sul Cray T3D). I risultati ottenuti sembrano indicare, diversamente dalle simulazioni di Evans e Greif [25], che, per Gr = 5000, il moto e stazionario, costituito solo da vortici longitudinali. Tuttavia, la metodologia usata da Evans e Greif e alquanto diversa da quella da noi sviluppata, sebbene l'ordine di accuratezza piu elevato e la condizione al contorno in uscita piu realistica della nostra metodologia, suggeriscono di guardare con un certo sospetto ai risultati da loro riportati. Capitolo 9 Conclusioni Come si e potuto constatare, in questa tesi non e stato trattato un unico argomento in modo omogeneo, ma si e cercato di mostrare alcune delle componenti interdisciplinari che inevitabilmente sono presenti qualora si cerchi di risolvere in modo completo il problema che ci si e pressati. Tale interdisciplinarieta e comune a tutte le discipline raccolte sotto la denominazione piu generale di Computational Science, e della Fluidodinamica Computazionale (CFD) in particolare. La possibilita di utilizzo di un nuovo sistema di supercalcolo come il CrayT3D sarebbe andata sprecata se le sue potenzialita non fossero state usate nella risoluzione di un preciso ed importante problema sico. Molti sono stati gli apporti richiesti durante lo svolgimento di questo lavoro, come ad esempio le innumerevoli conoscenze matematiche necessarie e gli strumenti di visualizzazione scientica che sono stati utilizzati. Inevitabilmente non tutto ha potuto trovare spazio su queste pagine. Vogliamo quindi riassumere quelli che sono stati i punti toccati nel corso di questa tesi e quali i risultati ottenuti. Ricordiamo che per quanto riguarda la modellizzazione del problema siamo partiti da lavoro di Bandelli [16], dove sono proposte varie modalita per la soluzione numerica dei fenomeni convettivi. Il lavoro svolto nella prima parte della tesi puo quindi essere visto come di modica ed ottimizzazione. Esso puo essere riassunto nei seguenti punti: 1. Utilizzo ed implementazione del metodo dei Volumi Finiti al posto delle Dierenze Finite. Questo metodo ha permesso una notevole riduzione 143 144 9. Conclusioni di tutti gli errori introdotti dalle procedure utilizzate. Portiamo come R esempio l'errore di massa cioe v r u dv, che deve essere nullo per uidi incomprimibili: con il metodo delle Dierenze Finite esso risultava dell'ordine di 10,15 10,16 ma solamente per griglie uniformi, per le non uniformi peggiorava sensibilmente; con il metodo dei Volumi Finiti invece abbiamo ridotto l'errore a 10,20 per qualsiasi griglia. 2. Progetto e realizzazione di una procedura per la risoluzione dell'equazione di Poisson r2 = c. La procedura dierisce da quella adottata precedentemente per un'estrema essibilita nell'uso di griglie non uniformi e delle condizioni al contorno. 3. Imposizione, sulla supercie d'ingresso, di condizioni al contorno piu realistiche, come il prolo di velocita completamente sviluppato per condotti rettangolari. Sulla supercie d'uscita invece e stata utilizzata la condizione di Orlanski o Monochromatic travelling wave Possiamo identicare la seconda fase della tesi come quella dello sviluppo dei programmi di calcolo e della loro parallelizzazione. Anche qui possiamo ricordare i punti piu importanti: Il primo passo e stato quello di eettuare il porting del codice su diverse piattaforme tradizionali di calcolo (Cray-XMP, Cray-C90, Digital Alpha3000, Digital Alpha-7000, SGI, Sun Sparkstation 10) al ne di provarne il funzionamento e la portabilita. Dopo la concessione di un Grant da parte del CINECA abbiamo potuto avviare l'esperienza sul Cray-T3D. L'acquisizione di conoscenze sull'architettura e sui modelli di programmazione e stata anche notevolmente facilitata dal CINECA, che ha messo a disposizione degli interessati un corso mirato all'utilizzo di tale macchina. Il primo approccio con la programmazione parallela ha evidenziato pecu- liarita e difetti dei vari modelli implementati dalla Cray per questo tipo di sistemi paralleli. Vista la tipologia di problemi da noi studiati abbiamo quindi optato per l'utilizzo dei modelli Work Sharing e Data Parallel al posto del piu tradizionale PVM. 145 Il codice parallelizzato del Fast Poisson Solver ha mostrato immediata- mente la potenzialita di questa macchina rispetto ad altri sistemi di Supercalcolo con cui abbiamo eseguito dei confronti (no 6 volte piu veloce di un Cray-C90 in modalita monoprocessore). Bisogna anche ricordare che la versione del T3D presente al CINECA e dotata solamente di 64 processori (nodi); noi riteniamo che per un sistema, utilizzato per una produzione intensiva, siano sicuramente necessari almeno 128-256 nodi. L'algoritmo per il Fast Poisson Solver, presentando delle strutture particolarmente adatte alla parallelizzazione, ha dimostrato un grado di scalabilita praticamente lineare con il numero dei nodi, facendo presagire degli ottimi incrementi prestazionali su macchine piu potenti. Per quanto riguarda l'intero programma di simulazione le prestazioni globali sono state indubbiamente inferiori a quelle raggiunte dal solo Poisson Solver; bisogna pero dire che le caratteristiche di scalabilita sono rimaste pressoche invariate. Questo fa capire che la colpa di cio non risiede in un errata parallelizzazione ma nella ancora insuciente maturita dell'architettura del Cray-T3D (microprocessore e cache sottodimensionati, compilatori e tool di programmazione appena alle prime versioni, ecc.). Pur disponendo di un ridotto tempo di CPU abbiamo potuto constatare come la potenza di calcolo sia fondamentale per la soluzione numerica di problemi come quello presentato. Portiamo ad esempio il confronto con i dati sperimentali proposto nel capitolo 8; per fare una verica sull'accuratezza del codice abbiamo utilizzato nemmeno due ore di Cray-T3D, mentre su una comune piattaforma di calcolo di tipo tradizionale ci sarebbero voluti dei giorni se non settimane, ammesso di possedere l'enorme quantita di memoria richiesta da questo tipo di problemi. La possibilita che ci e stata oerta con l'utilizzo di questo Supercalcolatore, precursore della prossima generazione, si e dimostrata senza dubbio insostituibile. In nessun altro modo avremmo potuto conoscere e sperimentare le nuove architetture e le innovative tecniche di programmazione che le gestiscono. Non bisogna sottovalutare questo aspetto perche, quello che attualmente ci sembra lo stato dell'arte dei sistemi di elaborazione in futuro non sara che un mezzo di comune utilizzo nell' arontare problemi sempre piu complessi ed importanti. Appendice A Fast Poisson Solver in 3D In questa appendice viene proposto tutto il procedimento per la risoluzione dell'equazione di Poisson discretizzata su un dominio tridimensionale, procedimento che seguendo il metodo Matrix Decomposition e simile a quello presentato nel Capitolo 6 per sole due dimensioni ma che presenta una complessita ben maggiore. Equazione di Poisson: r2 = r u L'equazione e denita su un dominio trimensionale , costituito da un parallelepipedo di lati di lunghezza arbitraria: (x; y; z) x 2 [0; lx ]; y 2 [0; ly ]; z 2 [0; lz ] Le condizioni al contorno su sono costituite dalla condizione di Neumann: @ = 0 @n Questa condizione implica che la soluzione e denita a meno di una costante arbitraria, e la condizione di risolvibilita e data dalla: Z c dS = 0 Integriamo sul volume di controllo: Z Z r2 = r u dS v:c: v:c: 146 147 Applichiamo il teorema della divergenza: Z s:c: Per semplicita poniamo: Z s:c: Z r n^ dS = rhs = s:c: Z s:c: u n^ dS u n^ dS @ j ] dy dz + [ @ j , E @x @x W Z s:c: Z s:c: @ [ @ @y jS , @y jN ] dx dz + @ j ] dx dy = rhs [ @ j , T @z @z B Approssimiamo le derivate sulle superci con delle dierenze nite centrali: @ j ' i+1;j;k , i;j;k xi+1 +xi @x E 2 @ j ' i;j +1;k , i;j;k yj +1 +yj @y S 2 @ j ' i;j;k+1 , i;j;k zk+1 +zk @z T 2 @ j ' i;j;k , i,1;j;k xi +xi,1 @x W 2 @ j ' i;j;k , i;j,1;k yj +yj ,1 @y N 2 @ j ' i;j;k , i;j;k,1 zk +zk,1 @z B 2 Deniamo i coecienti: x+i = x 2+ x ; i+1 i x,i = x +2x ; i i,1 xi = ,x+i , x,i yj+ = y 2+ y ; j +1 j yj, = y +2y ; j j ,1 yj = ,yj+ , yj, zk+ = z 2+ z ; k+1 k zk, = z +2z ; k k,1 zk = ,zk+ , zk, 148 A. Fast Poisson Solver in 3D Per il generico volume di controllo v:c:(i; j ) discretizziamo quindi i due termini dell'equazione: -usso del vettore u attraverso la superce s:c: del volume di controllo v:c:(i:j ). Z s:c: u n^ dS ' [ui;j;k , ui,1;j;k ]yj zk + [vi;j;k , vi;j ,1;k ]xi zk + [wi;j;k , wi;j;k,1]xi yj = rhsi;j;k -integrando la derivata parziale di attraverso la superce s:c: del volume di controllo v:c:(i; j ) si ottiene. [x,i i,1;j;k + xi i;j;k + x+i i+1;j;k ]yj zk + [yj, i;j ,1;k + yj i;j;k + yj+ i;j +1;k ]xi zk + [zk, i;j;k,1 + zk i;j;k + zk+ i;j;k+1]xi yj = rhsi;j;k x,i yj zk i,1;j;k + yj,xizk i;j ,1;k + zk, xi yj i;j;k,1 + [xi yj zk + yj xi zk + zk xi yj ]i;j;k + (A.1) + zk xiyj i;j;k+1 + yj+ xizk i;j+1;k + x+i yj zk i+1;j;k = rhsi;j;k L'equazione (A.1) e la generica associata ad un punto interno al dominio , vediamo cosa succede per i punti al contorno sulle superci z = 0; z = lz . Per il contorno z = 0 applicando le condizioni al contorno, @ j ' i;j;1 , i;j;0 = 0 =) = 8i; j i;j;0 i;j;1 z1 +z0 @z 0 2 x,i yj z1i,1;j;1 + yj,xiz1 i;j,1;1+ + [xi yj z1 + yj xi z1 + (z1 + z1, )xi yj ]i;j;1 + z1+ xiyj i;j;2 + yj+ xi z1 i;j +1;1 + x+i yj z1 i+1;j;1 = rhsi;j;1 149 Per il contorno z = lz applicando le condizioni al contorno, @ j ' i;j;p+1 , i;j;p = 0 =) i;j;p+1 = i;j;p 8i; j zp+1 +zp @z lz 2 x,i yj zpi,1;j;p + yj,xi zpi;j,1;p + zp, xiyj i;j;p,1 + [xi yj zp + yj xi zp + (zp + zp+ )xi yj ]i;j;p + yj+xi zp i;j +1;p + x+i yj zpi+1;j;p = rhsi;j;p Scriviamo ora per dei generici (i; j ) il sistema di equazioni in forma matriciale introducendo le seguenti matrici: 2 z1 6 ... 6 6 6 Z = 66 zk ... 6 4 2 A= 6 6 6 6 6 6 6 4 (z1 + z1, ) z1+ ... ... ... 3 zp 7 7 7 7 7 7 7 5 3 zk, zk zk+ ... ... ... zp, (zp + zp+ ) Deniamo inoltre: 2 6 6 6 6 6 6 6 4 (A.2) i;j;1 .. . i;j; = i;j;k .. . i;j;p 3 2 7 7 7 7 7 7 7 5 6 6 6 6 6 6 6 4 rhsi;j;1 .. . rhsi;j; = rhsi;j;k .. . rhsi;j;p 7 7 7 7 7 7 7 5 (A.3) 3 7 7 7 7 7 7 7 5 (A.4) Otteniamo quindi il sistema compatto valido per 1 < i < m, 1 < j < n e 8k: 8 > x,i yj Zi,1;j; + yj, xiZi;j ,1; + < [xi yj A + xi yj Z + yj xi Z]i;j; + (A.5) > : yj+xiZi;j +1; + x+i yj Zi+1;j; = rhsi;j; 1 < j < n; 1 < i < m 150 A. Fast Poisson Solver in 3D Bisogna ora considerare le condizioni al contorno in direzione y: @ j ' i;1;k , i;0;k = 0 =) = i;1;k i;0;k 8i; k y1 +y0 @y 0 2 @ j ' i;n+1;k , i;n;k = 0 =) i;n+1;k = i;n;k 8i; k yn+1 +yn @y ly 2 che sostituite nella (A.5) compongono il seguente sistema globale: 8 > x,i y1Zi,1;1; + > > > > [xi y1A + xi y1 Z + (y1 + y1, )xi Z]i;1; + > > > > > y1+xiZi;2; + x+i y1Zi+1;1; = rhsi;1; > > > > > > > > > < > > > > > > > > > > > > > > > > > > > : x,i yj Zi,1;j; + yj,xi Zi;j,1; + [xi yj A + xi yj Z + yj xi Z]i;j; + yj+ xiZi;j +1; + x+i yj Zi+1;j; = rhsi;j; 1 < j < n; 1 < i < m x,i yn Zi,1;n; + yn,xiZi;n,1; + [xi ynA + xi ynZ + (yn + yn+)xi Z]i;n; + x+i ynZi+1;n; = rhsi;n; Moltiplichiamo m.a.m per Z,1 : 8 > > > > > > > > > > > > > > > > > > > < > > > > > > > > > > > > > > > > > > > : j = 1; 1 < i < m j = n; 1 < i < m x,i y1 Ii,1;1; + [xi y1Z,1 A + xi y1 I + (y1 + y1, )xi I]i;1; + y1+ xiIi;2; + x+i y1 Ii+1;1; = Z,1rhsi;1; j = 1; 1 < i < m x,i yj Ii,1;j; + yj,xiIi;j ,1; + [xi yj Z,1 A + xi yj I + yj xiI]i;j; + yj+ xiIi;j+1; + x+i yj Ii+1;j; = Z,1 rhsi;j; 1 < j < n; 1 < i < m x,i ynIi,1;n; + yn, xi Ii;n,1; + , 1 [xi ynZ A + xi ynI + (yn + yn+ )xi I]i;n; + x+i ynIi+1;n; = Diagonalizzazione della matrice Z,1 A : U,1 Z,1AU = Z,1rhsi;n; j = n; 1 < i < m (A.6) 151 ei;j; = U,1 i;j; ; 8 > > > > > > > > > > > > > > > > > > > > < > > > > > > > > > > > > > > > > > > > > : ,1 ,1 g rhs i;j; = U Z rhsi;j; x,i y1Iei,1;1; + [xi y1 + xi y1 I + (y1 + y1, )xi I]ei;1; + g y1+xiIei;2; + x+i y1Iei+1;1; = rhs i;1; (A.7) j = 1; 1 < i < m x,i yj Iei,1;j; + yj,xi Iei;j,1; + [xi yj + xi yj I + yj xi I]ei;j; + g yj+ xiIei;j+1; + x+i yj Iei+1;j; = rhs i;j; 1 < j < n; 1 < i < m x,i ynIei,1;n; + yn,xiIei;n,1; + [xi yn + xi ynI + (yn + yn+ )xi I]ei;n; + g x+i ynIei+1;n; = rhs i;n; j = n; 1 < i < m Scriviamo ora le equazioni associate a ciascun autovalore k , ottenendo k sistemi lineari indipendenti: 8 > > > > > > > > > > > > > > > > > > > > < > > > > > > > > > > > > > > > > > > > > : x,i y1ei,1;1;k + [xi y1 k + xi y1 + (y1 + y1, )xi ]ei;1;k + g y1+xi ei;2;k + x+i y1ei+1;1;k = rhs i;1;k j = 1; 1 < i < m x,i yj ei,1;j;k + yj,xiei;j,1;k + [xi yj k + xi yj + yj xi ]ei;j;k + g yj+xiei;j+1;k + x+i yj ei+1;j;k = rhs i;j;k 1 < j < n; 1 < i < m x,i ynei,1;n;k + yn, xi ei;n,1;k + [xi ynk + xi yn + (yn + yn+)xi ]ei;n;k + g x+i yn ei+1;n;k = rhs i;n;k j = n; 1 < i < m Il sistema puo essere scritto in modo piu compatto introducendo le seguenti 152 A. Fast Poisson Solver in 3D matrici: 2 Y = 6 6 6 6 6 6 6 4 2 Rk = 6 6 6 6 6 6 6 4 y1 3 ... yj ... y1 k + (y1, + y1 ) y1+ ... ... yn 7 7 7 7 7 7 7 5 (A.8) 3 ... 7 7 7 7 7 7 7 5 yj, yj k + yj yj+ (A.9) ... ... ... yn, ynk + (yn+ + yn) Il sistema che si ottiene vale per 1 < i < m e 8j; k e risulta: g x,i Yei,1;;k + [xiRk + xi Y]ei;;k + x+i Yei+1;;k = rhs i;;k (A.10) Considerando le condizioni al contorno nella direzione x: @ j ' 1;j;k , 0;j;k = 0 =) = 1;j;k 0;j;k 8j; k x1 +x0 @x 0 2 @ j ' m+1;j;k , m;j;k = 0 =) m+1;j;k = m;j;k 8j; k xm+1 +xm @x lx 2 che sostituite nella (A.10) compongono i seguenti k sistemi lineari indipendenti: 8 > < g [x1 Rk + (x,1 + x1 )Y]e1;;k + x+1 Ye2;;k = rhs 1;;k , + e e e g x Y + [ x R + x Y ] + x Y = rhs i i i , 1 ; ;k k i; ;k i +1 ; ;k i; ;k i i > : , + e e g xm Ym,1;;k + [xm Rk + (xm + xm )Y ]m;;k = rhsm;;k Moltiplichiamo m.a.m per Y,1 : 8 > < > : [x1 Y,1Rk + (x,1 + x1 )I]e1;;k + , xi Iei,1;;k + [xi Y,1 Rk + xi I]ei;;k + x,m Iem,1;;k + [xmY,1Rk + (x+m + xm )I]em;;k I x+1 e2;;k + xi ei+1;;k I g = Y,1 rhs 1;;k , 1 g = Y rhs i;;k g = Y,1 rhs m;;k 153 Diagonalizziamo la matrice Y,1Rk : S,k 1Y,1Rk Sk = k bi;;k = S,k 1ei;;k ; 2 1;k k = 6 6 6 6 6 6 6 4 ... (A.11) ,1 ,1 g i;;k d rhs i;;k = Sk Y rhs (A.12) 3 j;k ... n;k 7 7 7 7 7 7 7 5 (A.13) 8 > < d [x1 k + (x,1 + x1 )I]b1;;k + x+1 Ib2;;k = rhs 1;;k , Ibi,1;;k + + Ib b d x [ x + x I ] + x = rhs i i k i; ;k i +1 ; ;k i;;k i i > : , b + b d xm Im,1;;k + [xm k + (xm + xm )I]m;;k = rhsm;;k Consideriamo quindi solo le equazioni caratterizzate da j;k : 8 > < d [x1 j;k + (x,1 + x1 )]b1;j;k + x+1 b2;j;k = rhs 1;j;k , bi,1;j;k + + b b d x [ x + x ] + x = rhs i i j;k i;j;k i +1 ;j;k i;j;k i i > : ,b + b d xm m,1;j;k + [xm j;k + (xm + xm )]m;j;k = rhsm;j;k Il problema si riduce quindi alla risoluzione di (n p) sistemi lineari tridiagonali indipendenti: d Tj;kb;j;k = rhs (A.14) ;j;k dove Tj;k risulta essere del tipo: 2 3 x1 j;k + (x,1 + x1 ) x+1 6 7 ... ... ... 6 7 6 7 6 7 , + Tj;k = 66 xi xi j;k + xi xi 7(A.15) 7 . . . 6 7 .. .. .. 4 5 x,m xm j;k + (x+m + xm ) L'algoritmo per la risoluzione dell'equazione di Poisson discretizzata e costituito da due fasi: 154 A. Fast Poisson Solver in 3D La prefattorizzazione consiste in: 1. Costruire le matrici (A.2) e (A.3). 2. Soluzione del problema degli autovalori (A.6). 3. Costruire le matrici (A.8) e (A.9). 4. Soluzione del problema degli autovalori (A.11). La risoluzione consiste invece in: g. 1. Eseguire il prodotto matrice per vettore (A.7) per ottenere rhs d. 2. Eseguire il prodotto matrice per vettore (A.12) per ottenere rhs 3. Risolvere gli n p sistemi lineari tridiagonali della (A.15) ottenendo b. 4. Eseguire il prodotto matrice per vettore (A.12) per ottenere e. 5. Eseguire il prodotto matrice per vettore (A.7) per ottenere . Bibliograa [1] M.J. Quinn, Designing Ecient Alghorithms for Parallel Computers, McGrow-Hill international Editions, pag. 18-20, 1987. [2] M.J. Flynn, Very High Speed Computing Systems, Proceedings of the IEEE, 54, pp. 1901-1909, 12-Dec-1966. [3] A.J. Smits, The Interplay Between Experiments and Computation in the Study of Turbulance, Experimental Thermal and Fluid Science, 5:579-585, 1992. [4] P.A. Rigsbee, PVM Message-Passing Library Interface, Cray Research Inc., Draft Version 6.0, 9-July-1993. [5] D.M. Pase, T. MacDonald, A. Meltzer, MPP Fortran Programming Model, Cray Research Inc., 29-March-1994. [6] G.Erbacci, G.Paruolo, Introduzione alla Programmazione Parallela su Cray T3D, Gruppo Supercalcolo, CINECA, Centro di Calcolo Interuniversitari, 1994. [7] F.P. Incropera, A.L. Knox, Mixed convection ow and heat transfer in the entry region of horizontal rectangular duct, Trans. ASME J. Heat Transfer, 9:434-439, May 1987. [8] S. Biringen, A.Hauser, Calculation of Two-Dimensional Shear-Driven cavity ows at High Reynolds Numbers, International Journal for Numerical Methods in Fluids, vol.14,1087-1109(1992). [9] B.A. Finlayson, The Method of Weighted Residuals and Variational Principles, Academic, 1972. 155 156 BIBLIOGRAFIA [10] S.V. Patankar, Numerical Heat Transfer and Fluid Flow, McGrow-Hill Book Company,1980. [11] C.A.J. Fletcher, Computational Techniques for Fluid Dynamics, SpringerVerlag, 1990. [12] P.M. Gresho, R. Sani, On pressure boundary conditions for the incompressible Navier Stokes equations, Int.j.numer.methods uids,7:1111,1987. [13] A.Chorin, Numerical Solution of the Navier-Stokes Equations, Math.Comput., 22:754,1969. [14] A.Chorin, On the Convergence of Discrete Aproximations of the NavierStokes Equations, Math.Comput., 23:341,1969. [15] P.M. Gresho, On the theory of semi-implicit projection methods for viscous incompressible ow and its implementation via nite element method that also introduces a nearly consistent mass matrix. Part 1: theory, Int.j.numer.methods uids, 11:578-620,1990. [16] D. Bandelli, Metodi Time-Splitting e Projection in termouidodinamica: Simulazione numerica e visualizzazione in problemi tridimensionali non stazionari, Universita degli studi di Trieste, A.A. 1993/94. [17] Buzbee, G.H Golub C.W. Nielson, On direct methods for Solving Poisson's Equation, SIAM J.Numer.Anal.,Vol.7,No. 4, 1970. [18] Babu, S.A. Korpela, On the Direct Solution of Poisson's Equation on Non-uniform Grid, J. Computational Physics, Vol.104, 93-98,1993. [19] A. Huser, S. Biringen, Calculation of Two-dimensional Shear-driven Cavity Flows at High Reynolds Numbers, International J. for Num. Methods in Fluids, Vol.14, 1087-1109, 1992. [20] R.J.A.Janssen, R.A.W.M.Henks and C.J. Hoogendoorn, Transition to time-periodicity of a natural-convection ow in a 3D dierentially heated cavity, Int.J.Heat Mass Transfer, Vol.36, No.11, pp.2927-2940,1993. [21] T.Fusegi, J.M.Hyun and K.Kuwahara, Three-dimensional numerical simulation of periodic natural convection in a dierentially heated cubical enclosure, Appl.Sci.Res., 49(3),271-282,1992. BIBLIOGRAFIA 157 [22] R.K.Shah, A.L.London, Laminar Flow Forced Convection in Ducts, Academic Press,1978. [23] I.Orlanski, A Simple Boundary Condition for Unbounded Hyperbolic Flows, J.Comput.Phys., 21,251-269,1976. [24] K.C.Chiu, F.Rosenberger, Mixed Convection Between Horizontal PlatesI. Entrance Eects, Int.J.Heat Mass Transfer, Vol.30, No.8, pp.16451654,1987. [25] G.Evans, R.Greif, Unsteady three-dimensional mixed convection in a heated horizontal channel with applications to chemical vapor deposition, Int.J.Heat Mass Transfer, Vol.34, No.8, pp.2039-2051,1991.