.
DICACIM programme A.Y. 2019–20 Numerical Methods for Partial Differential
Equations
Lab 1
Numerical solution of 1D elliptic problems with Finite Elements and MATLAB
Paola Gervasio
DICATAM, Universit`a degli Studi di Brescia (Italy)
uniBS, April, 2020
Scaricare il fileFEM1d.zip dalla pagina del corso moodle.
Contiene:
fem 1d solver.m : risolve un problema ellittico 1d con FEM lineari o quadratici;
fem 1d errors.m: calcola gli errori tra la soluzione numerica e la soluzione esatta nelle norme in H1 e L2;
fem 1d setting.m: costruisce i nodi e i pesi di quadratura per calcolare gli integrali, valuta le funzioni di base nei nodi di quadratura, calcola l’ampiezza degli elementi della partizione.
E richiamata all’interno delle due function precendenti;` xwlg.m: function per calcolare i nodi e i pesi delle formule di quadratura di Gauss Legendre (i nodi sono interni
all’intervallo). `E richiamata all’interno di fem 1d setting.m;
xwlgl.m: function per calcolare i nodi e i pesi delle formule di quadratura di Gauss Legendre Lobatto (gli estremi
dell’intervallo sono 2 nodi di quadratura). `E richiamata all’interno di fem 1d setting.m.
2
fem 1d solver.m
> > h e l p f e m _ 1 d _ s o l v e r
f e m _ 1 d _ s o l v e r : s o l v e - mu * u ‘ ‘+ 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 _ s o l v e r ( geom , p r o b l e m _ d a t a , p , Ne ) I n p u t : g e o m : s t r u c t w i t h f i e l d s :
g e o m . xa , g e o m . xb = end- p o i n t s of O m e g a
p r o b l e m _ d a t a : s t r u c t w i t h c o e f f i c i e n t s and ... . ... .
p = l o c a l p o l y n o m i a l d e g r e e (1 or 2) Ne = n u m b e r of e l e m e n t s of the p a r t i t i o n 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 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
3
fem 1d errors.m
> > h e l p f e m _ 1 d _ e r r o r
f e m _ 1 d _ e r r o r s C o m p u t e s e r r o r s for 1 d b . v . p .
[ e r r o r s ]= f e m _ 1 d _ e r r o r s ( uh , geom , p , Ne , uex , u1ex , e r r t y p e ) I n p u t :
uh = n u m e r i c a l s o l u t i o n g e o m = s t r u c t w i t h f i e l d s :
g e o m . xa , g e o m . xb = end- p o i n t s of O m e g a p = l o c a l p o l y n o m i a l d e g r e e (1 or 2) Ne = n u m b e r of e l e m e n t s of the p a r t i t i o n
uex = f u n c t i o n h a n d l e @ ( x ) w i t h the e x a c t s o l u t i o n u 1 e x = f u n c t i o n h a n d l e @ ( x ) w i t h the d e r i v a t i v e
of the e x a c t s o l u t i o n
o p t i o n a l i n p u t: e r r t y p e = 0: a b s o l u t e e r r o r s ( d e f a u l t v a l u e ) e r r t y p e = 1: r e l a t i v e e r r o r s
O u t p u t :
e r r o r s . h1 = || u - uh || _H1 e r r o r s . l2 = || u - uh || _L2
4
Problema 1
Si consideri il problema
−u00(x ) = f (x ) in Ω
u(x ) = 0 on ∂Ω
con Ω = (0, 1) e f (x ) = 9π2sin(3πx ) + 2.
1. Calcolare la soluzione numerica uh(x ) ottenuta con fem-P1 su una mesh uniforme con Ne=5, 10, 20, 40 e rappresentarla graficamente.
2. Calcolare l’errore tra la soluzione numerica uh e la soluzione esatta u(x ) = sin(3πx ) − x2+ x , sia in norma H1(Ω) che in norma L2(Ω) e verificare che, quando h → 0, si ha
ku − uhkH1(Ω)' h ku − uhkL2(Ω) ' h2
3. Ripetere il lavoro con fem-P2, verificando che ora gli errori decrescono come h2 e come h3 (rispettivamente) al tendere di h a zero.
5
Problema 2
Si consideri il problema
−u00(x ) + 10u(x ) = 9ex in (−1, 1) u(−1) = 1/e, u(1) = e
Ripetere il lavoro proposto per il problema 1, sapendo che u(x ) = ex.
6
Problema 3. Trasferimento di calore in un’asta sottile
Consideriamo un’asta sottile di lunghezza L e sezione circolare di raggio r , che nell’estremo x = 0 abbia temperatura T0e che nell’estremo x = L sia isolata.
La temperatura T della barra in un punto x ∈ (0, L) soddisfa il seguente problema ellittico:
−kAT00+ ˜σpT = 0, x ∈ (0, L),
T (0) = T0, T0(L) = 0, (1)
avendo denotato con k la conducibilit`a termica del materiale, con ˜σ il coefficiente di scambio termico, con A e con p l’area ed il perimetro (rispettivamente) della sezione circolare.
Approssimare la soluzione del problema (1) utilizzando elementi finiti quadratici (su una griglia uniforme di Ne=10, 20, 40, 80 elementi), qualora i dati siano:
L = 1m, r = 10−2m, k = 200mKW, ˜σ = 2mW2K, T0= 10K . Dopo aver verificato che la soluzione esatta del problema `e
T (x ) = T0
cosh(α(L − x )) cosh(αL) , con α =
qσp˜
kA, verificare che gli errori tra soluzione esatta e soluzione numerica osservano i comportamenti previsti dalla teoria.
7
Problema 4. Flessione di una fune
Consideriamo una fune fissata agli estremi, avente tensione T e lunghezza L. La funzione u(x ), che misura lo spostamento verticale della fune quando questa `e soggetta ad un carico trasversale di intesit`a w (x ), soddisfa il seguente problema differenziale:
−Tu00+ ku = w in (0, L), u(0) = 0, u(L) = 0, dove k `e il coefficiente di elasticit`a della fune.
Calcolare l’approssimazione di u con elementi finiti P1 su una griglia uniforme con i seguenti dati:
1 L = 1, T = 1, k = 1, w (x ) ≡ 1, Ne=5, 10, 20, 40;
2 L = 1, T = 10−3, k = 1, w (x ) ≡ 1, Ne=5, 10, 20, 40;
3 L = 1, T = 10−4, k = 1, w (x ) ≡ 1, Ne=10, 20, 40, 80;
8
Problema 4: remark
Quando T << k e h non `e sufficientemente piccolo, la soluzione numerica mostra delle oscillazioni che non sono fisiche, ma sono dovute dovute ad una scarsa approssimazione.
La soluzione esatta presenta due boundary layer dell’ordine di pT /k e per catturarli correttamente `e necessario che h sia sufficientemente piccolo rispetto apT /k.
Precisamente serve:
h <
r 6T
k. (2)
Verificare che se h soddisfa (2), allora la soluzione numerica non presenta oscillazioni.
9
Problema 4: rimedio
Si possono eliminare le oscillazioni, mantenedo h >
q
6Tk, a patto di sostituire la matrice di massa M (Mij =R
Ωϕjϕi) con la lumped mass matrix
M :ˆ Mˆij = δij
X
j
Mij.
M `ˆ e una matrice diagonale, l’elemento diagonale i −simo `e la somma degli elementi della riga i −sima della matrice di massa M.
prova:
aprire il file fem 1d solver.m e scommentare la riga 90.
Quindi salvare il file e ricalcolare la soluzione numerica con i diversi valori di Ne (e quindi di h).
10
Problema 5: regolarit` a della soluzione
Consideriamo il problema
−u00= f in (0, 1), u(0) = 0, u0(1) = π, e
f (x ) =
0 se x ∈ (0, 0.5)
−π2cos(π(x − 0.5)) se x ∈ [0.5, 1)
Calcolare la soluzione numerica con fem−P1 e fem−P2 e calcolare gli errori rispetto alla soluzione esatta
u(x ) =
0 se x ∈ (0, 0.5)
1 − cos(π(x − 0.5)) se x ∈ [0.5, 1)
Che regolarit`a ha la soluzione esatta e come si comportano gli errori al tendere di h a zero?
Prendere Ne=11, 21, 41, 81, 161.
11