You are on page 1of 24

Universit` a degli Studi di Roma Tor Vergata Facolt` a di Ingegneria

Corso di Laurea Magistrale in Ingegneria Meccanica

DMT a.a. 2012-2013 Esercitazioni dal corso di Dinamica e Modellistica della Turbolenza
Giulio Topazio matr. 0197585 giulio.topazio89@gmail.com Alfredo Patrizi matr. 0194329 alfredo.patrizi@gmail.com

27 settembre 2013

INDICE

Indice
1 Esercitazione 1 - Attrattore di Lorenz 1.1 Metodo esplicito: Eulero forward . . . . 1.1.1 Simulazioni numeriche e risultati 1.2 Metodo implicito: mid-point . . . . . . . 1.2.1 Simulazioni numeriche e risultati 1.3 Dominio di calcolo della soluzione . . . . 1.4 Distribuzione di probabilit` a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 . 5 . 6 . 9 . 10 . 13 . 13 18 18 18 21 22

2 Esercitazione 2 - Equazione di Burgers 2.1 Integrazione nel dominio dei numeri donda . 2.1.1 Simulazioni numeriche e risultati . . 2.2 Integrazione nello spazio sico (x,t) . . . . . 2.2.1 Simulazioni numeriche e risultati . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

Elenco delle gure


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 Soluzione con metodo esplicito, dt = 0.02. . Coordinata x. . . . . . . . . . . . . . . . . . Coordinata y. . . . . . . . . . . . . . . . . . Coordinata z. . . . . . . . . . . . . . . . . . Attrattore di Lorenz. . . . . . . . . . . . . . Coordinata x. . . . . . . . . . . . . . . . . . Coordinata y. . . . . . . . . . . . . . . . . . Coordinata z. . . . . . . . . . . . . . . . . . Attrattore di Lorenz. . . . . . . . . . . . . . Funzione densit` a di probabilit` a. . . . . . . . Ordine 1. . . . . . . . . . . . . . . . . . . . Ordine 2. . . . . . . . . . . . . . . . . . . . Massimo ordine ammissibile. . . . . . . . . . Andamento dei vari modi. . . . . . . . . . . Trasferimento di energia ai modi successivi. . Dissipazione dellenergia. . . . . . . . . . . . Dissipazione dellenergia. . . . . . . . . . . . 2 . . . . Dissipazione dellenergia: = 102 m s 3 m 2 Dissipazione dellenergia: = 10 s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 7 7 8 8 11 11 12 12 15 16 17 17 19 20 20 21 23 23

ELENCO DELLE FIGURE

20

Fenomeno dellaliasing . . . . . . . . . . . . . . . . . . . . . . 24

ELENCO DELLE FIGURE

I risultati esposti di seguito sono stati ottenuti attraverso limplementazione degli algoritmi di calcolo necessari in codice C++, programmato utilizzando il compilatore Visual C++ 2010 su piattaforma Microsoft Windows (x64). Lanalisi statistica, ove richiesta, ` e stata condotta sempre attraverso apposite funzioni del listato C++. La sola rappresentazione graca ` e stata realizzata attraverso software commerciali (Excel, Matlab) o freeware (gnuplot).

1. Esercitazione 1 - Attrattore di Lorenz

Esercitazione 1 - Integrazione numerica delle equazioni dellattrattore di Lorenz

Lesercitazione si propone di risolvere, previa integrazione numerica, il seguente sistema di equazioni: = (y x) x (1) y = x y xz z = z + xy Successivamente, si richiede di computare i momenti della distribuzione di probabilit` a per i valori di x, y , z , no al generico ordine k . Si riportano di seguito i risultati ottenuti utilizzando per lintegrazione numerica, rispettivamente, metodo esplicito (Eulero forward ) e implicito (midpoint ).

1.1

Metodo esplicito: Eulero forward

Il metodo si basa sullapprossimazione della derivata prima della generica funzione u(x) a variabile indipendente x mediante lo sviluppo di Taylor (arrestato al primo ordine) nel punto x0 ; in particolare, introducendo una discretizzazione per x del tipo x = ix, vale: ui ui1 u |i = + o(x) x x Le equazioni dellattrattore di Lorenz divengono dunque: xi = xi1 + (yi1 xi1 )t yi = yi1 + (xi1 yi1 xi1 zi1 )t zi = zi1 + (zi1 + xi1 yi1 )t (2)

