Università degli Studi della Basilicata Facoltà di Ingegneria Corso di Laurea in Ingegneria Meccanica STUDIO TEORICO E NUMERICO DI GAS IONIZZATI: GENERALIZZAZIONE DEL METODO DI ROE E MODELLIZZAZIONE NUMERICA DI UNA CELLA DI PENNING PER POMPE IONICHE AD ULTRA ALTO VUOTO Relatori: Prof. Ing. Aldo Bonfiglioli Ing. Antonio D’Angola Laureando: Luca CALIA 27449 ANNO ACCADEMICO 2007-2008 Indice Indice Indice ______________________________________________________________1 Introduzione ________________________________________________________3 1. Proprietà termodinamiche dell’aria __________________________________7 1.1 Il plasma: generalità _______________________________________________________ 7 1.2 Equilibrio chimico e termodinamico di un plasma_______________________________ 9 1.3 Composizione ed equilibrio chimico dell’aria __________________________________ 11 1.4 Fit delle proprietà termodinamiche __________________________________________ 13 1.5 Equazione di stato per la pressione __________________________________________ 15 2. Equazioni di Navier-Stokes per un fluido _____________________________17 2.1 Introduzione_____________________________________________________________ 17 2.2 Equazioni di Navier-Stokes_________________________________________________ 21 2.3 Equazioni di Eulero_______________________________________________________ 25 2.4 Equazioni di Eulero 1 D ___________________________________________________ 27 3. Metodo di Roe___________________________________________________29 3.1 Principi di base del metodo di Roe___________________________________________ 29 3.2 Generalizzazione del metodo per un gas reale in equilibrio termodinamico _________ 32 3.3 Calcolo dello stato medio dei coefficienti della linearizzazione ____________________ 34 3.4 Stato medio per un gas perfetto non ionizzato _________________________________ 39 3.5 Generalizzazione di Vinokur-Montagnè per un plasma _________________________ 41 4. Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe ___45 4.1 Il tubo d’urto ____________________________________________________________ 45 4.2 Il metodo di Roe per il tubo d’urto __________________________________________ 48 1 Indice 4.3 Metodo upwind splitting ___________________________________________________ 50 4.4 Programma di calcolo in Fortran____________________________________________ 54 4.4.1 Program Main _______________________________________________________ 55 4.4.2 Subroutine Init _______________________________________________________ 57 4.4.3 Subroutine splitw _____________________________________________________ 60 4.4.4 Subroutine epsi_______________________________________________________ 64 4.4.5 Funzione esterna _____________________________________________________ 65 4.4.6 Subroutine fzero______________________________________________________ 65 4.4.7 Subroutine interp1D___________________________________________________ 66 4.4.8 Subroutine interp2D___________________________________________________ 66 4.4.9 Subroutine pchikappa__________________________________________________ 67 4.4.10 Subroutine Pepsilon ___________________________________________________ 68 4.5 Risultati delle simulazioni numeriche ________________________________________ 69 5. Le pompe ioniche ad ultra alto vuoto ________________________________75 5.1 Introduzione_____________________________________________________________ 75 5.2 La trappola di Penning, condizioni operative e parametri caratteristici ____________ 77 5.3 Moto di particella singola __________________________________________________ 81 5.3.1 Campo elettrostatico uniforme___________________________________________ 81 5.3.2 Campo magnetostatico uniforme _________________________________________ 82 5.3.3 Campo magnetostatico uniforme ed elettrostatico non uniforme_________________ 84 5.4 Modellizzazione numerica della cella di Penning _______________________________ 88 6. Conclusioni____________________________________________________105 Bibliografia _______________________________________________________107 Appendice A ______________________________________________________109 Appendice B ______________________________________________________111 Appendice C ______________________________________________________113 2 Introduzione Introduzione Le proprietà dell’aria risentono, in maniera considerevole, dell’equilibrio chimico del gas al variare della temperatura rispetto a quelle di un gas perfetto. Le semplici relazioni per un gas caloricamente perfetto non sono più valide. Il gas è composto da molte specie chimiche e lo stato totale risulta essere la somma dei singoli stati delle differenti specie. Poiché ogni specie si comporta come un gas termicamente perfetto e sono presenti reazioni chimiche, il gas può essere considerato come una miscela chimicamente reattiva di gas perfetti. Inoltre, se non vengono tenute in considerazione le reazioni chimiche, la miscela può essere trattata, localmente, come un gas termicamente perfetto. Se il gas è omogeneo in tutto il dominio, esso si comporta globalmente come un gas termicamente perfetto. L’omogeneità del gas dipende dal cambiamento della sua composizione chimica. L’adozione del giusto modello, per quanto riguarda le relazioni termodinamiche in un fluido, è importante nello studio dei flussi, soprattutto alle alte temperature. Ad esempio lo studio dei razzi, in cui avvengono processi di combustione, dovrebbe essere effettuato tramite accurate simulazioni. Inoltre, i voli supersonici generano delle non idealità delle proprietà del fluido coinvolto. L’elevata temperatura causa eccitazioni molecolari, vibrazioni e dissociazioni, che non sono fenomeni ideali. In regimi di flusso supersonico, tipici del rientro in atmosfera di navicelle spaziali, molta dell’energia cinetica è convertita in energia interna attraverso il forte arco d’urto, causando l’enorme incremento di temperatura. Non appena la temperatura aumenta, l’aria non può essere più considerata né come un gas caloricamente perfetto, perché avvengono vibrazioni a livello atomico che non dipendono in modo lineare dalla temperatura, né come un gas termicamente perfetto dato che le reazioni chimiche alterano la composizione del gas. Il modo generale di trattare il gas alle alte temperature è quello di considerarlo in condizioni di non equilibrio sia chimico che termico. Tuttavia, le simulazioni nelle condizioni di non equilibrio richiedono molte risorse dal punto di vista computazionale. Assumendo l’equilibrio locale si traggono notevoli vantaggi. Questa assunzione spesso è giustificata a basse altitudini e basse velocità, ottenendo risultati corretti in molti problemi di interesse pratico. 3 Introduzione Negli ultimi anni, sono stati adottati diversi approcci per le simulazioni di fluidi in condizioni di equilibrio, basati sul metodo upwind splitting. Tra questi ultimi, il più importante è il metodo di Roe, originariamente ideato per gas perfetti. Nel presente lavoro di tesi è stato generalizzato il metodo di Roe per un gas reale nelle condizioni di equilibrio ed in particolare è stato studiato un tubo d’urto contenente aria inizialmente nelle condizioni non lontane da quelle standard. Successivamente vengono imposte condizioni iniziali tali da considerare l’aria allo stato di plasma. A tal proposito è stato modificato un programma in linguaggio FORTRAN realizzato dal prof. Aldo Bonfiglioli. Il programma originale studia il comportamento di un gas caloricamente perfetto all’interno di un tubo d’urto ed è stato generalizzato al caso di plasmi. Parallelamente a questo lavoro, è stato effettuatouno studio preliminare di una cella di Penning di pompe ioniche ad ultra alto vuoto, analizzando il comportamento della popolazione elettronica e ionica. L’analisi viene effettuata per mezzo di un codice in linguaggio MATLAB realizzato dal gruppo di ricerca del Prof. Gianni Coppa del Politecnico di Torino nell’ambito del contratto di ricerca tra la VARIAN e il Dipartimento di Energetica. Le pompe ioniche (sputter-ion pumps) sono degli strumenti comunemente utilizzati in molte applicazioni tecnologiche, dove sono richieste condizioni di ultra-alto vuoto. Il meccanismo di funzionamento di questo tipo di pompe è sostanzialmente diverso da quello di qualunque altro tipo di pompe. Infatti, non è prevista alcuna parte mobile: il principio fisico, su cui si basano, è la ionizzazione, da parte di elettroni, degli atomi di gas o di molecole, che poi vengono rimossi grazie all’azione di campi elettrici opportunamente studiati. La nube elettronica, confinata nell’anodo cilindrico, in virtù del suo movimento spazza fuori dal volume del sistema ad un tasso costante le molecole ionizzate, in modo analogo al rotore di una pompa meccanica. Le pressioni tipiche di utilizzo di queste pompe sono comprese nell’intervallo 10-4-10-11 Torr. L’architettura classica è basata sulla cella di Penning, che consiste in due elettrodi e un magnete. L’anodo cilindrico, generalmente in acciaio inossidabile, è inserito tra due piastre in titanio, che formano il catodo. Tra i due elettrodi viene mantenuta una differenza di potenziale di qualche kV (3-7 kV), con l’anodo al potenziale di terra. La cella è immersa in un campo magnetico esterno uniforme pari a 0.1 T, parallelo all’asse 4 Introduzione dell’anodo e generalmente creato da magneti permanenti. Nell’ultima parte di questo lavoro, viene descritto il codice che studia il moto delle particelle all’interno di una cella di Penning per pompe ioniche ad ultra alto vuoto. 5 Introduzione 6 Proprietà termodinamiche dell’aria Capitolo 1 1. Proprietà termodinamiche dell’aria 1.1 Il plasma: generalità Un plasma è un gas ionizzato, costituito da una collezione di elettroni e ioni, ma che globalmente è neutro (cioè la carica elettrica totale è nulla). Essendo però costituito di particelle cariche, i moti complessivi delle particelle del plasma sono in gran parte dovuti alle forze a lungo raggio che si vengono continuamente a creare, e che tendono a mantenere il plasma neutro; questo fatto stabilisce una differenza importante rispetto ai gas ordinari, nei quali i moti delle particelle sono dovuti a forze che si estendono al massimo per qualche primo vicino [1]. In quanto tale, il plasma è considerato come il quarto stato della materia, che si distingue quindi dal solido, il liquido e il gas. "Ionizzato" in questo caso significa che una frazione significativamente grande di elettroni è stata strappata dagli atomi. Le cariche elettriche libere fanno sì che il plasma sia un buon conduttore di elettricità, e che risponda fortemente ai campi elettromagnetici. Fig. 1.1. Lampada al Plasma Questo quarto stato della materia fu identificato da Sir William Crookes nel 1879 e chiamato "plasma" da Irving Langmuir nel 1928 [2]. Le ricerche di Sir Crookes 7 Proprietà termodinamiche dell’aria portarono alla realizzazione dei cosiddetti tubi di Crookes, che erano gli antenati dei tubi catodici e delle lampade al neon. Mentre sulla terra la presenza del plasma è relativamente rara (fanno eccezione i fulmini, le aurore boreali e le fiamme), nell'universo costituisce più del 99% della materia conosciuta: di plasma sono fatti il Sole, le stelle e le nebulose. Inoltre, si ha una formazione di plasma sullo scudo termico (Fig. 1.2) dei veicoli spaziali al rientro nell'atmosfera. Fig. 1.2. Formazione di plasma sullo scudo termico Il plasma può essere prodotto esponendo la materia allo stato gassoso ad un forte campo elettrico o magnetico in grado di strappare elettroni agli atomi del gas. Tale evento produce una nuvola di particelle prevalentemente sotto forma di radicali liberi, che sono atomi con coppie di elettroni spaiate e dotate di spiccata reattività. 8 Proprietà termodinamiche dell’aria 1.2 Equilibrio chimico e termodinamico di un plasma Se il flusso è assunto essere in equilibrio termochimico locale, da considerazioni di tipo termodinamico segue che le sue proprietà locali sono funzioni di due variabili di stato indipendenti. L’aria viene considerata come un insieme di NC specie chimiche, ognuna considerata come un gas termicamente perfetto. Le proprietà termodinamiche di una miscela di gas possono essere espresse in funzione di ciascuna specie; per completezza, vengono di seguito richiamate le corrispondenti equazioni di stato [3]. L’energia interna per unità di massa della miscela gassosa è ρs es (T ) s =1 ρ NC e = e(T , ρ s ) = ∑ (1.1) dove ρ s ed es sono la densità e l’energia interna per unità di massa della specie s rispettivamente, mentre NC ρ = ∑ ρs (1.2) s =1 è la densità totale. T è ovviamente la temperatura della miscela gassosa. L’energia interna per unità di massa di un gas termicamente perfetto biatomico può essere espressa come la somma dell’energia traslazionale, rotazionale, vibrazionale, elettronica e del calore di formazione es (T ) = RΘ 5 RsT + Θ s s/ T s + eel ,s + Δhsf 2 e −1 (1.3) in cui il contributo vibrazionale è stato approssimato a quello di un oscillatore armonico; Θ s rappresenta la temperatura vibrazionale caratteristica della molecola considerata. La costante della singola specie è data da Rs = Rˆ / ms , in cui R̂ è la costante universale dei gas ed ms è la massa molare della specie s. Per un gas monoatomico, invece, non vi è contributo rotazionale e vibrazionale es (T ) = 3 RsT + eel ,s + Δhsf 2 (1.4) mentre per un elettrone libero 9 Proprietà termodinamiche dell’aria es (T ) = 3 RsT + Δhsf ( s = elettrone) 2 (1.5) La pressione P può essere ottenuta sommando il contributo delle varie specie chimiche e la legge di Dalton NC P = P(T , ρ s ) = ∑ ρ s RsT = ρRT (1.6) s =1 in cui NC R = R( ρ s ) = ∑ s =1 ρs R ρ s (1.7) L’entalpia della miscela è immediatamente determinata come h = h(T , ρ s ) = e + P / ρ = e(T , ρ s ) + R( ρ s )T (1.8) Le proprietà termodinamiche dipendono sia dalla temperatura che dalla composizione chimica. Nelle condizioni di equilibrio, sia T che ρ s dipendono solo da due variabili termodinamiche. 10 Proprietà termodinamiche dell’aria 1.3 Composizione ed equilibrio chimico dell’aria Una miscela di gas ad elevata temperatura non può essere considerata come un gas caloricamente perfetto per due principali ragioni: la prima è che le specie chimiche sono così eccitate che gli effetti delle vibrazioni atomiche sono importanti; la seconda è che la composizione del gas cambia. Ciascuna specie può essere considerata come un gas termicamente perfetto, ma quando avvengono reazioni chimiche, la composizione della miscela è funzione di P e T. Ad esempio, per l’aria alla pressione di 1 atm, questo fenomeno non è importante finché la temperatura si mantiene al di sotto di 800 K. Ad 800 K l’aria comincia ad essere eccitata in modo vibrazionale e si comporta come un gas termicamente perfetto. A 2000 K, O2 comincia a dissociarsi, per cui il gas non può più essere considerato come un gas termicamente perfetto [4]. L'aria secca al suolo è composta all'incirca per il 78% V/V di azoto, per il 21% V/V di ossigeno e per l'1% V/V di argon, più altri componenti in quantità minori. Fig. 1.3. Composizione dell’aria nelle condizioni standard Considerando un range di variazione della pressione da 0.01 a 100 atm e da 50 a 60000 K per la temperatura, le possibile specie di cui può essere composta l’aria sono: N2, N2+, N, N+, N2+, N3+, N4+, O2, O2+, O2-, O, O-, O+, O2+, O3+, O4+, NO, NO+ ed e- [5]. A seconda degli intervalli di temperatura e di pressione si possono considerare con buona approssimazione le seguenti miscele: • Miscela 1 (AM1) composta dalle specie 11 Proprietà termodinamiche dell’aria O2, N2, O, N, NO che sono messe in relazione dalle seguenti reazioni O2 ⇔ O + O N2 ⇔ N + N NO ⇔ N + O • Miscela 2 (AM2) che comprende anche le specie di prima ionizzazione e l’elettrone libero O2, N2, O, N, NO, NO+, e- con la reazione di ionizzazione NO ⇔ NO + + e − • Miscela 3 (AM3) composta dalle specie O2, N2, O, N, NO, NO+, O2+, N2+, O+, N+, e- che è caratterizzato dalla presenza delle seguenti reazioni O + O ⇔ O2+ + e − N + N ⇔ N 2+ + e − O ⇔ O+ + e− N ⇔ N + + e− Fig. 1.4. Composizione chimica (AM3) in funzione della temperatura 12 Proprietà termodinamiche dell’aria 1.4 Fit delle proprietà termodinamiche Ricavare delle funzioni termodinamiche di una miscela gassosa come l’aria valide per un ampio range di temperatura e di pressione (50-60000 K e 0.01-100 atm) è un problema complicato a causa del comportamento non monotono delle variabili in funzione della temperatura. Le specie chimiche che possono formarsi o scomparire, a seconda delle condizioni di temperatura e pressione, sono numerose e la dipendenza della densità e dell’energia interna specifica dalla composizione non è banale. Fig. 1.5. Andamento della densità dell’aria in funzione di T e p. Facendo riferimento ad un lavoro dell’Ing. D’Angola [5] e definendo la funzione sigmoide come σ j (T ; c j , Δ j ) = in cui exp(q j ) exp(q j ) + exp(−q j ) qj = T −cj Δj (1.9) (1.10) Le proprietà termodinamiche si ottengono come combinando le sigmoide i cui coefficienti si ricavano con n C = ∑α j x j (1.11) j =0 13 Proprietà termodinamiche dell’aria in cui x = log( P) e C rappresenta ognuno dei parametri ci e Δ i delle sigmoidi. In questo modo tutte le quantità vengono espresse in funzione della temperatura e della pressione. L’espressione analitica della densità (kg/m3) è la seguente ρ= p M RT (1.12) dove M è la massa molare media data dalla seguente relazione 6 M = c0 − ∑ a j σ j (T ) (1.13) j =1 L’espressione analitica dell’energia interna specifica si ricava a partire da quella dell’entalpia sottraendo il prodotto tra la pressione ed il volume specifico: e = h− p/ρ 2 7 j =1 j =1 h = ∑ c j T j + ∑ a j σ j (T ) in cui (1.14) (1.15) I coefficienti da utilizzare nell’espressione e il codice in linguaggio MATLAB sono riportati nell’Appendice A e B. Queste espressioni sono state utilizzate per osservare l’andamento della densità e dell’energia interna in funzione della temperatura e della pressione. Inoltre tali funzioni hanno permesso l’individuazione del dominio di variazione della densità e dell’energia interna utile per l’applicazione del metodo di Roe al tubo d’urto come si vedrà nei prossimi capitoli. Fig. 1.6. Andamento dell’energia interna dell’aria in funzione di T e p. 14 Proprietà termodinamiche dell’aria 1.5 Equazione di stato per la pressione La pressione può essere espressa in funzione di altre due variabili termodinamiche nelle condizioni di equilibrio. Come si vedrà nel capitolo 3, Vinokur e Montagnè [3] considerano un’equazione di stato della forma p = p(ε , ρ ) (1.16) in cui ε è l’energia interna per unità di volume, mentre ρ è la densità. L’equazione di stato [6] è p = ε (γ~ − 1) (1.17) La forma generale dell’equazione usata per γ~ è γ~ = a1 + a 2Y + a3 Z + a 4YZ + a5Y 2 + a6 Z 2 + a 7YZ 2 + a8 Z 3 + a9 + a10Y + a11 Z + a12YZ 1 + exp[(a13 + a14Y )(Z + a15Y + a16 )] (1.18) in cui Y = log10 (ρ / 1.292) (1.19) Z = log10 (ε / ρ / 78408.4) (1.20) I coefficienti dell’equazione precedente sono riportati nell’Appendice C. Per mezzo del software MATLAB è stato possibile calcolare una tabella della pressione relativa a diversi valori dell’energia interna per unità di volume e della densità. Inoltre è stato necessario ricavare anche in MATLAB le griglie delle derivate della pressione rispetto all’energia interna e alla densità: ⎛ ∂p ⎞ ⎟ ⎝ ∂ε ⎠ ρ κ =⎜ ⎛ ∂p ⎞ χ = ⎜⎜ ⎟⎟ ⎝ ∂ρ ⎠ ε (1.21) (1.22) attraverso le differenze finite. In Appendice C ci sono i dettagli e le espressioni per ricavare tali tabelle. 15 Proprietà termodinamiche dell’aria 16 Equazioni di Navier-Stokes per un fluido Capitolo 2 2. Equazioni di Navier-Stokes per un fluido 2.1 Introduzione La fluidodinamica è la scienza che studia il comportamento dei fluidi, ovvero liquidi e gas in movimento. La Fluidodinamica Computazionale (brevemente detta CFD, Computational Fluid Dynamics) è la tecnica che permette lo studio dei problemi di fluidodinamica mediante l'utilizzo del computer. La risoluzione di un problema fluidodinamico comporta generalmente la risoluzione di equazioni per il calcolo di diverse proprietà del fluido, come ad esempio velocità, pressione, densità, e temperatura, in funzione dello spazio e del tempo. La fluidodinamica e le sue discipline derivate (come ad esempio, aerodinamica, idrostatica, idrodinamica, idraulica) hanno una grande varietà di campi di applicazione. Può ad esempio essere usata per il calcolo di forze e momenti di superfici esposte all'azione dei fluidi (ad esempio riguardo lo studio di profili alari in campo aeronautico o automobilistico Fig. 2.1), oppure per studi di comfort ambientale, diffusione di sostanze inquinanti o meteorologia. Fig. 2.1. Flussi d'aria creatisi lungo la carrozzeria dell'automobile. 17 Equazioni di Navier-Stokes per un fluido Lo studio della fluidodinamica interna può essere applicata a tutte le problematiche di moti in condotti, di notevole interesse nel campo dell'ingegneria petrolchimica, nello studio dei motori o del condizionamento. Le leggi fondamentali della fluidodinamica sono le equazioni del bilancio (anche dette leggi di conservazione) e, in particolare, l'equazione di continuità (o conservazione della massa), la legge di conservazione della quantità di moto (anche nota come seconda legge di Newton) e la legge di conservazione dell'energia. Queste leggi sono basate sulla meccanica classica e vengono modificate nella meccanica relativistica. Le equazioni del bilancio per la fluidodinamica vengono dette equazioni di Navier-Stokes, e sono equazioni differenziali alle derivate parziali non lineari. Le equazioni di Navier-Stokes nella loro forma non semplificata non hanno una soluzione generale in forma chiusa, e vengono risolte in tal modo solo con la metodologia della CFD. A seconda del problema fisico possono essere semplificate in diversi modi. In alcuni casi ciò permette di ottenere una soluzione analitica in forma chiusa. In un problema di fluidodinamica, il fluido in esame viene detto comprimibile se le variazioni di densità hanno effetti apprezzabili sulla soluzione. Se le variazioni di densità hanno effetti trascurabili nel campo fluidodinamico, il fluido viene detto incomprimibile e quindi le variazioni di densità vengono ignorate. A rigore, sarebbe necessario e opportuno attribuire la qualifica di comprimibile o incomprimibile al moto: difatti, i gas, pur comprimibili, posso fluire senza variazioni di volume (in condizioni isocore). Al fine di definire il campo di validità dell'ipotesi di incomprimibilità, viene analizzato il valore il numero di Mach. Generalmente, gli effetti della comprimibilità possono essere trascurati per numeri di Mach di valore inferiore a 0.3. Inoltre, quasi tutti i problemi in cui vengono studiati dei liquidi vengono considerati come incomprimibili. La forma incomprimibile delle equazioni di NavierStokes risulta come una semplificazione della forma generale delle equazioni in cui la densità viene assunta essere costante. I problemi di flusso viscoso sono quelli in cui l'attrito del fluido ha effetti significativi sulla soluzione del campo fluidodinamico. I problemi in cui tali effetti possono essere trascurati vengono detti inviscidi. 18 Equazioni di Navier-Stokes per un fluido Per valutare se gli effetti viscosi possono essere trascurati, viene definito il numero di Reynolds, che misura il 'peso' degli effetti inerziali rispetto agli effetti viscosi. Tuttavia, la definizione del numero di Reynolds critico deve essere fatta caso per caso, a seconda del particolare problema trattato. Inoltre, anche in regimi ad alto numero di Reynolds, possono sussistere delle zone del campo dove non possono essere trascurati gli effetti viscosi; in particolare nei problemi dove devono essere calcolate le forze indotte dal fluido su corpi solidi (ad esempio superfici alari). Fig. 2.2. Simulazione di fluidodinamica di un Boeing 787. Le equazioni di Navier-Stokes nella forma semplificata per flussi inviscidi vengono dette equazioni di Eulero. Un altro modello spesso usato (ad esempio nella CFD) prevede di utilizzare le equazioni di Eulero in zone del campo lontane dai corpi solidi, e la teoria dello strato limite in prossimità di questi. Le equazioni di Eulero, integrate lungo una linea di flusso diventano la ben nota equazione di Bernoulli. Si parla di flusso stazionario in fluidodinamica quando tutte le grandezze risultano essere indipendenti dal tempo. Flussi di questo tipo permettono una forte semplificazione delle equazioni di Navier-Stokes ed hanno applicazione in una grande varietà di problemi. Se un problema è contemporaneamente incomprimibile, inviscido e stazionario, può essere risolto con le leggi del flusso potenziale, governato dall'equazione di Laplace. I problemi di questo tipo presentano soluzioni di tipo analitico ottenute come combinazione lineare di più casi elementari. I flussi turbolenti sono dominati da ricircolazioni, vortici (Fig. 2.3) e apparente casualità. I flussi in cui non appare alcun fenomeno turbolento vengono detti flussi laminari. 19 Equazioni di Navier-Stokes per un fluido Fig. 2.3. Turbolenza generata da un aeroplano È universalmente accettato che i flussi turbolenti obbediscano comunque alle leggi di Navier-Stokes; nonostante ciò, le equazioni nel caso turbolento risultano essere troppo complesse per trovare una soluzione analitica e troppo "pesanti" per essere risolte con gli usuali strumenti computazionali ad eccezione di casi con condizioni ideali e particolari. I flussi turbolenti vengono simulati mediante l'ausilio di diversi modelli di turbolenza, con l'assunzione che il flusso sia laminare al di fuori delle regioni turbolente. 20 Equazioni di Navier-Stokes per un fluido 2.2 Equazioni di Navier-Stokes Le equazioni di Navier-Stokes sono un sistema di equazioni differenziali alle derivate parziali che descrive il comportamento di un fluido dal punto di vista macroscopico. Le equazioni debbono il loro nome da quello di Claude-Louis Navier e di George Gabriel Stokes. L'efficienza predittiva di tali equazioni viene pagata in termini di difficoltà di calcolo. Nel caso generale coinvolgono infatti cinque equazioni scalari differenziali alle derivate parziali e un numero di variabili che dipende dalle applicazioni. Il bilancio tra equazioni e incognite avviene con la definizione delle proprietà del fluido considerato, delle eventuali forze di campo in gioco e con considerazioni matematiche. Inoltre, a causa della loro non linearità, le equazioni di Navier-Stokes non ammettono quasi mai una soluzione analitica (ovvero una soluzione esatta), ma esclusivamente numerica (una soluzione approssimata con un metodo numerico). Le equazioni vengono completate dalle condizioni al contorno (condizioni sul contorno del fluido in esame) e dalle condizioni iniziali (condizioni imposte all'inizio temporale del fenomeno da studiare). Possono inoltre essere integrate dall'equazione di stato dei gas perfetti e dalle equazioni di conservazione delle singole specie gassose nel caso di una miscela di gas. Nel caso più generale tridimensionale, le equazioni di Navier-Stokes, aggiunte a quelle dell’energia cinetica k, della dissipazione ε da turbolenza e del trasporto possono essere scritte nella seguente forma [4]: ∂U ∂ ( F − Fv ) ∂ (G − Gv ) ∂ ( H − H v ) + + + =Q ∂t ∂x ∂y ∂z (2.1) in cui Q è il termine sorgente mentre U = ( ρ , ρu , ρv, ρw, E , ρk , ρε , ρφ ) T (2.2) 21 Equazioni di Navier-Stokes per un fluido I flussi inviscidi sono: ρu ⎞ ⎛ ⎟ ⎜ 2 2 ⎜ ρu + p + 3 ρk ⎟ ⎟ ⎜ ρvu ⎟ ⎜ ρwu ⎟ ⎜ F =⎜ ⎟ 2 ⎜ ( E + p + 3 ρk )u ⎟ ⎟ ⎜ ρuk ⎟ ⎜ ρuε ⎟ ⎜ ⎟ ⎜ ρuφ ⎠ ⎝ (2.3.a) ρv ⎞ ⎛ ⎟ ⎜ ρuv ⎟ ⎜ ⎜ ρv 2 + p + 2 ρk ⎟ 3 ⎟ ⎜ wv ρ ⎟ ⎜ G=⎜ ⎟ 2 ⎜ ( E + p + 3 ρk )v ⎟ ⎟ ⎜ ρvk ⎟ ⎜ ρvε ⎟ ⎜ ⎟ ⎜ ρ v φ ⎠ ⎝ (2.3.b) ⎛ ⎜ ⎜ ⎜ ⎜ 2 ⎜ ρw H =⎜ ⎜ (E + ⎜ ⎜ ⎜ ⎜ ⎝ ρw ρuw ρvw ⎞ ⎟ ⎟ ⎟ ⎟ + p + 23 ρk ⎟ p + 23 ρk ) w ⎟⎟ ⎟ ρwk ⎟ ρwε ⎟ ⎟ ρwφ ⎠ (2.3.c) r r r r dove ρ è la densità, V = ui + vj + wk è la velocità, p è la pressione e φ è una variabile scalare che rappresenta la concentrazione di una specie o la frazione in massa. L’energia interna totale E è definita come E = ρe + ρk (2.4) in cui e e k sono rispettivamente l’energia interna specifica e l’energia interna specifica. 22 Equazioni di Navier-Stokes per un fluido I flussi viscosi sono: ⎞ ⎟ τ xx ⎟ ⎟ τ xy ⎟ τ xz ⎟ ⎟ + vτ xy + wτ xz − q x ⎟ ⎟ μ k (∂k ∂x) ⎟ μ ε (∂ε ∂x) ⎟ ⎟ μφ (∂φ ∂x) ⎠ (2.5.a) 0 ⎞ ⎛ ⎟ ⎜ τ xy ⎟ ⎜ ⎟ ⎜ τ yy ⎟ ⎜ τ yz ⎟ ⎜ Gv = ⎜ ⎟ ⎜ uτ xx + vτ yy + wτ yz − q y ⎟ ⎟ ⎜ μ k (∂k ∂y ) ⎟ ⎜ μ ε (∂ε ∂y ) ⎟ ⎜ ⎟ ⎜ μφ (∂φ ∂y ) ⎠ ⎝ (2.5.b) ⎞ ⎟ ⎟ ⎟ ⎟ ⎟ − q z ⎟⎟ ⎟ ⎟ ⎟ ⎟ ⎠ (2.5.c) ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ Fv = ⎜ ⎜ uτ xx ⎜ ⎜ ⎜ ⎜ ⎝ ⎛ ⎜ ⎜ ⎜ ⎜ ⎜ Hv = ⎜ ⎜ uτ xz ⎜ ⎜ ⎜ ⎜ ⎝ 0 0 τ xz τ yz τ zz + vτ yz + wτ zz μ k (∂k ∂z ) μ ε (∂ε ∂z ) μφ (∂φ ∂z ) dove il tensore delle tensioni viscose è ⎡ ∂u j τ ij = μ ⎢ ⎣⎢ ∂xi + r ⎤ ∂u i 2 − (∇ ⋅ V )δ ij ⎥ − ρu ′j′u i′′ ∂x j 3 ⎦⎥ (2.6) Per le tensioni di Reynolds viene utilizzata l’approssimazione di Boussinesq r ⎤ 2 ⎡ ∂u j ∂u i 2 − (∇ ⋅ V )δ ij ⎥ − ρkδ ij + − − ρu ′j′u i′′ = μ T ⎢ ⎣⎢ ∂xi ∂x j 3 ⎦⎥ 3 (2.7) 23 Equazioni di Navier-Stokes per un fluido in cui μT è il coefficiente di turbolenza viscosa. I termini viscosi contengono una parte laminare ed una turbolenta. In modo analogo, il flusso di calore è scritto come cp ⎞ ⎛ cp r r r ⎟⎟∇T + q D q = −(k + k T )∇T + q D = ⎜⎜ μ + μT PrT ⎠ ⎝ Pr (2.8) r dove q D è il flusso di energia causato dalla diffusione di massa. La pressione è calcolata da un’equazione di stato in funzione della densità e dell’energia interna specifica che per un gas perfetto vale ⎞ ⎛ u 2 + v 2 + w2 ⎜ p = (γ − 1)⎜ E − ρ − ρk ⎟⎟ = (γ − 1) ρe 2 ⎠ ⎝ (2.9) in cui γ è il rapporto tra i calori specifici cp/cv. I coefficienti di diffusione da turbolenza e le quantità scalari sono approssimate come μk = μ + μT σk (2.10.a) με = μ + μT σε (2.10.b) μφ = μ μ + T σφ σφ L (2.10.c) T dove σk , σε e σφ sono i numeri di Schmidt. 24 Equazioni di Navier-Stokes per un fluido 2.3 Equazioni di Eulero Le equazioni di Eulero rappresentano una particolare forma semplificata delle equazioni di Navier-Stokes, ottenute nel caso sussista l'ipotesi semplificativa di flusso inviscido (ovvero con viscosità pari a zero). Esse rappresentano un sistema di equazioni differenziali non lineari delle leggi di conservazione che governano la dinamica di un fluido comprimibile, in cui gli effetti delle forze d’inerzia, le tensioni viscose e il flusso di calore non vengono considerati. Le variabili primitive o fisiche sono la densità ρ(x, y, z, t), la pressione p(x, y, z, t), la componente di velocità u(x, y, z, t) lungo l’asse x, la componente di velocità v(x, y, z, t) lungo l’asse y, la componente di velocità w(x, y, z, t) lungo l’asse z. È possibile esprimere le equazioni di Eulero per mezzo delle variabili conservative. Tali variabili sono la densità, le componenti della quantità di moto lungo gli assi x, y, z e l’energia totale E per unità di massa. Dal punto di vista computazionale, si traggono alcuni vantaggi esprimendo le equazioni della fluidodinamica in termini delle variabili conservative. In questo modo possono essere risolte con metodi numerici chiamati appunto metodi conservativi [7]. Legge di conservazione della massa: ρ t + ( ρu ) x + ( ρv) y + ( ρw) z = 0 (2.11) Legge di conservazione della quantità di moto lungo l’asse x: ( ρu ) t + ( ρu 2 + p ) x + ( ρuv ) y + ( ρuw) z = 0 (2.12) Legge di conservazione della quantità di moto lungo l’asse y: ( ρv) t + ( ρuv ) x + ( ρv 2 + p ) y + ( ρuw) z = 0 (2.13) Legge di conservazione della quantità di moto lungo l’asse z: ( ρw) t + ( ρuw) x + ( ρvw) y + ( ρw 2 + p ) z = 0 (2.14) Legge di conservazione dell’energia: Et + [u ( E + p)]x + [v( E + p)]y + [w( E + p )]z = 0 (2.15) Le precedenti leggi di conservazione possono essere espresse con una notazione più compatta definendo il vettore colonna U delle variabili conservative e i vettori dei flussi F(U), G(U), H(U) nelle direzioni x, y e z rispettivamente. 25 Equazioni di Navier-Stokes per un fluido Le equazioni diventano: U t + F (U ) x + G (U ) y + H (U ) z = 0 (2.16) in cui i vettori sono: ⎡ρ⎤ ⎢ ρu ⎥ ⎢ ⎥ U = ⎢ ρv ⎥ ⎢ ⎥ ⎢ ρw⎥ ⎢⎣ E ⎥⎦ (2.17) ⎡ ρu ⎤ ⎢ ρu 2 + p ⎥ ⎢ ⎥ F = ⎢ ρuv ⎥ ⎢ ⎥ ⎢ ρuw ⎥ ⎢⎣u ( E + p )⎥⎦ (2.18.a) ⎡ ρv ⎤ ⎢ ρuv ⎥ ⎢ ⎥ G = ⎢ ρv 2 + p ⎥ ⎢ ⎥ ⎢ ρuw ⎥ ⎢⎣v( E + p )⎥⎦ (2.18.b) ⎡ ρw ⎤ ⎢ ρuw ⎥ ⎢ ⎥ H = ⎢ ρvw ⎥ ⎢ 2 ⎥ ⎢ ρw + p ⎥ ⎢⎣ w( E + p )⎥⎦ (2.18.c) È importante notare che i flussi sono funzioni delle variabili conservative. 26 Equazioni di Navier-Stokes per un fluido 2.4 Equazioni di Eulero 1 D Nel caso monodimensionale vengono a mancare i flussi e le componenti di velocità lungo due assi. Legge di conservazione della massa: ρ t + ( ρu ) x = 0 (2.19) Legge di conservazione della quantità di moto lungo l’asse x: ( ρu ) t + ( ρu 2 + p) x = 0 (2.20) Legge di conservazione dell’energia: Et + [u ( E + p)]x = 0 (2.21) L’equazione di Eulero scritta nella forma compatta è: ∂U ∂F + =0 ∂t ∂x (2.22) che può essere scritta nella forma riportata di seguito in cui i pedici rappresentano le derivate parziali U t + Fx = 0 (2.23) Il vettore delle variabili conservative e del flusso sono ⎡ρ⎤ U = ⎢⎢ ρu ⎥⎥ ⎢⎣ E ⎥⎦ (2.24) ⎡ ρu ⎤ F = ⎢⎢ ρu 2 + p ⎥⎥ ⎢⎣u ( E + p )⎥⎦ (2.25) 27 Equazioni di Navier-Stokes per un fluido 28 Metodo di Roe Capitolo 3 3. Metodo di Roe 3.1 Principi di base del metodo di Roe In questo paragrafo, viene descritto l’approccio di Roe per la risoluzione dell’equazione di Eulero nel caso monodimensionale [7]. Sostanzialmente si vuole calcolare l’andamento delle variabili conservative nel tempo e nello spazio per un assegnato problema. La discretizzazione dell’asse spaziale e temporale, comporta la risoluzione di una successione di leggi di conservazione, per ogni volumetto di controllo (cella) nel piano x-t, che rappresentano appunto una successione di problemi di Riemann. L’attenzione verrà concentrata sulla risoluzione numerica del problema generale in una arbitraria cella, note le condizioni iniziali e al contorno (IBVP). ⎧ U t + F (U ) x = 0 ⎪U ( x,0) = U ( 0 ) ( x) ⎪ ⎨ ⎪ U (0, t ) = U l (t ) ⎪⎩ U ( L, t ) = U r (t ) (3.1) nel dominio xl ≤ x ≤ xr utilizzando la formula conservativa esplicita U in +1 = U in + ⎤ Δt ⎡ ⎢ Fi − 1 − Fi + 1 ⎥ Δx ⎣ 2 2⎦ (3.2) Fig. 3.1. Condizioni iniziali del problema di Riemann. 29 Metodo di Roe Si assume che la soluzione del IBVP esista. Viene definito il flusso numerico di Godunov all’intercella F 1 i+ 2 in cui U i+ 1 2 ⎛ ⎞ = F ⎜⎜U 1 (0) ⎟⎟ ⎝ i+ 2 ⎠ (0) è la soluzione esatta U i+ 1 2 (3.3) ( x / t ) del problema di Riemann ⎧ U t + F (U ) x = 0 ⎪ ⎨U ( x,0) = ⎧U L se x < 0 ⎨ ⎪ ⎩U R se x > 0 ⎩ (3.4) valutata in x/t = 0. Nel caso monodimensionale, i vettori delle variabili conservative e del flusso sono: ⎡ρ⎤ U = ⎢⎢ ρu ⎥⎥ ⎢⎣ E ⎥⎦ ⎡ ρu ⎤ F = ⎢⎢ ρu 2 + p ⎥⎥ ⎢⎣u ( E + p )⎥⎦ (3.5) Introducendo il parametro vettore ⎡ ρ ⎤ ⎡ z1 ⎤ ⎥ ⎢ Z = ⎢ ρ u ⎥ = ⎢⎢ z 2 ⎥⎥ ⎢ ρ H ⎥ ⎢z ⎥ ⎦ ⎣ 3⎦ ⎣ (3.6) i vettori delle variabili conservative e del flusso si possono scrivere in funzione di Z: ⎡ z12 ⎢ U ( Z ) = ⎢ z1 z 2 ⎢ z1 z 3 − ⎣ ⎤ ⎥ ⎥ p ⎥⎦ ⎡ z1 z 2 ⎤ F ( Z ) = ⎢⎢ z 22 + p ⎥⎥ ⎢⎣ z 2 z 3 ⎥⎦ (3.7) È facile notare che i precedenti vettori sono quadratici in Z a meno del termine che rappresenta la pressione. 30 Metodo di Roe In questo modo, quando si va a valutare la variazione di flusso tra due nodi [8], Fi +1 − Fi = xi + 1 ∫ Fx dx = xi xi +1 ∫ xi ∂F dx = ∂x xi +1 ∫ xi ∂F ∂Z dx = ∂Z ∂x xi + 1 ∫F Z Z x dx (3.8) xi Fig. 3.2. Andamento di Z nello spazio. siccome Z è una funzione lineare da nodo a nodo (Fig. 3.2), la sua derivata rispetto ad x in una cella risulta essere costante e quindi la variazione di flusso è Z − Zi Fi +1 − Fi = i +1 Δx xi +1 ∫ F dx Z (3.9) xi Per un gas perfetto non ionizzato è possibile esprimere la pressione in funzione del parametro vettore e si scopre che è una funzione quadratica in z z 32 ⎤ γ −1 ⎡ p= ⎢ z1 z 2 − ⎥ γ ⎣ 2⎦ (3.10) Applicando il teorema del valor medio la variazione di flusso vale ⎞ ⎛ Fi +1 − Fi = ( Z i +1 − Z i ) FZ ⎜⎜ Z 1 ⎟⎟ ⎝ i+ 2 ⎠ (3.11) in cui FZ è la matrice jacobiana valutata in un opportuno stato medio. 31 Metodo di Roe 3.2 Generalizzazione del metodo per un gas reale in equilibrio termodinamico È possibile estendere il metodo di Roe al caso di un plasma nelle condizioni di equilibrio. Vengono considerate le equazioni di Eulero nel caso monodimensionale, ma lo schema può essere facilmente esteso alle tre dimensioni spaziali. Si considerino le equazioni di Eulero in una dimensione spaziale scritte nella forma compatta (2.23), in cui i vettori U ed F vengono definiti in modo leggermente differente ⎡ρ ⎤ U = ⎢⎢m⎥⎥ ⎢⎣ E ⎥⎦ ρu ⎤ ⎡ ⎢ 2 F = ⎢ m / ρ + p ⎥⎥ ⎢⎣( E + p )m / ρ ⎥⎦ (3.12) dove m = ρu è la quantità di moto per unità di volume, u è la velocità, ed E è l’energia totale per unità di volume E = ρe + 12 ρu 2 = ε + 12 ρu 2 (3.13) in cui ε è l’energia interna per unità di volume. L’equazione di Eulero (2.22) può essere scritta in un’altra forma, sfruttando il fatto che il flusso è funzione delle variabili conservative del vettore U ∂U ∂U + A(U ) =0 ∂t ∂x ⎡ ∂F1 ⎢ ⎢ ∂U 1 ∂F ⎢ ∂F2 = A(U ) = ∂U ⎢ ∂U 1 ⎢ ∂F ⎢ 3 ⎢⎣ ∂U 1 ∂F1 ∂U 2 ∂F2 ∂U 2 ∂F3 ∂U 2 (3.14) ∂F1 ⎤ ⎥ ∂U 3 ⎥ ∂F2 ⎥ ∂U 3 ⎥ ∂F3 ⎥⎥ ∂U 3 ⎥⎦ (3.15) Se la matrice Jacobiana del flusso A(U) fosse costante il problema consisterebbe nella risoluzione di un sistema di equazioni differenziali a coefficienti costanti, la cui soluzione è facilmente ricavabile in modo esatto. Come è stato già detto, il vettore del flusso è funzione delle variabili conservative, ma poiché compare la pressione in una sua componente, bisogna scegliere la giusta equazione di stato. Per un gas perfetto non ionizzato vale la (3.10) che sostituita nella (3.7) permette di calcolare la matrice Jacobiana in modo semplice. 32 Metodo di Roe Ciononostante, la matrice Jacobiana del flusso può essere definita in generale considerando la pressione come una funzione delle variabili conservative [3] p = Π ( ρ , m, E ) (3.16) Per un gas nelle condizioni di equilibrio, la pressione è una funzione di due sole variabili indipendenti. Tuttavia l’equazione precedente rappresenta una forma molto conveniente per generalizzare lo schema di Roe per un gas con un’arbitraria equazione di stato. La matrice Jacobiana è composta dalle derivate parziali di tutte le componenti del flusso rispetto a tutte le variabili conservative. ⎡ 0 ⎢ A = ⎢ Πρ − u2 ⎢(Π ρ − H )u ⎣ ⎤ ⎥ ⎥ H + Π m u (1 + Π E )u ⎥⎦ 1 Π m + 2u 0 ΠE (3.17) dove H = h + 12 u 2 rappresenta l’entalpia totale per unità di massa, mentre le derivate della pressione sono definite da ⎛ ∂Π ⎞ ⎟⎟ Π ρ = ⎜⎜ ⎝ ∂ρ ⎠ m, E ⎛ ∂Π ⎞ Πm = ⎜ ⎟ ⎝ ∂m ⎠ ρ , E ⎛ ∂Π ⎞ ΠE = ⎜ ⎟ ⎝ ∂E ⎠ ρ ,m (3.18) Il differenziale della pressione vale dp = Π ρ dρ + Π m dm + Π E dE (3.19) e la velocità del suono in funzione di tali grandezze a 2 = Π ρ + ( H − u 2 )Π E (3.20) 33 Metodo di Roe 3.3 Calcolo dello stato medio dei coefficienti della linearizzazione Il metodo di Roe è basato sulla linearizzazione locale dell’equazione di Eulero (3.14) semplicemente considerando costante la matrice Jacobiana ∂U ~ ∂U +A =0 ∂t ∂x (3.21) all’interfaccia di ogni cella. Il problema di Riemann definito dall’equazione precedente e dalle condizioni iniziali UL , UR attraverso l’interfaccia viene poi risolto in modo ~ ~ esatto. La matrice A = A(U L ,U R ) viene definita dal seguente set di proprietà: ~ ~ 1) A = A(U L ,U R ) costituisce un rilevamento lineare dallo spazio vettoriale U allo spazio vettoriale F; ~ ~ 2) A = A(U L , U R ) → A(U ) UL →UR →U ; ~ ~ 3) A = A(U L ,U R ) ha autovettori linearmente indipendenti; ~ ~ 4) A = A(U L ,U R ) deve soddisfare la relazione: ~ ΔF = A(U L , U R )ΔU (3.22) L’operatore Δ (⋅) = (⋅) R − (⋅) L rappresenta il salto della quantità (⋅) attraverso l’interfaccia tra i nodi destro e sinistro. La proprietà 4) è una condizione sufficiente affinché il metodo sia conservativo perché assicura il soddisfacimento delle equazioni di conservazione. ~ Usando la tecnica del parametro vettore, Roe derivò la matrice A per un gas perfetto in cui tutti gli elementi vengono valutati in un certo stato medio definito da ρ L (⋅) L + ρ R (⋅) R Ro(⋅) = ρL + ρR (3.23) Con questa definizione segue che la velocità media vale u~ = ρL uL + ρ R uR ρL + ρR (3.24) Mentre l’entalpia media è ~ H= ρL H L + ρR HR ρL + ρR (3.25) 34 Metodo di Roe Se viene considerato un gas reale governato da una generica equazione di stato, i risultati ottenuti sopra non possono essere giustificati. Molte delle formulazioni proposte sono state estrapolate dai risultati del metodo di Roe per un gas perfetto. Il problema è complicato dal fatto che per una generica equazione di stato per la pressione, lo stato medio non è univocamente definito. Perciò, apparentemente ci sono tre caratteristiche che conducono a differenti generalizzazioni dello schema di Roe nel caso di gas reale: ~ 1) il modo di ricavare la matrice A ; 2) il modo in cui la pressione viene riferita alle altre variabili termodinamiche; 3) la non univocità dello stato medio. Selezionando un’equazione di stato per la pressione e calcolando le sue derivate, è possibile valutare la matrice Jacobiana in un opportuno stato medio. La formulazione generale qui adottata, permette di ricavare, benché lo stato medio non sia univocamente ~ definito, la definizione di A . Questo rappresenta un’effettiva generalizzazione del risultato ottenuto da Roe nel caso di gas perfetto. In definitiva si vuole dimostrare che cominciando dall’equazione di stato generale ~ della pressione e dall’espressione dello Jacobiana, si arriva alla definizione di A come ⎡ 0 ~ ⎢ ~ A = ⎢ Π ρ − u~ 2 ~ ~ ~ ⎢( Π ⎣ ρ − H )u ~ in cui u~ ed H sono date dalle ⎤ 1 0 ~ ~ ⎥ Π m + 2u~ ΠE ⎥ ~ ~ ~ H + Π m u~ (1 + Π E )u~ ⎥⎦ (3.26) espressioni precedenti come nello schema di Roe originale e con le derivate medie della pressione che soddisfano la relazione lineare ~ ~ ~ Δp = Π ρ Δρ + Π m Δm + Π E ΔE (3.27) che corrisponde alla discretizzazione del differenziale della pressione (3.19), mediato tra i due stati. Riprendendo la definizione del parametro vettore (3.6) e le matrici (3.7), seguendo l’approccio originale di Roe, si ricavano due matrici B( Z ) e C ( Z ) , con Z = 12 ( Z R + Z L ) (3.28) così che ΔF = B( Z )ΔZ ΔU = C ( Z )ΔZ (3.29) 35 Metodo di Roe Dall’equazione (3.22) segue immediatamente che ~ A = B( Z )C ( Z ) −1 (3.30) Il problema principale è di esprimere il salto di pressione Δp in termini delle componenti del salto ΔZ . Dalla definizione di entalpia totale si ricava che ΔE = Δ( ρH ) − Δp (3.31) Poi, assumendo di avere la relazione lineare (3.27), si ricava Δp = [ 1 ~ ~ ~ ~ Π ρ Δρ + Π m Δ( ρu ) + Π E Δ( ρH ) 1+ ΠE ] (3.32) Inoltre, dalla definizione del parametro vettore Z si può ricavare Δρ = 2 z1 Δz1 (3.33.a) Δ( ρu ) = z 2 Δz1 + z1 Δz 2 (3.33.b) Δ( ρH ) = z 3 Δz1 + z1 Δz 3 (3.33.c) E quindi Δp = [ 1 ~ ~ ~ ~ ~ ~ (2 z1Π ρ + z 2 Π m + z 3 Π E )Δz1 + z1Π m Δz 2 + z1Π E Δz 3 1+ ΠE ] (3.34) Avendo espresso il Δp in termini delle componenti dei salti ΔZ , dalla (3.29) si ricavano direttamente le matrici z2 ⎡ ~ ~ ~ ⎢ 2z Π 1 ρ + z 2 Π m + z3Π E ⎢ B(Z ) = ~ 1+ ΠE ⎢ ⎢ 0 ⎣ ⎡ ⎢ 2 z1 ⎢ C (Z ) = ⎢ z ~2 ~ ⎢ z − 2z Π 1 ρ − z2Π m ⎢ 3 ~ ⎢⎣ 1+ ΠE z1 ~ z1Π m 2z2 + ~ 1+ ΠE z3 0 z1 ~ − z1Π m ~ 1+ ΠE ⎤ 0 ⎥ ⎥ 0 ⎥ z1 ⎥ ~ ⎥ 1 + Π E ⎥⎦ 0 ⎤ ~ z1Π E ⎥ ~ ⎥ 1+ ΠE ⎥ z 2 ⎥⎦ (3.35) (3.36) Notando che i rapporti z2 ~ =u z1 z3 ~ =H z1 rappresentano le usuali medie di Roe, Eq. (3.24) e (3.25), si possono sostituire le ~ (3.35) e (3.36) nell’Eq. (3.30) conducendo alla matrice A data dalla (3.26). 36 Metodo di Roe ~ Invece di trovare direttamente A , può essere adottato un altro approccio per determinare lo stato medio e cioè quello che soddisfa le relazioni: 3 ~ ~ ΔF = ∑ β p λ p ~ rp (3.37) 3 ~ ΔU = ∑ β p ~ rp (3.38) p =1 p =1 ~ ~ in cui λ p sono gli autovalori della matrice A definita dalla (3.26), e cioè ~ ~ λ1 = u~ ~ λ2 = u~ + a~ λ3 = u~ − a~ (3.39) ed ~ rp sono i corrispondenti autovettori destri, che sono le colonne della matrice ⎡ ⎢ 1 ~ ⎢ ~ R=⎢ u ~ a~ 2 ⎢H −~ ⎢⎣ ΠE 1 u~ + a~ ~ H + a~u~ ⎤ ⎥ ⎥ u~ − a~ ⎥ ~ H − a~u~ ⎥ ⎥⎦ 1 (3.40) ~ ~ Le β p sono le intensità delle onde, cioè le componenti del vettore β : Δp ⎡ ⎤ Δρ − ~ 2 ⎢ ⎥ a ⎢ ⎥ Δp 1 ~ ~ β = R −1 ΔU = ⎢ ~ 2 + ~ [Δ( ρu ) − u~Δρ ]⎥ 2a ⎢ 2a ⎥ 1 ⎢ Δp ⎥ ~ ⎢⎣ 2a~ 2 − 2a~ [Δ( ρu ) − u Δρ ]⎥⎦ La velocità del suono media, definita dal calcolo degli autovalori, è ~ ~ ~ a~ 2 = Π ρ + ( H − u~ 2 )Π E (3.41) (3.42) Sviluppando le relazioni (3.38), è facile controllare che la prima e la seconda si riducono ad un’identità. La terza relazione diventa ⎛~ a~ 2 ⎞ Δp ΔE = ⎜⎜ H − u~ 2 − ~ ⎟⎟Δρ + u~Δ ( ρu ) + ~ ΠE ⎠ ΠE ⎝ (3.43) ed utilizzando la definizione (3.42) essa diventa ~ ~ ~ Δp = Π ρ Δρ − u~Π E Δm + Π E ΔE (3.44) L’equazione (3.44) è equivalente alla relazione lineare (3.27) se ~ ~~ Π m = −uΠ E (3.45) 37 Metodo di Roe Tornando adesso alle relazioni (3.37), la prima restituisce nuovamente un’identità. La seconda relazione diventa u~ 2 Δρ − 2u~Δ ( ρu ) + Δ( ρu 2 ) = 0 (3.46) Infine la terza relazione diventa ~ ⎛~ Πm ~~ ~ ~ H [u Δρ − Δ( ρu )] = u Δ( ρH ) − Δ( ρuH ) + u ⎜⎜ u + ~ ΠE ⎝ ⎞ ⎟ Δ ( ρu ) ⎟ ⎠ (3.47) Considerando l’equazione precedente, gli ultimi termini svaniscono ottenendo ~ H [u~Δρ − Δ( ρu )] = u~Δ ( ρH ) − Δ( ρuH ) (3.48) ~ che definisce H come la (3.25). 38 Metodo di Roe 3.4 Stato medio per un gas perfetto non ionizzato Per completare la formulazione generale qui proposta, è necessario valutare le derivate medie della pressione (3.18) in termini delle derivate di opportune variabili termodinamiche in base all’equazione di stato scelta. Nelle condizioni di equilibrio termodinamico locale, la pressione può essere riferita ad altre due variabili termodinamiche attraverso una generica equazione di stato della forma p = Π ( ρ , m, E ) = p (i, ρ ) (3.49) dove la variabile i può essere l’energia interna, per unità di massa e o per unità di volume ε, oppure la temperatura T. A seconda della scelta fatta, le derivate della pressione (3.18) e la matrice Jacobiana del flusso assumono una differente forma, influenzando così la determinazione dello stato medio di Roe. La valutazione delle derivate medie della pressione può essere effettuata seguendo le fasi: • scelta dell’equazione di stato nella forma (3.49); • da considerazioni termodinamiche, dedurre le relazioni: ⎞ ⎛ ⎛ ∂p ⎞ ⎛ ∂p ⎞ Π x = D⎜ ⎜ ⎟ , ⎜⎜ ⎟⎟ , u , e, ρ ,... ⎟, ⎟ ⎜ ⎝ ∂i ⎠ ⎝ ∂ρ ⎠ ρ i ⎠ ⎝ x = ρ , m, E (3.50) che soddisfino la (3.19); • assumere che le relazioni (3.50) portino ai valori medi come: ⎞ ⎛ ⎛ ∂~ p ⎞ ⎛ ∂~ p⎞ ~ Π x = D⎜ ⎜ ⎟ , ⎜⎜ ⎟⎟ , u~, e~, ρ~,... ⎟, ⎟ ⎜ ⎝ ∂i ⎠ ⎝ ∂ρ ⎠ ρ i ⎠ ⎝ • x = ρ , m, E (3.51) sostituire le relazioni (3.51) nella (3.27). Come esempio si consideri un gas perfetto per cui vale ⎡ 1 m2 ⎤ p = (γ − 1) ⎢ E − ⎥ 2 ρ ⎦ ⎣ (3.52) Le derivate della pressione sono facilmente calcolabili Πρ = γ −1 2 u2 Π m = −(γ − 1)u Π E = γ −1 (3.53) 39 Metodo di Roe Sostituendo le medie delle (3.53) nella (3.27) si ottiene Δp = γ −1 ~2 2 u Δρ − (γ − 1)u~Δ( ρu ) + (γ − 1)ΔE (3.54) Combinando l’Eq. (3.52) con la precedente si ha γ −1 ~2 [u Δρ − 2u~Δ( ρu) + Δ( ρu 2 )] = 0 2 (3.55) che è soddisfatta perché vale l’Eq. (3.46). Le derivate, sopra riportate, dimostrano che per un gas perfetto lo stato medio di Roe è definito in modo univoco e che i risultati dati dalle Eq. (3.26) e (3.27) riconducono esattamente allo schema originale di Roe per un gas perfetto. 40 Metodo di Roe 3.5 Generalizzazione di Vinokur-Montagnè per un plasma Vinokur e Montagnè [3] considerano un’equazione di stato della forma p = p(ε , ρ ) (3.56) Trattano, quindi, la pressione come una funzione dell’energia interna per unità di volume e della densità. Usando la notazione di Vinokur, le derivate dell’equazione di stato vengono indicate come ⎛ ∂p ⎞ ⎟ ⎝ ∂ε ⎠ ρ κ =⎜ ⎛ ∂p ⎞ χ = ⎜⎜ ⎟⎟ ⎝ ∂ρ ⎠ ε (3.57) Per ottenere le derivate della pressione nella forma generale dell’Eq. (3.50), si procede come segue: differenziando l’Eq. (3.56) si ha dp = κdε + χdρ (3.58) Poi considerando l’energia interna ε = ε ( ρ , m, E ) si ottiene ⎛ ∂ε ⎞ ⎛ ∂ε ⎞ ⎛ ∂ε ⎞ dε = ⎜⎜ ⎟⎟ dρ + ⎜ ⎟ dm + ⎜ ⎟ dE ⎝ ∂m ⎠ ρ , E ⎝ ∂E ⎠ ρ ,m ⎝ ∂ρ ⎠ m , E (3.59) Inserendo la precedente equazione nella (3.58), si ricava ⎡ ⎛ ∂ε ⎞ ⎤ ⎛ ∂ε ⎞ ⎛ ∂ε ⎞ dp = dΠ = ⎢ χ + κ ⎜⎜ ⎟⎟ ⎥ dρ + κ ⎜ ⎟ dm + κ ⎜ ⎟ dE ⎝ ∂m ⎠ ρ , E ⎝ ∂E ⎠ ρ ,m ⎝ ∂ρ ⎠ m , E ⎥⎦ ⎢⎣ (3.60) Richiamando l’equazione dell’energia interna ε =E− 1 m2 2 ρ dall'Eq. (3.60) si possono facilmente ricavare le derivate della pressione Π ρ = χ + 12 u 2κ Π m = −uκ ΠE = κ (3.61) 41 Metodo di Roe Inserendo poi, i valori medi delle (3.61) nell’Eq. (3.27) si ottiene Δp = ( χ~ + 1 u~ 2κ~ )Δρ − u~κ~Δ( ρu ) + κ~ΔE (3.62) 2 Dalla definizione di energia totale per unità di volume ΔE = Δε + 12 Δ( ρu 2 ) si ha [ Δp = χ~Δρ + κ~Δε + 12 κ~ u~ 2 Δρ − 2u~Δ ( ρu ) + Δ( ρu 2 ) ] (3.63) Ciò che è contenuto nelle parentesi quadre è nullo per l’Eq. (3.46) ed infine Δp = χ~Δρ + κ~Δε (3.64) Questa relazione lineare delle derivate della pressione non è sufficiente a definire lo stato medio. Per definire in modo univoco i valori di χ~ e κ~ , Vinokur e Montagnè [9] propongono una procedura che utilizza le informazioni date dai due stati termodinamici L ed R. Integrando l’Eq. (3.58), in modo parametrico, tra gli stati L ed R e usando la (3.64) si arriva alle relazioni generali χ~ = ∫ χ [ε (t ), ρ (t )]dt (3.65.a) κ~ = ∫ κ [ε (t ), ρ (t )]dt (3.65.b) 1 0 1 0 in cui il parametro t è normalizzato in modo che tL=0 e tR=1. L’esatta valutazione degli integrali (3.65) è, in generale, laboriosa ed in pratica è necessaria un’approssimazione. Si può pensare di approssimare i valori delle derivate a quelli del punto medio χˆ = χ M = χ (ε M , ρ M ) (3.66.a) κˆ = κ M = κ (ε M , ρ M ) (3.66.b) in cui lo stato medio è definito da ρ M = ( ρ L + ρ R ) / 2 e ε M = (ε L + ε R ) / 2 , oppure secondo la regola trapezoidale χˆ = ( χ L + χ R ) / 2 (3.67.a) κˆ = (κ L + κ R ) / 2 (3.67.b) 42 Metodo di Roe Infine, quando i due stati L ed R sono molto distanti, si può applicare la regola di Simpson χˆ = ( χ L + 4 χ M + χ R ) / 6 (3.68.a) κˆ = (κ L + 4κ M + κ R ) / 6 (3.68.b) Poi bisogna cercare i valori di χ~ e κ~ che soddisfano la (3.64) e che sono più vicini ai valori approssimati χ̂ e κ̂ . Per portare a termine quanto detto, basta proiettare nel piano χ − κ il punto ( χˆ , κˆ ) sulla retta definita dall’Eq. (3.64). Conviene manipolare quest’ultima equazione in modo da lavorare nel piano 1 / κ − χ / κ (Fig. 3.3) ed effettuare una adimensionalizzazione dal fattore ŝ . Fig. 3.3. Ricerca delle derivate medie. Infine si ottengono le relazioni con χ~ = Dχˆ + sˆΔρδp D − Δpδp (3.69.a) κ~ = Dκˆ D − Δpδp (3.69.b) δp = Δp − χˆΔρ − κˆΔε D = ( sˆΔρ ) 2 + (Δp) 2 sˆ = χˆ + κh (3.70) dove κh è valutato applicando al prodotto κ ⋅ h , la stessa formula di integrazione usata per χ̂ e κ̂ . 43 Metodo di Roe Per l’entalpia vale l’espressione h = αhL + (1 − α )hR + 12 α (1 − α )(Δu ) 2 in cui α= ρL ρL + ρR (3.71) (3.72) Quando Δρ o Δε tendono a zero, le espressioni (3.69) non hanno alcun senso, perché i denominatori sono nulli. In questo caso, basta utilizzare l’espressione (3.68.a) e (3.68.b) se, rispettivamente, Δρ = 0 e Δε = 0 . La scelta dell’energia interna per unità di volume e della densità come variabili termodinamiche indipendenti, permette di minimizzare il numero di variabili indipendenti che devono essere mediate. In questo modo, lo stato medio di Roe è ~ definito da: u~ , H , κ~ e χ~ , che non contiene esplicitamente la densità o l’energia interna, rimanendo più vicino al metodo originale di Roe per un gas perfetto non ionizzato. 44 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe Capitolo 4 4. Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe 4.1 Il tubo d’urto Fisicamente questo oggetto è un tubo contenente del gas, inizialmente diviso da una membrana in due sezioni (Fig. 4.1). Il gas ha una pressione più alta in una metà del tubo rispetto all’altra, ed all’inizio la sua velocità è ovunque nulla. All’istante t = 0, la membrana viene improvvisamente rotta o rimossa, ed il gas diviene libero di fluire. Ci si aspetta ovviamente un moto nella direzione della pressione minore. Fig. 4.1. Schematizzazione del tubo d’urto. Assumendo che il flusso sia uniforme lungo la sezione del tubo (ciò implica la trascurabilità degli effetti dissipativi del gas) è possibile descrivere tale sistema mediante le equazioni di Eulero monodimensionali. La struttura del flusso risulta essere molto interessante, coinvolgendo tre distinte onde che separano regioni in cui le variabili di stato sono costanti. Attraverso due di queste onde sono presenti discontinuità di qualcuna delle variabili di stato. Un’onda d’urto si propaga nella regione di bassa pressione, ed attraverso di essa la densità e la pressione sono soggette ad un repentino aumento di valore; tutte le variabili di stato sono discontinue. 45 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe Fig. 4.2. Andamento della pressione lungo x Questa è seguita da una discontinuità di contatto, attraverso cui la densità è nuovamente discontinua ma la velocità e la pressione restano costanti. Fig. 4.3. Andamento della densità lungo x La terza onda si muove in direzione opposta alle prime due ed ha una struttura molto differente: tutte le variabili di stato sono continue e c’è una transizione dolce tra i due stati che essa separa. Questa è detta onda di rarefazione o di espansione poiché la densità del gas decresce quando questa lo attraversa. Fig. 4.4. Andamento della velocità lungo x 46 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe Se si posiziona la discontinuità iniziale nel punto x = 0, allora la soluzione risultante U(x,t) è una “soluzione simile” nella variabile x/t. Ciò significa che U(x,t) può essere espressa mediante una sola funzione di detta variabile: U(x,t) = W(x/t). Ne consegue che U(x,t) = U(αt, αx) per qualunque α maggiore di zero, cioè la soluzione nei due istanti t ed αt è la stessa purché si faccia una opportuna scalatura dell’asse x. Questa proprietà inoltre implica che le onde si muovono con velocità costante e che la soluzione U(x,t) risulta costante lungo qualsiasi retta passante per l’origine del piano x-t. Fig. 4.5. Struttura delle onde nel piano x-t I grafici riportati nelle Fig. 4.2, 4.3 e 4.4 rappresentano l’andamento delle variabili di stato lungo l’asse x all’istante t = 1, per esempio. Viene inoltre mostrata anche la struttura delle onde nel piano x-t (Fig. 4.5). In un esperimento reale, le variabili di stato non sarebbero discontinue attraverso l’onda d’urto ed attraverso la discontinuità di contatto a causa degli effetti della viscosità e del flusso di calore. Questi sono ignorati nelle equazioni di Eulero. Se vengono considerati questi effetti, usando le equazioni di Navier-Stokes complete, allora la soluzione del problema sarebbe una funzione continua. Tuttavia, questa soluzione sarebbe quasi discontinua, nel senso che avremmo delle variazioni finite delle variabili di stato su distanze microscopiche comparate con la lunghezza del tubo d’urto. Quindi la soluzione continua e quella discontinua sono quasi indistinguibili, ed è per questa ragione che si ignorano i termini diffusivi e si lavora con le più semplici equazioni di Eulero. 47 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe 4.2 Il metodo di Roe per il tubo d’urto Per lo studio numerico del tubo d’urto viene risolta la legge di conservazione omogenea del tipo U t ( x, t ) + F (U ( x, t )) x = 0 (4.1) La funzione di flusso F(U) può anche dipendere esplicitamente da x e da t, come pure da U. La richiesta base fatta ad un sistema omogeneo è che esso sia iperbolico, nel senso che si può definire un risolutore per il problema di Riemann rispettivo (Cap. 3.1) che per ogni coppia di volumi caratterizzati dagli stati U i -1 e U i fornisce un insieme di m onde Wip e di velocità λpi che soddisfano la relazione m ∑W p = U i -1 - U i = ΔU i (4.2) p =1 Il risolutore di Riemann deve fornire anche una fluttuazione viaggiante verso sinistra, A - ΔU , ed una fluttuazione viaggiante verso destra, A + ΔU . Le notazioni utilizzate sono motivate dalla loro definizione per sistemi di equazioni lineari. Nel caso standard conservativo deve risultare che A - ΔU i + A + ΔU i = F (U i ) - F (U i -1 ) (4.3) ad ogni interfaccia tra i volumi. Si consideri un sistema lineare di equazioni iperboliche omogeneo. La matrice m x m A ha autovettori r p ed autovalori reali λp per p = 1, 2, …, m. Ogni ΔU i = U i - U i -1 si può decomporre come combinazione lineare di questi autovettori m ΔU i = ∑α ip r p ≡∑Wi p (4.4) i =1 Ciò definisce le onde Wip = α ip r p , e le velocità delle onde sono semplicemente gli autovalori λp . La matrice A si può decomporre come segue A = RΛR -1 (4.5) ove R = [ r 1 r 2 ... r m ] è la matrice degli autovettori e Λ = diag ( λ1 , λ2 , ... ,λm ) è la matrice diagonale avente sulla diagonale gli autovalori di A. 48 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe Si definiscono poi le quantità λp+ = max ( λp , 0) λp- = min ( λp , 0) (4.6) A ± = RΛ± R -1 (4.7) e le matrici Λ± = diag ( λp ± ) Definendo U i0 il valore della grandezza all’interfaccia che viene fuori dalla soluzione del problema di Riemann, con i dati U i -1 e U i rispettivamente a sinistra e a destra. Per i problemi lineari risulta che U i0 = U i -1 + ∑W p (4.8) i λip < 0 perciò il flusso all’interfaccia è dato da F (U i0 ) = AU i0 = AU i -1 + ∑λ W p i p = AU i -1 + A - ΔU i (4.9) λip < 0 o alternativamente F (U i0 ) = AU i - A + ΔU i (4.10) Le differenze di flusso sono definite come: F (U i ) - F (U i0 ) = ∑λ W p = A + ΔU i p i λip > 0 F (U i0 ) - F (U i -1 ) = ∑λ W p i p = A - ΔU i (4.11) λip < 0 il che motiva le notazioni utilizzate. 49 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe 4.3 Metodo upwind splitting Siccome le componenti del vettore F sono funzioni delle componenti di U, l’equazione di Eulero può essere scritta nella forma come Ut + ∂F U x = 0 ⇒ U t + AU x = 0 ∂U (4.12) in cui A rappresenta la matrice Jacobiana. Se tale matrice è costante, la (4.12) rappresenta un sistema di equazioni differenziali alle derivate parziali omogeneo a coefficienti costanti. La (4.12) rappresenta un sistema iperbolico dato che la matrice A possiede autovalori reali λ(k ) e un set completo di autovettori, in modo da essere riscritta A = RΛL (4.13) in cui R ed L sono le matrici degli autovettori destri e sinistri rispettivamente, mentre, Λ rappresenta la matrice diagonale degli autovalori. L’equazione di Eulero (4.12) può essere scritta in una forma vantaggiosa dal punto di vista computazionale [8] Wt + LARW x = Wt + ΛW x = 0 (4.14) in cui è stato effettuato il seguente cambio di variabili: ⎛ ∂ρ − a12 ∂p ⎞ ⎟ ⎜ ∂W = L∂U = ⎜ 12 (∂p ρa + ∂u )⎟ ⎜ 1 (∂p ρa − ∂u )⎟ ⎠ ⎝2 (4.15) L’equazione (4.14) contiene tre equazioni differenziali scalari ∂w ( k ) ∂w ( k ) + λ( k ) =0 ∂t ∂x (4.16) Se si suppone di conoscere w ( k ) ad un certo istante di tempo t n in un punto della griglia lungo l’asse x, ad esempio al nodo i, è possibile ottenere il valore di w(k ) all’istante successivo t n +1 in un punto compreso tra i nodi i-1 e i+1, proprio perché tale valore si mantiene costante lungo la caratteristica dx dt = λ( k ) nella dimensione spaziotempo. 50 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe Si consideri, adesso, l’approssimazione al primo ordine della derivata rispetto al tempo in un punto della griglia ( xi , t n ) come mostrato dalla Fig. 4.6 win +1 − win wt = Δt (4.17) Per quanto riguarda la derivata spaziale si consideri l’approssimazione al secondo ordine nel nodo centrale wx = win+1 − win−1 2Δx (4.18) Fig. 4.6. Discretizzazione nel dominio x-t Sostituendo queste approssimazioni l’equazione di Eulero diventa win +1 − win w n − win−1 =0 + λ( k ) i +1 Δx Δt (4.19) L’equazione differenziale è stata sostituita con una alle differenze finite. Noti i valori delle grandezze al livello temporale n, possono essere calcolati quelli relativi all’istante di tempo n+1 win +1 = win − 12 c( win+1 − win−1 ) (4.20) in cui c = λ( k ) Δt Δx . Questa quantità dimensionale rappresenta il numero di Courant-Friedrichs-Lewy o CFL number. Il CFL number rappresenta il rapporto tra la velocità di propagazione dell’onda relativa all’equazione differenziale alle derivate parziali e la velocità di griglia Δx Δt definita dalla discretizzazione del dominio [7]. 51 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe Fig. 4.7. Upwind scheme for positive speed. Il metodo upwind (detto anche metodo di Godunov del primo ordine) per un sistema lineare si può scrivere nella forma standard con la differenza di flusso come U in +1 = U in - Δt [ Fi +1 - Fi ] Δx (4.21) ove U in +1 rappresenta il valore della grandezza U nel volume i all’istante successivo n+1, e i flussi numerici sono definiti come segue Fi = F (U i0 ) = AU i0 (4.22) Si noti che Fi = F (U in ) - A + ΔU i Fi +1 = F (U in ) + A - ΔU i +1 (4.23) che permette di scrivere tale metodo come U in +1 = U in - Δt [ A - ΔU i +1 + A + ΔU i ] Δx (4.24) Ciò ha un’interpretazione fisica in termini di propagazione di onde, poiché kλp p Δt + A Δ U i è la somma di termini nella forma W su delle onde che si muovono Δx i Δx nella cella i-esima dal bordo sinistro. Ognuno di tali termini è pari alla quantità della media di cella modificata da quest’onda, in quanto W p è il salto nella U, Δtλp è la distanza percorsa nella cella , e dividendo per Δx si ottiene la frazione di cella coperta. In modo simile Δt A Δ U i +1 ci da la modifica alla media di cella dovuta alle onde che Δx si propagano da bordo destro della cella i-esima. 52 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe Ci sono alcuni vantaggi nell’usare la forma di sopra nell’implementazione invece della definizione standard data all’inizio. Dopo aver calcolato le onde e le velocità è facile calcolare i termini A + Δ U i e A - Δ U i +1 sommando i loro prodotti. D’altro canto calcolar il “flusso di Godunov” F (U i0 ) tipicamente richiede il calcolo di F (U i ) e poi la sua modifica mediante A - Δ U i +1 . Quando si usa un Riemann solver approssimato come quello di Roe per le equazioni di Eulero (Cap. 3), il flusso esatto F (U i ) non ha bisogno di essere calcolato, eccetto che in tale passo, e ciò può essere evitato mediante l’utilizzo dell’equazione dello schema nella seconda forma. Un altro vantaggio, più critico, è che tale formulazione del metodo permette la soluzione di problemi iperbolici che non sono nella forma conservativa. Per esempio il problema a coefficiente variabile U t + A( x)U x = 0 non è in forma conservativa e U non si conserva, ma un algoritmo efficace a risolverlo può essere ottenuto comunque usando la forma di propagazione delle onde. Ciò si fa in acustica e nel caso di mezzi eterogenei. 53 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe 4.4 Programma di calcolo in Fortran Esso consiste di un insieme di subroutines FORTRAN atte a risolvere dei sistemi di equazioni iperboliche derivanti dalle leggi di conservazione, in una dimensione spaziale, in assenza di termini produttivi. Si utilizzano dei metodi di discretizzazione, su griglie spaziali uniformi. Si adotta un algoritmo di “splitting” che utilizza la propagazione traversale delle onde per l’estensione al caso multidimensionale, valido per l’aria ritenuta gas reale anche allo stato di plasma. Di seguito vengono riportate la maggior parte delle istruzioni che consentono lo studio dell’evoluzione temporale della velocità, della pressione, della densità e dell’energia in ogni sezione del tubo d’urto. Chiaramente bisogna definire le condizioni iniziali a destra e a sinistra del diaframma ed il tempo di fine simulazione. Quest’ultimo viene stimato calcolando il tempo necessario affinché l’onda d’urto arrivi all’estremità del tubo. La velocità dell’onda d’urto, considerando un gas perfetto, dipende dalla velocità del suono e dal rapporto delle pressioni [10] come mostrato dalla seguente espressione W = a1 γ + 1 ⎛ p2 ⎞ ⎜ − 1⎟⎟ + 1 2γ ⎜⎝ p1 ⎠ (4.25) 54 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe con a1 = γRT1 . Per stimare il tempo basta dividere lo spazio percorso dall’onda per la sua velocità media t OUT = L W (4.26) in cui L rappresenta la distanza del diaframma dall’estremità del tubo. 4.4.1 Program Main Dopo aver definito le variabili, la prima operazione effettuata è la lettura dei file: pressione.txt, chi.txt, kappa.txt, densità.txt, energia.txt che contengono i valori delle variabili termodinamiche dell’aria anche allo stato di plasma. ! shock tube problem using 1D fluctuation splitting implicit real*8 (a-h,o-z) integer ndof parameter (ndof=3) real *8 mdc parameter(nmax=1024) ! nodal stuff dimension x(0:nmax),du(ndof,0:nmax),mdc(0:nmax), dx(nmax), z(ndof,0:nmax) ! cell based stuff real*8 phi(ndof,nmax),al(ndof,nmax),dw(ndof,nmax),xc(nmax) real*8 cfl real*8 df(3),sumdf(3) common /abc/df common /def/sumdf data df,sumdf/6*0.d0/ logical lstop,lflag character*1 answ include 'aria.inc' ! initialize data and re-define grid ! open(1,file='pressione.txt') do j=1,Nr read(1,*) (p(j,i),i=1,Ne) enddo close(1) open(1,file='chi.txt') do j=1,Nr read(1,*) (chi(j,i),i=1,Ne) enddo close(1) open(1,file='kappa.txt') do j=1,Nr read(1,*) (kappa(j,i),i=1,Ne) enddo close(1) open(1,file='densita.txt') read(1,*) (rho(i),i=1,Nr) close(1) 55 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe open(1,file='energia.txt') read(1,*) (ei(i),i=1,Ne) close(1) it = nx = call call 0 nmax init(z,x,xc,dx,mdc,ndof,nx,tmax) plot(z,x,ndof,0,nx,it) ! 7 write(6,*)' Preconditioning (Y/N) ' read(5,FMT="(A1)")answ if( answ .EQ. "Y" .OR. answ .EQ. "y" )then lflag = .TRUE. elseif( answ .EQ. "N" .OR. answ .EQ. "n" )then lflag = .FALSE. else goto 7 endif write(6,*)' Enter CFL [0<CFL<=1] & # of ITS ' read(5,FMT=*)cfl,niter time = 0.d0 lstop = .FALSE. do 1000 it = 1,niter ! 1 3 ! ! ! do 1 i = 0,nx do 1 j = 1,ndof du(j,i) = 0.d0 continue do 3 j = 1,ndof sumdf(j) = 0.d0 continue loop over cells dt = 1.e38 do i = 1,nx if(lflag)then call he(z(1,i-1),z(1,i),dx(i),dt,du(1,i1),du(1,i),phi(1,i),al(1,i),dw(1,i),i) else call splitw(z(1,i-1),z(1,i),dx(i),dt,du(1,i1),du(1,i), phi(1,i),al(1,i),dw(1,i),i) endif enddo ! dt = cfl * dt if((time+dt).GE.tmax)then dt = tmax-time lstop = .TRUE. endif time = time + dt call bcs(z,du,ndof,nx,dt) ! applica condizioni al contorno call parm2cons(z,ndof,nx) ! trasforma Z in U call update(z,du,ndof,mdc,time,dt,nx) ! aggiorna U call cons2parm(z,ndof,nx) ! trasforma U in Z if(lstop)goto 2000 ! ! compute error ! call fd(u,du,x,dt,nx,phi) ! write(6,*)it,phi ! 1000 continue 2000 continue write(6,*)time,tmax ! call w(phi,xc,ndof,nx,"fluct.dat") 56 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe ! ! 4.4.2 call w(dw,xc,ndof,nx,"strength.dat") call w(al,xc,ndof,nx,"speed.dat") write(6,*)'Dumping solution at iteration ',it call plot(z,x,ndof,0,nx,it) call plot2(z,x,ndof,0,nx,it) call check(z,mdc,ndof,nx) write(22,*)(df(j),j=1,ndof) stop 9900 format(i3,6(2X,e12.7)) end Subroutine Init Questa routine inizializza i valori delle variabili conservative a destra e a sinistra della discontinuità situata nella metà del tubo d’urto, suddividendo l’intera lunghezza del tubo in 800 intervalli equispaziati. subroutine init(z,x,xc,dx,mdc,ndof,nx,timeout) include 'paramt.h' integer nx,ndof,je include 'aria.inc' real*8 x(0:nx),z(ndof,0:nx),xc(nx),dx(nx),mdc(0:nx) real*8 zz(3,2),flx(3,2),df(3) integer ix real*8 DOMLEN,DIAPH,TIMEOUT,DL,UL,PL,DR,UR,PR,MPA real*8 DD,Z1R,Z2R,Z3R,Z1L,Z2L,Z3L,ML,MR,HELP real*8 v1,v2,checksum(3),epsl,epsr double precision peps(Ne) C C C C ! C OPEN(UNIT=1,FILE='exact.ini',STATUS='UNKNOWN') nmax = nx READ(1,*)DOMLEN READ(1,*)DIAPH READ(1,*)NX if( NX .GT. nmax )THEN WRITE(6,*)'Must increase NX up to ',nx CALL EXIT(1) endif READ(1,*)HELP IF(HELP.NE.GAM)THEN STOP 'must change GAMMA' ENDIF READ(1,*)TIMEOUT READ(1,*)ML READ(1,*)DL READ(1,*)UL READ(1,*)PL READ(1,*)DR READ(1,*)UR READ(1,*)PR READ(1,*)MPA CLOSE(1) ! ! MR = am2(ML) write(6,*)'Mach(L) ',ML 57 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe ! ! ! ! ! ! ! ! ! write(6,*)'Mach(R) ',MR EL = 1.d0/(GAM*GM1*ML*ML)+0.5d0 EL = PR/(GM1*DR)+0.5d0*UR*UR DL = 1.d0 UL = 1.d0 PL = 1.d0/(GAM*ML*ML) PR = PJUMP(ML)*PL DR = DJUMP(ML)*DL UR = (DL/DR)*UL dd = domlen/real(nx) write(6,*)'Mach(L) check ',UL/sqrt(GAM*PL/DL) write(6,*)'Mach(R) check ',UR/sqrt(GAM*PR/DR) z1l = sqrt(dl) z3l = z1l * ul ! z2l = gogm1 * pl/dl + 0.5d0*(ul*ul) call Pepsilon(peps,dl) je=0 do j=1,Ne if( peps(j) .LT. pl )then je=je+1 endif enddo epsl=ei(je)+(ei(je+1)-ei(je))/(peps(je+1)-peps(je))*(plpeps(je)) z2l = epsl+pl+0.5d0*(ul*ul) z2l = z2l/z1l ! z1r = sqrt(dr) z3r = z1r * ur z2r = gogm1 * pr/dr + 0.5d0*(ur*ur) call Pepsilon(peps,dr) je=0 do j=1,Ne if( peps(j) .LT. pr )then je=je+1 endif enddo epsr=ei(je)+(ei(je+1)-ei(je))/(peps(je+1)-peps(je))*(prpeps(je)) z2r = epsr+pr+0.5d0*(ur*ur) z2r = z2r/z1r write(6,*)' Z(L) = ',z1l,z2l,z3l write(6,*)' Z(R) = ',z1r,z2r,z3r zz(1,1)=z1l zz(2,1)=z2l zz(3,1)=z3l zz(1,2)=z1r zz(2,2)=z2r zz(3,2)=z3r call flux(flx(1,1),zz(1,1),ndof) call flux(flx(1,2),zz(1,2),ndof) do j =1,ndof df(j) = flx(j,2)-flx(j,1) enddo write(6,*)(flx(j,1),j=1,ndof) write(6,*)(flx(j,2),j=1,ndof) write(6,*)(df(j),j=1,ndof) do 1 ix = 0,nx 58 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe x(ix) = ix*dd if( x(ix) .LT. DIAPH )then z(1,ix) = z1l z(2,ix) = z2l z(3,ix) = z3l elseif( x(ix) .GT. DIAPH )then z(1,ix) = z1r z(2,ix) = z2r z(3,ix) = z3r else z(1,ix) = z1r z(2,ix) = z2r z(3,ix) = z3r z(1,ix) = 0.25*(z1r+z1l) z(2,ix) = 0.25*(z2r+z2l) z(3,ix) = 0.25*(z3r+z3l) endif c c c c c c c 1 continue compute cell size and cell centers do 3 ix = 1,nx dx(ix) = x(ix)-x(ix-1) xc(ix)=0.5d0*(x(ix)+x(ix-1)) 3 continue compute median dual cell do 5 ix = 1,nx-1 mdc(ix) = xc(ix+1)-xc(ix) 5 continue mdc(0) = xc(1)-x(0) mdc(nx) = x(nx)-xc(nx) v1 = 0.d0 do 7 ix = 1,nx v1 = v1 + dx(ix) 7 continue v2 = 0.d0 do 9 ix = 0,nx v2 = v2 + mdc(ix) 9 continue write(6,*)'Check volumes ',v1,v2,' should be equal!' open(22,file='test') call check(z,mdc,ndof,nx) return end subroutine check(z,mdc,ndof,nx) c c stored c c c computed the amount of mass, energy and momentum being in the system on entry z must be the parameter vector real*8 z(ndof,0:nx),mdc(0:nx) real*8 checksum(3) integer ix,j call parm2cons(z,ndof,nx) do j = 1,ndof checksum(j) = 0.d0 enddo do ix = 0,nx do j = 1,ndof checksum(j) = checksum(j) + z(j,ix)*mdc(ix) enddo 59 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe enddo call cons2parm(z,ndof,nx) write(22,*)(checksum(j),j=1,ndof) return end 4.4.3 Subroutine splitw In queste righe viene applicato il metodo di Roe generalizzato valido per l’aria considerata non come un gas perfetto, bensì come gas reale. Sostanzialmente vengono implementate le relazioni riportate nel capitolo 3. subroutine splitw(zleft,zright,dx,dt,fleft,fright, &phiw,al,dw,ncell) implicit none integer ndof,ncell parameter (ndof=3) include 'paramt.h' double precision zleft(ndof),zright(ndof) double precision fleft(ndof),fright(ndof) double precision uleft(ndof),uright(ndof) double precision fl(ndof),fr(ndof),df(ndof) double precision dt,dx double precision al(*),eigen(ndof,ndof),zavg(ndof) double precision dz(ndof),dw(*),phiw(*),help(ndof) double precision ravg,Havg,uavg,asqr,aavg,ra,drho,dp,du,Mach double precision toler,temp,helpme,dru,drE,druH,dH,dr,cost double precision dpdrho,dpde,dpdm,PIM,PIE,PIR,eps double precision pavg,chiavg,kappaavg,deltp,esse,DD,chic,kappac double precision rleft,epsleft,pleft,chileft,kappaleft double precision hmedio,hleft,hright,alpha,deltau,zero double precision rright,epsright,pright,chiright,kapparight parameter (TOLER=1.e-12) integer k,j,i logical lflag double precision sumdf(3) common /def/ sumdf c c c c c c c dt = 1.e38 gradient of the parameter vector and averaged state do 1 i = 1, ndof zavg(i) = 0.5d0 *(zright(i)+zleft(i)) dz(i) = (zright(i)-zleft(i))/dx 1 continue Roe averaged Havg = zavg(2)/zavg(1) uavg = zavg(3)/zavg(1) ravg = zavg(1)*zavg(1) alpha=zleft(1)/(zleft(1)+zright(1)) hleft=zleft(2)/zleft(1)-1/2*(zleft(3)/zleft(1)) &*(zleft(3)/zleft(1)) hright=zright(2)/zright(1)-1/2*(zright(3)/zright(1)) &*(zright(3)/zright(1)) deltau=zright(3)/zright(1)-zleft(3)/zleft(1) hmedio=alpha*hleft+(1-alpha)*hright &+1/2*alpha*(1-alpha)*deltau*deltau 60 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe c cost=zavg(3)*zavg(3)/2-zavg(1)*zavg(2) c destra cost=zright(3)*zright(3)/2-zright(1)*zright(2) rright = zright(1)*zright(1) call epsi(cost,rright,epsright) call pchikappa(rright,epsright,pright,chiright,kapparight) c sinistra cost=zleft(3)*zleft(3)/2-zleft(1)*zleft(2) rleft = zleft(1)*zleft(1) call epsi(cost,rleft,epsleft) call pchikappa(rleft,epsleft,pleft,chileft,kappaleft) chic=(chiright+chileft)/2 kappac=(kapparight+kappaleft)/2 deltp=(pright-pleft)-chic*(rright-rleft)-kappac*(epsrightepsleft) esse=chic+kappac*hmedio DD=(esse*(rright-rleft))*(esse*(rright-rleft)) &+(pright-pleft)*(pright-pleft) if ((rright-rleft).eq.0)then chiavg=chic else chiavg=(DD*chic+esse*esse*(rright-rleft)*deltp)/(DD-(prightpleft) &*deltp) endif if ((epsright-epsleft).eq.0)then kappaavg=kappac else kappaavg=DD*kappac/(DD-(pright-pleft)*deltp) endif c zero=chiavg*(zright(1)*zright(1)-zleft(1)*zleft(1)) c &+kappaavg*(epsright-epsleft)-(pright-pleft) c if (abs(zero).gt.toler)then c write(*,*)ncell c write(*,*)zero c write(*,*)chiavg,chic c write(*,*)kappaavg,kappac c pause c endif dpdrho=pir(uavg,chiavg,kappaavg) dpde=pie(uavg,chiavg,kappaavg) dpdm=pim(uavg,chiavg,kappaavg) ! dpdrho=pir(uavg) ! dpde=pie(uavg) ! dpdm=pim(uavg) c asqr = dpdrho+(Havg-uavg*uavg)*dpde if( asqr .LT. 0.d0 )then write(6,*)'Negative a^2 ',asqr,' in cell no. = ',ncell stop endif aavg = sqrt(asqr) Mach = uavg/aavg ra = ravg*aavg c gradient of the primitive drho = 2.*zavg(1)*dz(1) 61 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe dp 1/(1+dpde)*((2*zavg(1)*dpdrho+zavg(3)*dpdm+zavg(2)*dpde) &*dz(1)+zavg(1)*dpdm*dz(3)+zavg(1)*dpde*dz(2)) du c c c = = (-zavg(3)/zavg(1)*dz(1)+dz(3))/zavg(1) characteristic jumps (gradient) dw(1) = (asqr*drho-dp) dw(2) = 0.5*(dp+ra*du) dw(3) = 0.5*(dp-ra*du) c c c autovalori al(1) = uavg al(2) = uavg+aavg al(3) = uavg-aavg c c c fluttuazione delle variabili caratteristiche do i = 1,ndof phiw(i) = -al(i)*dw(i)*dx enddo c c c right eigenvector (entropy) eigen(1,1) = 1.d0/asqr eigen(2,1) = Havg/asqr-1/dpde eigen(3,1) = uavg/asqr c c c right eigenvector (fast wave) eigen(1,2) = 1.d0/asqr eigen(2,2) = (Havg/asqr+uavg/aavg) eigen(3,2) = (uavg/asqr+1./aavg) c c c right eigenvector (slow wave) eigen(1,3) = 1.d0/asqr eigen(2,3) = (Havg/asqr-uavg/aavg) eigen(3,3) = (uavg/asqr-1./aavg) c c c compute minimum dt do k = 1, ndof dt = min( dt, dx/abs(al(k)) ) enddo c do j = 1, ndof help(j) = 0.0 enddo c do 20 k = 1, ndof do j = 1, ndof help(j) = help(j) + eigen(j,k) * phiw(k) enddo if( al(k) .GT. 0.0 )then do j = 1, ndof fright(j) = fright(j) + eigen(j,k) * phiw(k) enddo elseif( al(k) .LT. 0.0 )then do j = 1, ndof fleft(j) = fleft(j) + eigen(j,k) * phiw(k) enddo else goto 20 endif 62 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe c c c c c 20 continue do j = 1, ndof sumdf(j) = sumdf(j) + help(j) enddo test the decomposition: check that f_R-f_L = \sum ... the sum is stored in help call flux(fl,zleft,ndof) call flux(fr,zright,ndof) lflag = .FALSE. do j = 1, ndof c temp normalizes temp = abs(0.5*(fl(j)+fr(j))) if(temp.LE.TOLER)temp = 1.d0 df(j) = -(fr(j)-fl(j)) if(abs(help(j)-df(j))/abs(temp) .GT. TOLER)lflag= .true. enddo if(lflag)then write(6,*)"cell no. ",ncell do j = 1, ndof write(6,*)j,df(j),help(j) enddo write(6,*)"dw",(dw(j),j=1,ndof) write(6,*)"al",(al(j),j=1,ndof) write(6,*)"phiw",(phiw(j),j=1,ndof),du write(6,*)"u,a,",uavg,aavg c pause endif 12 continue caldo return caldo temp = (2.+gm1*Mach*(Mach-2.))/(2.*gm1) do j = 1,ndof uleft(j) = zleft(j) uright(j) = zright(j) enddo call parm2cons(uleft,ndof,0) call parm2cons(uright,ndof,0) c c jumps in ru, rE, ruH, ru^2+p H c dr = dp/asqr dru = ravg*(1-Mach)*du drE = temp*dp druH = aavg*(Mach-1)*temp*dp c helpme = (0.5*gm1*uavg*uavg-Havg)*dr+gam*drE-gm1*uavg*dru helpme = helpme/ravg c return if(ncell.EQ.51)then write(36,*)fr(1)-fl(1),dru write(37,*)uright(2)-uleft(2),drE write(38,*)fr(2)-fl(2),druH write(39,*)fr(3)-fl(3),dp*(Mach-1)**2 dH = zright(2)/zright(1)-zleft(2)/zleft(1) write(40,*)dH,(1.d0-Mach)*dp/ravg,helpme write(41,*)Mach,dp endif c return 63 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe end !derivata della pressione rispetto all'energia double precision function PIE(uavg,chi,kappa) double precision uavg,chi,kappa ! double precision function PIE(uavg) ! double precision uavg ! include 'paramt.h' ! PIE = gam1 PIE = kappa return end !derivata della pressione rispetto alla quantità di moto double precision function PIM(uavg,chi,kappa) double precision uavg,chi,kappa ! double precision function PIM(uavg) ! double precision uavg ! include 'paramt.h' ! PIM = -gam1*uavg PIM = -uavg*kappa return end !derivata della pressione rispetto alla densità double precision function PIR(uavg,chi,kappa) double precision uavg,chi,kappa ! double precision function PIR(uavg) ! double precision uavg ! include 'paramt.h' ! PIR = gam1/2*uavg*uavg PIR = chi + 0.5*uavg*uavg*kappa return end 4.4.4 Subroutine epsi subroutine epsi(cost,rhos,zero) !dichiarazione variabili include 'aria.inc' double precision toll, zero, cost,rhos double precision press(Ne) external funz toll=1d-6 !cost=-3.05d5*1.17 !rhos=1.17 call Pepsilon(press,rhos) call fzero(toll,zero,cost,press) !write(*,*) zero return end 64 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe 4.4.5 Funzione esterna La funzione qui creata è la seguente F = ε + p (ε ) + z 32 / 2 − z1 z 2 REAL FUNCTION funz(x,cost,press,eii) include 'aria.inc' integer je double precision x, cost,pressx double precision press(*),eii(*) !pressx è da intervallo si trova calcolare con interpolazione capendo in che je=0 do j=1,Ne if( (eii(j) .LT. x).or. (eii(j) .eq. x))then je=je+1 endif enddo pressx=press(je)+(press(je+1)-press(je))/(eii(je+1)-eii(je))*(xeii(je)) funz=x+cost+pressx END FUNCTION 4.4.6 funz Subroutine fzero Adottando l’algoritmo di bisezione viene calcolato lo zero della funzione precedentemente definita. subroutine fzero(toll,zero,cost,press) include 'aria.inc' double precision cost,err, toll, zero, a, b, m double precision press(*) external funz a=ei(1) b=ei(Ne-1) if ((funz(a,cost,press,ei)*funz(b,cost,press,ei)).gt.0d0) then write(*,*) 'intervallo non valido' stop endif err=1d0 do while (err.gt.toll) m=.5d0*(a+b) 65 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe err=b-a if (funz(b,cost,press,ei)*funz(m,cost,press,ei).lt.0) then a=m else b=m endif enddo zero=a return end 4.4.7 Subroutine interp1D Questa routine calcola per mezzo di una serie di interpolazioni lineari, la funzione p (ε ) a partire dalla griglia nota p( ρ , ε ) conoscendo il valore di densità. subroutine interp1D(jr,je,rho,p,rhos,peps) integer Nr,Ne,jr,je parameter (Nr=80) parameter (Ne=100) double precision p(Nr,Ne),rho(Nr),rhos,peps peps=p(jr,je)+(p(jr+1,je)-p(jr,je))/(rho(jr+1)-rho(jr))*(rhosrho(jr)) return end 4.4.8 Subroutine interp2D In queste righe di codice viene calcolato il valore della pressione dati i valori di densità ed energia interna per mezzo di una doppia interpolazione lineare, a partire dalla griglia dei valori p( ρ , ε ) . subroutine interp2D(jr,je,rho,ei,p,rhos,es,press) integer Nr,Ne,jr,je parameter (Nr=80) parameter (Ne=100) double precision p(Nr,Ne),ei(Ne),rho(Nr) real*8 rhos,es,press1,press2,press press1=p(jr,je)+(p(jr+1,je)-p(jr,je))/(rho(jr+1)-rho(jr))*(rhosrho(jr)) press2=p(jr,je+1)+(p(jr+1,je+1)-p(jr,je+1))/(rho(jr+1)rho(jr))*(rhos-rho(jr)) press=press1+(press2-press1)/(ei(je+1)-ei(je))*(es-ei(je)) 66 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe return end 4.4.9 Subroutine pchikappa Questa routine calcola i valori della pressione, della derivata della pressione rispetto alla densità ed all’energia interna, per mezzo di varie interpolazioni bidimensionali, noti i valori di densità ed energia interna. subroutine pchikappa(rhos,es,press,chis,kappas) !dichiarazione variabili include 'aria.inc' integer jr,je !logical var1(Nr),var2(Ne) real*8 rhos,es,press,chis,kappas !valori di densità ed energia interna nelle condizioni standard !rhos=1.2 !es=2.1837e+005 !write (*,*) ' Density??? ' !read (*,*) rhos !write (*,*) ' Internal Energy (epsilon)??? ' !read (*,*) es jr=0 do j=1,Nr if( rho(j) .LT. rhos )then jr=jr+1 endif enddo !var1=(rho .LT. rhos) !jr=sum(var1) je=0 do j=1,Ne if( ei(j) .LT. es )then je=je+1 endif enddo !var2=(ei .LT. es) !je=sum(var2) call interp2D(jr,je,rho,ei,p,rhos,es,press) call interp2D(jr,je,rho,ei,chi,rhos,es,chis) call interp2D(jr,je,rho,ei,kappa,rhos,es,kappas) return end 67 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe 4.4.10 Subroutine Pepsilon Facilmente ci si può render conto che in queste istruzioni viene calcolata la pressione in funzione dell’energia interna conoscendo la densità. subroutine Pepsilon(press,rhos) !dichiarazione variabili integer jr,je include 'aria.inc' double precision press(*) double precision rhos jr=0 do j=1,Nr if( rho(j) .LT. rhos )then jr=jr+1 endif enddo do je=1,Ne call interp1D(jr,je,rho,p,rhos,press(je)) enddo return end 68 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe 4.5 Risultati delle simulazioni numeriche La prima fase dell’applicazione del metodo di Roe, per un tubo d’urto 1D, è il calcolo del tempo di fine simulazione per mezzo delle Eq. (4.25)-(4.26) seguito dalla stima del numero di punti per la discretizzazione del dominio spaziale. Questa scelta è stata condotta effettuando diverse simulazioni relative a differenti valori di Nx e valutandone la convergenza per la pressione. Come mostrato dal grafico riportato nella Fig. 4.8 è sufficiente suddividere l’asse delle x in 800 intervalli. Fig. 4.8. Risultati ottenuti per diversi valori di Nx. L’applicazione del metodo e la sperimentazione del codice di calcolo sono stati condotti per due casi molto differenti tra loro. Il primo test effettuato ha come condizioni iniziali quelle riportate nella Fig.4.9 da cui risulta t OUT = 5 ⋅ 10 −4 sec . Fig. 4.9. Condizioni iniziali GAS NON IONIZZATO e PLASMA. 69 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe Quando il diaframma viene rotto (per esempio, dalla corrente elettrica o da azioni meccaniche), un’onda d’urto si propaga nel ramo destro e un’onda di espansione si propaga invece in quello sinistro. Fig. 4.10. Andamento della densità lungo il tubo d’urto. Mentre l’onda d’urto si propaga verso destra alla velocità mostrata dalla Fig. 4.11, la pressione del gas dietro di essa aumenta (Fig. 4.12). La superficie di contatto si muove alla stessa velocità del gas. Fig. 4.11. Andamento della velocità lungo il tubo d’urto. 70 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe Attraverso la discontinuità di contatto 0.6 < x < 0.7 la densità cambia in modo quasi discontinuo (Fig. 4.10), mentre la pressione e la velocità si mantengono costanti. L’onda di espansione si propaga verso sinistra, riducendo progressivamente e gradualmente la pressione. Fig. 4.12. Andamento della pressione lungo il tubo d’urto. I risultati ottenuti sono stati adimensionalizzati nel seguente modo: la pressione, la densità e l’energia interna sono stati normalizzati ai rispettivi valori iniziali del ramo di alta pressione contenente il plasma; la velocità è stata rapportata a quella del suono relativa, anche, alle condizioni iniziali. Per questo caso test, non si osservano sostanziali differenze di comportamento considerando l’aria come gas perfetto non ionizzato rispetto allo stato di plasma e la spiegazione di ciò sta nelle condizioni iniziali. 71 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe Il secondo test [11] effettuato ha come condizioni iniziali quelle riportate nelle Fig. 4.13 e 4.14 da cui è possibile dedurre t OUT = 1,5 ⋅ 10 −4 sec . Si può facilmente notare, data l’elevata temperatura e pressione nel ramo sinistro, che le condizioni iniziali sono differenti a seconda che l’aria venga considerata come gas non ionizzato o come plasma. Fig. 4.13. Condizioni iniziali GAS NON IONIZZATO. Fig. 4.14. Condizioni iniziali PLASMA. Questa iniziale differenza trova spiegazione nelle diverse equazioni di stato utilizzate per calcolare tali valori come mostrato nel capitolo 1. Fig. 4.15. Andamento della densità lungo il tubo d’urto. 72 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe Le figure 4.15-4.18 mostrano le differenze di comportamento dell’aria considerata come gas perfetto e come gas reale (stato di plasma). Il salto attraverso la discontinuità è piuttosto elevato, circa un ordine di grandezza per la densità e l’energia. L’onda d’urto e di espansione nel plasma viaggiano ad una velocità maggiore. Fig. 4.16. Andamento della velocità lungo il tubo d’urto. Questo caso risulta essere molto complicato da studiare anche perché la temperatura iniziale del gas contenuto nel ramo di alta pressione è 30 volte quella del ramo destro. Di conseguenza la composizione dell’aria è completamente diversa. Fig. 4.17. Andamento della pressione lungo il tubo d’urto. 73 Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe Nel gas allo stato di plasma avvengono dissociazioni e ionizzazioni significative ad alte temperature. Ciò comporta un’energia specifica maggiore e una densità minore rispetto al gas non ionizzato. Infine i risultati ottenuti sono confrontabili con quelli di Van Leer [11]. Fig. 4.18. Andamento dell’energia interna lungo il tubo d’urto. 74 Le pompe ioniche ad ultra alto vuoto Capitolo 5 5. Le pompe ioniche ad ultra alto vuoto 5.1 Introduzione Tutte le pompe il cui meccanismo dipende, almeno in parte, dalla produzione di particelle cariche elettricamente (o ioni), vengono chiamate pompe ioniche. Le pompe ioniche (sputter-ion pumps) sono degli strumenti comunemente utilizzati in molte applicazioni tecnologiche, dove sono richieste condizioni di ultra-alto vuoto. Il meccanismo di pompaggio di questo tipo di pompe è sostanzialmente diverso da quello di qualunque altro tipo di pompe. Infatti non è prevista alcuna parte mobile: il principio di funzionamento su cui si basano è la ionizzazione, da parte di elettroni, degli atomi di gas o di molecole, che poi vengono rimossi grazie all’azione di campi elettrici opportunamente studiati. La nube elettronica, confinata nell’anodo cilindrico, in virtù del suo movimento spazza fuori dal volume del sistema ad un tasso costante le molecole ionizzate, in modo analogo al rotore di una pompa meccanica. Le pressioni tipiche di utilizzo di queste pompe sono comprese nell’intervallo 10-4-10-11 Torr [12]. Fig. 5.1. Schema della pompa ionica L’architettura classica è basata sulla cella di Penning, che consiste in due elettrodi e un magnete (Fig. 5.1). L’anodo cilindrico, generalmente in acciaio inossidabile, è inserito tra due piastre in titanio, che formano il catodo. Tra i due elettrodi viene mantenuta una differenza di potenziale di qualche kV (3-7 kV), con l’anodo al 75 Le pompe ioniche ad ultra alto vuoto potenziale di terra. La cella è immersa in un campo magnetico esterno di circa 0.1 T, parallelo all’asse dell’anodo e generalmente creato da magneti permanenti. Gli elettroni vengono generati nel sistema, solitamente provocando l’emissione dal catodo per effetti di campo, creando una scarica grazie alla quale gli atomi di gas e le molecole vengono ionizzati. Gli ioni prodotti vengono poi accelerati verso il catodo e quindi rimossi quasi istantaneamente dal sistema. Gli elettroni, al contrario, vengono confinati all’interno della cella dall’azione combinata del campo magnetico e do quello elettrico, così da indurre nuove ionizzazioni. In questo modo, mentre gli atomi di gas vengono rimossi, la popolazione elettronica cresce, fino a raggiungere valori di 10101011 elettroni, introducendo una forte distorsione della buca di potenziale imposta dagli elettroni. Siccome il profilo spaziale del potenziale elettrostatico è di primaria importanza per determinare il trasporto radiale degli elettroni, gli effetti autoconsistenti giocano un ruolo fondamentale nella dinamica della popolazione elettronica [13]. Si può assumere che all’interno della cella ci sia un plasma puramente elettronico. Il titanio è comunemente usato sotto forma di film metallico, depositato sulla superficie del catodo, perché esso è chimicamente reattivo con la maggior parte dei gas. Le collisioni degli ioni con il catodo provocano l’emissione sia di elettroni che di atomi di titanio: i primi sono necessari per sostenere la scarica mentre i secondi sono importanti per aumentare l’effetto di pompaggio, grazie alla ricombinazione con gli atomi di gas [15]. Le pompe ioniche hanno molti vantaggi: esse sono dei sistemi chiusi per produrre il vuoto; non sono necessarie valvole di interblocco; non hanno parti in movimento e questo vuol dire assenza di vibrazioni. Contrariamente alla sua apparente semplicità costruttiva, i fenomeni fisici coinvolti in una pompa ionica sono molto vari e complicati. Ancora oggi il funzionamento di questi strumenti è in gran parte fenomenologico e basato su una comprensione qualitativa di tali processi. La maggior parte degli studi risalgono agli anni ’60, quando si cominciò ad usare le simulazioni numeriche nella fisica dei plasmi: per questa ragione gli studi si basavano su dei calcoli analitici fatti su modelli molto semplificati del sistema. 76 Le pompe ioniche ad ultra alto vuoto 5.2 La trappola di Penning, condizioni operative e parametri caratteristici La trappola di Penning (Fig. 5.2) è un dispositivo che confina particelle cariche in una regione di spazio limitata, mediante l'applicazione di un campo magnetico uniforme e di un campo elettrostatico; il primo produce il confinamento radiale, vale a dire, evita che le particelle prendano la direzione dei "raggi" del contenitore cilindrico; il secondo garantisce il confinamento assiale, cioè evita che esse sfuggano lungo le linee di forza del campo magnetico.La cella di Penning è costituita da un cilindro cavo che rappresenta l’anodo e da due dischi, posizionati ad una certa distanza dalle basi del cilindro, che rappresentano i catodi (Fig. 5.2). Fig. 5.2. Trappola atomica di Penning. Si consideri adesso una cella di Penning per pompe ioniche al cui interno si realizza il confinamento degli elettroni, mentre gli ioni vengono allontanati grazie all’azione dei campi. Si suppone che gli elettroni abbiano minore energia del potenziale applicato, in modo tale che essi non possono raggiungere i catodi. Il campo magnetico è così forte che le orbite circolari nel piano trasversale sono molto più piccole rispetto al diametro dell’anodo (Fig. 5.3), così da impedire il raggiungimento dell’anodo [15]. 77 Le pompe ioniche ad ultra alto vuoto Fig. 5.3. Moto degli elettroni nella cella di Penning Si supponga che una molecola neutra entri nel sistema: tale molecola sarà eventualmente ionizzata dalla nube elettronica energetica. L’elettrone ionizzante recupererà l’energia che ha perso muovendosi più vicino all’anodo, mentre lo ione viene guidato dal forte campo elettrico verso uno dei catodi dove sarà responsabile di una emissione secondaria di elettroni che sarà responsabile dell’ulteriore crescita della popolazione elettronica. Le celle cilindriche, che rappresentano l’anodo (Fig. 5.1), sono elettricamente isolate dal corpo della pompa e sono ad un potenziale positivo, mentre le due piastre che rappresentano il catodo, composte da titanio, sono al potenziale di terra. Gli elettrodi sono contenuti nel corpo della pompa e il campo magnetico viene creato da magneti permanenti esterni. È possibile una diversa configurazione in cui l’anodo è al potenziale di terra mentre ai catodi viene applicato un potenziale negativo. La portata smaltita della cella dipende da molti parametri come ad esempio il diametro della cella stessa, la lunghezza, il campo magnetico ed elettrico [14]. Questi parametri sono stati ottimizzati grazie a molti studi teorici ed esperimenti. Il design delle pompe ioniche è comunemente caratterizzato da diametri delle celle di Penning comprese tra 15-25 mm, il campo magnetico viene scelto nell’intervallo 1-1.5 kGauss, mentre il campo elettrico conviene che appartenga all’intervallo 3-7 kV. Il rapporto tra la corrente elettrica assorbita dalla pompa e la pressione (I/P), che è il parametro più importante della cella di Penning, deve assumere valori compresi tra 3 e 25 Ampere/mbar, mentre nella stessa configurazione, la portata tipica per una singola cella è compresa tra 0.3 e 2 litri/secondo. 78 Le pompe ioniche ad ultra alto vuoto Le pompe ioniche hanno portate elevate per tutti i tipi di gas ad eccezione di quelli nobili. Per l’argon, il gas nobile più comune (1% nell’aria), la portata è solo il 2-5% di quella nominale. Quando si ha a che fare con un gas nobile si osserva il seguente meccanismo. Alcuni ioni del gas nobile che bombardano le superfici del catodo vengono neutralizzati e rimbalzano conservando una parte della loro energia. Essi possono poi raggiungere, senza essere condizionati dal campo magnetico ed elettrico, l’anodo oppure le pareti della pompa o altre zone del catodo. Una soluzione all’instabilità dell’argon risulta essere quella di incrementare il numero di ioni del gas rispetto a quelli neutri e fare in modo che essi vengano intrappolati nell’anodo o nel corpo della pompa, dove ci rimangono permanentemente. La probabilità di riflessione è funzione del rapporto in massa tra le specie ioniche e il materiale di cui è composto l’anodo e dipende anche dall’angolo di incidenza tra gli ioni e la superficie del catodo. Quando uno ione bombarda la superficie del catodo in titanio e viene neutralizzato, esso perde gran parte dell’energia cinetica. Per questo tipo di pompe vengono osservate portate per gas nobili del 20% rispetto a quelle viste per l’aria sotto le condizioni di stabilità. La portata elaborata da una pompa ionica varia con la pressione. La pressione operativa è inferiore a 10-4 mbar mentre la massima portata smaltita, anche chiamata portata nominale (SN = 100 l/s), viene raggiunta in corrispondenza di una pressione di circa 10-6 mbar (Fig. 5.4). Fig. 5.4. Portata smaltita dalla pompa in funzione della pressione. 79 Le pompe ioniche ad ultra alto vuoto L’ultimo range di pressione 10-11-10-10 mbar può essere raggiunto solo dopo il danneggiamento della pompa ionica stessa [14]. La corrente misurata in una pompa ionica nelle condizioni operative, risulta essere proporzionale alla pressione (Fig. 5.5). Fig. 5.5. Corrente assorbita in funzione della pressione. 80 Le pompe ioniche ad ultra alto vuoto 5.3 Moto di particella singola In questa parte della tesi, verrà studiato il moto di particelle cariche in presenza di campi elettromagnetici come in funzione della posizione e del tempo [16]. Così, sia il campo magnetico che quello elettrico vengono prestabiliti e non influenzati dalle particelle cariche. In particolare i campi elettromagnetici sono considerati costanti nel tempo, ma non nello spazio. Lo studio del moto di particelle cariche in specifici campi è importante in quanto provvede a esaminare meglio i processi dinamici che avvengono in un plasma. L’equazione del moto per una particella di carica q, sotto l’azione della forza di Lorentz F causata dal campo elettrico E e magnetico B, può essere scritta come dp = F = q (E + v × B ) dt (5.1) dove p rappresenta la quantità di moto della particella e v la sua velocità. Questa equazione è corretta dal punto di vista relativistico se si assume per p p = γmv (5.2) in cui m è la massa della particella e γ è il fattore di Lorentz definito da γ = 1 1− v2 / c2 (5.3) c rappresenta la velocità della luce nel vuoto. In molti casi di interesse pratico, comunque, il termine v 2 / c 2 è trascurabile rispetto ad 1, cioè v 2 / c 2 << 1 e quindi γ ≅ 1 . Di conseguenza la massa della particella può essere considerata costante (indipendente dalla velocità) e l’equazione del moto diventa m 5.3.1 dv = q (E + v × B ) dt (5.4) Campo elettrostatico uniforme Il moto di una particella carica in un campo elettrico tenuto costante nel tempo e nello spazio obbedisce alla seguente equazione differenziale [16] m dv = qE dt (5.5) che può essere direttamente integrata ottenendo 81 Le pompe ioniche ad ultra alto vuoto mv = qEt + p0 (5.6) in cui p 0 = p (t = 0) denota la quantità di moto all’istante iniziale. Poiché la velocità è la derivata della posizione rispetto al tempo v = dr , integrando nuovamente dt si ha l’espressione della posizione della particella in funzione del tempo r (t ) = 1 ⎛ qE ⎞ 2 ⎟t + v0 t + r0 ⎜ 2⎝ m ⎠ (5.7) dove r0 denota la posizione iniziale della particella mentre v0 la sua velocità iniziale. Perciò, la particella si muove con accelerazione costante, qE , nella direzione m del campo elettrico se q > 0 , altrimenti nella direzione opposta se q < 0 . Nella direzione ortogonale al campo elettrico non vi è alcuna accelerazione. 5.3.2 Campo magnetostatico uniforme Per una particella di carica q e massa m, che si muove con velocità v in presenza di un campo magnetico costante nel tempo e nello spazio [16], l’equazione del moto è m dv = q(v × B ) dt (5.8) Risulta conveniente separare v nelle componenti parallela v // e perpendicolare v ⊥ al campo magnetico v = v // + v ⊥ (5.9) In questo modo si ottiene dv // dv ⊥ q + = (v ⊥ × B ) dt dt m Poiché il termine (v⊥ × B ) (5.10) è perpendicolare a B, la componente parallela dell’equazione può essere scritta come dv // =0 dt (5.11) Questa equazione mostra che la velocità della particella nella direzione di B non cambia ed il suo valore è uguale a quello iniziale della velocità della particella. 82 Le pompe ioniche ad ultra alto vuoto La componente ortogonale dell’equazione, invece, vale dv ⊥ q = (v ⊥ × B ) dt m (5.12) che può essere riscritta dv ⊥ = Ω c × v⊥ dt (5.13) in cui Ω c è il vettore definito dalla seguente relazione Ωc = − qB m (5.14) Così, Ω c punta verso la direzione di B per una particella con carica negativa ( q < 0 ) e nella direzione opposta per una particella con carica positiva ( q > 0 ). Poiché Ω c è costante e, per la conservazione dell’energia cinetica, v ⊥ è anche costante, l’equazione del moto nella direzione ortogonale al campo magnetico mostra che l’accelerazione della particella è costante in modulo e la sua direzione è perpendicolare sia a v ⊥ che a B. Perciò, questa accelerazione comporta la rotazione della particella nel piano ortogonale a B con velocità angolare costante Ω c . Integrando l’equazione differenziale del moto si ricava v ⊥ = Ω c × rc (5.15) in cui il vettore rc rappresenta la posizione della particella rispetto al centro di rotazione nel piano perpendicolare a B. Poiché la velocità v ⊥ è costante, il modulo di rc è anche costante. Fig. 5.6. Traiettoria di una particella carica. 83 Le pompe ioniche ad ultra alto vuoto La traiettoria della particella può essere ottenuta dalla sovrapposizione di un moto uniforme lungo B, con velocità costante v // , e di un moto circolare nel piano normale al campo magnetico, con velocità tangenziale costante v ⊥ . In definitiva, la particella descrive un’elica come mostrato nella Fig. 5.6. Il modulo della velocità angolare Ω c è conosciuto come frequenza di ciclotrone o frequenza di Larmor. Per l’elettrone q = 1.602 ⋅ 10 −19 C ed m = 9.109 ⋅ 10 −31 kg tale frequenza vale Ω c (electron) = 1.76 ⋅ 1011 B (rad / s) (5.16) con B in tesla ( o in weber/m2). In modo analogo per il protone la cui massa vale m = 1.673 ⋅ 10 −27 kg si ha Ω c ( proton) = 9.58 ⋅ 10 7 B 5.3.3 (rad / s ) (5.17) Campo magnetostatico uniforme ed elettrostatico non uniforme Il campo magnetico in una cella di Penning è mantenuto costante nel tempo e può anche essere ritenuto uniforme. Per quanto riguarda il campo elettrico, facendo riferimento a quello dovuto ai soli elettrodi, esso viene considerato essere costante nel tempo, ma non è affatto uniforme. In questa parte viene descritto il codice che studia il moto delle particelle all’interno di una cella di Penning (Fig. 5.7) per pompe ioniche ad ultra alto vuoto. Fig. 5.7. Moto di una particella carica nella cella di Penning. 84 Le pompe ioniche ad ultra alto vuoto Di seguito viene riportato il main del codice che studia il moto delle particelle all’interno della cella. global omega_c dr dz Nr Nz E_r E_z B=.1; DeltaV=3000; e=1.6e-19; m=9.10e-31; omega_c=e*B/m; Nr=80; Nz=100; % R = radius of the trap % La = semilength of anode % Lv = gap between anode and cathode La = .01; Lv = .005; R = .005; Lz = La+Lv; [A,BC]=pua(La,Lv,Lz,R);BC=BC*DeltaV; phi=A\BC; phi=reshape(phi,Nz,Nr); E_r=E_radial(phi)./B; E_z=E_axial(phi)./B; Y0=[0,R/2,Lz,0,0,0]; tspan=[0 1e-7]; [t, Y]=ode45(@moto_cella,tspan,Y0); %plot(t,Y(:,1:3)) %legend('x','y','z') plot3(Y(:,1),Y(:,2),Y(:,3),'b') Si può facilmente osservare che la prima operazione effettuata è la definizione delle variabili, l’assegnazione della geometria della cella, del campo magnetico e della differenza di potenziale applicata agli elettrodi. 85 Le pompe ioniche ad ultra alto vuoto Per il calcolo del campo elettrico viene risolta l’equazione di Poisson nel vuoto. Noto il campo elettrico, il campo magnetico, la posizione e la velocità iniziale di una particella carica, che in questo caso risulta essere l’elettrone, è possibile risolvere le equazioni del moto di seguito riportate. ⎧ dv x q ⎛ x ⎞ ⎪ dt = m ⎜ E r r + v y B ⎟ ⎝ ⎠ ⎪ y ⎪ dv y q ⎛ ⎞ = ⎜ Er − vx B ⎟ ⎨ m⎝ r ⎠ ⎪ dt dv z q ⎪ = Ez ⎪ dt m ⎩ (5.18) La posizione iniziale viene scelta sul catodo ad una distanza radiale pari alla metà del raggio totale, mentre è stata assunta nulla la velocità iniziale. La risoluzione delle equazioni del moto viene affidata all’istruzione ode45 di MATLAB che adotta un algoritmo numerico per l’integrazione di tali equazioni così implementate: function yp=moto_cella(t,y) global omega_c yp=zeros(6,1); r=sqrt(y(1)^2+y(2)^2); yp(1)=y(4); yp(2)=y(5); yp(3)=y(6); Eradial=Er(r,y(3)); yp(4)=-omega_c*(y(5)+Eradial*y(1)/r); yp(5)=-omega_c*(-y(4)+Eradial*y(2)/r); yp(6)=-omega_c*Ez(r,y(3)); Nelle Fig. 5.8 e 5.9 sono riportati i risultati ottenuti imponendo che l’elettrone si trovi inizialmente su uno dei catodi ad una distanza radiale pari alla metà del raggio dell’anodo. È possibile osservare che la posizione dell’elettrone varia con una frequenza e un’ampiezza maggiore rispetto all’asse z. Infatti, poiché la distanza fino al catodo è di 0.015 m, l’elettrone sfiora i due catodi all’interno della cella. Inoltre la particella ruota attorno all’asse z ad una distanza pari alla metà del raggio totale della cella. 86 Le pompe ioniche ad ultra alto vuoto Fig. 5.8. Posizione dell’elettrone nella cella di Penning al variare del tempo. La traiettoria dell’elettrone in una trappola di Penning risulta essere caratterizzata da una sorta di moto elicoidale lungo z ad una certa distanza radiale e da una rotazione attorno all’asse z. Fig. 5.9. Traiettoria dell’elettrone nella cella di Penning. 87 Le pompe ioniche ad ultra alto vuoto 5.4 Modellizzazione numerica della cella di Penning Il progetto di cui fa parte questa descrizione, è stato condotto nell’ambito del contratto di ricerca tra la VARIAN ed il Dipartimento di Energetica del Politecnico di Torino. Il codice in linguaggio MATLAB sviluppato dal gruppo di ricerca del Prof. Coppa permette lo studio numerico di una cella di penning per pompe ioniche ad ultra alto vuoto. Tale codice numerico, ancora in fase di affinamento, ha come obiettivo quello di fornire una descrizione affidabile del comportamento della popolazione elettronica contenuta nella cella di Penning. Sfruttando la simmetria della cella di Penning è possibile ridurre il dominio di analisi ad un solo quarto di cella come mostrato nella Fig. 5.10. Fig. 5.10. Dominio di studio della cella. La prima fase della modellizzazione è l’inserimento delle costanti fisiche, delle caratteristiche geometriche della trappola, delle frequenze di ciclotrone degli elettroni e degli ioni e delle variabili termodinamiche. COSTANTI FISICHE e=1.60217733e-19 m=9.1093897e-31; kB=1.380658e-23; massa_ion=m*1836.127*39.213; (carica elettrone) (massa elettrone) (costante Boltzmann) (massa ione) [C] [kg] [J/K] [kg] 88 Le pompe ioniche ad ultra alto vuoto gamma=0.01; e_ion_ev=15.8; e_ion=e*e_ion_ev; (coefficiente emissione secondaria) (soglia energia ionizzazione) [eV] (soglia energia ionizzazione) [joule] CARATTERISTICHE DELLA TRAPPOLA B=0.1; (campo magnetico) DeltaV=3000; (differenza di potenziale) La = 0.0127; (semilunghezza dell'anodo) Lv = 0.0122; (gap tra anodo e catodo) R = 0.01; (raggio) Lz = La+Lv; (lunghezza complessiva) [tesla] [volt] [m] [m] [m] [m] FREQUENZE DI CICLOTRONE omega_c=e*B/m; omega_c_ion=e*B/massa_ion; [s^-1] [s^-1] DENSITA’ DEL GAS p_gas_mbar=1e-6; p_gas_MKS=100*p_gas_mbar; T_gas=273.15+20; n_gas=p_gas_MKS/(kB*T_gas); (elettroni) (ioni) (pressione) (pressione) (temperatura) (densità particelle) [mbar] [Pa] [K] [m^-3] A questo punto viene discretizzato il dominio di interesse creando una griglia nel piano r-z il cui numero di punti è di seguito riportato. DATI DISCRETIZZAZIONE Nr=20; (numero punti lungo asse r) Nz=70; (numero punti lungo asse z) dz = Lz/Nz; dr = R/Nr; (ampiezza intervallo spaziale) (ampiezza intervallo spaziale) [m] [m] Prima di entrare nel dettaglio del codice, si può vedere come è strutturato dal seguente schema. 89 Le pompe ioniche ad ultra alto vuoto Lo schema sopra riportato rappresenta, sostanzialmente, quello che viene effettuato nel main del programma per lo studio della cella di Penning che viene di seguito riportato. PROGRAMMA PRINCIPALE PER LO STUDIO DI UNA POMPA IONICA clear all; close all; clc global gamma NP profile on -timer 'real' data_trap data_num calcolo_campo config_iniziale t=0; while t<1e5 nu_c=calcolo_freq_collisione; [alpha,tipo]=scelta_pod; switch lower(tipo) case 'elas' 90 Le pompe ioniche ad ultra alto vuoto collisione_elastica(alpha) case 'ioni' [r_coll,z_coll]=ionizzazione(alpha); if rand<gamma emissione_secondaria(r_coll,z_coll) end end t=t+1/nu_c; plot(t,NP,'.'); hold on; drawnow end Dopo aver inizializzato tutti i dati e dopo aver discretizzato il dominio di interesse, si passa al primo calcolo vero e proprio che consiste nel ricavare il campo elettrico. Tale calcolo viene effettuato trascurando il potenziale autoconsistente e considerando esclusivamente il campo generato dagli elettrodi. La distribuzione del potenziale all’interno della cella si ottiene risolvendo l’equazione di Poisson ∇ 2φ = 0 (5.19) utilizzando il metodo numerico dei volumi finiti. In realtà bisognerebbe risolvere l’equazione di Poisson ∇ 2φ = ρ (φ ) / ε 0 in cui è presente anche la densità di carica come funzione non lineare del potenziale stesso. Questo rappresenta un importante affinamento del codice per il giusto studio della popolazione elettronica e ionica all’interno della cella di Penning. Si consideri l’equazione di Poisson della forma ∇ 2φ = 0 , in cui φ è il campo scalare che rappresenta il potenziale elettrico. Sfruttando la seguente proprietà ∇ 2φ = ∇ ⋅ ∇ φ (5.20) Facendo riferimento al volume di controllo generico della Fig. 5.11 ed integrando nel dominio di interesse si ottiene ∫ ∇ φdV = ∫ ∇ ⋅ ∇φdV 2 V (5.21) V Applicando il teorema della divergenza è possibile trasformare l’integrale di volume in uno di superficie ∫ ∇ ⋅ ∇φdV = ∫ ∇φ ⋅ nˆdS V (5.22) ∂V 91 Le pompe ioniche ad ultra alto vuoto A questo punto è possibile spezzare l’integrale nella somma degli integrali calcolati sulle superfici dell’elemento di volume dV. ∫ ∇φ ⋅ nˆdS = ∫ ∇φ ⋅ nˆ dS + ∫ ∇φ ⋅ nˆ dS + ∫ ∇φ ⋅ nˆ dS + ∫ ∇φ ⋅ nˆ dS 1 ∂V 2 S1 S2 3 S3 4 (5.23) S4 Fig. 5.11. Schematizzazione volumi finiti. Facendo riferimento alla figura 5.11 ciascun integrale vale ∫ ∇φ ⋅ nˆ dS = 1 S1 ∫ ∇φ ⋅ nˆ dS = 2 S2 ∫ ∇φ ⋅ nˆ dS = 3 S3 ∫ ∇φ ⋅ nˆ dS = 4 S4 φN − φP dz φE − φP dr φS − φP dz φW − φ P dr ⋅r ⋅ dϑ ⋅ dr (5.24) ⋅(r + 1 / 2dr ) ⋅ dϑ ⋅ dz (5.25) ⋅r ⋅ dϑ ⋅ dr (5.26) ⋅(r − 1 / 2dr ) ⋅ dϑ ⋅ dz (5.27) Fig. 5.12. Elemento di volume dV in coordinate cilindriche. 92 Le pompe ioniche ad ultra alto vuoto Infine tenendo presente la geometria cilindrica e dividendo per il valore del volumetto dV (Fig. 5.12) si ottiene la discretizzazione dell’equazione di Poisson r + 1 / 2dr r − 1 / 2dr 2 ⎞ 1 1 ⎛ 2 ∇ 2φ = ⎜ − 2 − 2 ⎟φ P + 2 φ N + 2 φ S + φE + φW 2 dr ⎠ dz dz r ⋅ dr r ⋅ dr 2 ⎝ dz (5.28) Tale equazione è valida per ogni volumetto della griglia del dominio considerato. L’equazione di Poisson viene scritta quindi come un sistema lineare r ∇ 2φ = 0 ⇒ Aˆ φ = BC (5.29) r in cui  è la matrice dei coefficienti, φ è il vettore che rappresenta il potenziale in ogni nodo della griglia, mentre BC è il vettore che tiene conto delle condizioni al contorno. Risolvendo tale sistema di equazioni lineari si ottiene il potenziale in ogni r nodo della griglia. Bisogna notare che i nodi sono stati ordinati per colonne in φ partendo dal basso verso l’alto come mostrato nella seguente figura. Fig. 5.13. Esempio di griglia: Nr=5, Nz=6. Per quanto riguarda le condizioni al contorno bisogna prestare particolare attenzione. Siccome il dominio considerato è solo un quarto della cella, le condizioni al contorno da applicare sono: ∂φ =0 ∂r lungo l’asse z (r = 0) (5.30) ∂φ =0 ∂z lungo l’asse r (z = 0) (5.31) φ =0 all’anodo (r = R, 0 ≤ z ≤ La ) (5.32) 93 Le pompe ioniche ad ultra alto vuoto φ = −V0 φ = −V0 z − La Lz − La al catodo ( 0 ≤ r ≤ R , z = Lz) (5.33) tra anodo e catodo (r = R, La < z ≤ Lz ) (5.34) Tali condizioni vengono riassunte nella Fig. 5.14. Fig. 5.14. Condizioni al contorno. Infine, dalla risoluzione dell’equazione di Poisson discretizzata, si ottiene il potenziale φ (r , z ) prendendo in considerazione esclusivamente il campo generato dagli elettrodi. Fig. 5.15. Potenziale elettrico nei punti del dominio. La fase successiva dello studio è concentrata nel definire la configurazione iniziale, cioè nel distribuire gli elettroni nella cella di Penning. Il programma adoperato 94 Le pompe ioniche ad ultra alto vuoto è un codice alle superparticelle, secondo il quale ogni superparticella, denominata baccello, descrive statisticamente il comportamento dinamico di un insieme di elettroni. La prima fase del codice è quella di assegnare i valori di posizione e velocità iniziali. Vengono considerati 2000 baccelli per un totale di 107 elettroni la cui velocità iniziale è nulla, posizionati tutti sul catodo (z = Lz) e a diverse distanze radiali secondo la legge r = 0.7 R k / 2000 in cui k è l’indice del baccello. NP=2000; (numero baccelli) N_el_totale=1e7; (numero totale di elettroni) N_el_pod=N_el_totale/NP; (numero elettroni per baccello) for k=1:NP z=Lz; r=R*sqrt(k/NP)*.7; (assegno costanti del moto ad ogni baccello) [L_star(k),e_tot(k)]=crea_pod(r,z,0,0,0); end Come mostrato dal codice sopra riportato, per ogni baccello vengono calcolate le costanti del moto in base alla posizione e alle componenti di velocità. Considerando una particella carica in un campo elettromagnetico uniforme, il potenziale generalizzato è U = q[φ (r , z ) − A ⋅ v ] (5.35) in cui q è il valore della carica elettrica, φ (r , z ) è il valore del potenziale, A è il potenziale vettore e v è la velocità della particella. Il potenziale vettore, nel caso di campo magnetico uniforme, si può esprimere come A = 12 B × r = 12 rBeˆϑ (5.36) ∇ × (B × r ) = B∇ ⋅ r − (B ⋅ ∇ )r = 2 B (5.37) essendo La Lagrangiana della particella è L = T −U = ( ) m 2 r& + r 2ϑ& 2 + z& 2 − U 2 (5.38) Siccome ϑ è una coordinata ciclica o ignorabile il momento generalizzato coniugato si conserva, ovvero nel caso di elettrone pϑ = ∂L ∂ 1 qB 2 ⎞ 1 ⎛ ⎛ ⎞ ( = mr 2ϑ& − q A ⋅ v ) = m⎜ rvϑ + r ⎟ = m⎜ rvϑ − ω c r 2 ⎟ = mk 2 m ⎠ 2 ∂ϑ& ∂ϑ& ⎝ ⎝ ⎠ (5.39) 95 Le pompe ioniche ad ultra alto vuoto Altra costante del moto è l’Hamiltoniana H = ∑ pi q& i − L (5.40) con pi = ∂L ∂q& i (5.41) momento canonico, che sostituito nell’espressione dell’Hamiltoniana e facendo uso della relazione tra vϑ e k porta a H = 2T + qA ⋅ v − L = T + qφ ( r , z ) = ( ( ) m 2 m v r + v z2 + qφ (r , z ) + vϑ2 = 2 2 2 ) ( ) m 2 m⎛k 1 m 2 ⎞ v r + v z2 + qφ (r , z ) + ⎜ + ω c r ⎟ = = v r + v z2 + u # (r , z ) 2 2⎝r 2 2 ⎠ (5.42) dove u # ( r , z ) = qφ ( r , z ) + m⎛k 1 ⎜ + ωc 2⎝r 2 ⎞ r⎟ ⎠ 2 (5.43) Vengono riportate di seguito le istruzioni che permettono il calcolo delle costanti del moto: CALCOLO DELLE COSTANTI DEL MOTO DEL BACCELLO function [L_star,e_tot]=crea_pod(r,z,vr,vtheta,vz) global e m omega_c L_star=r*vtheta-omega_c/2*r^2; (momento angolare) e_tot=m/2*(vr^2+vz^2+vtheta^2)-e*Fi(r,z); (energia totale) Dopo aver ben definito la configurazione iniziale, può avere inizio la simulazione vera e propria. Viene stabilito un tempo di fine simulazione e viene subito calcolata la frequenza di collisione totale. Quest’ultima non è altro che la somma delle frequenze di collisione elastica e di ionizzazione di ciascun baccello, il cui reciproco è necessario per stabilire il passo temporale di osservazione. Nel dettaglio vengono effettuate le seguenti operazioni: per ciascun baccello k viene calcolato il potenziale generalizzato u# in ogni nodo della griglia; si verifica la condizione di esistenza del baccello in tutti i nodi della griglia, cioè se u # ≤ Etot allora il baccello esiste nel nodo considerato. In pratica, quello che viene fatto è essenzialmente vedere la forma del baccello (Fig. 5.16) all’interno del dominio della cella. 96 Le pompe ioniche ad ultra alto vuoto Fig. 5.16. Esempio di baccello: la zona gialla indica l’esistenza del baccello. Vengono riportate di seguito le istruzioni che permettono il calcolo della frequenza totale di collisione: function nu_c=calcolo_freq_collisione global E_pot r global n_gas m omega_c global Nr Nz global NP e_tot L_star N_el_pod global nu_el nu_ion global dens_N (inizializzazione delle variabili) nu_el=zeros(NP,1); %% frequenza collisione elastica nu_ion=zeros(NP,1); %% frequenza ionizzazione dens_N=zeros(Nz,Nr); %% densità elettroni for k=1:NP (condizione di esistenza del baccello) U_dies=E_pot+m/2*(L_star(k)./r+omega_c/2.*r).^2; pod=(U_dies<=e_tot(k)); (inizializzazione delle variabili) ke=zeros(Nz,Nr); %% energia cinetica v=zeros(Nz,Nr); %% velocità (assegnazione energia cinetica e velocità ad ogni cella del baccello) ke(pod)=e_tot(k)-E_pot(pod);%kinetic(E_pot(pod),e_tot(k)); v(pod)=sqrt(2/m*ke(pod)); N_celle_pod=sum(pod(:)); %%% numero di celle nel baccello 97 Le pompe ioniche ad ultra alto vuoto (calcolo frequenze del baccello) nu_el(k)=n_gas*sum(v(pod).*sigma_el(ke(pod)))/N_celle_pod; nu_ion(k)=n_gas*sum(v(pod).*sigma_ion(ke(pod)))/N_celle_pod; (densità elettroni nel baccello) dens_N(pod)=dens_N(pod)+N_el_pod/N_celle_pod; end nu_c=sum(nu_el+nu_ion); Il passo successivo consiste nel calcolare l’energia cinetica e la velocità in ogni cella in cui il baccello esiste, per poi calcolare le frequenze di collisione elastica e di ionizzazione relative a ciascun baccello. La frequenza di collisione elastica dipende dalla densità del gas e dalla sezione d’urto elastica che a sua volta è funzione dell’energia cinetica. Allo stesso modo, la frequenza di ionizzazione dipende dalla densità del gas e dalla sezione d’urto di ionizzazione che a sua volta è funzione dell’energia cinetica al di sopra di un’energia minima affinché si verifichi la ionizzazione. La sezione d'urto può essere definita come il rapporto tra il numero di particelle che vengono deviate nell'angolo solido dΩ in 1 secondo e il numero di particelle che in 1 secondo attraversano l'unità di superficie.Quindi la sezione d'urto ha le dimensioni di quest'ultima. La definizione precisa di tale quantità è: numero _ di _ particelle _ deviate _ nel _ dΩ tempo dσ (ϑ , ϕ ) = σ (ϑ ,ϕ )dΩ = numero _ di _ particelle _ incidenti tempo ⋅ sup erficie (5.44) dove Ω è l'angolo solido, ϑ e ϕ sono, rispettivamente, l'angolo rispetto all'asse x e rispetto all'asse z. La sezione d'urto è una misura della probabilità che una collisione possa avvenire o meno ed infatti è utilizzata per il calcolo della frequenza di collisione. A questo punto può essere scelto il baccello che subirà la collisione ed anche il tipo di collisione: questo viene effettuato applicando il metodo Monte Carlo. Tale metodo è usato per trarre stime attraverso simulazioni. Si basa su un algoritmo che genera una serie di numeri tra loro incorrelati, che seguono la distribuzione di probabilità che si suppone abbia il fenomeno da indagare. L'algoritmo Monte Carlo è un metodo numerico che viene utilizzato per trovare le soluzioni di problemi matematici, che possono avere molte variabili e che non possono essere risolti facilmente. 98 Le pompe ioniche ad ultra alto vuoto Di seguito vengono riportate le righe di codice che applicano l’algoritmo di MC per la scelta del tipo di collisione e del baccello che la subisce. FUNCTION CHE SCEGLIE IL BACCELLO E IL TIPO DI COLL. function [k,tipo]=scelta_pod global nu_el nu_ion y=cumsum(nu_el+nu_ion); y=y/y(end); k=sum(y<rand)+1; aa=rand; if nu_el(k)*aa>=nu_ion(k)*(1-aa) tipo='elas'; else tipo='ioni'; end Avendo a disposizione le frequenze di collisione elastiche e di ionizzazione di tutti i baccelli, viene creato un vettore contenente la frequenza totale cumulata normalizzato ad 1. Generando un numero casuale con distribuzione uniforme di probabilità è possibile decidere quale baccello subisce la collisione. Successivamente, sempre utilizzando l’algoritmo MC, viene deciso il tipo di collisione semplicemente vedendo in quale intervallo cade il numero casuale come mostrato dalla figura seguente. Fig. 5.17. Algoritmo MC per il tipo di collisione. Se il baccello scelto subisce una collisione elastica, la prima cosa da fare è quella di ricercare la cella appartenente al baccello in cui avviene la collisione. Anche questa scelta avviene in modo casuale generando un numero (rand). A questo punto vengono costruite le componenti di velocità post-collisione necessarie per il calcolo delle nuove costanti del moto. È importante verificare che il baccello non tocchi l’anodo, altrimenti verrebbe eliminato semplicemente annullando i valori delle costanti del moto del baccello stesso. Tutto ciò è eseguito dalle seguenti istruzioni: 99 Le pompe ioniche ad ultra alto vuoto function collisione_elastica(k) global E_pot r z global m omega_c global Nr Nz global NP e_tot L_star (campo di esistenza del baccello ) U _dies=E_pot+m/2*(L_star(k)./r+omega_c/2.*r).^2; U_dies=U_dies(:); (si selezionano le celle con energia sufficiente) pod=(U_dies<=e_tot(k)); (inizializzazione delle variabili) ke=zeros(Nz*Nr,1); %%% energia cinetica v=zeros(Nz*Nr,1); %%% velocità ke(pod)=e_tot(k)-E_pot(pod);%kinetic(E_pot(pod),e_tot(k)); v(pod)=sqrt(2/m*ke(pod)); (frequenza collisione elastica in funzione dell'energia cinetica) probability=zeros(Nz*Nr,1); probability(pod)=v(pod).*sigma_el(ke(pod)); (selezione cella che subisce la collisione) y=cumsum(probability); y=y/y(end); n=sum(y<rand)+1; r2=r(:); z2=z(:); r_coll=r2(n); z_coll=z2(n); v_coll=v(n); (costruzione nuova velocità post-collisione) mu=-1+2*rand; %% Monte Carlo vz_coll=v_coll*mu; v_p=v_coll*sqrt(1-mu^2); beta=2*pi*rand; %% Monte Carlo vr_coll=v_p*cos(beta); vtheta_coll=v_p*sin(beta); (costruzione nuove costanti del moto post-collisione) [L_star(k), e_tot(k)]=crea_pod(r_coll,z_coll,vr_coll,vtheta_coll,vz_coll); (controllo che il baccello non tocchi l'anodo) tocca=AT(e_tot(k),L_star(k)); if tocca NP=NP-1; L_star(k)=[]; e_tot(k)=[]; end 100 Le pompe ioniche ad ultra alto vuoto Se il baccello scelto subisce una ionizzazione, viene ricercata la cella appartenente al baccello in cui avviene la collisione. Questa scelta avviene adottando l’algoritmo MC e allo stesso modo vengono create le componenti di velocità post-collisione necessarie per il calcolo delle nuove costanti del moto. È importante verificare che il baccello non tocchi l’anodo, altrimenti verrebbe eliminato semplicemente annullando i valori delle costanti del moto del baccello stesso. Di seguito vengono riportate le righe di codice che applicano l’algoritmo di MC per la ionizzazione. function [r_coll,z_coll]=ionizzazione(k) global E_pot r z global m omega_c global Nr Nz global NP e_tot L_star global e_ion (campo di esistenza del baccello) U_dies=E_pot+m/2*(L_star(k)./r+omega_c/2.*r).^2; U_dies=U_dies(:); (seleziono baccelli con energia sufficiente) pod=(U_dies<=e_tot(k)); (inizializzo variabili) ke_ion=zeros(Nz*Nr,1);%%energia cinetica+energia persa nella ionizzazione ke=zeros(Nz*Nr,1); %%energia cinetica netta v_ion=zeros(Nz*Nr,1); %% velocità lorda v=zeros(Nz*Nr,1); %% velocità netta ke_ion(pod)= e_tot(k)-E_pot(pod);%kinetic(E_pot(pod),e_tot(k)); v_ion(pod)=sqrt(2/m*ke_ion(pod)); ke(pod)=ke_ion(pod)-e_ion; v(pod)=sqrt(2/m*ke(pod)); (frequenza ionizzazione in funzione dell'energia cinetica) probability=zeros(Nz*Nr,1); probability(pod)=v_ion(pod).*sigma_ion(ke_ion(pod)); y=cumsum(probability); y=y/y(end); n=sum(y<rand)+1; (seleziono la cella che subisce la collisione) r2=r(:); z2=z(:); r_coll=r2(n); z_coll=z2(n); v_coll=v(n); (costruisco nuova velocità post-collisione) mu=-1+2*rand; %% Monte Carlo 101 Le pompe ioniche ad ultra alto vuoto vz_coll=v_coll*mu; v_p=v_coll*sqrt(1-mu^2); beta=2*pi*rand; %% Monte Carlo vr_coll=v_p*cos(beta); vtheta_coll=v_p*sin(beta); (costruisco nuove costanti del moto post-ionizzazione) [L_star(k), e_tot(k)]=crea_pod(r_coll,z_coll,vr_coll,vtheta_coll,vz_coll); (controllo che il baccello non tocchi l'anodo) tocca_1=AT(e_tot(k),L_star(k)); if tocca_1 L_star(k)=[]; e_tot(k)=[]; NP=NP-1; end (costruisco nuovo baccello nato dalla ionizzazione) NP=NP+1; [L_star(NP), e_tot(NP)]=crea_pod(r_coll,z_coll,0,0,0); (controllo che il baccello non tocchi l'anodo) tocca_2=AT(e_tot(NP),L_star(NP)); if tocca_2 L_star(NP)=[]; e_tot(NP)=[]; NP=NP-1; end La ionizzazione è responsabile della nascita di un nuovo baccello la cui posizione è la stessa in cui è avvenuta la collisione, mentre le componenti di velocità vengono considerate essere nulle. Anche per il nuovo baccello vanno calcolate le costanti del moto e va verificato che non siano tali da fargli toccare l’anodo, condizione che lo annullerebbe così come è nato. La ionizzazione è un fenomeno su cui bisogna prestare particolare attenzione, perché gli ioni di Argon che si sono creati, in un campo elettromagnetico come quello della cella di Penning, sono spinti verso il catodo. Proprio l’impatto con il catodo può essere la causa di una emissione secondaria, stabilita sempre con l’ausilio del metodo MC in base al coefficiente di emissione secondaria γ. Come detto precedentemente, gli ioni possono raggiungere il catodo per effetto dei campi elettromagnetici. Conoscendo la posizione iniziale, cioè il punto (r, z) in cui è avvenuta la ionizzazione, e risolvendo le equazioni del moto è possibile ricavare la posizione di 102 Le pompe ioniche ad ultra alto vuoto impatto sul catodo. Quest’ultima è necessaria per creare il nuovo baccello attribuendogli le giuste costanti del moto. Chiaramente vengono assunte nulle tutte le componenti di velocità del nuovo baccello ed allo stesso modo ne viene verificata l’esistenza. Queste operazioni vengono eseguite dalle seguenti istruzioni: function emissione_secondaria(r_0i,z_0i) (va a prendere gli ioni generati dalle le ionizzazioni) global Lz NP L_star e_tot r_c = raggio_catodo(r_0i,z_0i) %#ok<NOPRT> %% distanza dal catodo %%% nuovo baccello in posizione r_c sul CATODO NP=NP+1; [L_star(NP),e_tot(NP)]=crea_pod(r_c,Lz,0,0,0); %%% controllo che il baccello non tocchi l'anodo %%% tocca=AT(e_tot(NP),L_star(NP)); if tocca L_star(NP)=[]; e_tot(NP)=[]; NP=NP-1; end 103 Le pompe ioniche ad ultra alto vuoto 104 Conclusioni 6. Conclusioni In questa tesi sono stati sviluppati e analizzati due metodi numerici per lo studio di gas ionizzati: il primo riguarda l’analisi dell’aria, in condizioni tali da non poter essere considerata come un gas perfetto, contenuta in un tubo d’urto; il secondo studia il comportamento di un plasma non neutro all’interno di una cella di Penning per pompe ioniche ad ultra alto vuoto. L’algoritmo utilizzato per la valutazione delle proprietà termo-chimiche dell’aria nelle condizioni di equilibrio, implementando funzioni fittate delle variabili di stato, è risultato efficiente e abbastanza robusto. L’accoppiamento con il metodo di Roe per gas reale, applicato al tubo d’urto, permette di effettuare simulazioni in tempi maggiori rispetto al caso di gas perfetto, ma comunque accettabile. La generalizzazione del metodo di Roe, per un gas reale, è stata eseguita per mezzo di una formulazione del tutto generale. Questa estensione del metodo ha permesso di: (i) dimostrare che la scelta della tecnica algebrica, usata per definire lo stato medio di Roe, non influenza la definizione formale dello stato medio stesso; (ii) sviluppare la generalizzazione dello schema di Roe proposta da Vinokur e Montagné. Questa analisi ha permesso di accertare l’influenza dell’equazione di stato considerata sulla definizione dello stato medio. L’accuratezza e l’efficienza numerica dipende dalla giusta scelta dell’equazione di stato. La scelta dell’energia interna per unità di volume e della densità come variabili termodinamiche indipendenti è molto vantaggiosa, perché minimizza il numero di variabili definite per lo stato medio. Dai risultati numerici, ottenuti effettuando delle simulazioni sul tubo d’urto, è chiaro che il vincolo sulla discontinuità di contatto è più severa per un gas reale rispetto a un gas ideale. Il salto attraverso la discontinuità è piuttosto elevato, circa un ordine di grandezza per la densità e l’energia. Questo caso risulta essere molto complicato da studiare anche perché la temperatura iniziale del gas contenuto nel ramo di alta pressione è 30 volte quella del ramo destro. Di conseguenza la composizione dell’aria è completamente diversa. Nel gas reale avvengono dissociazioni e ionizzazioni significative ad alte temperature. Ciò comporta un’energia specifica maggiore e una 105 Conclusioni densità minore rispetto al gas ideale. L’onda d’urto e di espansione nel plasma viaggiano ad una velocità maggiore. La forza dell’urto ed il salto attraverso la discontinuità di contatto appaiono più deboli nel caso di gas ideale. Le pompe ioniche sono dei sistemi chiusi per produrre il vuoto e, non avendo parti in movimento, sono caratterizzate dall’assenza di vibrazioni. Contrariamente alla sua apparente semplicità costruttiva, i fenomeni fisici coinvolti in una pompa ionica sono molto vari e complicati. Ancora oggi il funzionamento di questi strumenti è in gran parte fenomenologico e basato su una comprensione qualitativa di tali processi. Il codice in linguaggio MATLAB sviluppato dal gruppo di ricerca del Prof. Coppa, del Dipartimento di Energetica del Politecnico di Torino, permette lo studio numerico di una cella di penning per pompe ioniche ad ultra alto vuoto. Tale codice numerico, ancora in fase di affinamento, ha come obiettivo quello di fornire una descrizione affidabile del comportamento della popolazione elettronica contenuta nella cella di Penning. La distribuzione del potenziale all’interno della cella si ottiene risolvendo l’equazione di Poisson ∇ 2φ = 0 utilizzando il metodo numerico dei volumi finiti, come è stato ampliamente discusso. In realtà bisognerebbe risolvere l’equazione di Poisson ∇ 2φ = ρ (φ ) / ε 0 in cui è presente anche la densità di carica come funzione non lineare del potenziale stesso. Questo rappresenta un importante affinamento del codice per il giusto studio della popolazione elettronica e ionica all’interno della cella di Penning. Infine, è stato analizzato il moto di una particella carica, ad esempio l’elettrone, all’interno di una cella di Penning risolvendo numericamente le equazioni differenziali del moto. Dai risultati ottenuti è stato possibile osservare che l’elettrone descrive una traiettoria molto complicata. 106 Bibliografia Bibliografia [1] R. Goldston e P.H.Rutherford, Introduction to plasma physics, Institute of Physics Publishing, Philadelphia, 1995, p.2. [2] G. L. Rogoff, Ed., IEEE Transactions on Plasma Science, vol. 19, p. 989, Dec. 1991. [3] L. Mottura, L. Vigevano, M. Zaccanti, An Evaluation of Roe’s Scheme Generalizations for Equilibrium Real Gas Flows, Journal of Computational Physics 138, 1997 [4] P. Kaurinkoski, Development of Equation of State fora n Arbitrary Misture of Thermally Perfect Gases to the FINFLO Flow Solver, HUT Laboratory of Aerodynamics, 1995 [5] A. D’Angola, G. Colonna, C. Gorse, M. Capitelli, Thermodynamic and transport properties in equilibrium air plasmas in a wide pressure and temperature range, The European Physical Journal, 2008 [6] J. C. Tannehill and P. H. Mugge, Improved Curve Fits for the Thermodynamic Properties of Equilibrium Air Suitable for Numerical Computation using TimeDependent or Shock-Capturing Method, Nasa contractor report, October 1974 [7] E. F. Toro, Riemann Solvers and Numerical Methods for Fluid Dynamics, Springer, 1999 [8] Aldo Bonfiglioli, A 2D/3D unstructured code for solving the compressible and incompressible Euler and Navier-Stokes Equations, Dipartimento di Ingegenria e Fisica dell’Ambiente, Università degli Studi della Basilicata [9] M. Vinokur and J. L. Montagnè, Generalized Flux-Vector Splitting and Roe Average for an Equilibrium Real Gas, Journal of Computational Physics 89, 1990 [10] M. Napolitano, Gasdinamica unidimensionale non stazionaria, Gasdinamica, Capitolo 8 [11] M. S. Liou, B. Van Leer, J. S. Shuen, Splitting of Inviscid Fluxes for Real Gases, Journal of Computational Physics 87, 1990 107 Bibliografia [12] Contratto n. 580/2004 tra il Dipartimento di Energetica del Politecnico di Torino e la società VARIAN di Leinì, Studio Teorico-Numerico della caratteristica elettrica e dello sputtering ionico in una singola cella (Trappola di Penning) di pompa ionica (Sputter ion pump) [13] F. Bottos, Modellazione Numerica di una Cella di Penning per Pompe Ioniche ad Ultra Alto Vuoto, Politecnico di Torino, 2007 [14] L. Schulz, Sputter-Ion Pumps, Paul Scherrer Institut, Villigen, Switzerland [15] J. C. Helmer and R. L. Jepsent, Electrical Characteristics of a Penning Discharge, Proceedings of the Ire. [16] J. A. Bittencourt, Fundamentals of Plasma Physics, Third Edition, Springer, 2007 108 Appendice A Appendice A Coefficienti per il calcolo della massa molare media. function y=dens(mT,mp) mp=log(mp); R=8.314472; % J mol-1 K-1 catm_pascal=1.01325e5; sa1=([0.028811 ]); sa2=(fliplr([ -5.452539e+000 -2.762076e-002 -3.327630e-003 -2.453118e-004 - 6.332107e-006 ])); sc2=(fliplr([ 8.170734e+000 sd2=(fliplr([ 6.380594e+000 5.708244e-002 1.046470e-001 1.293374e-003 ])); 8.553860e-004 -1.572857e-004 ])); sa3=(fliplr([ -4.595514e+000 1.328152e-002 9.294096e-004 -8.243998e-005 - 9.490079e-006 ])); sc3=(fliplr([ 8.805680e+000 sd3=(fliplr([ 7.080690e+000 5.468057e-002 1.142540e-001 1.121881e-003 6.869247e-004 ])); -2.257365e-004 ])); sa4=(fliplr([ -4.971377e+000 -1.668833e-002 -2.409638e-003 -2.840529e-004 - 2.934495e-005 ])); 109 Appendice A sc4=(fliplr([ 9.525862e+000 6.639994e-002 7.836529e-004 -2.447910e-004 - 9.954169e-002 -1.327510e-004 -2.926560e-004 - 2.415297e-005 ])); sd4=(fliplr([ 7.888211e+000 4.717532e-005 ])); sa5=(fliplr([ -6.720756e+000 7.203127e-002 6.766486e-003 -1.019894e-003 9.196578e-005 ])); sc5=(fliplr([ 1.055726e+001 8.397717e-003 9.849480e-004 3.539965e-004 - 4.236150e-005 ])); sd5=(fliplr([ 8.707609e+000 3.713173e-002 -1.670186e-002 -5.094908e-004 4.248200e-004 ])); sa6=(fliplr([ -6.218117e+000 -7.145834e-002 6.529894e-004 1.599394e-003 1.981881e-005 ])); sc6=(fliplr([ sd6=(fliplr([ 1.020784e+001 8.422438e+000 2.553473e-002 1.125955e-001 -3.549988e-003 -3.204629e-003 ])); -1.655103e-003 - 2.051312e-004 ])); sa7=(fliplr([ sc7=(fliplr([ sd7=(fliplr([ -6.611171e+000 8.990124e-002 -5.418532e-003 1.096136e+001 2.887564e-002 -3.621097e-004 9.253817e+000 1.341329e-002 -6.004835e-003 ])); ])); 1.860800e-003 - 1.229602e-004 ])); conc=sa1-exp(polyval(sa2,mp)).*sgm(mT,exp(polyval(sc2,mp)),exp(polyval(sd2,mp)))... -exp(polyval(sa3,mp)).*sgm(mT,exp(polyval(sc3,mp)),exp(polyval(sd3,mp)))... -exp(polyval(sa4,mp)).*sgm(mT,exp(polyval(sc4,mp)),exp(polyval(sd4,mp)))... -exp(polyval(sa5,mp)).*sgm(mT,exp(polyval(sc5,mp)),exp(polyval(sd5,mp)))... -exp(polyval(sa6,mp)).*sgm(mT,exp(polyval(sc6,mp)),exp(polyval(sd6,mp)))... -exp(polyval(sa7,mp)).*sgm(mT,exp(polyval(sc7,mp)),exp(polyval(sd7,mp))); mpp=exp(mp)*1.01325e5; y=conc/R.*mpp./mT; 110 Appendice B Appendice B Coefficienti per il calcolo dell’entalpia specifica. function y=ei(mT,mp) mp=log(mp); sa0=fliplr([ 2.350912e-001 sa1=fliplr([ 1.542966e-005 sa2=(fliplr([ 1.128838e-004 sc2=(fliplr([ -1.120236e-003 -2.508755e-005 ]); 6.556647e-007 ]); 6.587335e+000 -6.112145e-002 -9.108114e-003 -9.569561e-004 - 5.283021e-002 4.741812e-004 -1.276598e-004 - -8.757988e-006 ])); 8.164839e+000 9.877950e-006 ])); sd2=(fliplr([ 4.348437e-005 sa3=(fliplr([ 6.513247e+000 1.040239e-001 -8.104042e-004 -2.991537e-004 6.258153e-006 ])); 8.740885e+000 3.050736e-003 1.599171e-003 -2.859059e-004 - 5.371695e-005 ])); 111 Appendice B sc3=(fliplr([ 8.856133e+000 5.964702e-002 1.745638e-003 2.343688e-005 - 1.119408e-001 4.185626e-003 -2.499247e-004 - -8.321612e-004 - -1.055407e-004 - 3.102821e-006 ])); sd3=(fliplr([ 6.981907e+000 5.209456e-005 ])); sa4=(fliplr([ 1.014496e+001 -1.833015e-002 -4.265166e-003 6.481810e-005 ])); sc4=(fliplr([ 9.593196e+000 7.089945e-002 1.640521e-003 1.510653e-005 ])); sd4=(fliplr([ 7.910995e+000 1.006930e-001 sa5=(fliplr([ 1.082665e+001 -4.777223e-002 sc5=(fliplr([ 5.192881e-006 1.030572e+001 -2.526731e-004 ])); -4.682547e-003 ])); 6.607308e-002 1.512694e-003 -5.009486e-005 8.320951e+000 7.474585e-002 1.789257e-003 5.273341e-004 3.425485e-006 ])); sa6=(fliplr([ 1.145937e+001 5.122940e-004 -8.805300e-003 -1.193042e-003 ])); sc6=(fliplr([ 1.076031e+001 6.404003e-002 9.621465e-004 -1.883920e-005 ])); sd6=(fliplr([ 8.846750e+000 1.307197e-001 -2.943134e-004 -6.425060e-004 ])); sa7=(fliplr([ 1.644220e-004 sc7=(fliplr([ - 1.116840e-006 ])); sd5=(fliplr([ 3.755570e-005 -1.608832e-003 1.172458e+001 -5.461477e-002 3.413385e-003 7.407737e-004 - 6.026294e-002 1.125935e-003 -2.170126e-005 - 8.687938e-002 1.554323e-002 3.584506e-005 - -2.295953e+001 -1.220667e+001 -3.504472e+000 - -1.369506e-004 - -1.878043e-005 ])); 1.109244e+001 3.141895e-006 ])); sd7=(fliplr([ 8.942747e+000 2.447405e-004 ])); sa8=(fliplr([ -1.011841e+001 4.373233e-001 1.127311e-002 6.598926e-003 -2.119755e-004 8.311253e-006])); sc8=(fliplr([ 1.963954e-002 1.314544e+001 -1.622592e-004 sd8=(fliplr([ -1.743314e+000 7.607736e-001 8.529592e-002 2.079129e+000 9.992304e-001 -1.094608e-005 2.304744e-005 -1.807206e+001 -1.393980e+001 4.967101e-002 2.223931e-001 1.817656e-006 ])); -5.232064e+000 7.733746e-003 - 5.507513e-004 1.527569e-005])); y0=polyval(sa0,mp).*mT+polyval(sa1,mp).*mT.^2 ... +exp(polyval(sa2,mp)).*sgm(mT,exp(polyval(sc2,mp)),exp(polyval(sd2,mp)))... +exp(polyval(sa3,mp)).*sgm(mT,exp(polyval(sc3,mp)),exp(polyval(sd3,mp)))... +exp(polyval(sa4,mp)).*sgm(mT,exp(polyval(sc4,mp)),exp(polyval(sd4,mp)))... +exp(polyval(sa5,mp)).*sgm(mT,exp(polyval(sc5,mp)),exp(polyval(sd5,mp)))... +exp(polyval(sa6,mp)).*sgm(mT,exp(polyval(sc6,mp)),exp(polyval(sd6,mp)))... +exp(polyval(sa7,mp)).*sgm(mT,exp(polyval(sc7,mp)),exp(polyval(sd7,mp)))... +exp(polyval(sa8,mp)).*sgm(mT,exp(polyval(sc8,mp)),exp(polyval(sd8,mp))); y0=y0*4.1868*1e3; mp=exp(mp); y=y0-mp*1.01325e5/dens(mT,mp); 112 Appendice C Appendice C Coefficienti per il calcolo della pressione p = p(ε , ρ ) . 113 Appendice C load tabella.txt %T=100:100:25000; %p=([1.0e-2 2.0e-2 5.0e-2 1.0e-1 2.0e-1 5.0e-1 1.0e0 2.0e0 5.0e0]); Nrho=80; Ne=100; %rho_g=linspace(1e-2,17.5548,Nrho); rho_g=exp(linspace(log(1e-2),log(18),Nrho)); ep_g=linspace(2e3,3e6,Ne); %ep_g=exp(linspace(log(8.83e3),log(2.98e6),Ne)); [ep,rr]=meshgrid(ep_g,rho_g); Y=log10(rr/1.292); Z=log10(ep./rr./78408.4); %YL=[-Inf -7 -4.5 -0.5 +Inf]; YL=[-7 -4.5 -0.5 +Inf]; ZL=[-Inf .65 1.5 1.54 1.68 2.2 2.22 2.46 2.9 3.05 3.38 +Inf]; %%costruiamo matrice coefficienti a1=zeros(Nrho,Ne); a2=zeros(Nrho,Ne); a3=zeros(Nrho,Ne); a4=zeros(Nrho,Ne); a5=zeros(Nrho,Ne); a6=zeros(Nrho,Ne); a7=zeros(Nrho,Ne); a8=zeros(Nrho,Ne); a9=zeros(Nrho,Ne); a10=zeros(Nrho,Ne); a11=zeros(Nrho,Ne); a12=zeros(Nrho,Ne); a13=zeros(Nrho,Ne); a14=zeros(Nrho,Ne); a15=zeros(Nrho,Ne); a16=zeros(Nrho,Ne); %matrice info riga %matr=zeros(length(ZL)-1,length(YL)-1); matr=[10 5 1 11 6 2 12 6 2 12 7 2 12 7 3 13 7 3 13 8 3 13 8 4 13 9 4 14 9 4 15 9 4]; for jy=1:length(YL)-1 for jz=1:length(ZL)-1 114 Appendice C %c1=((YL(jy)<Y<YL(jy+1))&(ZL(jz)<Z<ZL(jz+1))); c1=(Y>YL(jy)&Y<YL(jy+1)&Z>ZL(jz)&Z<ZL(jz+1)); a1(c1)=tabella(matr(jz,jy),1); % keyboard a2(c1)=tabella(matr(jz,jy),2); a3(c1)=tabella(matr(jz,jy),3); a4(c1)=tabella(matr(jz,jy),4); a5(c1)=tabella(matr(jz,jy),5); a6(c1)=tabella(matr(jz,jy),6); a7(c1)=tabella(matr(jz,jy),7); a8(c1)=tabella(matr(jz,jy),8); a9(c1)=tabella(matr(jz,jy),9); a10(c1)=tabella(matr(jz,jy),10); a11(c1)=tabella(matr(jz,jy),11); a12(c1)=tabella(matr(jz,jy),12); a13(c1)=tabella(matr(jz,jy),13); a14(c1)=tabella(matr(jz,jy),14); a15(c1)=tabella(matr(jz,jy),15); a16(c1)=tabella(matr(jz,jy),16); end end gamma=a1+a2.*Y+a3.*Z+a4.*Y.*Z+a5.*Y.^2+a6.*Z.^2+a7.*Y.*Z.^2+a8.*Z.^3+... (a9+a10.*Y+a11.*Z+a12.*Y.*Z)./(1+exp((a13+a14.*Y).*(Z+a15.*Y+a16))); p=ep.*(gamma-1); [kappa,chi] = GRADIENT(p,ep_g,rho_g); %catm_pascal=1.01325e5; %p=p/catm_pascal; save densita.txt rho_g -ASCII save energia.txt ep_g -ASCII save pressione.txt p -ASCII save chi.txt chi -ASCII save kappa.txt kappa -ASCII 115