generalizzazione del metodo di Roe e modellizazione numerica di

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