(3)

Segue lestratto dal listato di codice che implementa la funzione per lintegrazione numerica delle equazioni attraverso il metodo in esame.
void explicitIntegration(double *x, double *y, double *z, double x0, double y0, double z0) { x[0] = x0; y[0] = y0;

1.1 Metodo esplicito: Eulero forward

z[0] = z0; for(int i = 1; i<gI_steps; i++) { x[i] = x[i-1]+ gD_deltaT*gD_sigma*(y[i-1]-x[i-1]); y[i] = y[i-1]+ gD_deltaT*(gD_rho*x[i-1]-y[i-1]-x[i-1]*z[i-1]); z[i] = z[i-1]+ gD_deltaT*(-gD_beta*z[i-1]+x[i-1]*y[i-1]); } } Listato 1: La funzione explicitIntegration().

1.1.1

Simulazioni numeriche e risultati

La soluzione ottenuta con metodo esplicito non ` e incondizionatamente stabile; si pu` o dimostrare infatti che il limite di stabilit` a si ha per un dt = 0.0192625. Si riporta un esempio computato utilizzando il suddetto metodo di Eulero in avanti con uno step dintegrazione pari a 0.02.

Figura 1: Soluzione con metodo esplicito, dt = 0.02.

A scopo dimostrativo sono state calcolate le soluzioni a partire da condizioni iniziali uguali a meno di una variazione di ordine 105 su y0 : i corrispondenti graci mostrano nei valori di x, y e z variazioni di ordine 10. Si riporta inoltre un plot 3d dellattrattore di Lorenz integrato con e senza perturbazione iniziale.

1.1 Metodo esplicito: Eulero forward

Figura 2: Coordinata x.

Figura 3: Coordinata y.

1.1 Metodo esplicito: Eulero forward

Figura 4: Coordinata z.

Figura 5: Attrattore di Lorenz.

1.2 Metodo implicito: mid-point

1.2

Metodo implicito: mid-point

Utilizzando la medesima simbologia adottata nel paragrafo precedente, il 1 metodo si basa sullapprossimazione della derivata prima u i nel punto i 2 (punto medio tra i 1 e i). Il metodo ` e detto implicito in quanto presume la conoscenza del valore della derivata nel punto di arrivo (i); ci` o comporta lesigenza di risoluzione per via iterativa, a vantaggio, tuttavia, di un ordine di accuratezza pari a 2. ui ui1 u |i 1 = + o(x2 ) (4) x 2 x Nel listato, per il generico istante temporale i, ad ogni iterazione k viene assunto, come stima per ciascuna delle variabili x, y , z , il valore medio tra il valore calcolato nel ciclo immediatamente precedente ed il valore iniziale, essendosi preliminarmente posto questultimo pari a quello computato nel passo temporale i 1. xpredict = 0.5(xtemp + xi1 ) (5)

In particolare nela precedente ` e possibile calcolare xtemp , mediante lintroduzione di un opportuno fattore di sottorilassamento , come segue:
k1 xtemp = (1 )xk i + xi

(6)

Literazione prosegue ntanto che non si giunge a convergenza secondo una prestabilita soglia di tolleranza. Il sistema da risolvere numericamente diventa quindi: x x i i1 t = (yp xp ) yi yi1 (7) = xp yp xp zp t zi zi1 = zp + xp yp t
void midPoint(double *x, double *y, double *z, double x0, double y0, double z0) { char tempString[1000]; double xP, yP, zP, underRelaxationFactor = 0; x[0] = x0; y[0] = y0; z[0] = z0;

1.2 Metodo implicito: mid-point

10

double xT, yT, zT, conv = 0.00000001; for(int i = 1; i<gI_steps; i++) { x[i] = x[i-1]; y[i] = y[i-1]; z[i] = z[i-1]; do { xT = (1-underRelaxationFactor)*x[i] + underRelaxationFactor*xT; yT = (1-underRelaxationFactor)*y[i] + underRelaxationFactor*yT; zT = (1-underRelaxationFactor)*z[i] + underRelaxationFactor*zT; xP = (x[i-1]+xT)*0.5; yP = (y[i-1]+yT)*0.5; zP = (z[i-1]+zT)*0.5; x[i] = x[i-1] + gD_deltaT*gD_sigma*(yP - xP); y[i] = y[i-1] + gD_deltaT*(gD_rho*xP - yP - xP*zP); z[i] = z[i-1] + gD_deltaT*(-gD_beta*zP + xP*yP); } while (abs((x[i]-xT)) > conv || abs((y[i]-yT)) > conv || abs((z[i]-zT)) > conv); } } Listato 2: La funzione midPoint().

