facoltà di ingegneria corso di laurea in ingegneria meccanicaold · nel presente lavoro di tesi è...
TRANSCRIPT
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
1
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
Indice
2
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
Introduzione
3
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.
Introduzione
4
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
Introduzione
5
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.
Introduzione
6
Proprietà termodinamiche dell’aria
7
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
Proprietà termodinamiche dell’aria
8
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à.
Proprietà termodinamiche dell’aria
9
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 è
)(),(1
TeTee s
N
s
ss
C
∑=
==ρρρ (1.1)
dove sρ ed se sono la densità e l’energia interna per unità di massa della specie s
rispettivamente, mentre
∑=
=CN
ss
1ρρ (1.2)
è 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
fsselT
ssss he
eRTRTe
sΔ++
−Θ
+= Θ ,/ 125)( (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 ss mRR /ˆ= , in cui R è la
costante universale dei gas ed sm è la massa molare della specie s.
Per un gas monoatomico, invece, non vi è contributo rotazionale e vibrazionale
fsselss heTRTe Δ++= ,2
3)( (1.4)
mentre per un elettrone libero
Proprietà termodinamiche dell’aria
10
)(23)( elettroneshTRTe f
sss =Δ+= (1.5)
La pressione P può essere ottenuta sommando il contributo delle varie specie
chimiche e la legge di Dalton
RTTRTPPCN
ssss ρρρ === ∑
=1
),( (1.6)
in cui
s
N
s
ss RRR
C
∑=
==1
)(ρρρ (1.7)
L’entalpia della miscela è immediatamente determinata come
TRTePeThh sss )(),(/),( ρρρρ +=+== (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.
Proprietà termodinamiche dell’aria
11
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
Proprietà termodinamiche dell’aria
12
O2, N2, O, N, NO
che sono messe in relazione dalle seguenti reazioni
ONNONNN
OOO
+⇔+⇔+⇔
2
2
• 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 −+ +⇔ eNONO
• Miscela 3 (AM3) composta dalle specie
O2, N2, O, N, NO, NO+, O2+, N2
+, O+, N+, e-
che è caratterizzato dalla presenza delle seguenti reazioni
−+
−+
−+
−+
+⇔
+⇔
+⇔+
+⇔+
eNNeOO
eNNN
eOOO
2
2
Fig. 1.4. Composizione chimica (AM3) in funzione della temperatura
Proprietà termodinamiche dell’aria
13
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
)exp()exp()exp(
),;(jj
jjjj qq
qcT
−+=Δσ (1.9)
in cui j
jj
cTq
Δ
−= (1.10)
Le proprietà termodinamiche si ottengono come combinando le sigmoide i cui
coefficienti si ricavano con
∑=
=n
j
jj xC
0α (1.11)
Proprietà termodinamiche dell’aria
14
in cui )log(Px = e C rappresenta ognuno dei parametri ic 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
MRTp
=ρ (1.12)
dove M è la massa molare media data dalla seguente relazione
∑=
−=6
10 )(
jjj TacM σ (1.13)
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:
ρ/phe −= (1.14)
in cui ∑∑==
+=7
1
2
1)(
jjj
j
jj TaTch σ (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.
Proprietà termodinamiche dell’aria
15
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
),( ρεpp = (1.16)
in cui ε è l’energia interna per unità di volume, mentre ρ è la densità.
L’equazione di stato [6] è
)1~( −= γεp (1.17)
La forma generale dell’equazione usata per γ~ è
( )( )[ ]16151413
1211109
38
27
26
254321
exp1
~
aYaZYaaYZaZaYaa
ZaYZaZaYaYZaZaYaa
+++++++
+
+++++++=γ (1.18)
in cui
( )292.1/log10 ρ=Y (1.19)
( )4.78408//log10 ρε=Z (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 (1.21)
ερχ ⎟⎟
⎠
⎞⎜⎜⎝
⎛∂∂
=p (1.22)
attraverso le differenze finite. In Appendice C ci sono i dettagli e le espressioni per
ricavare tali tabelle.
Proprietà termodinamiche dell’aria
16
Equazioni di Navier-Stokes per un fluido
17
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.
Equazioni di Navier-Stokes per un fluido
18
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 Navier-
Stokes 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.
Equazioni di Navier-Stokes per un fluido
19
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.
Equazioni di Navier-Stokes per un fluido
20
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.
Equazioni di Navier-Stokes per un fluido
21
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]:
Qz
HHy
GGx
FFt
U vvv =∂−∂
+∂−∂
+∂−∂
+∂∂ )()()(
(2.1)
in cui Q è il termine sorgente mentre TkEwvuU ),,,,,,,( ρφρερρρρρ= (2.2)
Equazioni di Navier-Stokes per un fluido
22
I flussi inviscidi sono:
⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜
⎝
⎛
++
++
=
φρερ
ρρ
ρρ
ρρρ
uuuk
ukpEwuvu
kpuu
F)( 3
2
322
(2.3.a)
⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜
⎝
⎛
++
++
=
φρερ
ρρ
ρρρ
ρρ
vvvk
vkpEwv
kpvuvv
G)( 3
2
322
(2.3.b)
⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜
⎝
⎛
++++
=
φρερ
ρρρρ
ρρρ
wwwk
wkpEkpw
vwuww
H)( 3
2322
(2.3.c)
dove ρ è la densità, kwjviuVrrrr
++= è 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
keE ρρ += (2.4)
in cui e e k sono rispettivamente l’energia interna specifica e l’energia interna
specifica.
Equazioni di Navier-Stokes per un fluido
23
I flussi viscosi sono:
⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜
⎝
⎛
∂∂∂∂∂∂
−++=
)()()(
0
xxxk
qwvuF
k
xxzxyxx
xz
xy
xx
v
φμεμ
μτττ
τττ
φ
ε
(2.5.a)
⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜
⎝
⎛
∂∂∂∂∂∂
−++=
)()()(
0
yyyk
qwvuG
k
yyzyyxx
yz
yy
xy
v
φμεμ
μτττ
τττ
φ
ε
(2.5.b)
⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟⎟
⎠
⎞
⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜⎜
⎝
⎛
∂∂∂∂∂∂
−++=
)()()(
0
zzzk
qwvuH
k
zzzyzxz
zz
yz
xz
v
φμεμ
μτττ
τττ
φ
ε
(2.5.c)
dove il tensore delle tensioni viscose è
ijijj
i
i
jij uuV
xu
xu
′′′′−⎥⎥⎦
⎤
⎢⎢⎣
⎡⋅∇−
∂∂
+∂
∂= ρδμτ )(
32 r
(2.6)
Per le tensioni di Reynolds viene utilizzata l’approssimazione di Boussinesq
ijijj
i
i
jTij kV
xu
xu
uu δρδμρ32)(
32
−⎥⎥⎦
⎤
⎢⎢⎣
⎡⋅∇−
∂∂
+∂
∂=′′′′−−
r (2.7)
Equazioni di Navier-Stokes per un fluido
24
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
DT
pT
pDT qT
ccqTkkq rrr
+∇⎟⎟⎠
⎞⎜⎜⎝
⎛+=+∇+−=
PrPr)( μμ (2.8)
dove Dqr è 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
ekwvuEp ργρργ )1(2
)1(222
−=⎟⎟⎠
⎞⎜⎜⎝
⎛−
++−−= (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
Tk σ
μμμ += (2.10.a)
εε σ
μμμ T+= (2.10.b)
TL
T
φφφ σ
μσμμ += (2.10.c)
dove σk , σε e σφ sono i numeri di Schmidt.
Equazioni di Navier-Stokes per un fluido
25
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:
0)()()( =+++ zyxt wvu ρρρρ (2.11)
Legge di conservazione della quantità di moto lungo l’asse x:
0)()()()( 2 =++++ zyxt uwuvpuu ρρρρ (2.12)
Legge di conservazione della quantità di moto lungo l’asse y:
0)()()()( 2 =++++ zyxt uwpvuvv ρρρρ (2.13)
Legge di conservazione della quantità di moto lungo l’asse z:
0)()()()( 2 =++++ zyxt pwvwuww ρρρρ (2.14)
Legge di conservazione dell’energia:
[ ] [ ] [ ] 0)()()( =++++++ zyxt pEwpEvpEuE (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.
Equazioni di Navier-Stokes per un fluido
26
Le equazioni diventano:
0)()()( =+++ zyxt UHUGUFU (2.16)
in cui i vettori sono:
⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢
⎣
⎡
=
Ewvu
Uρρρρ
(2.17)
⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢
⎣
⎡
+
+=
)(
2
pEuuwuv
puu
Fρρ
ρρ
(2.18.a)
⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢
⎣
⎡
+
+=
)(
2
pEvuw
pvuvv
Gρ
ρρρ
(2.18.b)
⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢
⎣
⎡
++
=
)(
2
pEwpw
vwuww
Hρρρρ
(2.18.c)
È importante notare che i flussi sono funzioni delle variabili conservative.
Equazioni di Navier-Stokes per un fluido
27
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:
0)( =+ xt uρρ (2.19)
Legge di conservazione della quantità di moto lungo l’asse x:
0)()( 2 =++ xt puu ρρ (2.20)
Legge di conservazione dell’energia:
[ ] 0)( =++ xt pEuE (2.21)
L’equazione di Eulero scritta nella forma compatta è:
0=∂∂
+∂∂
xF
tU (2.22)
che può essere scritta nella forma riportata di seguito in cui i pedici rappresentano
le derivate parziali
0=+ xt FU (2.23)
Il vettore delle variabili conservative e del flusso sono
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
EuU ρρ
(2.24)
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
++=
)(
2
pEupu
uF ρ
ρ (2.25)
Equazioni di Navier-Stokes per un fluido
28
Metodo di Roe
29
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).
⎪⎪⎩
⎪⎪⎨
⎧
===
=+
)(),()(),0()()0,(
0)()0(
tUtLUtUtUxUxU
UFU
r
l
xt
(3.1)
nel dominio xl ≤ x ≤ xr utilizzando la formula conservativa esplicita
⎥⎦
⎤⎢⎣
⎡−
ΔΔ
+=+−
+
21
21
1
ii
ni
ni FF
xtUU (3.2)
Fig. 3.1. Condizioni iniziali del problema di Riemann.
Metodo di Roe
30
Si assume che la soluzione del IBVP esista. Viene definito il flusso numerico di
Godunov all’intercella
⎟⎟⎠
⎞⎜⎜⎝
⎛=
++)0(
21
21 ii
UFF (3.3)
in cui )0(21
+iU è la soluzione esatta )/(
21 txU
i+ del problema di Riemann
⎪⎩
⎪⎨⎧
><
⎩⎨⎧
=
=+
00
)0,(
0)(
xx
sese
UU
xU
UFU
R
L
xt
(3.4)
valutata in x/t = 0. Nel caso monodimensionale, i vettori delle variabili
conservative e del flusso sono:
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
EuU ρρ
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
++=
)(
2
pEupu
uF ρ
ρ (3.5)
Introducendo il parametro vettore
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
=
3
2
1
zzz
HuZ
ρρρ
(3.6)
i vettori delle variabili conservative e del flusso si possono scrivere in funzione di
Z:
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
−=
pzzzz
zZU
31
21
21
)( ⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡+=
32
22
21
)(zz
pzzz
ZF (3.7)
È facile notare che i precedenti vettori sono quadratici in Z a meno del termine che
rappresenta la pressione.
Metodo di Roe
31
In questo modo, quando si va a valutare la variazione di flusso tra due nodi [8],
dxZFdxxZ
ZFdx
xFdxFFF
i
i
i
i
i
i
i
i
x
xxZ
x
x
x
x
x
xxii ∫∫∫∫
++++
=∂∂
∂∂
=∂∂
==−+
1111
1 (3.8)
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 è
dxFx
ZZFF
i
i
x
xZ
iiii ∫
+
Δ−
=− ++
11
1 (3.9)
Per un gas perfetto non ionizzato è possibile esprimere la pressione in funzione del
parametro vettore e si scopre che è una funzione quadratica in z
⎥⎦
⎤⎢⎣
⎡−
−=
21 2
321
zzzp
γγ (3.10)
Applicando il teorema del valor medio la variazione di flusso vale
⎟⎟⎠
⎞⎜⎜⎝
⎛−=−
+++
2111 )(
iZiiii ZFZZFF (3.11)
in cui FZ è la matrice jacobiana valutata in un opportuno stato medio.
Metodo di Roe
32
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
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡=
EmUρ
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
++=
ρρρ
/)(/2
mpEpm
uF (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 2
212
21 uueE ρερρ +=+= (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
0)( =∂∂
+∂∂
xUUA
tU (3.14)
⎥⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢⎢
⎣
⎡
∂∂
∂∂
∂∂
∂∂
∂∂
∂∂
∂∂
∂∂
∂∂
=∂∂
=
3
3
2
3
1
3
3
2
2
2
1
2
3
1
2
1
1
1
)(
UF
UF
UF
UF
UF
UF
UF
UF
UF
UFUA (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.
Metodo di Roe
33
Ciononostante, la matrice Jacobiana del flusso può essere definita in generale
considerando la pressione come una funzione delle variabili conservative [3]
),,( Emp ρΠ= (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.
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
Π+Π+−ΠΠ+Π−Π=
uuHuHuuA
Em
Em
)1()(2
0102
ρ
ρ (3.17)
dove 221 uhH += rappresenta l’entalpia totale per unità di massa, mentre le derivate
della pressione sono definite da
Em,⎟⎟⎠
⎞⎜⎜⎝
⎛∂Π∂
=Πρρ
Em m ,ρ
⎟⎠⎞
⎜⎝⎛∂Π∂
=Π m
E E ,ρ⎟⎠⎞
⎜⎝⎛∂Π∂
=Π (3.18)
Il differenziale della pressione vale
dEdmddp Em Π+Π+Π= ρρ (3.19)
e la velocità del suono in funzione di tali grandezze
EuHa Π−+Π= )( 22ρ (3.20)
Metodo di Roe
34
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
0~=
∂∂
+∂∂
xUA
tU (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 ),(~~RL UUAA = viene definita dal seguente set di proprietà:
1) ),(~~RL UUAA = costituisce un rilevamento lineare dallo spazio vettoriale U allo
spazio vettoriale F;
2) UUUUAUUAA RLRL →→→= )(),(~~ ;
3) ),(~~RL UUAA = ha autovettori linearmente indipendenti;
4) ),(~~RL UUAA = deve soddisfare la relazione:
UUUAF RL Δ=Δ ),(~ (3.22)
L’operatore LR )()()( ⋅−⋅=⋅Δ 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
RL
RRLLRoρρρρ
+
⋅+⋅=⋅
)()()( (3.23)
Con questa definizione segue che la velocità media vale
RL
RRLL uuu
ρρρρ
+
+=~ (3.24)
Mentre l’entalpia media è
RL
RRLL HHH
ρρ
ρρ
+
+=~ (3.25)
Metodo di Roe
35
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
⎥⎥⎥
⎦
⎤
⎢⎢⎢
⎣
⎡
Π+Π+−ΠΠ+Π−Π=
uuHuHuuA
Em
Em~)~1(~~~~)~~(
~~2~~~010
~ 2
ρ
ρ (3.26)
in cui u~ ed H~ sono date dalle espressioni precedenti come nello schema di Roe
originale e con le derivate medie della pressione che soddisfano la relazione lineare
Emp Em ΔΠ+ΔΠ+ΔΠ=Δ ~~~ ρρ (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 )(ZB e )(ZC , con
)(21
LR ZZZ += (3.28)
così che
ZZBF Δ=Δ )( ZZCU Δ=Δ )( (3.29)
Metodo di Roe
36
Dall’equazione (3.22) segue immediatamente che 1)()(~ −= ZCZBA (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
pHE Δ−Δ=Δ )(ρ (3.31)
Poi, assumendo di avere la relazione lineare (3.27), si ricava
[ ])(~)(~~~1
1 Hup EmE
ρρρρ ΔΠ+ΔΠ+ΔΠΠ+
=Δ (3.32)
Inoltre, dalla definizione del parametro vettore Z si può ricavare
112 zz Δ=Δρ (3.33.a)
2112)( zzzzu Δ+Δ=Δ ρ (3.33.b)
3113)( zzzzH Δ+Δ=Δ ρ (3.33.c)
E quindi
[ ]31211321~~)~~~2(~1
1 zzzzzzzzp EmEmE
ΔΠ+ΔΠ+ΔΠ+Π+ΠΠ+
=Δ ρ (3.34)
Avendo espresso il pΔ in termini delle componenti dei salti ZΔ , dalla (3.29) si
ricavano direttamente le matrici
⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢
⎣
⎡
Π+Π
Π+Π
+Π+
Π+Π+Π=
23
112
321
12
0
~1
~~1
~2~1
~~~20
)(
zz
zzz
zzzzz
ZBE
E
E
m
E
Emρ (3.35)
⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢
⎣
⎡
Π+Π+Π−
Π+
Π−Π−=
EE
m
E
m zzzzzzz
zZC
~1~1
~~1
~~20002
)(
11213
12
1
ρ
(3.36)
Notando che i rapporti
uzz ~
1
2 = Hzz ~
1
3 =
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).
Metodo di Roe
37
Invece di trovare direttamente A~ , può essere adottato un altro approccio per
determinare lo stato medio e cioè quello che soddisfa le relazioni:
∑=
=Δ3
1
~~~p
ppp rF λβ (3.37)
∑=
=Δ3
1
~~p
pp rU β (3.38)
in cui pλ~ sono gli autovalori della matrice A~ definita dalla (3.26), e cioè
u~~1 =λ au ~~~
2 +=λ au ~~~3 −=λ (3.39)
ed pr~ sono i corrispondenti autovettori destri, che sono le colonne della matrice
⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢
⎣
⎡
−+Π
−
−+=
uaHuaHaH
auauuR
E
~~~~~~~~~
~~~~~111
~2
(3.40)
Le pβ~ sono le intensità delle onde, cioè le componenti del vettore β~ :
[ ]
[ ]⎥⎥⎥⎥⎥⎥
⎦
⎤
⎢⎢⎢⎢⎢⎢
⎣
⎡
Δ−Δ−Δ
Δ−Δ+Δ
Δ−Δ
=Δ= −
ρρ
ρρ
ρ
β
uuaa
p
uuaa
pa
p
UR
~)(~21
~2
~)(~21
~2
~~~
2
2
2
1 (3.41)
La velocità del suono media, definita dal calcolo degli autovalori, è
EuHa Π−+Π= ~)~~(~~ 22ρ (3.42)
Sviluppando le relazioni (3.38), è facile controllare che la prima e la seconda si
riducono ad un’identità. La terza relazione diventa
EE
puuauHEΠΔ
+Δ+Δ⎟⎟⎠
⎞⎜⎜⎝
⎛
Π−−=Δ ~)(~~
~~~ 22 ρρ (3.43)
ed utilizzando la definizione (3.42) essa diventa
Emup EE ΔΠ+ΔΠ−ΔΠ=Δ ~~~~ ρρ (3.44)
L’equazione (3.44) è equivalente alla relazione lineare (3.27) se
Em uΠ−=Π ~~~ (3.45)
Metodo di Roe
38
Tornando adesso alle relazioni (3.37), la prima restituisce nuovamente un’identità.
La seconda relazione diventa
0)()(~2~ 22 =Δ+Δ−Δ uuuu ρρρ (3.46)
Infine la terza relazione diventa
[ ] )(~~
~~)()(~)(~~ uuuuHHuuuHE
m ρρρρρ Δ⎟⎟⎠
⎞⎜⎜⎝
⎛
ΠΠ
++Δ−Δ=Δ−Δ (3.47)
Considerando l’equazione precedente, gli ultimi termini svaniscono ottenendo
[ ] )()(~)(~~ uHHuuuH ρρρρ Δ−Δ=Δ−Δ (3.48)
che definisce H~ come la (3.25).
Metodo di Roe
39
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
),(),,( ρρ ipEmp =Π= (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:
EmxeupipD
ix ,,,,...,,,, ρρ
ρρ
=⎟⎟⎠
⎞⎜⎜⎝
⎛⎟⎟⎠
⎞⎜⎜⎝
⎛∂∂
⎟⎠⎞
⎜⎝⎛∂∂
=Π (3.50)
che soddisfino la (3.19);
• assumere che le relazioni (3.50) portino ai valori medi come:
EmxeupipD
ix ,,,,...~,~,~,
~,
~~ ρρρρ
=⎟⎟⎠
⎞⎜⎜⎝
⎛⎟⎟⎠
⎞⎜⎜⎝
⎛∂∂
⎟⎠⎞
⎜⎝⎛∂∂
=Π (3.51)
• sostituire le relazioni (3.51) nella (3.27).
Come esempio si consideri un gas perfetto per cui vale
⎥⎦
⎤⎢⎣
⎡−−=
ργ
2
21)1( mEp (3.52)
Le derivate della pressione sono facilmente calcolabili
2
21u−
=Πγ
ρ um )1( −−=Π γ 1−=Π γE (3.53)
Metodo di Roe
40
Sostituendo le medie delle (3.53) nella (3.27) si ottiene
Euuup Δ−+Δ−−Δ−
=Δ )1()(~)1(~2
1 2 γργργ (3.54)
Combinando l’Eq. (3.52) con la precedente si ha
[ ] 0)()(~2~2
1 22 =Δ+Δ−Δ− uuuu ρρργ (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.
Metodo di Roe
41
3.5 Generalizzazione di Vinokur-Montagnè per un plasma
Vinokur e Montagnè [3] considerano un’equazione di stato della forma
),( ρεpp = (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
ρχεκ dddp += (3.58)
Poi considerando l’energia interna ),,( Emρεε = si ottiene
dEE
dmm
ddmEEm ,,, ρρ
εερρεε ⎟
⎠⎞
⎜⎝⎛∂∂
+⎟⎠⎞
⎜⎝⎛∂∂
+⎟⎟⎠
⎞⎜⎜⎝
⎛∂∂
= (3.59)
Inserendo la precedente equazione nella (3.58), si ricava
dEE
dmm
dddpmEEm ,,, ρρ
εκεκρρεκχ ⎟
⎠⎞
⎜⎝⎛∂∂
+⎟⎠⎞
⎜⎝⎛∂∂
+⎥⎥⎦
⎤
⎢⎢⎣
⎡⎟⎟⎠
⎞⎜⎜⎝
⎛∂∂
+=Π= (3.60)
Richiamando l’equazione dell’energia interna
ρε
2
21 mE −=
dall'Eq. (3.60) si possono facilmente ricavare le derivate della pressione
κχρ2
21 u+=Π κum −=Π κ=Π E (3.61)
Metodo di Roe
42
Inserendo poi, i valori medi delle (3.61) nell’Eq. (3.27) si ottiene
Euuup Δ+Δ−Δ+=Δ κρκρκχ ~)(~~)~~~( 221 (3.62)
Dalla definizione di energia totale per unità di volume )( 221 uE ρε Δ+Δ=Δ si ha
[ ])()(~2~~~~ 2221 uuuup ρρρκεκρχ Δ+Δ−Δ+Δ+Δ=Δ (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
∫=1
0)](),([~ dttt ρεχχ (3.65.a)
∫=1
0)](),([~ dttt ρεκκ (3.65.b)
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
),(ˆ MMM ρεχχχ == (3.66.a)
),(ˆ MMM ρεκκκ == (3.66.b)
in cui lo stato medio è definito da 2/)( RLM ρρρ += e 2/)( RLM εεε += , oppure
secondo la regola trapezoidale
2/)(ˆ RL χχχ += (3.67.a)
2/)(ˆ RL κκκ += (3.67.b)
Metodo di Roe
43
Infine, quando i due stati L ed R sono molto distanti, si può applicare la regola di
Simpson
6/)4(ˆ RML χχχχ ++= (3.68.a)
6/)4(ˆ RML κκκκ ++= (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 s .
Fig. 3.3. Ricerca delle derivate medie.
Infine si ottengono le relazioni
ppDpsD
δρδχχ
Δ−Δ+
=ˆˆ~ (3.69.a)
ppDD
δκκΔ−
=ˆ~ (3.69.b)
con hs
psDpp
κχρ
εκρχδ
+=Δ+Δ=Δ−Δ−Δ=
ˆˆ)()ˆ(
ˆˆ22 (3.70)
dove hκ è valutato applicando al prodotto h⋅κ , la stessa formula di integrazione
usata per χ e κ .
Metodo di Roe
44
Per l’entalpia vale l’espressione 2
21 ))(1()1( uhhh RL Δ−+−+= αααα (3.71)
in cui RL
L
ρρρ
α+
= (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.
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
45
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.
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
46
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
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
47
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.
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
48
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
0)) ,(() ,( =+ xt txUFtxU (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 ii UeU 1- fornisce un insieme di m
onde piW e di velocità p
iλ che soddisfano la relazione
i
m
pii
p UUUW Δ===
∑1
1- - (4.2)
Il risolutore di Riemann deve fornire anche una fluttuazione viaggiante verso
sinistra, UΔ-A , ed una fluttuazione viaggiante verso destra, UΔ+A . Le notazioni
utilizzate sono motivate dalla loro definizione per sistemi di equazioni lineari. Nel caso
standard conservativo deve risultare che
)(-)(AA 1--
iiii UFUFUU =Δ+Δ + (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 1- - iii UUU =Δ si può
decomporre come combinazione lineare di questi autovettori
∑∑1
≡ pi
m
i
ppii WrU
=
=Δ α (4.4)
Ciò definisce le onde ppi
pi rα=W , e le velocità delle onde sono semplicemente gli
autovalori pλ . La matrice A si può decomporre come segue 1RΛR=A - (4.5)
ove ]rrr[=R m21 ... è la matrice degli autovettori e )λ,λ,λ(diag=Λ m1 ,... 2 è la
matrice diagonale avente sulla diagonale gli autovalori di A.
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
49
Si definiscono poi le quantità
)0,λ(min=λ)0,λ(max=λ ppp+p - (4.6)
e le matrici 1±±±p± RΛR=A)λ(diag=Λ - (4.7)
Definendo 0iU il valore della grandezza all’interfaccia che viene fuori dalla soluzione
del problema di Riemann, con i dati ii UeU 1- rispettivamente a sinistra e a destra. Per i
problemi lineari risulta che
∑<
+=0
1-0
pi
piii WUU
λ
(4.8)
perciò il flusso all’interfaccia è dato da
∑<
Δ+=+==0
-1-1-
00 )(pi
iip
ip
iii UAAUWAUAUUFλ
λ (4.9)
o alternativamente
iii UAAUUF Δ= + -)( 0 (4.10)
Le differenze di flusso sono definite come:
∑
∑
0
-1-
0
0
0
)(-)(
)( - )(
<
>
+
Δ==
Δ==
pi
pi
ip
ip
ii
ip
ip
ii
UAWUFUF
UAWUFUF
λ
λ
λ
λ
(4.11)
il che motiva le notazioni utilizzate.
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
50
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
00 =+⇒=∂∂
+ xtxt AUUUUFU (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
LRA Λ= (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]
0=Λ+=+ xtxt WWLARWW (4.14)
in cui è stato effettuato il seguente cambio di variabili:
( )( )⎟
⎟⎟
⎠
⎞
⎜⎜⎜
⎝
⎛
∂−∂∂+∂
∂−∂=∂=∂
uapuap
pULW
a
ρρ
ρ
2121
12
(4.15)
L’equazione (4.14) contiene tre equazioni differenziali scalari
0)(
)()(
=∂
∂+
∂∂
xw
tw k
kk
λ (4.16)
Se si suppone di conoscere )(kw ad un certo istante di tempo nt in un punto della
griglia lungo l’asse x, ad esempio al nodo i, è possibile ottenere il valore di )(kw
all’istante successivo 1+nt in un punto compreso tra i nodi i-1 e i+1, proprio perché tale
valore si mantiene costante lungo la caratteristica )(kdtdx λ= nella dimensione spazio-
tempo.
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
51
Si consideri, adesso, l’approssimazione al primo ordine della derivata rispetto al
tempo in un punto della griglia ( ni tx , ) come mostrato dalla Fig. 4.6
tww
wni
ni
t Δ−
=+1
(4.17)
Per quanto riguarda la derivata spaziale si consideri l’approssimazione al secondo
ordine nel nodo centrale
xww
wni
ni
x Δ−
= −+
211 (4.18)
Fig. 4.6. Discretizzazione nel dominio x-t
Sostituendo queste approssimazioni l’equazione di Eulero diventa
011)(1
=Δ−
+Δ− −+
+
xww
tww n
inik
ni
ni λ (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
)( 11211 n
ini
ni
ni wwcww −++ −−= (4.20)
in cui xtc k ΔΔ= )(λ . 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 tx ΔΔ
definita dalla discretizzazione del dominio [7].
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
52
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
] - [- 11
iini
ni FF
xtUU +
+
ΔΔ
= (4.21)
ove 1+niU rappresenta il valore della grandezza U nel volume i all’istante successivo
n+1, e i flussi numerici sono definiti come segue 00 )( iii AUUFF == (4.22)
Si noti che
A)( A-)( 1-
1 +++ Δ+=Δ= i
niii
nii UUFFUUFF (4.23)
che permette di scrivere tale metodo come
] A A [- 1-1
iini
ni UU
xtUU Δ+Δ
ΔΔ
= ++
+ (4.24)
Ciò ha un’interpretazione fisica in termini di propagazione di onde, poiché
iUxt
ΔΔΔ +A è la somma di termini nella forma p
i
p
WxΔλk
su delle onde che si muovono
nella cella i-esima dal bordo sinistro. Ognuno di tali termini è pari alla quantità della
media di cella modificata da quest’onda, in quanto pW è il salto nella U, pλtΔ è la
distanza percorsa nella cella , e dividendo per xΔ si ottiene la frazione di cella coperta.
In modo simile 1-A +Δ
ΔΔ
iUxt ci da la modifica alla media di cella dovuta alle onde che
si propagano da bordo destro della cella i-esima.
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
53
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 iUΔ+A e 1-A +Δ iU sommando i loro prodotti. D’altro canto
calcolar il “flusso di Godunov” )( 0iUF tipicamente richiede il calcolo di )( iUF e poi
la sua modifica mediante 1-A +Δ iU . Quando si usa un Riemann solver approssimato
come quello di Roe per le equazioni di Eulero (Cap. 3), il flusso esatto )( iUF 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
0)( =+ xt UxAU 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.
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
54
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
112
1
1
21 +⎟⎟
⎠
⎞⎜⎜⎝
⎛−
+=
ppaW
γγ (4.25)
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
55
con 11 RTa γ= .
Per stimare il tempo basta dividere lo spazio percorso dall’onda per la sua velocità
media
WLtOUT = (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)
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
56
open(1,file='energia.txt') read(1,*) (ei(i),i=1,Ne) close(1) it = 0 nx = nmax call init(z,x,xc,dx,mdc,ndof,nx,tmax) call 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 ! do 1 i = 0,nx do 1 j = 1,ndof du(j,i) = 0.d0 1 continue do 3 j = 1,ndof sumdf(j) = 0.d0 3 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,i-
1),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,i-
1),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")
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
57
! 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
4.4.2 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 OPEN(UNIT=1,FILE='exact.ini',STATUS='UNKNOWN') C C nmax = nx C 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 C CLOSE(1) ! MR = am2(ML) ! write(6,*)'Mach(L) ',ML
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
58
! 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))*(pl-
peps(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))*(pr-
peps(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
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
59
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 1 continue c c compute cell size and cell centers c do 3 ix = 1,nx dx(ix) = x(ix)-x(ix-1) xc(ix)=0.5d0*(x(ix)+x(ix-1)) 3 continue c c compute median dual cell c 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) c 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 computed the amount of mass, energy and momentum being
stored c in the system c on entry z must be the parameter vector c 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
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
60
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 dt = 1.e38 c c gradient of the parameter vector and averaged state c do 1 i = 1, ndof zavg(i) = 0.5d0 *(zright(i)+zleft(i)) dz(i) = (zright(i)-zleft(i))/dx 1 continue c c Roe averaged c 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
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
61
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*(epsright-
epsleft) 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-(pright-
pleft) &*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)
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
62
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 = (-zavg(3)/zavg(1)*dz(1)+dz(3))/zavg(1) c c characteristic jumps (gradient) c dw(1) = (asqr*drho-dp) dw(2) = 0.5*(dp+ra*du) dw(3) = 0.5*(dp-ra*du) c c autovalori c al(1) = uavg al(2) = uavg+aavg al(3) = uavg-aavg c c fluttuazione delle variabili caratteristiche c do i = 1,ndof phiw(i) = -al(i)*dw(i)*dx enddo c c right eigenvector (entropy) c eigen(1,1) = 1.d0/asqr eigen(2,1) = Havg/asqr-1/dpde eigen(3,1) = uavg/asqr c c right eigenvector (fast wave) c eigen(1,2) = 1.d0/asqr eigen(2,2) = (Havg/asqr+uavg/aavg) eigen(3,2) = (uavg/asqr+1./aavg) c c right eigenvector (slow wave) c eigen(1,3) = 1.d0/asqr eigen(2,3) = (Havg/asqr-uavg/aavg) eigen(3,3) = (uavg/asqr-1./aavg) c c compute minimum dt c 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
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
63
20 continue do j = 1, ndof sumdf(j) = sumdf(j) + help(j) enddo c c test the decomposition: c check that f_R-f_L = \sum ... c the sum is stored in help c 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
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
64
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
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
65
4.4.5 Funzione esterna La funzione qui creata è la seguente
2123 2/)( zzzpF −++= εε
REAL FUNCTION funz(x,cost,press,eii) include 'aria.inc' integer je double precision x, cost,pressx double precision press(*),eii(*) !pressx è da calcolare con interpolazione capendo in che
intervallo si trova 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))*(x-
eii(je)) funz=x+cost+pressx END FUNCTION funz
4.4.6 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)
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
66
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))*(rhos-
rho(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))*(rhos-
rho(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))
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
67
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
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
68
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
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
69
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 sec105 4−⋅=OUTt .
Fig. 4.9. Condizioni iniziali GAS NON IONIZZATO e PLASMA.
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
70
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.
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
71
Attraverso la discontinuità di contatto 7.06.0 << x 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.
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
72
Il secondo test [11] effettuato ha come condizioni iniziali quelle riportate nelle
Fig. 4.13 e 4.14 da cui è possibile dedurre sec105,1 4−⋅=OUTt .
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.
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
73
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.
Simulazioni numeriche di un tubo d’urto 1D attraverso il metodo di Roe
74
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.
Le pompe ioniche ad ultra alto vuoto
75
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
Le pompe ioniche ad ultra alto vuoto
76
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 1010-
1011 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.
Le pompe ioniche ad ultra alto vuoto
77
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].
Le pompe ioniche ad ultra alto vuoto
78
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.
Le pompe ioniche ad ultra alto vuoto
79
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.
Le pompe ioniche ad ultra alto vuoto
80
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.
Le pompe ioniche ad ultra alto vuoto
81
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
( )BvEqFdtdp
×+== (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
mvp γ= (5.2)
in cui m è la massa della particella e γ è il fattore di Lorentz definito da
22 /11
cv−=γ (5.3)
c rappresenta la velocità della luce nel vuoto. In molti casi di interesse pratico,
comunque, il termine 22 / cv è trascurabile rispetto ad 1, cioè 1/ 22 <<cv e quindi
1≅γ . Di conseguenza la massa della particella può essere considerata costante
(indipendente dalla velocità) e l’equazione del moto diventa
( )BvEqdtdvm ×+= (5.4)
5.3.1 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]
qEdtdvm = (5.5)
che può essere direttamente integrata ottenendo
Le pompe ioniche ad ultra alto vuoto
82
0pqEtmv += (5.6)
in cui )0(0 == tpp denota la quantità di moto all’istante iniziale. Poiché la
velocità è la derivata della posizione rispetto al tempo dtdrv = , integrando nuovamente
si ha l’espressione della posizione della particella in funzione del tempo
002
21)( rtvt
mqEtr ++⎟
⎠⎞
⎜⎝⎛= (5.7)
dove 0r denota la posizione iniziale della particella mentre 0v la sua velocità
iniziale. Perciò, la particella si muove con accelerazione costante, mqE , nella direzione
del campo elettrico se 0>q , altrimenti nella direzione opposta se 0<q . 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 è
( )Bvqdtdvm ×= (5.8)
Risulta conveniente separare v nelle componenti parallela //v e perpendicolare ⊥v
al campo magnetico
⊥+= vvv // (5.9)
In questo modo si ottiene
( )Bvmq
dtdv
dtdv
×=+ ⊥⊥// (5.10)
Poiché il termine ( )Bv ×⊥ è perpendicolare a B, la componente parallela
dell’equazione può essere scritta come
0// =dt
dv (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.
Le pompe ioniche ad ultra alto vuoto
83
La componente ortogonale dell’equazione, invece, vale
( )Bvmq
dtdv
×= ⊥⊥ (5.12)
che può essere riscritta
⊥⊥ ×Ω= v
dtdv
c (5.13)
in cui cΩ è il vettore definito dalla seguente relazione
mqB
c −=Ω (5.14)
Così, cΩ punta verso la direzione di B per una particella con carica negativa
( 0<q ) e nella direzione opposta per una particella con carica positiva ( 0>q ). 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
cc rv ×Ω=⊥ (5.15)
in cui il vettore cr rappresenta la posizione della particella rispetto al centro di
rotazione nel piano perpendicolare a B. Poiché la velocità ⊥v è costante, il modulo di cr
è anche costante.
Fig. 5.6. Traiettoria di una particella carica.
Le pompe ioniche ad ultra alto vuoto
84
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 Cq 1910602.1 −⋅= ed kgm 3110109.9 −⋅= tale
frequenza vale
Belectronc111076.1)( ⋅=Ω )/( srad (5.16)
con B in tesla ( o in weber/m2). In modo analogo per il protone la cui massa vale
kgm 2710673.1 −⋅= si ha
Bprotonc71058.9)( ⋅=Ω )/( srad (5.17)
5.3.3 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.
Le pompe ioniche ad ultra alto vuoto
85
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.
Le pompe ioniche ad ultra alto vuoto
86
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.
⎪⎪⎪
⎩
⎪⎪⎪
⎨
⎧
=
⎟⎠⎞
⎜⎝⎛ −=
⎟⎠⎞
⎜⎝⎛ +=
zz
xry
yrx
Emq
dtdv
BvryE
mq
dtdv
BvrxE
mq
dtdv
(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.
Le pompe ioniche ad ultra alto vuoto
87
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.
Le pompe ioniche ad ultra alto vuoto
88
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 (carica elettrone) [C]
m=9.1093897e-31; (massa elettrone) [kg]
kB=1.380658e-23; (costante Boltzmann) [J/K]
massa_ion=m*1836.127*39.213; (massa ione) [kg]
Le pompe ioniche ad ultra alto vuoto
89
gamma=0.01; (coefficiente emissione secondaria)
e_ion_ev=15.8; (soglia energia ionizzazione) [eV]
e_ion=e*e_ion_ev; (soglia energia ionizzazione) [joule]
CARATTERISTICHE DELLA TRAPPOLA
B=0.1; (campo magnetico) [tesla]
DeltaV=3000; (differenza di potenziale) [volt]
La = 0.0127; (semilunghezza dell'anodo) [m]
Lv = 0.0122; (gap tra anodo e catodo) [m]
R = 0.01; (raggio) [m]
Lz = La+Lv; (lunghezza complessiva) [m]
FREQUENZE DI CICLOTRONE
omega_c=e*B/m; (elettroni) [s^-1]
omega_c_ion=e*B/massa_ion; (ioni) [s^-1]
DENSITA’ DEL GAS
p_gas_mbar=1e-6; (pressione) [mbar]
p_gas_MKS=100*p_gas_mbar; (pressione) [Pa]
T_gas=273.15+20; (temperatura) [K]
n_gas=p_gas_MKS/(kB*T_gas); (densità particelle) [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; (ampiezza intervallo spaziale) [m]
dr = R/Nr; (ampiezza intervallo spaziale) [m]
Prima di entrare nel dettaglio del codice, si può vedere come è strutturato dal
seguente schema.
Le pompe ioniche ad ultra alto vuoto
90
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'
Le pompe ioniche ad ultra alto vuoto
91
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
02 =∇ φ (5.19)
utilizzando il metodo numerico dei volumi finiti. In realtà bisognerebbe risolvere
l’equazione di Poisson 02 /)( εφρφ =∇ 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 02 =∇ φ , 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
dVdVVV∫∫ ∇⋅∇=∇ φφ2 (5.21)
Applicando il teorema della divergenza è possibile trasformare l’integrale di
volume in uno di superficie
dSndVVV∫∫∂
⋅∇=∇⋅∇ ˆφφ (5.22)
Le pompe ioniche ad ultra alto vuoto
92
A questo punto è possibile spezzare l’integrale nella somma degli integrali
calcolati sulle superfici dell’elemento di volume dV.
∫∫∫∫∫ ⋅∇+⋅∇+⋅∇+⋅∇=⋅∇∂ 4
43
32
21
1 ˆˆˆˆˆSSSSV
dSndSndSndSndSn φφφφφ (5.23)
Fig. 5.11. Schematizzazione volumi finiti.
Facendo riferimento alla figura 5.11 ciascun integrale vale
drdrdz
dSnS
PN ⋅⋅⋅−
=⋅∇∫ ϑφφ
φ1
1ˆ (5.24)
dzddrrdr
dSnS
PE ⋅⋅+⋅−
=⋅∇∫ ϑφφ
φ )2/1(ˆ2
2 (5.25)
drdrdz
dSnS
PS ⋅⋅⋅−
=⋅∇∫ ϑφφ
φ3
3ˆ (5.26)
dzddrrdr
dSnS
PW ⋅⋅−⋅−
=⋅∇∫ ϑφφ
φ )2/1(ˆ4
4 (5.27)
Fig. 5.12. Elemento di volume dV in coordinate cilindriche.
Le pompe ioniche ad ultra alto vuoto
93
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
WESNP drrdrr
drrdrr
dzdzdrdzφφφφφφ 222222
2 2/12/11122⋅
−+
⋅+
+++⎟⎠⎞
⎜⎝⎛ −−=∇ (5.28)
Tale equazione è valida per ogni volumetto della griglia del dominio considerato.
L’equazione di Poisson viene scritta quindi come un sistema lineare
BCA =⇒=∇ φφrˆ02 (5.29)
in cui A è la matrice dei coefficienti, φr
è 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
nodo della griglia. Bisogna notare che i nodi sono stati ordinati per colonne in φr
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, Laz ≤≤0 ) (5.32)
Le pompe ioniche ad ultra alto vuoto
94
0V−=φ al catodo ( Rr ≤≤0 , z = Lz) (5.33)
LaLzLazV−−
−= 0φ tra anodo e catodo (r = R, LzzLa ≤< ) (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 ),( zrφ 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
Le pompe ioniche ad ultra alto vuoto
95
è 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 2000/7.0 kRr = 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 è
[ ]vAzrqU ⋅−= ),(φ (5.35)
in cui q è il valore della carica elettrica, ),( zrφ è 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
ϑerBrBA ˆ21
21 =×= (5.36)
essendo
( ) ( ) BrBrBrB 2=∇⋅−⋅∇=××∇ (5.37)
La Lagrangiana della particella è
( ) UzrrmUTL −++=−= 2222
2&&& ϑ (5.38)
Siccome ϑ è una coordinata ciclica o ignorabile il momento generalizzato
coniugato si conserva, ovvero nel caso di elettrone
( ) mkrrvmrmqBrvmvAqmrLp c =⎟
⎠⎞
⎜⎝⎛ −=⎟
⎠⎞
⎜⎝⎛ +=⋅
∂∂
−=∂∂
= 222
21
21 ω
ϑϑ
ϑ ϑϑϑ &&
& (5.39)
Le pompe ioniche ad ultra alto vuoto
96
Altra costante del moto è l’Hamiltoniana
∑ −= LqpH ii & (5.40)
con
ii q
Lp&∂∂
= (5.41)
momento canonico, che sostituito nell’espressione dell’Hamiltoniana e facendo
uso della relazione tra ϑv e k porta a
( )
( ) ( ) ),(22
12
),(2
2),(
2),(2
#222
22
222
zruvvmrrkmzrqvvm
vmzrqvvmzrqTLvqATH
zrczr
zr
++=⎟⎠⎞
⎜⎝⎛ ++++=
=+++=+=−⋅+=
ωφ
φφ ϑ
(5.42)
dove 2
#
21
2),(),( ⎟
⎠⎞
⎜⎝⎛ ++= r
rkmzrqzru cωφ (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 totEu ≤# 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.
Le pompe ioniche ad ultra alto vuoto
97
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
Le pompe ioniche ad ultra alto vuoto
98
(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à è:
erficietempoincidentiparticelledinumero
tempodneldeviateparticelledinumero
dd
sup___
_____
),(),(
⋅
Ω
=Ω= ϕϑσϕϑσ (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.
Le pompe ioniche ad ultra alto vuoto
99
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:
Le pompe ioniche ad ultra alto vuoto
100
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
Le pompe ioniche ad ultra alto vuoto
101
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
Le pompe ioniche ad ultra alto vuoto
102
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
Le pompe ioniche ad ultra alto vuoto
103
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
Le pompe ioniche ad ultra alto vuoto
104
Conclusioni
105
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
Conclusioni
106
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 02 =∇ φ utilizzando il metodo numerico dei volumi finiti, come
è stato ampliamente discusso. In realtà bisognerebbe risolvere l’equazione di Poisson
02 /)( εφρφ =∇ 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.
Bibliografia
107
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 Time-
Dependent 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
Bibliografia
108
[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
Appendice A
109
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 5.708244e-002 1.293374e-003 ]));
sd2=(fliplr([ 6.380594e+000 1.046470e-001 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 5.468057e-002 1.121881e-003 ]));
sd3=(fliplr([ 7.080690e+000 1.142540e-001 6.869247e-004 -2.257365e-004
]));
sa4=(fliplr([ -4.971377e+000 -1.668833e-002 -2.409638e-003 -2.840529e-004 -
2.934495e-005 ]));
Appendice A
110
sc4=(fliplr([ 9.525862e+000 6.639994e-002 7.836529e-004 -2.447910e-004 -
2.415297e-005 ]));
sd4=(fliplr([ 7.888211e+000 9.954169e-002 -1.327510e-004 -2.926560e-004 -
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([ 1.020784e+001 2.553473e-002 -3.549988e-003 ]));
sd6=(fliplr([ 8.422438e+000 1.125955e-001 -3.204629e-003 -1.655103e-003 -
2.051312e-004 ]));
sa7=(fliplr([ -6.611171e+000 8.990124e-002 -5.418532e-003 ]));
sc7=(fliplr([ 1.096136e+001 2.887564e-002 -3.621097e-004 ]));
sd7=(fliplr([ 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;
Appendice B
111
Appendice B
Coefficienti per il calcolo dell’entalpia specifica.
function y=ei(mT,mp)
mp=log(mp);
sa0=fliplr([ 2.350912e-001 -1.120236e-003 -2.508755e-005 ]);
sa1=fliplr([ 1.542966e-005 6.556647e-007 ]);
sa2=(fliplr([ 6.587335e+000 -6.112145e-002 -9.108114e-003 -9.569561e-004 -
1.128838e-004 -8.757988e-006 ]));
sc2=(fliplr([ 8.164839e+000 5.283021e-002 4.741812e-004 -1.276598e-004 -
9.877950e-006 ]));
sd2=(fliplr([ 6.513247e+000 1.040239e-001 -8.104042e-004 -2.991537e-004
4.348437e-005 6.258153e-006 ]));
sa3=(fliplr([ 8.740885e+000 3.050736e-003 1.599171e-003 -2.859059e-004 -
5.371695e-005 ]));
Appendice B
112
sc3=(fliplr([ 8.856133e+000 5.964702e-002 1.745638e-003 2.343688e-005 -
3.102821e-006 ]));
sd3=(fliplr([ 6.981907e+000 1.119408e-001 4.185626e-003 -2.499247e-004 -
5.209456e-005 ]));
sa4=(fliplr([ 1.014496e+001 -1.833015e-002 -4.265166e-003 -8.321612e-004 -
6.481810e-005 ]));
sc4=(fliplr([ 9.593196e+000 7.089945e-002 1.640521e-003 -1.055407e-004 -
1.510653e-005 ]));
sd4=(fliplr([ 7.910995e+000 1.006930e-001 -1.608832e-003 -2.526731e-004 ]));
sa5=(fliplr([ 1.082665e+001 -4.777223e-002 -4.682547e-003 ]));
sc5=(fliplr([ 1.030572e+001 6.607308e-002 1.512694e-003 -5.009486e-005 -
5.192881e-006 1.116840e-006 ]));
sd5=(fliplr([ 8.320951e+000 7.474585e-002 1.789257e-003 5.273341e-004
3.755570e-005 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.172458e+001 -5.461477e-002 3.413385e-003 7.407737e-004 -
1.644220e-004 -1.878043e-005 ]));
sc7=(fliplr([ 1.109244e+001 6.026294e-002 1.125935e-003 -2.170126e-005 -
3.141895e-006 ]));
sd7=(fliplr([ 8.942747e+000 8.687938e-002 1.554323e-002 3.584506e-005 -
2.447405e-004 ]));
sa8=(fliplr([ -1.011841e+001 -2.295953e+001 -1.220667e+001 -3.504472e+000 -
4.373233e-001 1.127311e-002 6.598926e-003 -2.119755e-004 -1.369506e-004 -
8.311253e-006]));
sc8=(fliplr([ 1.314544e+001 2.079129e+000 9.992304e-001 2.223931e-001
1.963954e-002 -1.622592e-004 -1.094608e-005 2.304744e-005 1.817656e-006 ]));
sd8=(fliplr([ -1.743314e+000 -1.807206e+001 -1.393980e+001 -5.232064e+000 -
7.607736e-001 8.529592e-002 4.967101e-002 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);
Appendice C
113
Appendice C
Coefficienti per il calcolo della pressione ),( ρεpp = .
Appendice C
114
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
Appendice C
115
%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