.
DICACIM programme A.Y. 2019–20 Numerical Methods for Partial Differential
Equations
Lab 4
Numerical solution of Advection Diffusion Reaction problems
Paola Gervasio
DICATAM, Universit`a degli Studi di Brescia (Italy)
uniBS, May, 2020
Diffusione trasporto per d = 1
Scaricare il file FEM 1d ad.zip dalla pagina moodle del corso, contiene il file fem 1d adsolver.m.
h e l p f e m _ 1 d _ a d s o l v e r
f e m _ 1 d _ a d s o l v e r : s o l v e - mu u ’’ + bu ’+ s i g m a u = f in O m e g a w i t h D i r i c h l e t and / or N e u m a n n b o u n d a r y c o n d i t i o n s by e i t h e r P1 - fem or P2 - fem on a u n i f o r m g r i d.
[ nodes , uh ]= f e m _ 1 d _ a d s o l v e r ( geom , p r o b l e m _ d a t a , p , Ne )
[ nodes , uh ]= f e m _ 1 d _ a d s o l v e r ( geom , p r o b l e m _ d a t a , p , Ne , d e g r e e )
I n p u t : g e o m : s t r u c t wi t h f i e l d s : ... .
O u t p u t : n o d e s = c o l u m n a r r a y w i t h the n o d e s of the m e s h uh = c o l u m n a r r a y of the n u m e r i c a l s o l u t i o n
Problema 1
Approssimare la soluzione del problema
( −µu00+ bu0 = 0 in Ω = (0, 1) u(0) = 0, u(1) = 1.
(avendo posto µ = 0.02 e b = 1) con FEM-P1 e FEM-P2 e Ne = 10, 20, 30, 40, 80.
1 Calcolare il numero di P´eclet Pe =µbh2 e verificare che la soluzione numerica non presenta oscillazioni quando Pe < 1.
2 Sapendo che la soluzione esatta `e u(x ) = exb/µ− 1
eb/µ− 1
verificare che l’errore ku − uhkH1(Ω) converge linearmente per i P1 e quadraticamente per i P2 quando Pe < 1.
Problema 2
Approssimare la soluzione del problema
( −µu00+ bu0 = 0 in Ω = (0, 1) u(0) = 0, u(1) = 1.
(avendo posto µ = 0.02 e b = 1) con FEM-P1 e FEM-P2 ed il metodo della diffusione artificiale (cio`e sostituendo µ con µh= µ(1 + Pe)) per Ne = 10, 20, 30, 40, 80.
1 Verificare che non si hanno oscillazioni per ogni valore di h considerato, anche quando Pe > 1.
2 Sapendo che la soluzione esatta `e u(x ) = exb/µ− 1
eb/µ− 1
verificare che l’errore ku − uhkH1(Ω) converge linearmente sia per i P1 che per i P2.
Diffusione trasporto reazione per d = 2
Scaricare il file FEM 2d ad.zip dalla pagina moodle del corso, contiene il file fem 2d ad.m.
> > h e l p f e m _ 2 d _ a d
f e m _ 2 d _ a d C o m p u t e s m a t r i c e s and rhs f o r GaLS - FEM - P1 a p p r o x i m a t i o n of
- mu D e l t a u + b . n a b l a u + s i g m a u = f in O m e g a (2 D d o m a i n ) u = g_D D i r i c h l e t c o n d i t i o n s on the b o u n d a r y
G a L S = G a l e r k i n - Least - S q u a r e s s t a b i l i z a t i o n [ FEM ]= f e m _ 2 d _ a d ( model , p r o b l e m _ d a t a , p a r a m e t e r s )
I n p u t : ...
p a r a m e t e r s = s t r u c t w i t h f i e l d s
. d e g r e e = d e g r e e of e x a c t n e s s of q u a d r a t u r e f o r m u l a s ( d e f a u l t v a l u e =4) p o s s i b l e v a l u e s : 1 , 3 , 4 , 10 . d e l t a = c o e f f i c i e n t f o r the s t a b i l i z a t i o n
( d e f a u l t v a l u e =1)
O u t p u t :
FEM = s t r u c t w i t h f i e l d s :
. Kc : % matrix A0, (i,j) non−dirichlet
. Fc : % rhs f0, (i) non−dirichlet
. B : % matrix to remap u0 in u
. ud : % ud = discrete lifting Rgd^h of gD
. M : % mass matrix
Un passo indietro
Consideriamo il problema
( Lu = −µ∆u + b · ∇u + σu = f in Ω
u = gD on ∂Ω
con µ > 0 costante, b costante, σ ≥ 0 costante.
La forma debole `e: determinare u = u0+ RgD, dove:
u0∈ H01(Ω) : a(u0, v ) = F (v ) ∀v ∈ H01(Ω) con
a(u, v ) = Z
Ω
µ∇u · ∇v + Z
Ω
b · ∇uv + Z
Ω
σuv , F (v ) = Z
Ω
fv e RgD ∈ H1(Ω) `e il lifting di gD, cio`e t.c. RgD = gD su ∂Ω.
Definiamo lo spazio FEM-P1:
Xh= {v ∈ C0(Ω) : v |Tk ∈ P1, ∀Tk ∈ Th}
e la base Lagrangiana β = {ϕi}Ni =1h (incluse le funzioni associate ai nodi Dirichlet).
I = {1, 2, . . . , Nh}, ID = {i ∈ I : xi ∈ ∂ΩD}, I0 = I \ ID. La soluzione discreta `e
uh=
Nh
X
j=1
ujϕj = X
j∈I0
ujϕj
| {z }
u0h
+ X
j∈ID
uj
| {z }
RgDh
con (lifting discreto) RgDh(xi) =
( gD(xi) se xi ∈ ∂ΩD 0 altrimenti.
Poniamo
A matrice di elementi Aij = a(ϕj, ϕi) per i , j ∈ I, A0 la sottomatrice di A con i , j ∈ I0,
AD la sottomatrice di A con i ∈ I0 e j ∈ ID, f vettore di elementi fi = F (ϕi) per i ∈ I, f0 il sottovettore di f con i ∈ I0,
gD vettore dei valori gD(xi) con i ∈ ID, u0 = [uj]j∈I0, dof non-Dirichlet,
uD = [uj]j∈ID, dof Dirichlet.
e la formulazione algebrica del problema in forma debole Galerkin `e:
"
A0 AD
0 I
# "
u0
uD
#
=
"
f0
gD
# ← i ∈ I0 nodi non-Dirichlet
← i ∈ ID nodi Dirichlet
Cio`e:
uD = gD, A0u0+ ADuD = f0 e quindi
A0u0 = f0− ADgD. Infine ricostruiamo
u =
"
u0 0
# +
"
0 uD
#
FEM.Kc contiene la matrice A0 FEM.Fc contiene il vettore f0− ADgD FEM.B contiene una matrice B t.c. Bu0 =
"
u0 0
#
FEM.ud contiene il vettore
"
0 uD
#
Per calcolare u:
u0 = FEM . Kc \ FEM . Fc ; % risolvo FEM.Kc u0 = FEM.Fc
Galerkin Least Squares GaLS stabilization
La formulazione GaLS `e: determinare uh∈ Vh:
a(uh, vh) +X
k
Z
Tk
Luh τk Lvh= F (vh) +X
k
Z
Tk
f τk Lvh ∀vh∈ Vh con τk = δ|b|hk parametro di stabilizzazione, δ > 0.
1 Poich´e Lu = f , (u `e la soluzione esatta) si ha X
k
Z
Tk
Lu τk Lvh=X
k
Z
Tk
f τk Lvh ∀vh∈ Vh, questo metodo `e fortemente consistente, la soluzione esatta soddisfa l’equazione discreta senza errori.
2 Per ogni vh∈ Xh (sono P1), poich´e µ `e costante, succede che
−∇ · (µ∇vh) = 0, quindi Z
Tk
Luh τk Lvh= Z
Tk
(b · ∇uh+ σuh)τk(b · ∇vh+ σvh).
3 Se δ = 0, GaLS si riduce a Galerkin classico.
Problema 3
Approssimare la soluzione del problema
( −µ∆u + b · ∇u + σu = f in Ω = (0, 1)2
u = gD on ∂Ω
avendo fissato µ = 10−3, b = [1, 1]T, σ = 0, f = 1, gD = 0.
1 Fissare δ = 0, corrispondente a Galerkin classico e calcolare la soluzione numerica con h = 1/20 e h = 1/80.
2 Fissare δ = 1 e calcolare la soluzione numerica con h = 1/20 e h = 1/80.
3 Ripetere il lavoro con µ = 10−5.