Sei sulla pagina 1di 4

METODI NUMERICI E CALCOLO

SCIENTIFICO
Appelli di gennaio - febbraio 2007
(seconda parte)

TESTO 1
Considerare il problema della diffusione-convezione di calore in una sbarra, posta
a contatto con un termostato. Le equazioni da risolvere sono:
2
∂u
∂t − ν ∂∂xu2 + β ∂u
∂x = 0 in (0, 1)
u(x, t = 0) = 0 in (0, 1)
u(x = 0, t) = 20 t>0
u(x = 1, t) = 0 t > 0.
Considerare i tre casi: β = 1, β = 0 e β = −1, per diversi valori della con-
ducibilità termica ν. Per ogni insieme di parametri fisici, calcolare la soluzione
numerica usando griglie diverse, per poter confrontare i risultati.
Come si modifica la soluzione cambiando β? La distribuzione della tempe-
ratura u nella sbarra raggiunge uno stato stazionario?
Si sviluppano oscillazioni spurie se il numero di Peclet è maggiore di 1?

TESTO 2
Considerare la matrice di massa Bh in due dimensioni, ottenuta con elementi
finiti P1, cioè: Z
(Bh )l,k = Φk Φl dx dy, Ω = (0, 1)2 ,

dove Φl è l’elemento relativo al nodo l della base delle funzioni a cappello. Sup-
poniamo che le condizioni al bordo siano di Dirichlet omogenee lungo tutto il
contorno di Ω. Supponiamo di aver discretizzato il dominio Ω con una griglia
regolare con spaziatura h = 1/N . Quindi N è il numero di intervalli che com-
pongono la griglia su ogni lato, N −1 è il numero di nodi interni e M = (N −1)2
è il numero totale di nodi interni sul quadrato. La matrice Bh dunque è una
matrice M × M .
• Costruire una function che calcoli la matrice Bh in forma piena, ricevendo
in input il numero N di intervalli per lato e una function che calcoli la
matrice Bh in forma sparsa, sempre ricevendo in input il numero N di
intervalli per lato.
• Considerare il vettore di termini noti b=ones[M,1] e risolvere il sistema
lineare algebrico Bh x = b per diversi valori di h, con il metodo del gra-
diente coniugato, usando la matrice Bh memorizzata in forma sparsa, e
misurare i tempi di esecuzione e il numero di iterazioni al variare di N .

1
• Considerare il vettore di termini noti b=ones[M,1] e risolvere il sistema
lineare algebrico Bh x = b per diversi valori di h, con il comando back
slash, usando la matrice Bh memorizzata in forma piena, e misurare i
tempi di esecuzione e il numero di iterazioni al variare di N .

Commentare i risultati ottenuti.

TESTO 3
Considerare la matrice di massa Bh in due dimensioni, definita come nel pro-
blema precedente.

• Costruire una function che calcoli la matrice Bh in forma piena, ricevendo


in input il numero N di intervalli per lato e una function che calcoli la
matrice Bh in forma sparsa, sempre ricevendo in input il numero N di
intervalli per lato.
• Considerare il vettore di termini noti b=ones[M,1] e risolvere il sistema
lineare algebrico Bh x = b per diversi valori di h, con il metodo di Ri-
chardson, usando sia la matrice Bh memorizzata in forma sparsa che la
matrice Bh memorizzata in forma piena, e misurare i tempi di esecuzione
e il numero di iterazioni al variare di N .
• Considerare il vettore di termini noti b=ones[M,1] e risolvere il sistema
lineare algebrico Bh x = b per diversi valori di h, con il metodo del gra-
diente coniugato, usando la matrice Bh memorizzata in forma piena e in
forma sparsa, e misurare anche in questo caso i tempi di esecuzione e il
numero di iterazioni al variare di N .

Commentare i risultati ottenuti.

TESTO 4
Considerare il problema della diffusione di calore in una piastra, posta a contatto
con un termostato. Le equazioni da risolvere sono:
∂u
∂t − ν 4 u = 1 in (0, 1)2
u(x, t = 0) = 0 in (0, 1)2
u|∂Ω = 0 t>0

Scrivere una function che calcoli la matrice di massa Bh in forma sparsa, rice-
vendo in input il numero N di intervalli con i quali è stato suddiviso l’intervallo
(0, 1). Considerare anche la function che calcola la matrice di rigidità Ah in
forma sparsa, dove Ah è data da:
Z
(Ah )l,k = ∇Φk ∇Φl dx dy, Ω = (0, 1)2 ,

