You are on page 1of 13

Rezolvarea ecuatiilor cu derivate partiale de

ordinul I

Ecuatia de advectie
∂u ∂u Domeniul de calcul
+c =0
∂t ∂x x ∈ [ a, b]
t ∈ [0, ∞]
Conditia initiala
u ( x, 0) = f ( x)

Conditia pe frontiera
c > 0 u ( a, t ) = g1 (t )
c < 0 u (b, t ) = g 2 (t )
Ecuatia de advectie

Solutia analitica in cazul in care c este o constanta

u s ( x, t ) = f ( x − c ⋅ t )

notatie z = x − c ⋅t

∂u ∂f ∂z ∂f ∂u ∂u
= = ( −c ) +c =0
∂t ∂z ∂t ∂z ∂t ∂x

∂u ∂f ∂z ∂f
= =
∂x ∂z ∂x ∂z
∂f ∂f
−c +c =0
∂z ∂z
Ecuatia de advectie

Determinarea solutie numerice


Discretizarea domeniului
b−a
∆x = xi = a + ∆x (i − 1) i = 1, N
N −1
Aplicarea unei scheme numerice de discretizare
Schema numerica Upwind

∂u ( xi , tn ) ∂uin uin+1 − uin c∆ t n


= = uin+1 = uin − (ui − uin−1 )
∂t ∂t ∆t ∆x
∂u ( xi , tn ) ∂uin uin − uin−1
= = c∆ t
∂x ∂x ∆x Conditia de stabilitate CFL = <1
∆x
Courant Friedrichs Lewy
Ecuatia de advectie

Schema numerica Upwind (explicita)


c∆ t n
uin+1 = uin − (ui − uin−1 ) CFL < 1
∆x
Schema centrata (explicita)
c∆ t n
uin+1 = uin − (ui +1 − uin−1 ) instabila
2 ∆x
Schema centrata (implicita)
c∆t n+1 n+1
uin+1 = uin − (ui +1 − ui −1 ) neconditionat stabila
2 ∆x
Schema Lax-Wendroff (explicita)
c∆ t n 1  c ∆t  n
2

uin+1 = uin − (ui +1 − uin−1 ) +   (ui +1 − 2ui + ui −1 )


n n
CFL < 1
2 ∆x 2  ∆x 
Ecuatia de advectie
Schema numerica Lax-Friedrichs
1 n 1 c ∆t n
uin +1 = (ui +1 + uin−1 ) − (ui +1 − uin−1 ) CFL < 1
2 2 ∆x

Schema Richtmyer
1 n c ∆t n
uin +1/2 = (ui +1 + uin−1 ) − (ui +1 − uin−1 )
2 4 ∆x CFL < 2
c∆t n +1/2
uin +1 = uin − (ui +1 − uin−+11/2 )
2 ∆x
Schema MacCormack
c ∆t n
ui* = uin − (ui +1 − uin )
∆x
1 c ∆t * * CFL < 1
uin +1 = (uin + ui* ) − (ui − ui −1 )
2 2 ∆x
Ecuatia de advectie

Schema centrata (implicita)


c∆t n+1 n+1
uin+1 = uin − (ui +1 − ui −1 ) neconditionat stabila
2 ∆x

uin +1 + 0.5 ⋅ CFL ⋅ uin++11 − 0.5 ⋅ CFL ⋅ uin−+11 = uin

Schema upwind (implicita) pentru ultimul punct i=Nx

c∆t n +1 n +1
uin +1 = uin − (ui − ui −1 )
∆x
(1 + CFL) ⋅ uin +1 − CFL ⋅ uin−+11 = uin
Rezolvarea ecuatiilor cu derivate partiale de
ordinul I

Ecuatia de advectie exemplu


∂u ∂u Domeniul de calcul
+c =0
∂t ∂x x ∈ [−10,10]
c = 0.1 ∆x = 0.1 t ∈ [0, ∞ ]

Conditia initiala
x2

u ( x,0) = e 2
Solutia analitica
( x −ct ) 2
Conditia pe frontiera −
u ( x,0) = e 2

u ( −10, t ) = 0
Ecuatia de advectie

Schema numerica Upwind

CFL = 0.9
Ecuatia de advectie

Schema numerica centrata

CFL = 0.9
Rezolvarea ecuatiilor cu derivate partiale de
ordinul I

Ecuatia de advectie Domeniul de calcul

∂u ∂u x ∈ [ xa , xb ]
+c =0
∂t ∂x xa = 0 + 0.02* INDEX
c = 1.5 ∆x = 0.1 ∆t = 0.075 xb = 0.5 + 0.02* INDEX
tn n = 0..2
Conditia initiala

u ( x, 0) = sin(2π x)
Solutia analitica
Conditia pe frontiera
usa ( x, 0) = sin(2π ( x − at ))
usa ( xa , t ) = sin(2π ( xa − at ))
Schema MacCormack
c ∆t n
ui* = uin − (ui +1 − uin )
∆x
1 c ∆t * * CFL < 1
uin +1 = (uin + ui* ) − (ui − ui −1 )
2 2 ∆x

Soluția analitică pentru t=0


t = t0 = 0
ui0 = usa ( xi , 0)

u00 = usa ( x0 , 0)
...
u N0 = usa ( xN , 0)
Schema MacCormack
c ∆t n
ui* = uin − (ui +1 − uin )
∆x
1 c ∆t * * CFL < 1
uin +1 = (uin + ui* ) − (ui − ui −1 )
2 2 ∆x

Soluția pentru primul pas de timp


t = t1 = t 0 + dt

u = usa ( x0 , t )
* u01 = usa ( x0 , t )
0

u1* = u10 − CFL(u20 − u10 ) u11 = 0.5(u10 + u1* ) − CFL (u1* − u0* )
u2* = u20 − CFL(u30 − u20 )
u12 = 0.5(u20 + u2* ) − CFL(u2* − u1* )
...
u *N −1 = u N0 −1 − CFL(u N0 − u N0 −1 ) ...
u1N = 0.5(u N0 + u *N ) − CFL(u *N − u *N −1 )
u = u − CFL(u − u
*
N
0
N
0
N
0
N −1 )
Schema MacCormack
c ∆t n
ui* = uin − (ui +1 − uin )
∆x
1 c ∆t * * CFL < 1
uin +1 = (uin + ui* ) − (ui − ui −1 )
2 2 ∆x

Soluția pentru al doilea pas de timp


t = t 2 = t1 + dt

u = usa ( x0 , t )
* u01 = usa ( x0 , t )
0

u1* = u11 − CFL(u12 − u11 ) u12 = 0.5(u11 + u1* ) − CFL(u1* − u0* )


u2* = u12 − CFL(u31 − u12 )
u22 = 0.5(u12 + u2* ) − CFL(u2* − u1* )
...
u *N −1 = u1N −1 − CFL(u1N − u1N −1 ) ...
u N2 = 0.5(u1N + u *N ) − CFL(u *N − u *N −1 )
u = u − CFL(u − u
*
N
1
N
1
N
1
N −1 )

You might also like