1.2.1

Simulazioni numeriche e risultati

Analogamente al caso della soluzione calcolata con metodo esplicito, si riportano gli andamenti di x, y, z a partire da condizioni iniziali imperturbate e perturbate. Ancora, a una variazione di ordine 105 su y0 corrispondono variazioni di ordine 10 in x, y, z.

1.2 Metodo implicito: mid-point

11

Figura 6: Coordinata x.

Figura 7: Coordinata y.

1.2 Metodo implicito: mid-point

12

Figura 8: Coordinata z.

Figura 9: Attrattore di Lorenz.

1.3 Dominio di calcolo della soluzione

13

1.3

Dominio di calcolo della soluzione

Sono state eseguite anche diverse runs del listato andando a modicare la sola estensione del dominio di integrazione (no 500, 5000 e 50000 unit` a temporali, con dt = 0.005), a parit` a di ciascuno degli altri parametri. Seguono le tabelle con le rispettive medie e deviazioni standard.
Tabella 1: Valori medi e deviazioni standard per t = 500, dt = 0.005

time

500.000000,

dt

0.005

<x> = <y> = <z> =

-0.430321, SDx = 9.027859 -0.430707, SDy = 10.454852 30.609365, SDz = 9.685412

Tabella 2: Valori medi e deviazioni standard per t = 5000, dt = 0.005

time <x> <y> <z>

= = = =

5000.000000, 0.102233, 0.102108, 30.613749,

deltaT =

0.005

SDx = 9.035895 SDy = 10.451678 SDz = 9.665703

Tabella 3: Valori medi e deviazioni standard per t = 50000, dt = 0.005

time

50000.000000,

dt

0.005 9.033357 10.460466 9.686376

<x> = <y> = <z> =

-0.052813, SDx = -0.052792, SDy = 30.594805, SDz =

1.4

Distribuzione di probabilit` a

Sia per le soluzioni ottenute con il metodo di Eulero in avanti che per quelle computate implicitamente, ` e stata condotta unanalisi statistica sulla distribuzione di valori per le coordinate x, y e z , calcolandone le rispettive funzioni di distribuzione di probabilit` a ed i momenti teorici centrati nel valore

1.4 Distribuzione di probabilit` a

14

atteso, no al generico ordine k , attraverso gli appositi metodi probDensity() e probMomentum().


double *probDensity(double *x, int startValue, int steps, int nRanges) { double *probFunction = new double[nRanges](); double max = maximumValue(x, startValue, steps), min = minimumValue(x, startValue, steps); for(int i = startValue; i < steps; i++) { bool tempCheck = false; for(int k = 0; k < nRanges && !tempCheck; k++) if(x[i]>=min+k*(max-min)/nRanges && x[i] < min+(k+1)*(max-min)/nRanges) { probFunction[k] += 1; tempCheck = true; } } return probFunction; } double **probMomentum(double *x, double *probX, int startValue, int steps, int nRanges, int order) { double **probMomentum = new double*[order]; double max = maximumValue(x, startValue, steps), min = minimumValue(x, startValue, steps), avg = average(x, startValue, steps) ; for(int j = 0; j < order; j++) { probMomentum[j] = new double[nRanges]; for(int i = 0; i < steps; i++) for(int k = 0; k < nRanges; k++) if(x[i]>=min+k*(max-min)/nRanges && x[i] < min+(k+1)*(max-min)/nRanges) probMomentum[j][k] += pow(x[i]-avg, j); } return probMomentum; } Listato 3: Le funzioni probDensity() e probMomentum().

Segue il graco dellandamento della funzione distribuzione di probabilit` a; i valori delle ascisse risultano centrati nei rispettivi valori medi.

1.4 Distribuzione di probabilit` a

15

Figura 10: Funzione densit` a di probabilit` a.

Si riportano invece di seguito, ancora a titolo dimostrativo, alcuni graci delle funzioni integrande per il calcolo dei momenti di distribuzione di probabilit` a:
ordine 1: il graco ` e esemplicativo dellandamento della funzione integranda per momenti di ordine dispari; la distribuzione risulta simmetrica rispetto allo zero ed il momento centrato ` e dunque nullo per ciascuna coordinata; ordine 2: il graco ` e esemplicativo dellandamento della funzione integranda per momenti di ordine pari; i momenti centrati in x, y, z risultano pari alle rispettive varianze, come si deduce confrontando i valori dei primi con i valori delle deviazioni standard calcolate con funzioni appositamente dedicate;

1.4 Distribuzione di probabilit` a

16

Tabella 4: Valori medi, deviazioni standard e momenti del primo e secondo ordine per t = 50000, dt = 0.005

time <x> <y> <z> I Mx I My I Mz

= = = = = = =

50000.000000,

dt =

0.005

-0.059689, SDx -0.059824, SDy 31.485401, SDz II -0.000020 Mx II -0.000031 My II -0.000031 Mz

= 9.201369 = 10.552230 = 9.193244 = 84.665358 = 111.349276 = 84.515324

Figura 11: Ordine 1.

1.4 Distribuzione di probabilit` a

17

Figura 12: Ordine 2.

Si ` e inne valutato il massimo ordine di validit` a della statistica gracando i valori delle funzioni integrande dei momenti statici di ordini superiori. Il graco di seguito riportato evidenzia che la statistica ` e da non ritenersi pi` u valida a partire dallordine 27.

Figura 13: Massimo ordine ammissibile.

2. Esercitazione 2 - Equazione di Burgers

18

Esercitazione 2 - Integrazione numerica dellequazione di Burgers

Lesercitazione ha come scopo lintegrazione numerica della seguente equazione nota come equazione di Burgers: u u 2u +u = 2 t x x (8)

La relazione monodimensionale appena esposta ` e di notevole importanza in quanto presenta le principali caratteristiche delle equazioni di Navier-Stokes fatta eccezione per il termine di pressione. Lintegrazione verr` a condotta in due modi dierenti: dapprima si cercher` a la soluzione nel dominio dei numeri donda, limitando cio` e l ad un numero discreto di modi, procedendo poi allintegrazione nello spazio sico (x,t).

2.1

Integrazione nel dominio dei numeri donda

Ipotizzando una opportuna soluzione serie di seni u(x, t) =


k=1

Ak (t)sin(kx)

(9)

si giunge, mediante lutilizzo delle propriet` a di ortogonalit` a delle funzioni seno, ad una soluzione del tipo:

k + A
m=1

m(

Am Akm Am Ak+m Am Amk + ) = k 2 Ak 2 2 2

(10)

2.1.1

Simulazioni numeriche e risultati

Lequazione (10) ` e stata integrata limitando il numero di inniti a 3 modi e a 150 modi. Il graco seguente mostra landamento dei suddetti modi nel tempo nella circostanza in cui lenergia venisse immessa al solo modo A(1) al tempo iniziale ( tutti gli altri valori di A(i, t0 ) sono nulli).

2.1 Integrazione nel dominio dei numeri donda

19

(a) Innito a 3 modi.

(b) Innito a 150 modi. Figura 14: Andamento dei vari modi.

2.1 Integrazione nel dominio dei numeri donda

20

Si riporta anche un graco che mostra il trasferimento di energia per istanti successivi a i modi caratterizzati da numeri donda maggiori (cascata diretta dellenergia). La soluzione proposta riguarda il caso di innito a 150 modi ma ne vengono riportati, per ovvie ragioni, soltanto 14.

Figura 15: Trasferimento di energia ai modi successivi.

La validazione del metodo ` e stata condotta andando a computare leffettiva dissipazione di energia durante il fenomeno. Lenergia in questione ` e calcolabile dalla somma dei quadrati delle ampiezze dei singoli modi.

Figura 16: Dissipazione dellenergia.

2.2 Integrazione nello spazio sico (x,t)

21

Viene inne valutata la soluzione u(x, t) serie di seni. Il graco che segue riporta landamento della suddetta a 3 diversi intervalli temporali. Si osserva unappiattimento della curva attorno al valore x = , corrispondente alla met` a del dominio spaziale(D = [0, 2 ]). Ci` o` e giusticabile ancora una volta dal meccaniscmo di cascata dellenergia: andando avanti nel tempo lenergia viene trasferita a strutture sempre pi` u piccole cui corrispondono gradienti sempre pi` u ripidi.

Figura 17: Dissipazione dellenergia.

2.2

Integrazione nello spazio sico (x,t)

In questa sezione lequazione (8) verr` a risolta direttamente nello spazio sico utilizzando il metodo di integrazione esplicito di Adams-Bashforth. Il metodo qui proposto ` e un metodo detto multistep poich` e, nella scrittura delle equazioni alle dierenze che lo caratterizza, sono coinvolti pi` u valori, calcolati agli istanti precedenti, della serie che rappresenta la soluzione: per il generico sistema di equazioni dierenziali {y } = {f ({y } , t)} (11)

al passo n + k la soluzione ` e approssimata attraverso luso di combinazioni lineari delle funzioni y ed f valutate ai passi n + j con j = 0, 1, . . . , k dove k indica il numero di passi del metodo.

2.2 Integrazione nello spazio sico (x,t)

22

Nel caso in esame ` e stato utilizzato un metodo al secondo ordine la cui forma generale ` e la seguente: 1 3 (12) yn = yn1 + h f (xn1 , yn1 ) h f (xn2 , yn2 ) 2 2 La soluzione dellequazione di Burgers viene denita nellintervallo [0, 2 ] e si ipotizza che la soluzione sia periodica in x con media nulla. Come nel caso di integrazione nel dominio dei numeri donda la soluzione u(x, t) si pu` o espandere con una serie di seni del tipo:

u(x, t) =
k=1

Ak (t)sin(kx)

(13)

la cui dinamica temporale della soluzione ` e tenuta in conto dai coecienti Ak (t). Si pongano nulle le soluzioni per x = 0 e x = 2 (condizioni a contorno). 2.2.1 Simulazioni numeriche e risultati

Per la prima integrazione si ` e costruita una griglia di calcolo spaziotemporale uniforme. Il passo temporale di integrazione ssato ` e di t = 2 0.001s, mentre il passo di integrazione spaziale ` e x = steps con steps = 100000. Il graco che segue riporta, come nel caso dellintegrazione dellequazione di Burgers nel dominio dei numeri donda, landamento della suddetta a 5 diversi intervalli temporali. Si osserva unappiattimento della curva attorno al valore x = , corrispondente alla met` a del dominio spaziale(D = [0, 2 ]). Ci` o` e giusticabile ancora una volta dal meccaniscmo di cascata dellenergia: andando avanti nel tempo lenergia viene trasferita a strutture sempre pi` u piccole cui corrispondono gradienti sempre pi` u ripidi. Il primo graco riporta landamento della soluzione per valori di viscosit` a 2 m2 cinematica = 10 s evidentemente troppo elevati in quanto si osserva un forte smorzamento (riduzione dellampiezza delloscillazione) per tempi brevi.

2.2 Integrazione nello spazio sico (x,t)

23

Figura 18: Dissipazione dellenergia: = 102 m s

Si ` e poi diminuito il valore di viscosit` a per osservare una dinamica pi` u lenta . Se ne riporta landamento nel graco che segue.

Figura 19: Dissipazione dellenergia: = 103 m s

Inne si ` e variato, a parit` a di tutti gli altri parametri, lintervallo tempo-

2.2 Integrazione nello spazio sico (x,t)

24

rale di integrazione riducendolo oltre il limite dellaliasing . Si pu` o osservare linstabilit` a del fenomeno notando che lampiezza della soluzione diverge.

Figura 20: Fenomeno dellaliasing .

You might also like