2
Calcolate la soluzione numerica nel tempo utilizzando il vostro solutore
preferito.
Considerare diversi valori della conducibilità termica ν. Per ogni insieme di
parametri fisici, calcolare la soluzione numerica usando griglie diverse, per poter
confrontare i risultati.
Come si modifica la soluzione cambiando ν? La distribuzione della tempe-
ratura u nella piastra raggiunge uno stato stazionario?

TESTO 5
Considerare il problema della diffusione di calore in una piastra, posta a contatto
con un termostato, come nel problema precedente. Dopo la discretizzazione,
otteniamo il sistema differenziale:
dc
Bh + νAh c = F,
dt
dove F è un vettore composto di 1.
• Risolvere il sistema differenziale utilizzando il metodo di Eulero esplicito,
con un passo di integrazione abbastanza piccolo da fornire una soluzione
stabile e misurare i tempi di calcolo al variare di N .
• Risolvere il sistema differenziale utilizzando il metodo di Eulero implicito,
utilizzando il metodo GMRES per risolvere il sistema lineare:
(Bh + ∆tνAh )cn+1 = Bh cn + ∆tF
Stampare il numero di iterazioni, per N fissato al variare di ∆t, necessarie
ad ogni passo temporale per portare a convergenza il metodo GMRES.
Misurare i tempi di calcolo al variare di N .

TESTO 6
Considerare il sistema lineare:
(Bh + ν∆tAh )c = ∆tF,
dove le matrici Bh e Ah sono rispettivamente le matrici di massa e di rigidità
per il problema della diffusione del calore e sono state definite nei problemi
precedenti. In particolare, ricordo che Bh e Ah sono matrici M × M con M =
(N − 1)2 e N = 1/h. Il termine noto F è dato da F=ones(M,1). Fissare inoltre
ν = 0.3.
Scrivere una function che memorizzi la matrice Ch = Bh + ∆tνAh in forma
sparsa, ricevendo in input N e il parametro di discretizzazione temporale ∆t.
Risolvere il sistema assegnato per i valori di N = 10, 20, 40, 80, usando il
metodo GMRES e GMRES con restart. Variare il parametro ∆t in modo che
1/h2 < ∆t < 1. Per ognuno dei valori di N assegnati e per ognuno dei valori di
∆t scelti, calcolare il numero di iterazioni necessario ad arrivare a convergenza
e i tempi di calcolo della soluzione.

3
TESTO 7
Applicare il metodo del gradiente coniugato al sistema lineare

Ah c = F

dove F è un vettore composto di 1, contenente un numero di elementi pari al


numero di righe della matrice Ah . Considerare i due casi seguenti:
• La matrice Ah è la matrice di rigidità del problema del filo elastico, con N
nodi interni per lato, dove N = 1/h − 1. Quindi Ah è una matrice N × N .
• La matrice Ah è la matrice di rigidità del problema della trave elastica,
con N nodi interni per lato, dove N = 1/h − 1. Quindi questa volta Ah è
una matrice 2N × 2N .
Calcolare il numero di iterazioni richiesto dal gradiente coniugato e dal metodo
GMRES con restart dopo 3, 4, 5 iterazioni per giungere a convergenza al variare
di N , e disegnare dei grafici che riportino ogni volta l’andamento del residuo in
funzione delle iterazioni.
Confrontare il numero di iterazioni necessario a giungere a convergenza e il
numero di condizionamento della matrice Ah , al variare di N .

TESTO 8
Calcolare la soluzione dell’equazione di Buckley-Leverett per una miscela di
acqua e petrolio:

u2
ut + fx (u) = 0, f (u) = ,
u2 + a(1 − u)2

dove a = 0.5 è un parametro legato alla porosità del suolo e u è la frazione di


acqua contenuta nella miscela: per u = 1 la miscela contiene solo acqua, mentre
per u = 0 la miscela è composta solo di petrolio.
Usare il metodo semidiscreto del secondo ordine, per determinare la soluzione
nel tempo di un dato iniziale a gradino, che rappresenti un getto di acqua pura
immessa nel petrolio, per esempio porre u0 (x) = 1 per x < 0 e u0 (x) = 0 per
x > 0. Utilizzare diversi limitatori per calcolare le pendenze nell’algoritmo di
ricostruzione e confrontare fra loro i risultati a parità di numero di punti di
griglia.
Risolvere il problema assegnato anche con il metodo a due passi di Mac-
Cormack:
Uj∗ = Ujn − λ f (Uj+1
n
) − f (Ujn )
 

Ujn+1 = 21 (Ujn + Uj∗ ) − λ2 f (Uj∗ ) − f (Uj−1




)
e confrontare i risultati numerici ottenuti.
Inoltre, osservare come si modifica la soluzione al variare del parametro a.