A Fulvia, Silvia e Marzia
A. Quarteroni
Modellistica numerica per problemi differenziali 3a edizione
13
ALFIO QUARTERONI MOX - Dipartimento di Matematica Politecnico di Milano e Ecole Polytechnique Fédérale de Lausanne
La figura in copertina rappresenta le isolinee del modulo della velocità di un fluido intorno ad una schiera di cilindri. La simulazione è stata ottenuta da Paola Gervasio mediante risoluzione con elementi spettrali.
ISBN 10 88-470-0493-4 Springer Milan Berlin Heidelberg New York ISBN 13 978-88-470-0493-1 Springer Milan Berlin Heidelberg New York Springer-Verlag fa parte di Springer Science+Business Media springer.com © Springer-Verlag Italia, Milano 2006
Quest’opera è protetta dalla legge sul diritto d’autore. Tutti i diritti, in particolare quelli relativi alla traduzione, alla ristampa, all’uso di figure e tabelle, alla citazione orale, alla trasmissione radiofonica o televisiva, alla riproduzione su microfilm o in database, alla diversa riproduzione in qualsiasi altra forma (stampa o elettronica) rimangono riservati anche nel caso di utilizzo parziale. Una riproduzione di quest’opera, oppure di parte di questa, è anche nel caso specifico solo ammessa nei limiti stabiliti dalla legge sul diritto d’autore, ed è soggetta all’autorizzazione dell’Editore. La violazione delle norme comporta sanzioni previste dalla legge. L’utilizzo di denominazioni generiche, nomi commerciali, marchi registrati, ecc., in quest’opera, anche in assenza di particolare indicazione, non consente di considerare tali denominazioni o marchi liberamente utilizzabili da chiunque ai sensi della legge sul marchio. Impianti forniti dall’autore Progetto grafico della copertina: Simona Colombo, Milano Stampa: Signum, Bollate (Mi) Stampato in Italia
Indice
Prefazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XI 1
Richiami sulle equazioni alle derivate parziali . . . . . . . . . . . . . . . . . . . . . . . 1.1 Definizioni ed esempi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Necessità della risoluzione numerica . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 Classificazione delle EDP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3.1 Forma quadratica associata ad una EDP . . . . . . . . . . . . . . . . . . . 1.4 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 3 5 8 9
2
Equazioni di tipo ellittico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1 Un esempio di problema ellittico: l’equazione di Poisson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Il problema di Poisson nel caso monodimensionale . . . . . . . . . . . . . . . . 2.2.1 Problema di Dirichlet omogeneo . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.2 Problema di Dirichlet non omogeneo . . . . . . . . . . . . . . . . . . . . . . 2.2.3 Problema di Neumann . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.4 Problema misto omogeneo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.5 Condizioni al bordo miste (o di Robin) . . . . . . . . . . . . . . . . . . . . 2.3 Il problema di Poisson nel caso bidimensionale . . . . . . . . . . . . . . . . . . . . 2.3.1 Il problema di Dirichlet omogeneo . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2 Equivalenza, nel senso delle distribuzioni, tra la forma debole e la forma forte del problema di Dirichlet . . . . . . . . . . . . 2.3.3 Il problema con condizioni miste non omogenee . . . . . . . . . . . . 2.3.4 Equivalenza, nel senso delle distribuzioni, tra la forma debole e la forma forte per il problema di Neumann . . . . . . . . . 2.4 Problemi ellittici più generali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.4.1 Teorema di esistenza e unicità . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.5 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11 11 12 13 19 19 20 20 21 21 24 24 27 28 30 32
VI
Indice
3
Il metodo di Galerkin-elementi finiti per problemi ellittici . . . . . . . . . . . . 3.1 Approssimazione con il metodo di Galerkin . . . . . . . . . . . . . . . . . . . . . . 3.2 Analisi del metodo di Galerkin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.1 Esistenza e unicità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.2 Stabilità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.3 Convergenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3 Il metodo degli elementi finiti nel caso monodimensionale . . . . . . . . . . 3.3.1 Una definizione di elemento finito nel caso Lagrangiano . . . . . 3.3.2 L’approssimazione con elementi finiti lineari . . . . . . . . . . . . . . . 3.3.3 Interpolazione e stima di interpolazione . . . . . . . . . . . . . . . . . . . 3.3.4 Stima dell’errore nella norma H 1 . . . . . . . . . . . . . . . . . . . . . . . . . 3.4 Il metodo degli elementi finiti nel caso multidimensionale . . . . . . . . . . . 3.4.1 Risoluzione del problema di Poisson con elementi finiti . . . . . . 3.4.2 Condizionamento della matrice di rigidezza . . . . . . . . . . . . . . . . 3.4.3 Stima dell’errore di approssimazione nella norma dell’energia . 3.4.4 Stima dell’errore di approssimazione in norma L 2 . . . . . . . . . . . 3.5 Il problema dell’adattività della griglia . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.1 Adattività a priori basata sulla ricostruzione delle derivate . . . . 3.5.2 Adattività a posteriori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5.3 Stime a posteriori dell’errore nella norma L 2 . . . . . . . . . . . . . . . 3.5.4 Stime a posteriori di un funzionale dell’errore . . . . . . . . . . . . . . 3.6 Come ottenere il problema aggiunto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.1 Il caso lineare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6.2 Il caso non lineare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.7 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
I metodi spettrali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 4.1 Il metodo di Galerkin spettrale per un problema ellittico . . . . . . . . . . . . 97 4.2 Polinomi ortogonali e integrazione numerica gaussiana . . . . . . . . . . . . . 101 4.2.1 Polinomi ortogonali di Legendre . . . . . . . . . . . . . . . . . . . . . . . . . 101 4.2.2 Integrazione gaussiana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 4.2.3 Le formule di Gauss-Legendre-Lobatto . . . . . . . . . . . . . . . . . . . . 105 4.3 Metodi G-NI in una dimensione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 4.3.1 Interpretazione algebrica del metodo G-NI . . . . . . . . . . . . . . . . . 109 4.3.2 Condizionamento della matrice di rigidezza del metodo G-NI . 111 4.3.3 Equivalenza tra il metodo G-NI e un metodo di collocazione . . 112 4.4 Generalizzazione al caso bidimensionale . . . . . . . . . . . . . . . . . . . . . . . . . 116 4.4.1 Convergenza del metodo G-NI . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 4.5 Metodo G-NI e MES-NI per un problema modello monodimensionale 126 4.5.1 Il metodo G-NI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127 4.5.2 Il metodo MES-NI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 4.6 Metodi spettrali su triangoli e tetraedri . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 4.7 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139
37 37 39 39 40 40 43 47 48 50 52 53 56 58 61 68 71 73 75 80 84 86 87 88 91
Indice
VII
5
Equazioni di diffusione-trasporto-reazione . . . . . . . . . . . . . . . . . . . . . . . . . . 141 5.1 Formulazione debole del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 5.2 Analisi di un problema di diffusione-trasporto monodimensionale . . . . 144 5.3 Analisi di un problema di diffusione-reazione monodimensionale . . . . 148 5.4 Relazioni tra elementi finiti e differenze finite . . . . . . . . . . . . . . . . . . . . . 150 5.5 La tecnica del mass-lumping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 5.6 Schemi decentrati e diffusione artificiale . . . . . . . . . . . . . . . . . . . . . . . . . 154 5.7 Autovalori del problema di diffusione-trasporto . . . . . . . . . . . . . . . . . . . 157 5.8 Metodi di stabilizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 5.8.1 Diffusione artificiale e schemi decentrati agli elementi finiti . . . 160 5.8.2 Il metodo di Petrov-Galerkin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 5.8.3 Il metodo della diffusione artificiale e della streamline diffusion nel caso bidimensionale . . . . . . . . . . . . . . . . . . . . . . . . . 163 5.8.4 Consistenza ed errore di troncamento per i metodi di Galerkin e di Galerkin generalizzato . . . . . . . . . . . . . . . . . . . . . . 165 5.8.5 Parte simmetrica e antisimmetrica di un operatore . . . . . . . . . . . 165 5.8.6 Metodi fortemente consistenti (GLS, SUPG, DW) . . . . . . . . . . . 167 5.8.7 Analisi del metodo GLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169 5.8.8 Stabilizzazione tramite funzioni a bolla . . . . . . . . . . . . . . . . . . . . 175 5.9 Alcuni test numerici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 5.10 Un esempio di adattività goal-oriented . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 5.11 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181
6
Equazioni paraboliche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 6.1 Formulazione debole e sua approssimazione . . . . . . . . . . . . . . . . . . . . . . 186 6.2 Stime a priori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 6.3 Analisi di convergenza del problema semi-discreto . . . . . . . . . . . . . . . . . 192 6.4 Analisi di stabilità del θ-metodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 6.5 Analisi di convergenza del θ-metodo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 6.6 Il caso dell’approssimazione spettrale G-NI . . . . . . . . . . . . . . . . . . . . . . . 201 6.7 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203
7
Differenze finite per equazioni iperboliche . . . . . . . . . . . . . . . . . . . . . . . . . . 207 7.1 Un problema di trasporto scalare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 7.1.1 Una stima a priori . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 7.2 Sistemi di equazioni iperboliche lineari . . . . . . . . . . . . . . . . . . . . . . . . . . 211 7.2.1 L’equazione delle onde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 7.3 Il metodo delle differenze finite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 7.3.1 Discretizzazione dell’equazione scalare . . . . . . . . . . . . . . . . . . . . 216 7.3.2 Discretizzazione di sistemi iperbolici lineari . . . . . . . . . . . . . . . 217 7.3.3 Trattamento del bordo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 7.4 Analisi dei metodi alle differenze finite . . . . . . . . . . . . . . . . . . . . . . . . . . 219 7.4.1 Consistenza e convergenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 7.4.2 Stabilità . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 7.4.3 Analisi di Von Neumann e coefficienti di amplificazione . . . . . 224
VIII
Indice
7.4.4 Dissipazione e dispersione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 7.5 Equazioni equivalenti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 7.5.1 Il caso dello schema upwind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 7.5.2 Il caso dei metodi di Lax-Friedrichs e Lax-Wendroff . . . . . . . . . 236 7.5.3 Sul significato dei coefficienti nelle equazioni equivalenti . . . . 236 7.5.4 Equazioni equivalenti e analisi dell’errore . . . . . . . . . . . . . . . . . . 237 7.6 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 8
Elementi finiti e metodi spettrali per equazioni iperboliche . . . . . . . . . . . . 241 8.1 Discretizzazione temporale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 8.1.1 Gli schemi di Eulero in avanti e all’indietro . . . . . . . . . . . . . . . . 241 8.1.2 Gli schemi upwind, di Lax-Friedrichs e Lax-Wendroff . . . . . . . 243 8.2 Gli schemi Taylor-Galerkin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 8.3 Il caso multidimensionale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 8.3.1 Condizioni al bordo e condizioni di compatibilità . . . . . . . . . . . 254 8.3.2 Discretizzazione temporale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 8.4 Elementi finiti discontinui . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 8.4.1 Il caso unidimensionale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 258 8.4.2 Il caso multidimensionale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 8.5 Elementi finiti spazio-temporali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 8.6 Approssimazione con metodi spettrali . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 8.6.1 Il metodo G-NI in un singolo intervallo . . . . . . . . . . . . . . . . . . . . 268 8.6.2 Il metodo DG-SEM-NI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 8.7 Trattamento numerico delle condizioni al bordo per sistemi iperbolici . 274 8.7.1 Trattamento debole delle condizioni al bordo . . . . . . . . . . . . . . . 278 8.8 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
9
Cenni a problemi iperbolici non lineari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 9.1 Equazioni scalari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 281 9.2 Approssimazione alle differenze finite . . . . . . . . . . . . . . . . . . . . . . . . . . . 286 9.3 Approssimazione con elementi finiti discontinui . . . . . . . . . . . . . . . . . . . 288 9.4 Sistemi iperbolici non-lineari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
10 Le equazioni di Navier-Stokes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 10.1 Formulazione debole delle equazioni di Navier-Stokes . . . . . . . . . . . . . 303 10.2 Le equazioni di Stokes e la loro approssimazione . . . . . . . . . . . . . . . . . . 308 10.3 Problemi di punto-sella . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 10.3.1 Formulazione del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312 10.3.2 Analisi del problema di punto-sella . . . . . . . . . . . . . . . . . . . . . . . 313 10.3.3 Approssimazione con il metodo di Galerkin ed analisi di stabilità e convergenza . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317 10.4 Formulazione algebrica del problema di Stokes . . . . . . . . . . . . . . . . . . . 320 10.5 Un esempio di problema stabilizzato . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 10.6 Un esempio numerico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 10.7 Discretizzazione in tempo delle equazioni di Navier-Stokes . . . . . . . . . 328
Indice
IX
10.7.1 Metodi alle differenze finite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 10.7.2 Metodi alle caratteristiche (o Lagrangiani) . . . . . . . . . . . . . . . . . 331 10.7.3 Metodi a passi frazionari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332 10.8 Risoluzione del sistema di Stokes e metodi di fattorizzazione algebrica 335 10.9 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339 11 Cenni di programmazione degli elementi finiti . . . . . . . . . . . . . . . . . . . . . . . 343 11.1 Fasi operative di un codice a elementi finiti . . . . . . . . . . . . . . . . . . . . . . . 343 11.1.1 Due parole sul codice utilizzato . . . . . . . . . . . . . . . . . . . . . . . . . . 346 11.2 Calcolo numerico degli integrali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 11.2.1 Le coordinate baricentriche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 350 11.2.2 Alcuni esempi di formule di quadratura . . . . . . . . . . . . . . . . . . . . 352 11.3 Memorizzazione di matrici sparse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353 11.4 La fase di assemblaggio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358 11.4.1 Codifica delle informazioni geometriche . . . . . . . . . . . . . . . . . . . 360 11.4.2 Codifica delle informazioni funzionali . . . . . . . . . . . . . . . . . . . . . 364 11.4.3 Mappatura tra elemento di riferimento e elemento fisico . . . . . . 365 11.4.4 La costruzione dei sistemi locali e di quello globale . . . . . . . . . 369 11.4.5 La prescrizione delle condizioni al bordo . . . . . . . . . . . . . . . . . . 373 11.5 L’integrazione in tempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376 11.6 Ed ora consideriamo un esempio completo . . . . . . . . . . . . . . . . . . . . . . . 379 12 Generazione di griglie nel caso bidimensionale . . . . . . . . . . . . . . . . . . . . . . 389 12.1 Reticolazione di un dominio poligonale . . . . . . . . . . . . . . . . . . . . . . . . . . 389 12.2 Generazione di griglie strutturate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 392 12.3 Generazione di griglie non strutturate . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 12.3.1 Triangolazione di Delaunay . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 395 12.3.2 Tecnica di avanzamento del fronte . . . . . . . . . . . . . . . . . . . . . . . . 397 12.4 Tecniche di regolarizzazione . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 398 12.4.1 Scambio delle diagonali . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399 12.4.2 Movimento dei nodi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 400 13 Il metodo dei volumi finiti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 13.1 Alcuni principi elementari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 13.2 La costruzione dei volumi di controllo per schemi vertex-centered . . . . 406 13.3 Discretizzazione di un problema di diffusione-trasporto-reazione . . . . . 409 13.4 Analisi dell’approssimazione ai volumi finiti . . . . . . . . . . . . . . . . . . . . . . 411 13.5 Implementazione delle condizioni al bordo . . . . . . . . . . . . . . . . . . . . . . . 412 13.6 Cenni alla discretizzazione delle equazioni di Navier-Stokes . . . . . . . . . 413 Appendice A Richiami di analisi funzionale . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 A.1 Funzionali e forme bilineari . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 A.2 Richiami sulle distribuzioni . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418 A.2.1 Le funzioni a quadrato sommabile . . . . . . . . . . . . . . . . . . . . . . . . 420 A.2.2 Derivazione nel senso delle distribuzioni . . . . . . . . . . . . . . . . . . . 422
X
Indice
A.3 Gli spazi di Sobolev . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 A.3.1 Regolarità degli spazi Hk (Ω) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 A.3.2 Lo spazio H10 (Ω) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 A.3.3 Gli operatori di traccia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 A.4 Lo spazio L∞(Ω) e gli spazi Lp (Ω) con 1 ≤ p < ∞ . . . . . . . . . . . . . . . . . 427 A.5 Esercizi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 Appendice B Algoritmi di risoluzione di sistemi lineari . . . . . . . . . . . . . . . . . 431 B.1 Metodi diretti . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431 B.2 Metodi iterativi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 Riferimenti bibliografici . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 Indice analitico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 447
Prefazione
Queste note sono tratte dalle lezioni di “Metodi Numerici per l’Ingegneria” tenute presso il Politecnico di Milano e da quelle di “Analyse Numérique des Équations aux Dérivées Partielles” svolte presso l’EPFL (École Polytechnique Fédérale de Lausanne). Esse costituiscono una introduzione elementare alla modellistica numerica di problemi differenziali alle derivate parziali, sia stazionari che evolutivi. L’enfasi è posta soprattutto su problemi lineari, ellittici, parabolici e iperbolici. Tuttavia si considerano anche alcuni problemi non lineari, quali le leggi di conservazione e le equazioni di Navier-Stokes per la meccanica dei fluidi. Numerosi esempi di interesse fisico motivano i modelli differenziali che vengono illustrati. Di ognuna delle classi di problemi considerati si illustrano le principali proprietà matematiche e se ne fornisce la cosiddetta formulazione debole, o integrale, che sta alla base del metodo di Galerkin. Indi, come caso notevole del metodo di Galerkin, si introduce il metodo degli elementi finiti, dapprima per problemi ai limiti monodimensionali, quindi nel caso multidimensionale. Se ne analizzano le proprietà di stabilità e di convergenza, si illustrano gli aspetti algoritmici e quelli relativi alla implementazione su calcolatore. Altri metodi, quali le differenze finite ed i metodi spettrali, vengono pure considerati, nell’ambito della risoluzione numerica di problemi specifici. Numerosi esercizi corredano i diversi capitoli allo scopo di fornire al lettore la possibilità di acquisire maggiore consapevolezza sui principali argomenti trattati. Il testo è diviso in Capitoli, Sezioni e Sottosezioni. Il Capitolo 1 è dedicato ad un breve richiamo delle equazioni alle derivate parziali ed alla loro classificazione. Nel Capitolo 2 vengono introdotte le equazioni ellittiche (quali i problemi di Laplace e Poisson) e la loro formulazione integrale per condizioni al bordo di tipo generale, dapprima nel caso monodimensionale, poi in quello multidimensionale. Il Capitolo 3 è dedicato al metodo di approssimazione di Galerkin in generale ed al metodo degli elementi finiti in particolare. Nel Capitolo 4 si illustrano i metodi spettrali, ovvero metodi di Galerkin con sottospazi di polinomi globali, e la loro generalizzazione ai metodi pseudo-spettrali (o di collocazione) da un lato ed al metodo degli elementispettrali dall’altro. Durante la lettura di questi capitoli il lettore troverà numerosi rinvii alle Appendici. In particolare, nell’Appendice A si introducono alcuni elementari con-
XII
Prefazione
cetti di analisi funzionale, di teoria delle distribuzioni e di spazi di Sobolev, necessari per una corretta comprensione della formulazione debole (o integrale) dei problemi ai limiti. Nell’Appendice B si richiamano invece alcuni fra gli algoritmi più frequentemente utilizzati per la risoluzione di sistemi lineari generati dalla discretizzazione di problemi alle derivate parziali. Nel Capitolo 5 si introducono i problemi di diffusione e trasporto, si illustrano le difficoltà che derivano dalla presenza di strati limite nella soluzione e si discutono metodi di stabilizzazione, basati su differenze finite ed elementi finiti con opportuna viscosità numerica. Il Capitolo 6 è dedicato ai problemi parabolici, descriventi processi di diffusione, per i quali si usano metodi di discretizzazione spaziale con elementi finiti e temporale con differenze finite. I Capitoli 7, 8 e 9 riguardano i problemi iperbolici, inerenti fenomeni di propagazione di onde. Ci concentreremo soprattutto sul caso dei problemi monodimensionali, al fine di analizzare in dettaglio le proprietà di dissipazione e di dispersione dei diversi schemi numerici che vengono considerati. Il Capitolo 10 è dedicato all’approssimazione delle equazioni di Navier-Stokes e ad una breve analisi dei problemi inerenti il soddisfacimento del vincolo di incomprimibilità. Infine nei Capitoli 11 e 12 (scritti in collaborazione con F. Saleri e L. Formaggia) si illustrano gli aspetti relativi alla programmazione del metodo degli elementi finiti. Questo testo è stato scritto per gli studenti di discipline scientifiche, interessati alla modellistica per la risoluzione numerica di problemi differenziali, ma può essere utile anche a ricercatori e studiosi desiderosi di avvicinarsi a questo interessante ramo della matematica applicata. Milano e Losanna, marzo 2000
Alfio Quarteroni
In questa terza edizione sono stati riveduti ed ampliati tutti i Capitoli, ed in modo particolare il quarto dedicato ai metodi spettrali, il sesto per ciò che concerne l’analisi di problemi parabolici, l’ottavo relativamente all’approssimazione spettrale di problemi iperbolici, ed infine i Capitoli 11 e 12 concernenti gli aspetti implementativi del metodo agli elementi finiti. In particolare, il Capitolo 11 è scritto in collaborazione con A. Veneziani e L. Formaggia e riporta esempi di programmazione in C++ (un linguaggio orientato agli oggetti). Si è inoltre aggiunto un breve Capitolo, il 13, sull’introduzione al metodo dei volumi finiti. Negli ultimi due anni sono usciti in questa stessa serie due monografie che possono essere considerate un importante compendio a questo testo: “Equazioni a derivate parziali. Metodi, modelli e applicazioni” di S. Salsa, in cui si introducono ed analizzano i problemi differenziali che vengono qui trattati, e “Applicazioni ed esercizi di modellistica numerica per problemi differenziali” di L. Formaggia, F. Saleri e A. Veneziani, che a tutti gli effetti può considerarsi di supporto a questo testo per ciò che concerne la risoluzione di problemi ed esercizi nonché per l’approfondimento delle
Prefazione
XIII
tecniche qui presentate. Segnaliamo anche il testo “Elementi di fluidodinamica” di G. Riccardi e D. Durante che, illustrando i modelli differenziali basilari della dinamica dei fluidi, può essere considerato come complementare ai Capitoli 9 e 10 inerenti la fluidodinamica numerica. Vorrei ringraziare in modo particolare Simona Perotto per il suo contributo davvero determinante, ma anche Alessandro Veneziani, Nicola Parolini e Paola Gervasio. Infine, ringrazio Francesca Bonadei di Springer per il costante aiuto e gli innumerevoli consigli finalizzati a migliorare questa nuova edizione. Milano e Losanna, 9 luglio 2006
Alfio Quarteroni
1 Richiami sulle equazioni alle derivate parziali
Scopo di questo capitolo è quello di richiamare i concetti di base relativi alle equazioni alle derivate parziali (in breve EDP). Per una più ampia trattazione si vedano [PS91], [RR04], [Pro94], [Col76], [Joh82], [Sal04].
1.1 Definizioni ed esempi Le equazioni alle derivate parziali sono equazioni differenziali contenenti derivate della funzione incognita rispetto a più variabili (temporali o spaziali). In particolare, indicata con u la funzione incognita nelle d + 1 variabili indipendenti x = (x1 , . . . , xd )T e t, denoteremo con ∂u ∂u ∂u ∂ p1 +···+pd +pt u P(u, g) = F x, t, u, , ,..., , . . . , p1 , g = 0 (1.1) ∂t ∂x1 ∂xd ∂x1 . . . ∂xpdd ∂tpt una generica EDP, essendo g l’insieme dei dati dai quali dipenderà la EDP, mentre p1 , . . . , pd , pt ∈ N. Diremo che la (1.1) è di ordine q, se q è l’ordine massimo delle derivate parziali che vi compaiono, ovvero il massimo valore assunto da p 1 + p2 + . . . pd + pt . Se la (1.1) dipende linearmente dall’incognita u e dalle sue derivate, l’equazione verrà detta lineare. In tal caso P(αu + βw, g) = αP(u, g) + βP(w, g) ∀α, β ∈ R. Nel caso particolare in cui le derivate di ordine massimo compaiono solo linearmente (con coefficienti che possono dipendere da derivate di ordine inferiore), l’equazione si dirà quasi-lineare. Si dirà semi-lineare se è quasi-lineare ed i coefficienti delle derivate di ordine massimo dipendono solo da x e t, ma non dalla soluzione u. Infine se nell’equazione non compaiono termini indipendenti dalla funzione incognita u, la EDP si dice omogenea. Elenchiamo nel seguito alcuni esempi di EDP che si incontrano frequentemente nelle scienze applicate.
2
1 Richiami sulle equazioni alle derivate parziali
Esempio 1.1 Un’equazione lineare del prim’ordine è l’equazione di trasporto (o di convezione) ∂u + ∇ · (βu) = 0, ∂t
(1.2)
avendo indicato con ∇ · v = div(v) =
d X ∂vi
∂xi i=1
,
v = (v1 , . . . , vd )T ,
l’operatore divergenza. La (1.2), integrata su una regione Ω ⊂ Rd , esprime la conservazione della massa di un sistema materiale che occupa la regione Ω. La variabile u è la densità del sistema, mentre β(x) è la velocità posseduta da una particella del sistema che all’istante t occupa la posizione x.
Esempio 1.2 Equazioni lineari del second’ordine sono l’equazione del potenziale −Δu = f,
(1.3)
che descrive la diffusione di un fluido in una regione Ω ⊂ R omogenea ed isotropa, ma anche lo spostamento verticale di una membrana elastica, l’equazione del calore (o di diffusione) d
∂u − Δu = f ∂t
(1.4)
e l’equazione delle onde ∂2u − Δu = 0. ∂t2
(1.5)
Abbiamo denotato con Δu =
d X ∂2u i=1
(1.6)
∂x2i
l’operatore di Laplace (o laplaciano).
Esempio 1.3 Un esempio di equazione quasi-lineare del prim’ordine è dato dall’equazione di Burgers ∂u ∂u = 0, +u ∂t ∂x1 mentre la sua variante ottenuta aggiungendo una perturbazione del second’ordine ∂u ∂2u ∂u = 2, +u ∂t ∂x1 ∂x1
> 0,
fornisce un esempio di equazione semi-lineare. Un’equazione non lineare, sempre del second’ordine, è „ 2 «2 „ 2 «2 ∂ u ∂ u + = f. ∂x21 ∂x22
1.2 Necessità della risoluzione numerica
3
Una funzione u = u(x 1 , . . . , xd , t) è una soluzione od un integrale particolare della (1.1), se, sostituita nella (1.1) assieme con tutte le sue derivate, rende la (1.1) una identità. L’insieme di tutte le soluzioni della (1.1) si chiama l’integrale generale. Esempio 1.4 L’equazione del trasporto nel caso monodimensionale, ∂u ∂u = 0, − ∂t ∂x1
(1.7)
ammette un integrale generale della forma u = w(x1 + t), essendo w una funzione arbitraria sufficientemente regolare (si veda l’Esercizio 2). Analogamente, l’equazione delle onde monodimensionale ∂2u ∂2u − =0 2 ∂t ∂x21
(1.8)
ammette come integrale generale u(x1 , t) = w1 (x1 + t) + w2 (x1 − t), essendo w1 e w2 due funzioni arbitrarie, sufficientemente regolari (si veda l’Esercizio 3).
Esempio 1.5 Consideriamo l’equazione del calore monodimensionale ∂u ∂2u = 0, − ∂t ∂x21 per 0 < x < 1 e t > 0, con condizioni al contorno u(0, t) = u(1, t) = 0,
t>0
e la condizione iniziale u|t=0 = u0 . La soluzione è u(x1 , t) =
∞ X 2 u0,j e−(jπ) t sin(jπx1 ), j=1
dove u0 = u|t=0 è il dato iniziale e Z1 u0,j = 2 u0 (x1 ) sin(jπx1 ) dx1 ,
j = 1, 2, . . .
0
1.2 Necessità della risoluzione numerica In generale, non è possibile ricavare per via analitica una soluzione della (1.1). In effetti, i metodi di integrazione analitica disponibili (come la tecnica di separazione delle variabili) sono di limitata applicabilità. Peraltro, anche nel caso in cui si conosca un integrale generale, non è poi detto che si riesca a determinare un integrale particolare. Per ottenere quest’ultimo bisognerà infatti assegnare opportune condizioni su u (e/o sulle sue derivate) alla frontiera del dominio Ω.
4
1 Richiami sulle equazioni alle derivate parziali
Dagli esempi forniti appare d’altra parte evidente che l’integrale generale dipende da alcune funzioni arbitrarie (e non da costanti arbitrarie, come accade per le equazioni differenziali ordinarie), di modo che l’imposizione delle condizioni comporterà la risoluzione di problemi matematici, in generale, estremamente complicati. Di conseguenza, da un punto di vista teorico, ci si deve spesso accontentare di studiare solo l’esistenza e l’unicità della soluzione di una EDP. Da ciò segue l’importanza di disporre di metodi numerici che permettano di costruire un’approssimazione u N della soluzione esatta u e di valutare (in una qualche norma) l’errore u N − u che si commette sostituendo alla soluzione esatta u la soluzione approssimata u N . L’intero positivo N denota la dimensione (finita) del problema approssimato. Schematicamente, otterremo la situazione seguente: P(u, g) = 0
EDP esatta
↓
[metodi numerici]
PN (uN , gN ) = 0
EDP approssimata
avendo indicato con g N una approssimazione dell’insieme dei dati g dai quali dipende la EDP, e con P N la nuova relazione funzionale che caratterizza il problema approssimato. Per semplicità si può porre: u = u(g), u N = uN (gN ). Presenteremo diversi metodi numerici a partire dal Cap. 3. Ci limitiamo qui a ricordarne le principali caratteristiche. Un metodo numerico è convergente se u − uN → 0
per N → ∞
in una norma opportuna. Più precisamente indichiamo con g N un’approssimazione ammissibile dell’insieme dei dati dal quale dipende la EDP, si ha convergenza se e solo se ∀ε > 0 ∃N0 (ε) > 0, ∃δ(N0 , ε) : ∀N > N0 (ε), ∀gN t.c. g − gN < δ(N0 , ε) ⇒
u(g) − uN (gN ) ≤ ε.
(La norma usata per i dati non è necessariamente la stessa usata per le soluzioni.) Verificare direttamente la convergenza di un metodo numerico può non essere agevole. Conviene piuttosto passare ad una verifica delle proprietà di consistenza e di stabilità. Un metodo numerico si dice consistente se PN (u, g) → 0 per N → ∞,
(1.9)
e fortemente consistente se PN (u, g) = 0
∀N.
Si noti che (1.9) si può formulare in modo equivalente come PN (u, g) − P(u, g) → 0 per N → ∞,
(1.10)
1.3 Classificazione delle EDP
5
essendo u la soluzione del problema esatto corrispondente al dato g. Ciò esprime la proprietà che P N (la EDP approssimata) “tenda” a P (quella esatta) per N → ∞. Diciamo invece che un metodo numerico è stabile se a piccole perturbazioni sui dati corrispondono piccole perturbazioni sulla soluzione, ovvero ∀ε > 0 ∃δ = δ(ε) > 0 : ∀δgN : δgN < δ ⇒ δuN ≤ ε, ∀N, essendo uN + δuN la soluzione del problema perturbato PN (uN + δuN , gN + δgN ) = 0. (Si veda [QSS00, Cap. 2] per approfondimenti). Il risultato fondamentale, noto come teorema di equivalenza, garantisce infine che se un metodo è consistente, allora è convergente se e solo se è stabile Nella scelta di un metodo numerico interverranno ovviamente anche altre caratteristiche, quali ad esempio la velocità di convergenza (ovvero l’ordine rispetto ad 1/N con cui l’errore tende a zero) ed il costo computazionale, ovvero il tempo di calcolo e la memoria richiesta per l’implementazione del metodo stesso su calcolatore.
1.3 Classificazione delle EDP Le equazioni differenziali possono essere classificate in base alla loro formulazione matematica in tre famiglie diverse: equazioni ellittiche, paraboliche ed iperboliche, per ognuna delle quali si considerano metodi numerici specifici. Limitiamoci al caso di EDP del second’ordine lineari, a coefficienti costanti, della forma Lu = A
∂2u ∂2u ∂2u ∂u ∂u +B +C 2 +D +E + F u = G, 2 ∂x1 ∂x1 ∂x2 ∂x2 ∂x1 ∂x2
(1.11)
con A, B, C, D, E, F ∈ R (si noti che una qualunque delle variabili x i potrebbe rappresentare la variabile temporale). In tal caso, la classificazione si effettua in base al segno del cosiddetto discriminante, = B 2 − 4AC. In particolare: se < 0 se = 0 se > 0
l’equazione si dice ellittica, l’equazione si dice parabolica, l’equazione si dice iperbolica.
Esempio 1.6 L’equazione delle onde (1.8) è iperbolica, mentre l’equazione del potenziale (1.3) è ellittica. Un esempio di problema parabolico è dato dall’equazione del calore (1.4), ma anche dalla seguente equazione di diffusione-trasporto ∂u − μΔu + ∇ · (βu) = 0. ∂t in cui μ > 0, e β è un campo vettoriale assegnato.
6
1 Richiami sulle equazioni alle derivate parziali
Il criterio introdotto fa dipendere la classificazione dai soli coefficienti delle derivate di ordine massimo e si giustifica con il seguente argomento. Come si ricorderà, l’equazione algebrica quadratica Ax21 + Bx1 x2 + Cx22 + Dx1 + Ex2 + F = G, rappresenta nel piano cartesiano (x 1 , x2 ) un’iperbole, una parabola od un’ellisse a seconda che sia positivo, nullo o negativo. Questo parallelo con le coniche motiva il nome attribuito alle tre classi di operatori alle derivate parziali. Indaghiamo più in profondità le differenze tra le tre classi. Supponiamo, senza che ciò sia restrittivo, che D, E, F e G siano nulli. Cerchiamo un cambio di variabili della forma ξ = αx2 + βx1 , η = γx2 + δx1 ,
(1.12)
con α, β, γ e δ da scegliersi in modo che Lu diventi multiplo di ∂ 2 u/∂ξ∂η. Essendo Lu = (Aβ 2 + Bαβ + Cα2 )
∂2u ∂ξ 2
∂2u ∂2u + (Aδ 2 + Bγδ + Cγ 2 ) 2 , +(2Aβδ + B(αδ + βγ) + 2Cαγ) ∂ξ∂η ∂η
(1.13)
si dovrà richiedere che Aβ 2 + Bαβ + Cα2 = 0, Aδ 2 + Bγδ + Cγ 2 = 0.
(1.14)
Se A = C = 0, la trasformazione banale ξ = x 2 , η = x1 (ad esempio) fornisce Lu nella forma desiderata. Supponiamo allora che A o C siano non nulli. Non è restrittivo supporre A = 0. Allora se α = 0 e γ = 0, possiamo dividere la prima equazione della (1.14) per α 2 e la seconda per γ 2 . Troviamo due equazioni quadratiche identiche per le frazioni β/α e δ/γ. Risolvendole, si ha 1 β = −B ± , α 2A
1 δ = −B ± . γ 2A
Affinché la trasformazione (1.12) sia non singolare, i quozienti β/α e δ/γ devono essere diversi. Dobbiamo pertanto prendere il segno positivo in un caso, quello negativo nell’altro ed inoltre assumere > 0. Se fosse nullo infatti le due frazioni sarebbero ancora coincidenti. Infine, se fosse negativo nessuna frazione potrebbe essere reale. Una soluzione è pertanto fornita da: α = γ = 2A, β = −B + , δ = −B − . Corrispondentemente, √ √ ξ = 2Ax2 + −B + x1 , η = 2Ax2 + −B − x1 ,
1.3 Classificazione delle EDP
7
ed il problema differenziale trasformato diventa Lu = − 4AΔ
∂2u = 0. ∂ξ∂η
(1.15)
Il caso A = 0 può essere trattato in modo analogo prendendo ξ = x 1 , η = −Bx2 /C + x1 . Concludendo, Lu può diventare un multiplo di ∂ 2 u/∂ξ∂η secondo la trasformazione (1.12) se e solo se > 0 ed in tal caso, come abbiamo anticipato, il problema è detto iperbolico. È facile verificare che la soluzione generale del problema (1.15) è u = p(ξ) + q(η), essendo p e q funzioni differenziabili di una variabile, arbitrarie. Le linee ξ = costante e η = costante sono dette le caratteristiche di L e sono caratterizzate dal fatto che su di esse le funzioni p e q si mantengono rispettivamente costanti. In particolare, eventuali discontinuità della soluzione u, si propagano lungo le caratteristiche (lo si vedrà più in dettaglio nel Cap. 7). In effetti, identificando x 1 con t e x2 con x, la trasformazione x = x −
B t, t = t, 2A
trasforma l’operatore iperbolico (con A = 0) Lu = A
∂2u ∂2u ∂2u +C 2 +B 2 ∂t ∂t∂x ∂x
in un multiplo dell’operatore delle onde Lu =
∂2u ∂2u − c2 2 , con C = −B/2A. 2 ∂t ∂x
Dunque L è l’operatore delle onde in un sistema di coordinate che si muove con velocità −B/2A. Le caratteristiche dell’operatore delle onde sono le linee che verificano
dt dx
2 =
1 , c2
ovvero dt 1 = dx c
e
dt 1 =− . dx c
Se invece = 0, come detto, L è parabolico. In tal caso esiste un solo valore di β/α in corrispondenza del quale il coefficiente di ∂ 2 u/∂ξ 2 in (1.13) si annulla. Precisamente, β/α = −B/(2A). Peraltro, essendo B/(2A) = 2C/B, questa scelta comporta anche che il coefficiente di ∂ 2 u/∂ξ∂η si annulli. Di conseguenza, la trasformazione
8
1 Richiami sulle equazioni alle derivate parziali
ξ = 2Ax2 − Bx1 , η = x1 , trasforma il problema originario nel seguente A
∂2u = 0, ∂η 2
la cui soluzione generale ha la forma u = p(ξ) + ηq(ξ). Un operatore parabolico ha dunque solo una famiglia di caratteristiche, precisamente ξ = costante. Le discontinuità nelle derivate di u si propagano lungo tali caratteristiche. Infine, se < 0 (operatori ellittici) non esiste alcuna scelta di β/α o δ/γ che renda nulli i coefficienti ∂ 2 u/∂ξ 2 e ∂ 2 u/∂η 2 . Tuttavia, la trasformazione 2Ax2 − Bx1 ξ=√ , η = x1 , 4AC − B 2 trasforma Lu in
Lu = A
∂2u ∂2u + 2 ∂ξ 2 ∂η
,
ossia in un multiplo dell’equazione del potenziale. Essa non ha perciò alcuna famiglia di caratteristiche.
1.3.1 Forma quadratica associata ad una EDP All’equazione (1.11) si può associare il cosiddetto simbolo principale S p definito da S p (x, q) = − A(x)q12 − B(x)q1 q2 − C(x)q22 . Questa forma quadratica in q 1 q2 si può rappresentare in forma matriciale come segue: ⎤ ⎡ 1 ⎢ −A(x) − 2 B(x) ⎥ (1.16) S p (x, q) = qT ⎣ 1 ⎦ q. − B(x) − C(x) 2 Una forma quadratica è detta definita se la matrice associata ha autovalori tutti dello stesso segno (positivi o negativi); è indefinita se la matrice ha autovalori di entrambi i segni; è degenere se la matrice è singolare. Si può allora dire che l’equazione (1.11) è ellittica se la forma quadratica (1.16) è definita (positiva o negativa), iperbolica se è indefinita, parabolica se è degenere. Le matrici associate all’equazione del potenziale (1.3), del calore (1.4) (in una dimensione) e delle onde (1.5) sono date rispettivamente da
1.4 Esercizi
0 1 0 , 0 0 1
0 1
e
−1 0 0 1
9
e sono definita positiva nel primo caso, singolare nel secondo, indefinita nel terzo.
1.4 Esercizi 1. Si classifichino, in base all’ordine ed alla linearità, le seguenti equazioni: 2 2 2 2 ∂u ∂ u ∂ u ∂u ∂u ∂ 2 u ∂u (a) 1+ −2 + 1+ = 0, ∂x1 ∂x22 ∂x1 ∂x2 ∂x1 ∂x2 ∂x2 ∂x21 (b)
ρ
∂2u ∂4u + K 4 = f, 2 ∂t ∂x1
(c)
∂u ∂x1
2
+
∂u ∂x2
2
= f.
[Soluzione: (a) quasi-lineare, del second’ordine; si tratta dell’equazione di Plateau che regola, sotto opportune ipotesi, il moto piano di un fluido. La u che compare è il cosiddetto potenziale cinetico; (b) lineare, del quart’ordine. È l’equazione della verga vibrante, ρ è la densità della verga, mentre K è una quantità positiva che dipende dalle caratteristiche geometriche della verga stessa; (c) non lineare, del prim’ordine.] 2. Si riduca l’equazione del trasporto monodimensionale (1.7) ad una equazione della forma ∂w/∂y = 0, avendo posto y = x 1 − t e si ricavi che u = w(x1 + t) è soluzione dell’equazione di partenza. [Soluzione: si effettui il cambio di variabili z = x 1 + t, y = x1 − t, u(x1 , t) = w(y, z). In tal modo ∂u/∂x1 = ∂w/∂z + ∂w/∂y, mentre ∂u/∂t = ∂w/∂z − ∂w/∂y, e dunque, −2∂w/∂y = 0. Si osservi a questo punto che l’equazione così ottenuta ammette una soluzione w(y, z) che non dipende da y e dunque, usando le variabili originarie, u = w(x 1 + t).] 3. Si dimostri che l’equazione delle onde ∂ 2u ∂ 2u − c2 2 = 0, 2 ∂t ∂x1 con c costante, ammette come soluzione u(x 1 , t) = w1 (x1 + ct) + w2 (x1 − ct), con w1 , w2 due funzioni arbitrarie sufficientemente regolari. [Soluzione: si proceda come nell’Esercizio 2, impiegando il cambio di variabili y = x1 + ct, z = x1 − ct e ponendo u(x 1 , t) = w(y, z).]
10
1 Richiami sulle equazioni alle derivate parziali
4. Si verifichi che l’equazione di Korteveg-de-Vries ∂u ∂u ∂3u +β + α 3 = 0, ∂t ∂x1 ∂x1 ammette l’integrale generale della forma u = a cos(kx 1 −ωt) con ω opportuno da determinarsi, a, β ed α costanti assegnate. Questa equazione descrive la posizione u di un fluido rispetto ad una posizione di riferimento, in presenza di propagazione di onde lunghe. [Soluzione: la u data soddisfa l’equazione solo se ω = kβ − αk 3 .] 5. Si consideri l’equazione x21
∂2u ∂2u − x22 2 = 0 2 ∂x1 ∂x2
con x1 x2 = 0. La si classifichi e si determino le linee caratteristiche. 6. Si consideri la generica equazione differenziale semi-lineare del second’ordine a(x1 , x2 )
∂2u ∂2u ∂2u + 2b(x , x ) + c(x , x ) + f (u, ∇u) = 0. 1 2 1 2 ∂x21 ∂x1 ∂x2 ∂x22
Si scriva l’equazione delle linee caratteristiche e si deduca da essa la classificazione dell’equazione proposta, commentando le varie situazioni. 7. Si ponga r(x) = |x| = (x21 +x22 )1/2 e si definisca u(x) = ln(r(x)), x ∈ R2 \{0}. Si verifichi che Δu(x) = 0, x ∈ Ω, ¯ ⊂ R2 \{0}. dove Ω è un qualunque insieme aperto tale che Ω [Soluzione: si osservi che 2x2i 1 uxi xi = 2 1 − 2 , i = 1, 2.] r r
2 Equazioni di tipo ellittico
Questo capitolo è dedicato all’introduzione di problemi ellittici ed alla loro formulazione debole. Pur essendo la nostra trattazione alquanto elementare, prima di affrontarne la lettura, il lettore che fosse completamente a digiuno di conoscenze di Analisi Funzionale è invitato a consultare l’Appendice A.
2.1 Un esempio di problema ellittico: l’equazione di Poisson Si consideri un dominio (ovvero un insieme aperto) Ω ⊂ R 2 limitato e connesso e sia ∂Ω la sua frontiera. Denoteremo con x la coppia di variabili spaziali (x 1 , x2 ). Il problema oggetto del nostro esame è −Δu = f
in Ω,
(2.1)
dove f = f (x) è una funzione assegnata e il simbolo Δ denota l’operatore laplaciano (1.6) in due dimensioni. La (2.1) è un’equazione ellittica del second’ordine, lineare, non omogenea (se f = 0). Chiameremo la (2.1) la formulazione forte dell’equazione di Poisson. Ricordiamo inoltre che, nel caso in cui f = 0, l’equazione (2.1) è nota come equazione di Laplace. Fisicamente u può rappresentare lo spostamento verticale di una membrana elastica dovuto all’applicazione di una forza specifica pari ad f , oppure la distribuzione di potenziale elettrico dovuta ad una densità di carica elettrica f . Per avere un’unica soluzione, alla (2.1) vanno aggiunte delle opportune condizioni al contorno, occorrono cioè delle informazioni relative al comportamento della soluzione u sulla frontiera ∂Ω del dominio. Si può ad esempio assegnare il valore dello spostamento u sul bordo u=g
su ∂Ω,
(2.2)
dove g è una funzione assegnata, e si parlerà in tal caso di un problema di Dirichlet. Il caso in cui g = 0 si dice omogeneo.
12
2 Equazioni di tipo ellittico
In alternativa si può imporre il valore della derivata normale di u ∇u · n =
∂u =h ∂n
su ∂Ω,
essendo n la normale uscente ad Ω e h una funzione assegnata. Il problema associato si dice problema di Neumann e corrisponde, nel caso del problema della membrana, ad aver imposto la trazione al bordo della membrana stessa. Anche stavolta il caso h = 0 si dirà omogeneo. Si possono infine assegnare su porzioni diverse del bordo del dominio computazionale Ω, condizioni di tipo diverso. Ad esempio, supponendo che ∂Ω = Γ D ∪ ΓN ◦
◦
con Γ D ∩ Γ N = ∅, si possono imporre le condizioni u=g su ΓD , ∂u = h su ΓN . ∂n ◦
Si è utilizzata la notazione Γ per indicare l’interno di Γ . Si dice in tal caso che il problema associato è di tipo misto. Anche nel caso di Dirichlet omogeneo in cui f sia una funzione continua in Ω (la chiusura di Ω), non è detto che il problema (2.1), (2.2) ammetta soluzione regolare. Ad esempio, se Ω = (0, 1) × (0, 1) e f = 1, u non potrebbe appartenere allo spazio C 2 (Ω). Infatti, se così fosse, avremmo −Δu(0, 0) = −
∂2u ∂ 2u (0, 0) − (0, 0) = 0 ∂x21 ∂x22
in quanto le condizioni al bordo imporrebbero u(x 1 , 0) = u(0, x2 ) = 0 ∀x1 ∈ [0, 1], ∀x2 ∈ [0, 1]. Dunque u non potrebbe verificare l’equazione (2.1), ovvero −Δu = 1 in (0, 1) × (0, 1). In conclusione, anche se f ∈ C 0 (Ω), non ha senso in generale cercare una soluzione u ∈ C 2 (Ω) di (2.1), (2.2), mentre si hanno maggiori probabilità di trovare una soluzione u ∈ C 2 (Ω) ∩ C 0 (Ω) (uno spazio più grande di C 2 (Ω) !). Siamo pertanto interessati a trovare una formulazione alternativa a quella forte anche perché, come vedremo nella prossima sezione, essa non consente di trattare alcuni casi fisicamente significativi. Ad esempio, non è detto che, in presenza di dati poco regolari, la soluzione fisica stia nello spazio C 2 (Ω) ∩ C 0 (Ω), ma nemmeno in C 1 (Ω) ∩ C 0 (Ω).
2.2 Il problema di Poisson nel caso monodimensionale Al fine di introdurre la forma debole di un problema differenziale, iniziamo ad occuparci di un problema ai limiti in una dimensione.
2.2 Il problema di Poisson nel caso monodimensionale
13
2.2.1 Problema di Dirichlet omogeneo Consideriamo il problema di Dirichlet omogeneo nel caso monodimensionale: −u (x) = f (x), 0 < x < 1, u(0) = 0, u(1) = 0.
(2.3)
In tal caso Ω è l’intervallo (0, 1). Questo problema governa, ad esempio, la configurazione di equilibrio di un filo elastico con tensione pari ad uno, fissato agli estremi, in regime di piccoli spostamenti e soggetto ad una forza trasversale di intensità f . La forza complessiva agente sul tratto (0, x) del filo è x F (x) = f (t)dt. 0
La funzione u descrive lo spostamento verticale del filo rispetto alla posizione di riposo u = 0.
0.5
0
1
0
x
−1
0.5
0
0.6
1
0.4
0.6
1
x
−1
1
0
x
x
u(x)
u(x)
0.25
0.4
−0.4
Figura 2.1. A sinistra, viene riportata la configurazione di equilibrio del filo corrispondente al carico unitario concentrato in x = 0.5, rappresentato nella parte superiore della figura. A destra, quella relativa a due carichi unitari concentrati in x = 0.4 e x = 0.6, rappresentati sempre nella parte superiore
La formulazione forte (2.3) non è in generale adeguata. Se si considera, ad esempio, il caso in cui il filo elastico sia sottoposto ad un carico concentrato in uno o più punti (in tal caso f è rappresentabile attraverso delle “delta” di Dirac), la soluzione fisica esiste ed è continua, ma non derivabile. Si vedano i grafici nella Fig. 2.1, dove è considerato il caso di un carico unitario concentrato nel solo punto x = 0.5 (a sinistra)
14
2 Equazioni di tipo ellittico
f (x) 0
0.4
0.6
1 x
−1
0 −0.01
0.4
0.6
1 x
u(x)
−0.02 −0.03 −0.04 −0.05 Figura 2.2. Spostamento relativo al carico discontinuo rappresentato nella parte superiore della figura
e nei due punti x = 0.4 e x = 0.6 (a destra). Queste funzioni non possono essere soluzioni della (2.3), in quanto quest’ultima richiederebbe alla soluzione di essere dotata di derivata seconda continua. Analoghe considerazioni valgono nel caso in cui f sia una funzione costante a tratti. Ad esempio, nel caso rappresentato in Fig. 2.2 di un carico nullo fuorché nell’intervallo [0.4, 0.6] in cui esso vale 1, la soluzione analitica è solo di classe C 1 ([0, 1]), essendo data da ⎧ 1 ⎪ − x ⎪ ⎪ 10 ⎪ ⎪ ⎨ 1 2 1 2 u(x) = x − x+ ⎪ 2 2 25 ⎪ ⎪ ⎪ ⎪ ⎩ − 1 (1 − x) 10
per x ∈ [0, 0.4], per x ∈ [0.4, 0.6], per x ∈ [0.6, 1].
Serve dunque una formulazione del problema alternativa a quella forte che consenta di ridurre l’ordine di derivazione richiesto sulla soluzione incognita u. Passeremo da un problema differenziale del secondo ordine ad uno in forma integrale del primo ordine. Questo problema sarà chiamato la formulazione debole del problema differenziale. Operiamo a tale scopo alcuni passaggi formali nella (2.3), senza preoccuparci a questo stadio del fatto che tutte le operazioni che in essi compariranno siano lecite. Moltiplichiamo innanzitutto l’equazione (2.3) per una funzione test v (per ora arbitraria) ed integriamo sull’intervallo (0, 1),
2.2 Il problema di Poisson nel caso monodimensionale
1
−u v = f v
15
1
⇒ − u v dx = 0
f v dx. 0
Applichiamo la formula di integrazione per parti al primo integrale, con lo scopo di eliminare la derivata seconda, in modo da poter richiedere alla soluzione una minore regolarità. Si trova 1
1
− u v dx = 0
u v dx − [u v]10 .
0
Essendo u nota al bordo possiamo considerare solo funzioni test che si annullano agli estremi dell’intervallo, annullando così il contributo dei termini di bordo. In tal modo l’equazione diviene 1 1 u v dx = f v dx. (2.4) 0
0
Lo spazio delle funzioni test V dovrà pertanto essere tale che se v ∈ V allora v(0) = v(1) = 0. Si osservi che la soluzione u, essendo nulla al bordo ed avendo gli stessi requisiti di regolarità delle funzioni test, verrà cercata anch’essa nello stesso spazio V . Restano ora da precisare i requisiti di regolarità cui deve soddisfare lo spazio V , in modo che tutte le operazioni introdotte abbiano senso. Evidentemente se u e v appartenessero a C 1 ([0, 1]), avremmo u , v ∈ C 0 ([0, 1]) e quindi l’integrale che compare a primo membro della (2.4) avrebbe senso. Gli esempi di Fig. 2.1 ci dicono però che le soluzioni fisiche potrebbero non essere derivabili con continuità: dobbiamo quindi richiedere una regolarità inferiore. Inoltre, anche quando f ∈ C 0 ([0, 1]), non vi è certezza che il problema ammetta soluzioni nello spazio V = {v ∈ C 1 ([0, 1]) : v(0) = v(1) = 0}.
(2.5)
Ciò è imputabile al fatto che tale spazio vettoriale, quando lo si munisce del prodotto scalare 1 (u, v)1 = u v dx, (2.6) 0
non è uno spazio completo, ovvero non tutte le successioni di Cauchy a valori in V convergono ad un elemento di V . (Si verifichi per esercizio che (2.6) è effettivamente un prodotto scalare). Procediamo allora come segue. Ricordiamo la definizione degli spazi L p delle funzioni a potenza p-esima integrabile secondo Lebesgue definiti, per 1 ≤ p < ∞, come (si veda l’Appendice A):
16
2 Equazioni di tipo ellittico
Lp (0, 1) = {v : (0, 1) → R t.c. vLp (0,1) =
1
1/p |v(x)|p dx < +∞}.
0
1
Dato che si vuole che l’integrale 0 u v dx sia ben definito, la richiesta minima su u e v è che il prodotto u v stia in L1 (0, 1). A questo proposito, vale la seguente proprietà: Proprietà 2.1 Date due funzioni ϕ, ψ : (0, 1) → R, se ϕ2 , ψ 2 sono integrabili allora ϕψ è integrabile ossia ϕ, ψ ∈ L2 (0, 1) =⇒ ϕψ ∈ L1 (0, 1). Dimostrazione. Se ϕ, ψ ∈ L2 (0, 1), vale la disuguaglianza di Cauchy-Schwarz 1 ϕ(x)ψ(x) dx ≤ ϕL2 (0,1) ψL2 (0,1) . (2.7) 0
Essendo ϕL2 (0,1) , ψL2 (0,1) < ∞ per ipotesi, ciò prova che esiste (finito) anche l’integrale di ϕψ. Per dare un significato agli integrali che compaiono nella (2.4) bastano dunque funzioni a quadrato integrabile con derivate a quadrato integrabile. Definiamo pertanto lo spazio di Sobolev H1 (0, 1) = {v ∈ L2 (0, 1) : v ∈ L2 (0, 1)}. La derivata è da intendere nel senso delle distribuzioni (si veda l’Appendice A). Scegliamo dunque come spazio V il seguente sottospazio di H 1 (0, 1), H10 (0, 1) = {v ∈ H1 (0, 1) : v(0) = v(1) = 0}, costituito dalle funzioni di H 1 (0, 1) che sono nulle agli estremi dell’intervallo. Se supponiamo f ∈ L 2 (0, 1) anche l’integrale a secondo membro della (2.4) ha senso. Il problema (2.3) viene dunque ricondotto al seguente problema integrale, 1 trovare u ∈ V :
1
u v dx = 0
con V = H10 (0, 1).
f v dx 0
∀v ∈ V,
(2.8)
2.2 Il problema di Poisson nel caso monodimensionale
17
Osservazione 2.1 Lo spazio H 10 (0, 1) risulta essere effettivamente la chiusura, rispetto al prodotto scalare (2.6), dello spazio definito nella (2.5). Le funzioni di H 1 (0, 1) non sono necessariamente derivabili in senso classico, cioè H1 (0, 1) ⊂ C 1 ([0, 1]). Ad esempio, funzioni continue a tratti con raccordi a spigolo, appartengono ad H 1 (0, 1), ma non a C 1 ([0, 1]). Sono dunque contemplate anche le soluzioni continue, ma non derivabili, degli esempi precedenti. • Il problema debole (2.8) risulta equivalente ad un problema variazionale, in virtù del seguente risultato: Teorema 2.1 Il problema: ⎧ J(u) = minJ(v) con ⎪ ⎪ v∈V ⎪ ⎨ 1 1 trovare u ∈ V : 1 ⎪ 2 ⎪ ⎪ ⎩ J(v) = 2 (v ) dx − f v dx, 0
(2.9)
0
è equivalente al problema (2.8), nel senso che u è soluzione di (2.8) se e solo se u è soluzione di (2.9). Dimostrazione. Si supponga che u sia soluzione del problema variazionale (2.9). Allora, ponendo v = u + δw, con δ ∈ R, si ha che J(u) ≤ J(u + δw)
∀w ∈ V.
La funzione ψ(δ) = J(u + δw) è una funzione quadratica in δ con minimo raggiunto per δ = 0. Pertanto ∂J(u + δw) ψ (δ) = = 0. ∂δ δ=0 δ=0 Per definizione di derivata si ha ∂J(u + δw) J(u + δw) − J(u) = lim δ→0 ∂δ δ
∀w ∈ V.
Consideriamo il termine J(u + δw): J(u + δw)
=
1 2
1
1
2
[(u + δw) ] dx − 0
=
1 2
1
0 2
2
1
[u + δ w + 2δu w ] dx − 2
0
=
f (u + δw) dx
J(u) +
1 2
1 0
f u dx − 0
[δ 2 w + 2δu w ] dx − 2
1
1
f δw dx 0
f δw dx. 0
18
2 Equazioni di tipo ellittico
Di conseguenza, J(u + δw) − J(u) 1 = δ 2
1
2
1
[δw + 2u w ] dx − 0
f w dx. 0
Passando al limite per δ → 0 ed imponendo che esso si annulli, si ottiene 1
1
u w dx − 0
f w dx = 0 ∀w ∈ V, 0
ovvero u soddisfa il problema debole (2.8). Viceversa, se u è soluzione di (2.8), ponendo v = δw, si ha in particolare che 1
1
u δw dx − 0
f δw dx = 0, 0
e quindi J(u + δw)
=
1 2
1
[(u + δw) ]2 dx −
0
=
1 2
1 u
2
0
= J(u) +
1 2
1
f (u + δw) dx 0
1 dx −
1 1
f u dx + 0
1
u δw dx − 0
0
1 f δw dx + 2
1
δ 2 w dx 2
0
δ 2 w dx. 2
0
Poiché 1 2
1
δ 2 w dx ≥ 0 2
∀ w ∈ V, ∀δ ∈ R,
0
si deduce che J(u) ≤ J(v)
∀v ∈ V,
ovvero la u soddisfa anche il problema variazionale (2.9).
Osservazione 2.2 (Principio dei lavori virtuali) Consideriamo nuovamente il problema di studiare la configurazione assunta da un filo di tensione unitaria, vincolato
2.2 Il problema di Poisson nel caso monodimensionale
19
agli estremi e soggetto ad un termine forzante f , descritta dalle equazioni (2.3). Indichiamo con v uno spostamento ammissibile del filo dalla posizione di equilibrio u (cioè uno spostamento nullo agli estremi). L’equazione (2.8), esprimendo l’uguaglianza del lavoro fatto dalle forze interne e dalle forze esterne in corrispondenza allo spostamento v, traduce il principio dei lavori virtuali della meccanica. Inoltre, poiché nel nostro caso esiste un potenziale (J(w) definito in (2.9) esprime infatti l’energia potenziale globale corrispondente alla configurazione w del sistema), il principio dei lavori virtuali stabilisce che qualsiasi spostamento ammissibile dalla configurazione di equilibrio causa un incremento dell’energia potenziale del sistema. In questo senso, il Teorema 2.1 afferma che la soluzione debole è anche quella che minimizza l’energia potenziale. •
2.2.2 Problema di Dirichlet non omogeneo Nel caso non omogeneo le condizioni al bordo in (2.3) sono sostituite da u(0) = g0 , u(1) = g1 , essendo g0 e g1 due valori assegnati. Ci si può ricondurre al caso omogeneo notando che se u è soluzione del problema ◦ non omogeneo allora la funzione u= u − [(1 − x)g0 + xg1 ] è soluzione del corrispondente problema omogeneo (2.3). La funzione R g = (1 − x)g0 + xg1 è detta rilevamento del dato di bordo.
2.2.3 Problema di Neumann Passiamo ora a considerare la formulazione debole per il seguente problema di Neumann −u + σu = f, 0 < x < 1, u (0) = h0 , u (1) = h1 , essendo σ una funzione positiva e h 1 , h2 due numeri reali. Osserviamo che se fosse σ = 0 la soluzione di questo problema non sarebbe unica, essendo definita a meno di una costante additiva. Applicando lo stesso procedimento seguito nel caso del problema di Dirichlet, ovvero moltiplicando l’equazione per una funzione test v, integrando sull’intervallo (0, 1) ed applicando la formula di integrazione per parti si perviene all’equazione 1
1
u v dx + 0
σuv dx − [u 0
1 v]10
f v dx.
= 0
Supponiamo f ∈ L 2 (0, 1) e σ ∈ L∞ (0, 1) ossia che σ sia una funzione limitata quasi ovunque (q.o.) su (0, 1) (si veda la (A.8)). Il termine di bordo è noto grazie alle condizioni di Neumann. D’altra parte l’incognita u è in questo caso non nota al
20
2 Equazioni di tipo ellittico
bordo, quindi non si deve richiedere che v si annulli al bordo. La formulazione debole è quindi: trovare u ∈ H1 (0, 1) tale che 1
1
u v dx + 0
1 σuv dx =
0
f v dx + h1 v(1) − h0 v(0) ∀v ∈ H1 (0, 1).
(2.10)
0
Nel caso omogeneo h 0 = h1 = 0 il problema debole è caratterizzato dalla stessa equazione del caso di Dirichlet, ma lo spazio V delle funzioni test è ora H 1 (0, 1) anziché H10 (0, 1).
2.2.4 Problema misto omogeneo Considerazioni analoghe valgono per il problema misto omogeneo, in cui cioè si abbia una condizione di Dirichlet omogenea in un estremo ed una condizione di Neumann omogenea nell’altro, −u + σu = f, 0 < x < 1, (2.11) u(0) = 0, u (1) = 0. In tal caso si deve chiedere che le funzioni test siano nulle in x = 0. Ponendo Γ D = {0} e definendo H1ΓD (0, 1) = {v ∈ H1 (0, 1) : v(0) = 0}, la formulazione debole del problema (2.11) è: trovare u ∈ H 1ΓD (0, 1) tale che 1
1
u v dx + 0
1 σuv dx =
0
f v dx
∀v ∈ H1ΓD (0, 1),
0
con f ∈ L2 (0, 1) e σ ∈ L∞ (0, 1). La formulazione è nuovamente la stessa del problema di Dirichlet omogeneo, cambia però lo spazio in cui si cerca la soluzione.
2.2.5 Condizioni al bordo miste (o di Robin) Si consideri infine il seguente problema −u + σu = f, 0 < x < 1, u(0) = 0, u (1) + γu(1) = r, dove γ > 0 e r sono valori assegnati. Anche in questo caso si utilizzeranno funzioni test nulle in x = 0, essendo ivi noto il valore di u. Il termine di bordo per x = 1, derivante dall’integrazione per parti, non fornisce più, a differenza del caso di Neumann, una quantità nota, ma un termine proporzionale all’incognita u. Infatti si ha −[u v]10 = −rv(1) + γu(1)v(1).
2.3 Il problema di Poisson nel caso bidimensionale
21
La formulazione debole è dunque: trovare u ∈ H 1ΓD (0, 1) tale che 1
1
u v dx + 0
1 σuv dx + γu(1)v(1) =
0
f v dx + rv(1)
∀v ∈ H1ΓD (0, 1).
0
Una condizione al bordo che sia una combinazione lineare tra il valore di u e quello della sua derivata prima è detta condizione di Robin (o di Newton, o del terzo tipo).
2.3 Il problema di Poisson nel caso bidimensionale Consideriamo in questa sezione i problemi ai limiti associati all’equazione di Poisson nel caso bidimensionale.
2.3.1 Il problema di Dirichlet omogeneo Il problema consiste nel trovare u tale che −Δu = f in Ω, u=0 su ∂Ω,
(2.12)
dove Ω ⊂ R2 è un dominio limitato con frontiera ∂Ω. Si procede in maniera analoga al caso monodimensionale. Se moltiplichiamo l’equazione differenziale della (2.12) per una funzione arbitraria v ed integriamo su Ω, troviamo −
Δuv dΩ =
Ω
f v dΩ. Ω
A questo punto occorre applicare un analogo in più dimensioni della formula di integrazione per parti monodimensionale. Essa può essere ottenuta impiegando il teorema della divergenza secondo il quale
div(a) dΩ = Ω
a · n dγ,
(2.13)
∂Ω
essendo a(x) = (a1 (x), a2 (x))T una funzione vettoriale sufficientemente regolare, n(x) = (n1 (x), n2 (x))T il versore normale uscente a Ω ed avendo denotato con x = (x1 , x2 )T il vettore delle coordinate spaziali. Se si applica la (2.13) prima alla funzione a = (ϕψ, 0)T e successivamente ad a = (0, ϕψ)T , si perviene alle relazioni Ω
∂ϕ ψ dΩ = − ∂xi
Ω
∂ψ ϕ dΩ + ∂xi
ϕψni dγ, i = 1, 2. ∂Ω
(2.14)
22
2 Equazioni di tipo ellittico
Sfruttiamo le (2.14) tenendo conto del fatto che Δu = div∇u =
2 i=1
Supponendo che tutti gli integrali che compaiono abbiano senso, si trova 2 ∂ ∂u v dΩ − Δuv dΩ = − ∂xi ∂xi i=1 Ω Ω 2 2 ∂u ∂v ∂u = dΩ − vni dγ ∂xi ∂xi ∂xi i=1 Ω i=1∂Ω ! 2 2 ∂u ∂v ∂u dΩ − ni v dγ. = ∂xi ∂xi ∂xi i=1 i=1 Ω
∂ ∂u . ∂xi ∂xi
∂Ω
Si perviene alla relazione seguente, detta formula di Green per il laplaciano ∂u − Δuv dΩ = ∇u · ∇v dΩ − v dγ. ∂n Ω
Ω
(2.15)
∂Ω
Analogamente al caso monodimensionale, il problema di Dirichlet omogeneo ci porterà a scegliere funzioni test nulle al bordo e, conseguentemente, il termine al contorno che compare nella (2.15) sarà a sua volta nullo. Tenendo conto di questo fatto, giungiamo alla seguente formulazione debole per il problema (2.12): trovare u ∈ H10 (Ω) : ∇u · ∇v dΩ = f v dΩ ∀v ∈ H10 (Ω), (2.16) Ω
Ω
con f ∈ L (Ω) ed avendo posto 2
∂v ∈ L2 (Ω), i = 1, 2}, ∂xi H10 (Ω) = {v ∈ H1 (Ω) : v = 0 su ∂Ω}.
H1 (Ω) = {v : Ω→R t.c. v ∈ L2 (Ω),
Le derivate vanno intese nel senso delle distribuzioni e la condizione v = 0 su ∂Ω nel senso delle tracce (si veda l’Appendice A). In particolare, osserviamo che se u, v ∈ H 10 (Ω), allora ∇u, ∇v ∈ [L2 (Ω)]2 e quindi ∇u · ∇v ∈ L1 (Ω). Quest’ultima proprietà si ottiene applicando la seguente disuguaglianza |(f, g)L2 (Ω) | = f g dΩ ≤ f L2 (Ω) gL2 (Ω) , Ω
detta disuguaglianza di Cauchy-Schwarz. Abbiamo indicato con " f L2 (Ω) =
|f |2 dΩ Ω
2.3 Il problema di Poisson nel caso bidimensionale
23
la norma di f in L 2 (Ω) (si veda l’Appendice A). Dunque l’integrale che compare a sinistra della (2.16) ha perfettamente senso così come quello che compare a destra, a patto di richiedere f ∈ L 2 (Ω). Analogamente al caso monodimensionale, anche nel caso bidimensionale si dimostra che il problema (2.16) è equivalente al seguente problema variazionale: ⎧ J(u) = inf J(v) con ⎪ ⎪ ⎨ v∈V trovare u ∈ V : 1 2 ⎪ J(v) = |∇v| dΩ − f v dΩ, ⎪ ⎩ 2 Ω
Ω
avendo posto V = H 10 (Ω). Possiamo riscrivere la formulazione debole (2.16) in un modo più compatto introducendo la seguente forma a : V × V → R, a(u, v) =
∇u · ∇v dΩ
(2.17)
Ω
ed il seguente funzionale f v dΩ
F : V → R, F (v) = Ω
(funzionali e forme sono introdotti nell’Appendice A). Il problema (2.16) diventa allora: trovare u ∈ V : a(u, v) = F (v) ∀v ∈ V. Notiamo che a(·, ·) è una forma bilineare (ovvero lineare rispetto ad entrambi i suoi argomenti), mentre F è un funzionale lineare. Supponendo f ∈ L 2 (Ω) si ha che |F (v)| ≤ f L2 (Ω) vL2 (Ω) ≤ f L2 (Ω) vH1 (Ω) . Di conseguenza, F è anche limitato. Infatti, grazie alla definizione (A.2) dell’Appendice A, la sua norma è F V =
|F (v)| , v∈V \{0} vV sup
e pertanto si conclude che F V ≤ f L2 (Ω) . Per un noto teorema dell’Analisi, essendo F lineare e limitato è anche continuo e, di conseguenza, F appartiene a V , lo spazio duale di V , ovvero l’insieme dei funzionali lineari e continui definiti su V (si veda l’Appendice A.1).
24
2 Equazioni di tipo ellittico
2.3.2 Equivalenza, nel senso delle distribuzioni, tra la forma debole e la forma forte del problema di Dirichlet Vogliamo dimostrare che le equazioni del problema (2.12) vengono realmente soddisfatte dalla soluzione debole, anche se solo nel senso delle distribuzioni. Per fare questo riprendiamo la sua formulazione debole (2.16). Sia ora D(Ω) lo spazio delle funzioni infinitamente derivabili ed a supporto compatto in Ω (si veda l’Appendice A). Ricordiamo che D(Ω) ⊂ H 10 (Ω). Scegliendo allora v = ϕ ∈ D(Ω) nella (2.16), avremo ∇u · ∇ϕ dΩ = f ϕ dΩ ∀ϕ ∈ D(Ω). (2.18) Ω
Ω
Applicando la formula di Green (2.15) al primo membro della (2.18), troviamo ∂u ϕ dγ = f ϕ dΩ ∀ϕ ∈ D(Ω), − Δuϕ dΩ + ∂n Ω
∂Ω
Ω
dove gli integrali vanno intesi nel senso delle dualità, ovvero: − Δuϕ dΩ = D (Ω) < −Δu, ϕ >D(Ω) , Ω ∂u ϕ dγ ∂n
=
D (∂Ω)
∂Ω
<
∂u , ϕ > D(∂Ω) . ∂n
Essendo ϕ ∈ D(Ω), l’integrale di bordo è nullo, di modo che D (Ω)
< −Δu − f, ϕ >D(Ω) = 0
∀ϕ ∈ D(Ω),
il che corrisponde a dire che −Δu − f è la distribuzione nulla, ovvero −Δu = f
in D (Ω).
L’equazione differenziale (2.12) è dunque verificata, pur di intendere le derivate nel senso delle distribuzioni e di interpretare l’uguaglianza fra −Δu e f non in senso puntuale, ma nel senso delle distribuzioni (e quindi quasi ovunque in Ω). Infine, l’annullamento di u sul bordo (nel senso delle tracce) è conseguenza immediata dell’appartenenza di u a H 10 (Ω).
2.3.3 Il problema con condizioni miste non omogenee Il problema che vogliamo risolvere è ora il seguente: ⎧ ⎪ ⎨ −Δu = f in Ω, u=g su ΓD , ∂u ⎪ ⎩ =φ su ΓN , ∂n
(2.19)
2.3 Il problema di Poisson nel caso bidimensionale
25
ΓN
Ω
n ΓD Figura 2.3. Il dominio computazionale Ω ◦
◦
dove ΓD e ΓN realizzano una partizione di ∂Ω, ovvero Γ D ∪ΓN = ∂Ω, Γ D ∩ Γ N = ∅ (si veda la Fig. 2.3). Nel caso del problema di Neumann puro, in cui Γ D = ∅, i dati f e φ dovranno verificare la seguente condizione di compatibilità
−
φ dγ =
f dΩ
(2.20)
Ω
∂Ω
affinché il problema possa avere soluzione. La (2.20) si deduce integrando l’equazione differenziale in (2.19) ed applicando il teorema di Gauss −
Δu dΩ = − div(∇u) dΩ = −
Ω
Ω
∂Ω
∂u dγ. ∂n
Osserviamo inoltre che, sempre nel caso del problema di Neumann, la soluzione sarà definita solo a meno di una costante additiva. Per avere unicità basterà, ad esempio, trovare una funzione che sia a media nulla in Ω. Supponiamo ora che Γ D = ∅ in modo da assicurare unicità della soluzione del problema forte senza condizioni di compatibilità sui dati. Supponiamo inoltre che f ∈ L2 (Ω), g ∈ H1/2 (ΓD ) e φ ∈ L2 (ΓN ), avendo indicato con H 1/2 (ΓD ) lo spazio delle funzioni di L 2 (ΓD ) che sono tracce di funzioni di H 1 (Ω) (si veda la Sez. A.3.3). Grazie alla formula di Green, dalla (2.19) otteniamo
∇u · ∇v dΩ −
Ω
∂Ω
∂u v dγ = ∂n
f v dΩ.
(2.21)
Ω
Ricordando che ∂u/∂n = φ su Γ N e sfruttando l’additività degli integrali, la (2.21) diventa ∂u v dγ − φ v dγ = f v dΩ. ∇u · ∇v dΩ − (2.22) ∂n Ω
ΓD
ΓN
Ω
26
2 Equazioni di tipo ellittico
Imponendo che la funzione test v sia nulla su Γ D , il primo integrale al bordo che compare nella (2.22) si annulla. Il problema misto ammette perciò la seguente formulazione debole: trovare u ∈ Vg : ∇u · ∇v dΩ = f v dΩ + φ v dγ ∀v ∈ V, (2.23) Ω
Ω
ΓN
avendo denotato con V lo spazio V = H1ΓD (Ω) = {v ∈ H1 (Ω) : v|ΓD = 0}, ed avendo posto Vg = {v ∈ H1 (Ω) : v|ΓD = g}. La formulazione (2.23) non è soddisfacente, non solo perché la scelta degli spazi non è “simmetrica” (v ∈ V , mentre u ∈ V g ), ma soprattutto perché V g è una varietà affine, ma non è un sottospazio di H 1 (Ω) (infatti non è vero che combinazioni lineari di elementi di Vg siano ancora elementi di V g ). Procediamo allora in modo analogo a quanto visto nella Sez. 2.2.2. Supponiamo di conoscere una funzione R g , detta rilevamento del dato al bordo, tale che Rg ∈ H1 (Ω),
Rg |ΓD = g.
Solitamente sul rilevamento R g viene inoltre fatta la seguente richiesta di continuità Rg H1 (Ω) ≤ CgH1/2 (ΓD ) , ◦
◦
con C costante. Poniamo u = u − Rg e iniziamo con l’osservare che u|ΓD = u|ΓD − ◦ ◦ Rg |ΓD =0, cioè u ∈ H1ΓD (Ω). Inoltre, essendo ∇u = ∇ u + ∇Rg , il problema (2.23) diventa ◦
◦
trovare u ∈ H1ΓD (Ω) : a(u, v) = F (v)
∀v ∈ H1ΓD (Ω),
avendo definito la forma bilineare a(·, ·) come nella (2.17), mentre il funzionale lineare F assume ora la forma F (v) = f v dΩ + φ v dγ − ∇Rg · ∇v dΩ. Ω
ΓN
Ω
Il problema ora è simmetrico essendo lo spazio in cui si cerca la (nuova) soluzione incognita coincidente con lo spazio delle funzioni test. Le condizioni di Dirichlet sono dette essenziali in quanto vengono imposte in maniera esplicita nella determinazione dello spazio funzionale in cui il problema è posto. Le condizioni di Neumann, invece, sono dette naturali, in quanto vengono soddisfatte implicitamente dalla soluzione del problema (si veda a questo proposito la Sez. 2.3.4). Questa differenza di trattamento avrà importanti ripercussioni sui problemi approssimati.
2.3 Il problema di Poisson nel caso bidimensionale
27
Osservazione 2.3 La riduzione del problema a forma “simmetrica” consentirà di ottenere in fase di risoluzione numerica (ad esempio con il metodo degli elementi finiti) un sistema lineare con matrice simmetrica. • Osservazione 2.4 Costruire un rilevamento R g di una funzione al bordo di forma arbitraria può risultare assai problematico. Tale compito è più agevole nell’ambito dell’approssimazione numerica, dove in genere viene costruito un rilevamento di un’approssimazione della funzione g (si veda il Cap. 3). •
2.3.4 Equivalenza, nel senso delle distribuzioni, tra la forma debole e la forma forte per il problema di Neumann Consideriamo il problema di Neumann non omogeneo −Δu + σu = f in Ω, ∂u =φ su ∂Ω, ∂n
(2.24)
dove σ è una costante positiva o, più in generale, una funzione σ ∈ L ∞ (Ω) tale che σ(x) ≥ α0 q.o. in Ω, per un’opportuna costante α 0 > 0. Supponiamo inoltre che f ∈ L2 (Ω) e che φ ∈ L2 (∂Ω). Procedendo come fatto nella Sez. 2.3.3, si può derivare la seguente formulazione debole: trovare u ∈ H1 (Ω) : ∇u·∇v dΩ + σuv dΩ = f v dΩ + φv dγ Ω
Ω
Ω
∀v ∈ H1 (Ω).
(2.25)
∂Ω
Prendendo v = ϕ ∈ D(Ω) e controintegrando per parti, si ottiene D (Ω)
< −Δu + σu − f, ϕ >D(Ω) = 0 ∀ϕ ∈ D(Ω).
Pertanto −Δu + σu = f
in D (Ω)
ovvero −Δu + σu − f = 0
quasi ovunque in Ω.
(2.26)
Nel caso in cui u ∈ C 2 (Ω) l’applicazione della formula di Green (2.15) in (2.25) conduce a ∂u − φ)v = 0 ∀v ∈ H1 (Ω), (−Δu + σu − f )v dΩ + ( ∂n Ω
∂Ω
28
2 Equazioni di tipo ellittico
e quindi, grazie a (2.26), ∂u =φ ∂n
su ∂Ω.
Nel caso in cui la soluzione u di (2.25) sia solo in H 1 (Ω) si può utilizzare la formula di Green generalizzata che afferma che esiste un unico funzionale lineare e continuo g ∈ (H1/2 (∂Ω)) (detto derivata normale generalizzata), operante sullo spazio H1/2 (∂Ω) che soddisfa ∇u·∇v dΩ = < −Δu, v > + g, v ∀v ∈ H1 (Ω). Ω
Abbiamo indicato con < · , · > la dualità fra H 1 (Ω) e il suo duale, e con · , · quella fra H1/2 (∂Ω) e il suo duale. Chiaramente g coincide con la classica derivata normale di u se u ha sufficiente regolarità. Per semplicità useremo nel seguito la notazione ∂u/∂n nel senso di derivata normale generalizzata. Si ottiene dunque che per v ∈ H1 (Ω) < −Δu + σu − f, v > + ∂u/∂n − φ, v = 0; grazie a (2.26), si conclude allora che ∂u/∂n − φ, v = 0 ∀v ∈ H1 (Ω) e quindi che ∂u/∂n = φ quasi ovunque su ∂Ω.
2.4 Problemi ellittici più generali Consideriamo ora il problema ⎧ ⎪ ⎨ −div(μ∇u) + σu = f u=g ⎪ ⎩ μ ∂u = φ ∂n ◦
in Ω, su ΓD ,
(2.27)
su ΓN ,
◦
dove ΓD ∪ ΓN = ∂Ω con Γ D ∩ Γ N = ∅. Supporremo che f ∈ L 2 (Ω), μ, σ ∈ L∞ (Ω). Supponiamo inoltre che ∃μ 0 > 0 tale che μ(x) ≥ μ0 e σ(x) ≥ 0 quasi ovunque in Ω. Nel solo caso in cui σ = 0 richiederemo che Γ D sia non vuoto onde evitare che la soluzione perda di unicità. Supporremo infine che g e φ siano funzioni sufficientemente regolari su ∂Ω, ad esempio g ∈ H 1/2 (ΓD ) e φ ∈ L2 (ΓN ). Anche in questo caso procediamo moltiplicando l’equazione per una funzione test v ed integrando (ancora formalmente) sul dominio Ω: [−div(μ∇u) + σu] v dΩ = f v dΩ. Ω
Ω
2.4 Problemi ellittici più generali
29
Applicando la formula di Green si ottiene:
μ∇u · ∇v dΩ + Ω
σ u v dΩ − Ω
∂Ω
∂u μ v dγ = ∂n
f v dΩ, Ω
che possiamo anche riscrivere come:
μ∇u · ∇v dΩ + Ω
σ u v dΩ −
Ω
μ ΓD
∂u v dγ = ∂n
f v dΩ +
Ω
μ ΓN
∂u v dγ. ∂n
La funzione μ∂u/∂n è detta derivata conormale associata all’operatore −div(μ∇u). Su ΓD imponiamo che la funzione test v sia nulla, mentre su Γ N imponiamo che la derivata conormale valga φ. Otteniamo
μ∇u · ∇v dΩ +
Ω
σ u v dΩ =
Ω
f v dΩ +
Ω
φv dγ. ΓN
◦
Indicato con R g un rilevamento di g, poniamo u = u − Rg . La formulazione debole del problema (2.27) è allora ◦
trovare u ∈ H1ΓD (Ω) : ◦ ◦ μ∇u · ∇v dΩ + σ uv dΩ = f v dΩ + Ω
Ω
− μ∇Rg · ∇v dΩ − Ω
Ω
σRg v dΩ + Ω
φv dγ
∀v ∈ H1ΓD (Ω).
ΓN
Definiamo la forma bilineare a : V × V → R, a(u, v) =
μ∇u · ∇v dΩ +
Ω
σ u v dΩ Ω
ed il funzionale lineare e continuo F (v) = − a(Rg , v) +
f v dΩ +
Ω
φv dγ.
(2.28)
∀v ∈ H1ΓD (Ω).
(2.29)
ΓN
Il problema precedente si può allora riscrivere come: ◦
◦
trovare u ∈ H1ΓD (Ω) : a(u, v) = F (v)
30
2 Equazioni di tipo ellittico
Un problema ancora più generale di (2.27) è il seguente: ⎧ Lu = f in Ω, ⎪ ⎨ u=g su ΓD , ⎪ ⎩ ∂u = φ su ΓN , ∂nL ◦
◦
essendo Ω ⊂ R2 , ΓD ∪ ΓN = ∂Ω con Γ D ∩ Γ N = ∅, ed avendo definito Lu = −
2 ∂ ∂u aij + σu, ∂xi ∂xj i,j=1
dove i coefficienti a ij sono in generale delle funzioni definite in Ω. La derivata 2 ∂u ∂u = aij ni ∂nL i,j=1 ∂xj
è detta derivata conormale di u associata all’operatore L (essa coincide con la derivata normale quando Lu = −Δu). Supponiamo che σ(x) ∈ L ∞ (Ω) e che ∃α0 > 0 tale che σ(x) ≥ α0 q.o. in Ω. Inoltre, ¯ → R siano funzioni continue ∀i, j = 1, 2 e che supponiamo che i coefficienti a ij : Ω esista una costante α positiva tale che ∀ξ = (ξ1 , ξ2 )T ∈ R2
2
2 aij (x)ξi ξj ≥ α ξi2
i,j=1
q.o. in Ω.
(2.30)
i=1
In tal caso la formulazione debole è ancora la stessa di (2.29), il funzionale F è ancora quello introdotto in (2.28), mentre ⎤ ⎡ 2 ∂u ∂v a(u, v) = ⎣ aij + σuv ⎦ dΩ. (2.31) ∂xj ∂xi i,j=1 Ω
Si può dimostrare (si veda l’Esercizio 2) che sotto l’ipotesi (2.30), detta ipotesi di ellitticità dei coefficienti, questa nuova forma bilineare è continua e coerciva, nel senso delle definizioni (A.3) e (A.4). Queste proprietà saranno sfruttate nell’analisi di buona posizione del problema (2.29) (si veda la Sez. 2.4.1). Problemi ellittici per operatori del quarto ordine sono proposti negli Esercizi 4 e 6, mentre un problema ellittico derivante dalla teoria dell’elasticità lineare è affrontato nell’Esercizio 7.
2.4.1 Teorema di esistenza e unicità Vale il seguente risultato fondamentale (per le definizioni si rimanda all’Appendice A.1):
2.4 Problemi ellittici più generali
31
Lemma 2.1 (di Lax-Milgram) Sia V uno spazio di Hilbert, a(·, ·) : V ×V → R una forma bilineare continua e coerciva. Sia F (·) : V → R un funzionale lineare e continuo. Allora esiste unica la soluzione del problema: trovare u ∈ V : a(u, v) = F (v)
∀v ∈ V.
(2.32)
Dimostrazione. Si basa su due classici risultati di Analisi Funzionale: il teorema di rappresentazione di Riesz, ed il teorema dell’immagine chiusa di Banach. Il lettore interessato può consultare, ad esempio, [QV94, Cap. 5]. Il Lemma di Lax-Milgram assicura dunque che la formulazione debole di un problema ellittico è ben posta, pur di verificare le ipotesi sulla forma a(·, ·) e sul funzionale F (·). Da questo Lemma discendono varie conseguenze. Riportiamo una della più importanti nel seguente Corollario. Corollario 2.1 La soluzione di (2.32) è limitata in funzione dei dati, ovvero uV ≤
1 F V , α
dove α è la costante di coercività associata alla forma bilineare a(·, ·), mentre F V è la norma del funzionale F (per la cui definizione si rimanda a (A.2) dell’Appendice A). Dimostrazione. È sufficiente scegliere v = u nella (2.32) ed usare quindi la coercività della forma bilineare a(·, ·). Infatti, si ha che αu2V ≤ a(u, u) = F (u). D’altra parte, essendo F lineare e continuo esso è anche limitato e vale la maggiorazione F (u) ≤ F V uV
e dunque la tesi. Osservazione 2.5 Se la forma bilineare a(·, ·) è anche simmetrica, ovvero se a(u, v) = a(v, u) ∀u, v ∈ V,
allora il problema (2.32) è equivalente al seguente problema variazionale (si veda l’Esercizio 1), ⎧ ⎨ trovare u ∈ V : J(u) = min J(v), v∈V (2.33) ⎩ con J(v) = 1 a(v, v) − F (v). 2 •
32
2 Equazioni di tipo ellittico
2.5 Esercizi 1. Si dimostri che il problema debole (2.32) è equivalente al problema variazionale (2.33) se la forma bilineare è coerciva e simmetrica. [Soluzione: sia u ∈ V la soluzione del problema debole e sia w un generico elemento di V . Grazie alla bilinearità ed alla simmetria della forma, si trova 1 [a(u, u) + 2a(u, w) + a(w, w)] − [F (u) + F (w)] 2 1 1 = J(u) + [a(u, w) − F (w)] + a(w, w) = J(u) + a(w, w). 2 2
J(u + w)
=
Grazie alla coercività si ricava allora che J(u + w) ≥ J(u) + (α/2)w 2V , ovvero che ∀v ∈ V con v = u, J(v) > J(u). Viceversa, se u è punto di minimo per J, allora scrivendo la condizione di estremalità lim δ→0 (J(u + δv) − J(u)) /δ = 0 si trova la (2.32). ] 2. Si dimostri che la forma bilineare (2.31) sotto le ipotesi indicate nel testo sui coefficienti, è continua e coerciva. [Soluzione: la forma bilineare è ovviamente continua. Grazie all’ipotesi (2.30) ed al fatto che σ ∈ L∞ (Ω) è positiva q.o. in Ω, è anche coerciva in quanto a(v, v) ≥ α|v|2H1 (Ω) + α0 v2L2 (Ω) ≥ min(α, α0 )v2V
∀v ∈ V.
Facciamo notare che se V = H 1 (Ω) allora la condizione α 0 > 0 è necessaria affinché la forma bilineare sia coerciva. Nel caso in cui V = H 10 (Ω), è sufficiente 2 che α0 > −α/CΩ , essendo CΩ la costante che interviene nella disuguaglianza di Poincaré. In tal caso si può sfruttare infatti l’equivalenza fra · H1 (Ω) e | · |H1 (Ω) . Abbiamo indicato con |v| H1 (Ω) = ∇vL2 (Ω) la seminorma di v in H 1 (Ω) (si veda l’Esempio A.5 dell’Appendice A).] 3. Siano V = H10 (0, 1), a : V × V → R e F : V → R definiti nel modo seguente: 1
1 (−1 − 4x)v(x) dx,
F (v) = 0
a(u, v) =
(1 + x)u (x)v (x) dx.
0
Si dimostri che il problema: trovare u ∈ V t.c. a(u, v) = F (v) ∀v ∈ V , ammette un’unica soluzione. Si verifichi inoltre che essa coincide con u(x) = x 2 − x. [Soluzione: si dimostra facilmente che la forma bilineare è continua e coerciva in V . Allora, essendo F un funzionale lineare e continuo, grazie al Lemma di Lax-Milgram, si può concludere che la soluzione esiste unica in V . Verifichiamo che è proprio u(x) = x 2 − x. Quest’ultima funzione appartiene sicuramente a V (essendo continua e derivabile e tale che u(0) = u(1) = 0).
2.5 Esercizi
33
Inoltre, dalla relazione 1
1
1
(1 + x)u (x)v (x) dx = − ((1 + x)u (x)) v(x) dx = 0
0
(−1 − 4x)v(x) dx, 0
∀v ∈ V , si deduce che affinché u sia soluzione si deve avere ((1 + x)u (x)) = 1 + 4x quasi ovunque in (0, 1). Tale proprietà è vera per la u proposta.] 4. Si trovi la formulazione debole del problema ⎧ 2 ⎪ ⎨ Δ u = f in Ω, u=0 su ∂Ω, ∂u ⎪ ⎩ =0 su ∂Ω, ∂n essendo Ω ⊂ R2 un aperto limitato di frontiera ∂Ω regolare, Δ 2 · = ΔΔ· l’operatore bilaplaciano e f ∈ L 2 (Ω) una funzione assegnata. [Soluzione: la formulazione debole, ottenuta applicando due volte la formula di Green all’operatore bilaplaciano, è trovare u ∈ H20 (Ω) : ΔuΔv dΩ = f v dΩ ∀v ∈ H20 (Ω), (2.34) Ω
Ω
dove H20 (Ω) = {v ∈ H2 (Ω) : v = 0, ∂v/∂n = 0 su ∂Ω}.] 5. Per ogni funzione v dello spazio di Hilbert H 20 (Ω), definito nell’Esercizio 4, si può dimostrare che la seminorma |·| H2 (Ω) definita come |v|H2 (Ω) = ( Ω |Δv|2 dΩ)1/2 , è di fatto equivalente alla norma · H2 (Ω) . Utilizzando tale proprietà, si dimostri che il problema (2.34) ammette un’unica soluzione. [Soluzione: poniamo V = H 20 (Ω). Allora, a(u, v) = ΔuΔv dΩ e F (v) = f v dΩ, Ω
Ω
sono rispettivamente una forma bilineare da V × V → R ed un funzionale lineare e continuo. Per dimostrare esistenza ed unicità basta invocare il Lemma di Lax-Milgram in quanto la forma bilineare è coerciva e continua. In effetti, grazie all’equivalenza tra norma e seminorma, esistono due costanti positive α e M tali che a(u, u) = |u|2V ≥ αu2V , |a(u, v)| ≤ M uV vV .] 6. Si scriva la formulazione debole del problema del quart’ordine ⎧ −∇ · (μ∇u) + Δ2 u + σu = 0 in Ω, ⎪ ⎪ ⎪ ⎨ u=0 su ∂Ω, ⎪ ⎪ ⎪ ⎩ ∂u = 0 su ∂Ω, ∂n
34
2 Equazioni di tipo ellittico
g ΓN
f
Ω
ΓD
Figura 2.4. Un corpo elastico parzialmente vincolato e soggetto all’azione di un carico esterno
introducendo opportuni spazi funzionali, sapendo che Ω ⊂ R 2 è un aperto limitato con bordo ∂Ω regolare e che μ(x) e σ(x) sono funzioni note definite su Ω. [Soluzione: si procede come nei due esercizi precedenti supponendo che i coefficienti μ e σ stiano in L∞ (Ω).] ◦
◦
7. Sia Ω ⊂ R2 con frontiera ∂Ω = Γ D ∪ΓN regolare e Γ D ∩ Γ N = ∅. Introducendo opportuni spazi funzionali, si trovi la formulazione debole del seguente problema dell’elasticità lineare ⎧ 2 ⎪ ∂ ⎪ ⎪ − σij (u) = fi in Ω, i = 1, 2, ⎪ ⎪ ∂x ⎪ ⎨ j=1 j ui = 0 su ΓD , i = 1, 2, (2.35) ⎪ 2 ⎪ ⎪ ⎪ ⎪ ⎪ σij (u)nj = gi su ΓN , i = 1, 2, ⎩ j=1
avendo indicato con n = (n 1 , n2 )T il vettore normale uscente a Ω, u = (u 1 , u2 )T il vettore delle incognite, f = (f 1 , f2 )T e g = (g1 , g2 )T due funzioni assegnate. Inoltre si è posto per i, j = 1, 2, 1 ∂ui ∂uj σij (u) = λdiv(u)δij + 2μij (u), ij (u) = , + 2 ∂xj ∂xi essendo λ e μ due costanti positive e δ ij il simbolo di Kronecker. Il sistema (2.35) consente di descrivere lo spostamento u di un corpo elastico, omogeneo ed isotropo, che nella sua posizione di equilibrio occupa la regione Ω, sotto l’azione di una forza esterna per unità di volume f e di un carico distribuito su Γ N , di intensità g (si veda la Fig. 2.4).
2.5 Esercizi
35
[Soluzione: la formulazione debole di (2.35) si trova osservando che σ ij = σji e utilizzando la seguente formula di Green 2
σij (u)ij (v) dΩ
=
i,j=1 Ω
−
2 i,j=1 ∂Ω 2 i,j=1 Ω
σij (u)nj vi dγ ∂σij (u) vi dΩ. ∂xj
(2.36)
Assumendo v ∈ V = (H1ΓD (Ω))2 (lo spazio delle funzioni vettoriali che hanno componenti v i ∈ H1ΓD (Ω) per i = 1, 2), si trova la seguente formulazione debole: trovare u ∈ V tale che a(u, v) = F (v) ∀v ∈ V , con a(u, v) =
λdiv(u)div(v) dΩ + 2μ
Ω F (v) = f · v dΩ + g · v dγ. Ω
2
ij (u)ij (v) dΩ,
i,j=1Ω
ΓN
Sarà sufficiente supporre f ∈ (L 2 (Ω))2 e g ∈ (L2 (ΓN ))2 .] 8. Si dimostri, attraverso l’applicazione del Lemma di Lax-Milgram, che la soluzione della formulazione debole (2.36) esiste ed è unica sotto opportune condizioni sulla regolarità dei dati e sapendo che vale la seguente disuguaglianza di Korn: ∃C0 > 0 :
2
ij (v)ij (v) dΩ ≥ C0 v2V
∀v ∈ V.
i,j=1Ω
[Soluzione: si consideri la formulazione debole introdotta nella soluzione dell’esercizio precedente. La forma bilineare definita nella (2.36) è continua ed è anche coerciva grazie alla disuguaglianza di Korn. F è un funzionale lineare e continuo e quindi, per il Lemma di Lax-Milgram, la soluzione esiste ed è unica.]
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
Affrontiamo in questo capitolo la risoluzione numerica dei problemi ai limiti ellittici considerati nel Cap. 2 introducendo il metodo di Galerkin. Illustreremo poi, come caso particolare, il metodo degli elementi finiti. Esso verrà ulteriormente sviluppato nei capitoli seguenti.
3.1 Approssimazione con il metodo di Galerkin Consideriamo la formulazione debole di un generico problema ellittico posto su un dominio Ω ⊂ Rd : trovare u ∈ V : a(u, v) = F (v)
∀v ∈ V,
(3.1)
essendo V un opportuno spazio di Hilbert, sottospazio di H 1 (Ω), a(·, ·) una forma bilineare continua e coerciva da V × V in R, F (·) un funzionale lineare continuo da V in R. Sotto tali ipotesi il Lemma di Lax-Milgram assicura esistenza ed unicità della soluzione. Il metodo di Galerkin per l’approssimazione numerica del problema (3.1) consiste nel trovare una soluzione approssimata u h ∈ Vh , essendo Vh una famiglia di spazi dipendente da un parametro positivo h, tali che Vh ⊂ V, dim Vh = Nh < ∞, ∀h > 0. Il problema approssimato assume allora la forma: trovare uh ∈ Vh : a(uh , vh ) = F (vh ) ∀vh ∈ Vh ,
(3.2)
e viene detto problema di Galerkin. Indicando con {ϕ j , j = 1, 2, . . . , Nh } una base di Vh , basta che la (3.2) sia verificata per ogni funzione della base, in quanto tutte le funzioni dello spazio V h sono una combinazione lineare delle ϕ j . Richiederemo allora che a(uh , ϕi ) = F (ϕi ), i = 1, 2, . . . , Nh .
(3.3)
38
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
Naturalmente, poiché u h ∈ Vh , uh (x) =
Nh
uj ϕj (x),
j=1
dove gli u j , j = 1, . . . , Nh , sono dei coefficienti incogniti. Le equazioni (3.3) diventano allora Nh
uj a(ϕj , ϕi ) = F (ϕi ), i = 1, 2, . . . , Nh .
(3.4)
j=1
Denotiamo con A la matrice (detta di rigidezza o di stiffness) con elementi aij =a(ϕj , ϕi ) e con f il vettore di componenti f i =F (ϕi ). Se si indica con u il vettore che ha come componenti i coefficienti incogniti uj , le (3.4) sono equivalenti al sistema lineare Au = f .
(3.5)
Evidenziamo alcune caratteristiche della matrice di rigidezza che sono indipendenti dalla base scelta per Vh , ma che dipendono esclusivamente dalle caratteristiche del problema debole che si sta approssimando. Altre, come il numero di condizionamento o la struttura di sparsità , dipenderanno invece dalla base considerata e verranno pertanto riportate nelle sezioni dedicate ai singoli metodi numerici. Ad esempio, basi formate da funzioni con supporto piccolo saranno preferibili in quanto tutti gli elementi aij relativi a funzioni di base che hanno supporti con intersezione nulla, risulteranno nulli. Da un punto di vista computazionale verranno privilegiate quelle scelte di V h che richiedono uno sforzo computazionale modesto per il calcolo degli elementi della matrice, nonché del termine noto f. Teorema 3.1 La matrice A associata alla discretizzazione di un problema ellittico con il metodo di Galerkin è definita positiva. Dimostrazione. Ricordiamo che una matrice B ∈ R n×n si dice definita positiva se vT Bv ≥ 0 ∀v ∈ Rn
ed inoltre vT Bv = 0 ⇔
v = 0.
(3.6)
Associamo in modo univoco ad un generico vettore v = (v i ) di RNh la funzione Nh vh (x) = vj ϕj (x) ∈ Vh . Grazie alla bilinearità ed alla coercività della forma j=1
a(·, ·), otteniamo
3.2 Analisi del metodo di Galerkin
vT Av
=
=
Nh Nh j=1 i=1 Nh Nh
vi aij vj =
39
Nh Nh
vi a(ϕj , ϕi )vj ⎛ ⎞ Nh Nh a(vj ϕj , vi ϕi ) = a ⎝ vj ϕj , vi ϕi ⎠ j=1 i=1
j=1 i=1
j=1
i=1
= a(vh , vh ) ≥ αvh 2V ≥ 0. Inoltre, se vT Av = 0 allora, per quanto appena ricavato, anche v h 2V = 0 ovvero vh = 0 e quindi v = 0. Di conseguenza la tesi è dimostrata essendo soddisfatte le due condizioni (3.6). Si può inoltre dimostrare la seguente proprietà (si veda l’Esercizio 4): Proprietà 3.1 La matrice A è simmetrica se e solo se la forma bilineare a(·, ·) è simmetrica. Nel caso ad esempio del problema di Poisson, la matrice A è simmetrica e definita positiva. La risoluzione numerica di un sistema di questo tipo potrà essere effettuata in modo efficiente sia usando metodi diretti, come la fattorizzazione di Cholesky, sia usando metodi iterativi come il metodo del gradiente coniugato (si veda l’Appendice B e, ad esempio, [QSS00, Cap. 4]).
3.2 Analisi del metodo di Galerkin Ci proponiamo in questa sezione di studiare le caratteristiche del metodo di Galerkin, in particolare di verificarne tre fondamentali proprietà: - esistenza ed unicità della soluzione discreta u h ; - stabilità della soluzione discreta u h ; - convergenza di u h alla soluzione esatta u del problema (3.1), per h → 0.
3.2.1 Esistenza e unicità Il Lemma di Lax-Milgram, enunciato nel Cap. 2, vale per ogni spazio di Hilbert e quindi, in particolare, per lo spazio V h , essendo quest’ultimo un sottospazio chiuso dello spazio di Hilbert V . Inoltre la forma bilineare a(·, ·) e il funzionale F (·) sono i medesimi del problema variazionale (3.1). Sono dunque soddisfatte le ipotesi richieste dal Lemma. Discende allora il seguente risultato: Corollario 3.1 La soluzione del problema di Galerkin (3.2) esiste ed è unica.
40
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
È tuttavia istruttivo fornire di questo Corollario una dimostrazione costruttiva senza utilizzare il Lemma di Lax-Milgram. Come abbiamo visto, infatti, il problema di Galerkin (3.2) è equivalente al sistema lineare (3.5). Dimostrando l’esistenza e l’unicità per l’uno è automaticamente dimostrata anche l’esistenza e l’unicità per l’altro. Concentriamo dunque la nostra attenzione sul sistema lineare (3.5). La matrice A è invertibile in quanto l’unica soluzione del sistema Au = 0 è la soluzione identicamente nulla. Questo discende immediatamente dal fatto che A è definita positiva. Di conseguenza, il sistema lineare (3.5) ammette un’unica soluzione e quindi, anche il problema di Galerkin, ad esso equivalente, ammette un’unica soluzione.
3.2.2 Stabilità Il Corollario 2.1 ci permette di fornire il seguente risultato di stabilità. Corollario 3.2 Il problema di Galerkin è stabile, uniformemente rispetto ad h, in quanto vale la seguente maggiorazione della soluzione: uh V ≤
1 F V , α
dove ·V indica la norma nello spazio duale di V , definita nell’Appendice A. La stabilità del metodo garantisce che la norma u h V della soluzione discreta rimane limitata al tendere di h a zero, uniformemente rispetto ad h. Equivalentemente, garantisce che u h − wh V ≤ α1 F − GV , essendo uh e wh soluzioni numeriche corrispondenti a due dati diversi F e G.
3.2.3 Convergenza Vogliamo ora dimostrare che la soluzione del problema di Galerkin converge alla soluzione del problema debole (3.1) quando h tende a zero. Di conseguenza, a patto di prendere h sufficientemente piccolo, si potrà approssimare bene quanto si vuole la soluzione esatta u con la soluzione di Galerkin u h . Dimostriamo innanzitutto la seguente proprietà di consistenza. Lemma 3.1 (di Céa) Il metodo di Galerkin è fortemente consistente ovvero a(u − uh , vh ) = 0
∀vh ∈ Vh .
(3.7)
Dimostrazione. Essendo Vh ⊂ V , la soluzione esatta u soddisfa il problema debole (3.1) per ogni elemento v=v h ∈ Vh , e quindi si ha
3.2 Analisi del metodo di Galerkin u
41
u − uh Vh uh
Figura 3.1. Interpretazione geometrica del Lemma di Céa
a(u, vh ) = F (vh ) ∀vh ∈ Vh .
(3.8)
Sottraendo membro a membro la (3.2) dalla (3.8), si ottiene a(u, vh ) − a(uh , vh ) = 0
∀vh ∈ Vh ,
dalla quale, grazie alla bilinearità della forma a(·, ·), segue la tesi.
Facciamo notare che la (3.8) coincide con la definizione di consistenza forte data nella (1.10). La proprietà (3.7), nota anche come ortogonalità di Galerkin, esprime il fatto che il metodo di Galerkin è un metodo di proiezione ortogonale. Infatti, se a(·, ·) fosse il prodotto scalare euclideo, u e u h dei vettori e Vh un sottospazio dello spazio euclideo V , la (3.7) esprimerebbe l’ortogonalità dell’errore u − u h rispetto al sottospazio Vh . In altri termini, u h è la proiezione ortogonale (secondo il prodotto scalare a(·, ·)) di u sul sottospazio Vh , e pertanto è la miglior approssimazione in V h di u (si veda la Fig. 3.1). Quando a(·, ·) è simmetrica, la forma bilineare può essere interpretata come il prodotto scalare in V e la consistenza come l’ortogonalità, rispetto al prodotto scalare a(·, ·), tra l’errore di approssimazione, u − u h , e il sottospazio Vh . In questo senso, analogamente al caso euclideo, si può dire che la soluzione approssimata u h individuata dal metodo di Galerkin è la proiezione su V h della soluzione esatta u e quindi è, tra tutti gli elementi di Vh , quella che minimizza la distanza dalla soluzione esatta u nella norma dell’energia, vale a dire nella seguente norma indotta dal prodotto scalare a(·, ·): u − uh a = a(u − uh , u − uh ). Osservazione 3.1 Come osservato, l’interpretazione geometrica del metodo di Galerkin ha senso nel solo caso in cui la forma a(·, ·) sia simmetrica. Tuttavia ciò non lede la generalità del metodo o la sua proprietà di consistenza nel caso in cui la forma bilineare sia non simmetrica. •
42
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
Consideriamo ora il valore che la forma bilineare assume quando entrambi i suoi argomenti sono pari a u − u h . Se vh è un arbitrario elemento di V h si ottiene: a(u − uh , u − uh ) = a(u − uh , u − vh ) +a(u − uh , vh − uh ) = a(u − uh , u − vh ), essendo nullo il termine nel riquadro grazie alla (3.7) e in quanto v h −uh ∈ Vh . Inoltre |a(u − uh , u − vh )| ≤ M u − uh V u − vh V , avendo sfruttato la continuità della forma bilineare. D’altra parte, per la coercività di a(·, ·), deve essere a(u − uh , u − uh ) ≥ αu − uh 2V per cui si ha: u − uh V ≤
M u − vh V α
∀vh ∈ Vh .
Tale disuguaglianza vale per tutte le funzioni v h ∈ Vh e dunque varrà anche prendendone l’estremo inferiore. Si trova perciò u − uh V ≤
M inf u − wh V . α wh ∈Vh
(3.9)
È allora evidente che affinché il metodo converga basterà richiedere che, al tendere a zero di h, lo spazio V h tenda ad “occupare” l’intero spazio V . Precisamente, deve risultare lim inf v − vh V = 0 ∀v ∈ V.
h→0 vh ∈Vh
(3.10)
In tal caso, il metodo di Galerkin è convergente e si potrà scrivere lim u − uh V = 0.
h→0
Lo spazio Vh andrà quindi scelto opportunamente in modo da garantire la proprietà (3.10). Una volta che questo requisito sia soddisfatto, la convergenza sarà comunque verificata indipendentemente da come è fatta u; viceversa, dalla scelta di V h e dalla regolarità di u, dipenderà, in generale, la velocità con cui la soluzione discreta converge alla soluzione esatta, ovvero l’ordine di infinitesimo dell’errore rispetto a h (si veda il Teorema 3.3). Osservazione 3.2 Naturalmente, inf u − vh V ≤ u − uh V . Di conseguenza, vh ∈Vh
per la (3.9), se M α è dell’ordine dell’unità, l’errore dovuto al metodo di Galerkin è identificabile con l’errore di migliore approssimazione per u in V h . In ogni caso, i due errori hanno lo stesso ordine di infinitesimo rispetto ad h. •
3.3 Il metodo degli elementi finiti nel caso monodimensionale
43
3.3 Il metodo degli elementi finiti nel caso monodimensionale Supponiamo che Ω sia un intervallo (a, b) della retta reale. L’obiettivo di questa sezione è costruire approssimazioni dello spazio H 1 (a, b), dipendenti da un parametro h. A tale scopo introduciamo una partizione T h di (a, b) in N + 1 sottointervalli Kj =(xj−1 , xj ) di ampiezza hj = xj − xj−1 con a = x0 < x1 < . . . < xN < xN +1 = b,
(3.11)
e poniamo h = maxj hj . Poiché le funzioni di H 1 (a, b) sono funzioni continue su [a, b], possiamo costruire la seguente famiglia di spazi ( ) * ' (3.12) Xhr = vh ∈ C 0 Ω : vh |Kj ∈ Pr , ∀Kj ∈ Th , r = 1, 2, . . . avendo denotato con P r lo spazio dei polinomi di grado minore od uguale a r nella variabile x. Gli spazi Xhr sono tutti sottospazi di H1 (a, b) in quanto sono costituiti da funzioni derivabili tranne che, al limite, in un numero finito di punti (i vertici x i della triangolazione T h ). Essi forniscono scelte possibili dello spazio V h , pur di incorporare opportunamente le condizioni al bordo. Il fatto che le funzioni di X hr siano localmente dei polinomi renderà gli elementi della matrice di rigidezza facili da calcolare. Dobbiamo a questo punto scegliere una base {ϕi } per lo spazio X hr . Conviene, per quanto esposto nella Sez. 3.1, che il supporto della generica funzione di base ϕ i abbia intersezione non vuota con quello di un numero esiguo di altre funzioni della base. In tal modo, molti elementi della matrice di rigidezza saranno nulli. Conviene inoltre che la base sia lagrangiana: in tal caso i coefficienti dello sviluppo di una generica funzione vh ∈ Xhr sulla base stessa saranno i valori assunti da v h in opportuni punti, che chiamiamo nodi e che, come vedremo, formano generalmente un sovrainsieme dei vertici di Th . Ciò non impedisce l’uso di basi non lagrangiane, in special modo nella loro versione gerarchica (come vedremo nel seguito). Forniamo ora alcuni esempi di basi per gli spazi X h1 e Xh2 . Lo spazio Xh1 È costituito dalle funzioni continue e lineari a pezzi su una partizione T h di (a, b) della forma (3.11). Poiché per due punti distinti passa un’unica retta ed essendo le funzioni di X h1 continue, i gradi di libertà delle funzioni di questo spazio, ovvero i valori che bisogna assegnare per individuare univocamente le stesse funzioni, saranno pari al numero N + 2 di vertici della partizione stessa. In questo caso, dunque, nodi e vertici coincidono. Di conseguenza, una volta assegnate N + 2 funzioni di base ϕi , i = 0, . . . , N + 1, l’intero spazio X h1 verrà completamente descritto. La base lagrangiana è caratterizzata dalla proprietà seguente: ϕi ∈ Xh1
tale che ϕi (xj ) = δij , i, j = 0, 1, . . . , N + 1,
44
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
1 ϕi
x0 = a
xi−1 xi
xi+1
xN +1 = b
Figura 3.2. La funzione di base di Xh1 relativa al nodo xi
essendo δij il delta di Kronecker. La funzione ϕ i è dunque lineare a tratti e vale uno in xi e zero in tutti gli altri nodi della partizione (si veda la Fig. 3.2). La sua espressione è data da ⎧ x − xi−1 ⎪ ⎪ per xi−1 ≤ x ≤ xi , ⎪ ⎪ xi − xi−1 ⎪ ⎪ ⎨ xi+1 − x ϕi (x) = (3.13) per xi ≤ x ≤ xi+1 , ⎪ ⎪ x − x i+1 i ⎪ ⎪ ⎪ ⎪ ⎩ 0 altrimenti. Evidentemente ϕ i ha come supporto l’unione dei soli intervalli [x i−1 , xi ] e [xi , xi+1 ], se i = 0 o i = N + 1 (per i = 0 o i = N + 1 il supporto sarà limitato all’intervallo [x0 , x1 ] o [xN , xN +1 ], rispettivamente). Di conseguenza, soltanto le funzioni di base ϕi−1 e ϕi+1 hanno supporto con intersezione non vuota con quello di ϕ i e quindi la matrice di rigidezza è tridiagonale in quanto a ij = 0 se j ∈ {i − 1, i, i + 1}. Come si vede dall’espressione (3.13) le due funzioni di base ϕ i e ϕi+1 definite su ogni intervallo [x i , xi+1 ], si ripetono sostanzialmente immutate, a meno di un fattore di scalatura legato alla lunghezza dell’intervallo stesso. Nella pratica si possono ottenere le due funzioni di base ϕ i e ϕi+1 trasformando due funzioni di base ϕ +0 e ϕ +1 costruite, una volta per tutte, su un intervallo di riferimento, tipicamente l’intervallo [0, 1]. A tal fine basta sfruttare il fatto che il generico intervallo (x i , xi+1 ) della decomposizione di (a, b) può essere ottenuto a partire dall’intervallo (0, 1) tramite la trasformazione lineare φ : [0, 1] → [x i , xi+1 ] definita come x = φ(ξ)=xi + ξ(xi+1 − xi ). Se definiamo le due funzioni di base ϕ +0 e ϕ +1 su [0, 1] come ϕ +0 (ξ) = 1 − ξ, ϕ +1 (ξ) = ξ, le funzioni di base ϕ i e ϕi+1 su [xi , xi+1 ] saranno semplicemente date da ϕi (x) = ϕ +0 (ξ(x)),
ϕi+1 (x) = ϕ +1 (ξ(x))
(3.14)
3.3 Il metodo degli elementi finiti nel caso monodimensionale
45
essendo ξ(x) = (x − xi )/(xi+1 − xi ) (si vedano le Figure 3.3 e 3.4). Questo modo di procedere (definire la base su un elemento di riferimento e poi trasformarla su uno specifico elemento) risulterà di fondamentale importanza quando si considereranno problemi in più dimensioni. Lo spazio Xh2 Le funzioni di X h2 sono polinomi compositi, di grado 2 su ciascun intervallo di T h e, di conseguenza, sono univocamente individuate quando siano assegnati i valori da esse assunti in tre punti distinti di ogni intervallo K. Per garantire la continuità delle funzioni di X h2 due di questi punti saranno gli estremi del generico intervallo di T h , il terzo sarà il punto medio dello stesso. I gradi di libertà dello spazio X h2 sono perciò i valori di vh assunti agli estremi degli intervalli componenti la partizione T h e nei punti medi degli stessi. Ordiniamo i nodi a partire da x 0 = a fino a x2N +2 = b; in tal modo i punti medi corrisponderanno ai nodi di indice dispari, gli estremi degli intervalli a quelli di indice pari (per altre numerazioni si veda l’Esercizio 6). Esattamente come nel caso precedente la base lagrangiana per X h2 è quella formata dalle funzioni ϕi ∈ Xh2
ϕi (xj ) = δij , i, j = 0, 1, . . . , 2N + 2.
tali che
1
1 φ
−→
ϕ +0
0
1
ϕi
ξ
xi
xi+1 x
Figura 3.3. La funzione di base ϕi in [xi , xi+1 ] e la corrispondente funzione di base ϕ b0 sull’elemento di riferimento
1
1 φ
−→
ϕ +1
0
1
ξ
ϕi+1
xi
xi+1 x
Figura 3.4. La funzione base ϕi+1 in [xi , xi+1 ] e la corrispondente funzione di base ϕ b1 sull’elemento di riferimento
46
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
ϕ +1
ϕ +0
0
ϕ +2
0.5
1
ξ
Figura 3.5. Le funzioni di base di Xh2 sull’intervallo di riferimento
Sono quindi funzioni quadratiche a tratti che assumono valore 1 nel nodo a cui sono associate e sono nulle nei restanti nodi. Riportiamo l’espressione esplicita della generica funzione di base associata agli estremi degli intervalli della partizione ⎧ (x − xi−1 )(x − xi−2 ) ⎪ ⎪ se xi−2 ≤ x ≤ xi , ⎪ ⎪ (x i − xi−1 )(xi − xi−2 ) ⎪ ⎪ ⎨ (xi+1 − x)(xi+2 − x) (i pari) ϕi (x) = se xi ≤ x ≤ xi+2 , ⎪ ⎪ ⎪ (x i+1 − xi )(xi+2 − xi ) ⎪ ⎪ ⎪ ⎩ 0 altrimenti. Per i punti medi degli intervalli si ha invece ⎧ (xi+1 − x)(x − xi−1 ) ⎪ ⎨ (x i+1 − xi )(xi − xi−1 ) (i dispari) ϕi (x) = ⎪ ⎩ 0
se xi−1 ≤ x ≤ xi+1 , altrimenti.
Come nel caso degli elementi finiti lineari, per descrivere la base è sufficiente fornire l’espressione delle funzioni di base sull’intervallo di riferimento [0, 1] e poi trasformare queste ultime tramite la (3.14). Abbiamo ϕ +0 (ξ) = (1 − ξ)(1 − 2ξ), ϕ +1 (ξ) = 4(1 − ξ)ξ,
ϕ +2 (ξ) = ξ(2ξ − 1).
Di queste funzioni riportiamo una rappresentazione nella Fig. 3.5. Si noti come la generica funzione di base ϕ 2i+1 relativa al nodo x 2i+1 abbia un supporto che coincide con l’elemento cui il punto medio appartiene. Per la sua forma particolare è nota come funzione a bolla. Possiamo anche introdurre altre basi di tipo non lagrangiano. Una particolarmente interessante è quella costituita (localmente) dalle tre funzioni ψ+0 (ξ) = 1 − ξ, ψ+1 (ξ) = ξ, ψ+2 (ξ) = (1 − ξ)ξ. Una base di questo genere è detta gerarchica in quanto, per costruire la base per Xh2 , sfrutta le funzioni di base dello spazio di dimensione immediatamente inferiore, Xh1 . Essa è conveniente da un punto di vista computazionale se si decidesse, durante
3.3 Il metodo degli elementi finiti nel caso monodimensionale
47
l’approssimazione di un problema, di aumentare solo localmente, cioè solo in alcuni elementi, il grado di interpolazione (ovvero se si intendesse effettuare quella che chiameremo adattività in grado od adattività di tipo p). I polinomi di Lagrange sono linearmente indipendenti per costruzione. In generale però tale proprietà andrà verificata per assicurarci che l’insieme dei polinomi scelti sia effettivamente una base. Nel caso delle funzioni ψ+0 , ψ+1 e ψ+2 dobbiamo verificare che se α0 ψ+0 (ξ) + α1 ψ+1 (ξ) + α2 ψ+2 (ξ) = 0 ∀ξ,
allora
α0 = α1 = α2 = 0.
In effetti α0 ψ+0 (ξ) + α1 ψ+1 (ξ) + α2 ψ+2 (ξ) = α0 + ξ(α1 − α0 + α2 ) − α2 ξ 2 = 0 implica α0 = 0, α2 = 0 e quindi α1 = 0. Osserviamo che la matrice di rigidezza nel caso di elementi finiti di grado 2 sarà pentadiagonale. Procedendo nello stesso modo si potranno generare basi per X hr con r arbitrario: facciamo però notare che al crescere del grado polinomiale aumenta il numero di gradi di libertà e dunque il costo computazionale per risolvere il sistema lineare (3.5). Inoltre, come ben noto dalla teoria dell’interpolazione polinomiale, l’uso di gradi elevati combinato con distribuzioni equispaziate dei nodi, conduce ad approssimazioni sempre meno stabili, a discapito dell’aumento teorico di accuratezza. Un rimedio brillante è fornito dall’approssimazione agli elementi spettrali che, facendo uso di nodi opportuni (quelli delle formule di quadratura di Gauss), consente di generare approssimazioni di accuratezza arbitrariamente elevata. Si veda al proposito il Cap. 4.
3.3.1 Una definizione di elemento finito nel caso Lagrangiano Possiamo a questo punto formalizzare che cosa si intende per elemento finito. Dagli esempi visti si può dedurre che tre sono gli ingredienti che consentono di caratterizzare in modo univoco un elemento finito nel caso generale, ovvero indipendentemente dalla dimensione: • • •
il dominio di definizione K dell’elemento (nel caso monodimensionale è un intervallo, nel caso bidimensionale sarà in generale un triangolo); lo spazio dei polinomi P r definito su di esso ed una base {ϕ j }rj=0 di Pr ; un insieme di funzionali su P r , Σ = {γi : Pr → R}ri=0 che soddisfino γi (ϕj ) = δij , essendo δij il delta di Kronecker. Essi permettono di identificare univocamente i coefficienti {α j }rj=0 dello sviluppo di un polinomio p ∈ P r rispetr to alla base scelta, p(x) = j=0 αj ϕj (x). Infatti si ha αi = γi (p), i = 0, . . . , r. Tali coefficienti sono detti gradi di libertà dell’elemento finito.
Nel caso di elementi finiti di Lagrange la base scelta è fornita dai polinomi di Lagrange e il grado di libertà α i è eguale al valore assunto dal polinomio p in un punto a i di K, detto nodo, cioè si ha α i = p(ai ), i = 0, . . . , r. Si può quindi porre, con un piccolo abuso di notazione, Σ = {a j }rj=0 , in quanto la conoscenza della posizione dei nodi ci permette di trovare i gradi di libertà (si noti che questo non è vero in generale,
48
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
si pensi solo al caso della base gerarchica precedentemente introdotta). Nel seguito faremo riferimento esclusivamente al caso di elementi finiti di Lagrange. Nella costruzione di un elemento finito di Lagrange la scelta dei nodi non è arbitraria. Infatti il problema dell’interpolazione su un certo insieme K può non essere ben posto. Per questo motivo risulta utile la seguente definizione: Definizione 3.1 Un insieme Σ = {aj }rj=0 di punti di K è detto unisolvente su Pr se, dati r + 1 scalari arbitrari αj , j = 0, . . . , r, esiste un’unica funzione p ∈ Pr tale che p(aj ) = αj , j = 0, . . . , r. In tal caso, la terna (K, Σ, P r ) viene chiamata elemento finito di Lagrange. Nel caso di elementi finiti lagrangiani si richiama solitamente l’elemento citando il solo spazio dei polinomi: così gli elementi finiti lineari introdotti in precedenza sono detti P 1 , quelli quadratici sono i P 2 , e così via. Come abbiamo visto per gli elementi finiti P 1 e P2 , è conveniente definire l’e+ tipicamente si tratta dellemento finito a partire da un elemento di riferimento K; l’intervallo (0, 1) nel caso monodimensionale, e del triangolo rettangolo di vertici (0, 0), (1, 0) e (0, 1) in quello bidimensionale (a elementi triangolari). Indi, tramite una trasformazione φ, si passa all’elemento finito definito su K. La trasformazione riguarda perciò l’elemento finito nella sua interezza. Più precisamente, si osserva che + Σ, + P + r ) è un elemento finito di Lagrange e se φ : K + → Rd è una applicazione se (K, continua e iniettiva, allora (K, Σ, P r ) si dice ancora elemento finito di Lagrange con + r }, Σ = φ(Σ). + Pr = {p : K → R : p ◦ φ ∈ P
+ K = φ(K),
La definizione dello spazio dei polinomi P r definiti sui triangoli sarà introdotta nella Sez. 3.4.
3.3.2 L’approssimazione con elementi finiti lineari Vediamo ora come approssimare il seguente problema: −u + σu = f, 0 < x < 1, u(0) = 0, u(1) = 0, la cui formulazione debole, come abbiamo visto nel capitolo precedente, è 1 trovare u ∈
H10 (0, 1)
1
u v dx +
: 0
1 σuv dx =
0
f v dx
∀v ∈ H10 (0, 1).
0
Supponiamo di introdurre una decomposizione T h di (0, 1) in N + 1 sottointervalli Kj e di utilizzare elementi finiti lineari. Introduciamo dunque lo spazio:
3.3 Il metodo degli elementi finiti nel caso monodimensionale
49
hi 0 = x0
xN xN +1 = 1
xi−1xi
x
Figura 3.6. Esempio di una funzione di Vh
Vh = {vh ∈ Xh1 : vh (0) = vh (1) = 0}
(3.15)
ossia lo spazio delle funzioni lineari a tratti, nulle al bordo (in Fig. 3.6 è stata rappresentata una funzione di tale spazio). Esso è un sottospazio di H 10 (0, 1). Il corrispondente problema ad elementi finiti è allora dato da: 1 trovare uh ∈ Vh :
uh vh
1 dx +
0
1 σuh vh dx =
0
f vh dx ∀vh ∈ Vh .
(3.16)
0
Utilizziamo come base di X h1 l’insieme delle funzioni a capanna definite in (3.13) con l’accorgimento di considerare i soli indici 1 ≤ i ≤ N . Esprimendo u h come N combinazione lineare di tali funzioni u h (x) = i=1 ui ϕi (x), ed imponendo che la (3.16) sia soddisfatta per ogni elemento della base di V h , si ottiene un sistema di N equazioni nelle N incognite u i : Au = f ,
(3.17)
dove 1 A = [aij ],
aij =
ϕj ϕi
1 dx +
0
u = [ui ];
f = [fi ],
1 fi =
σϕj ϕi dx ; 0
f ϕi dx. 0
Si osservi che ui = uh (xi ), 1 ≤ i ≤ N . Per trovare la soluzione numerica u h basta ora risolvere il sistema lineare (3.17). Nel caso di elementi finiti lineari, la matrice di rigidezza A non è solo sparsa, ma risulta essere anche tridiagonale. Per calcolarla procediamo come segue. Come abbiamo visto non è necessario operare direttamente con le funzioni di base sui singoli intervalli, ma è sufficiente riferirsi a quelle definite sull’intervallo di riferimento: basterà poi trasformare opportunamente gli integrali che compaiono all’interno dei coefficienti di A. Un generico elemento non nullo della matrice di rigidezza è dato da
50
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
1 aij =
(ϕi ϕj
xi + σϕi ϕj )dx =
x i+1
(ϕi ϕj
xi−1
0
(ϕi ϕj + σϕi ϕj )dx.
+ σϕi ϕj )dx + xi
Consideriamo il primo addendo supponendo j = i − 1. Evidentemente, tramite la trasformazione di coordinate (3.14), possiamo riscriverlo come xi
(ϕi ϕi−1 + σϕi ϕi−1 )dx =
xi−1 1
[ϕi (x(ξ))ϕi−1 (x(ξ)) + σϕi (x(ξ))ϕi−1 (x(ξ))]hi dξ,
0
+1 (ξ) e avendo osservato che dx = d(x i−1 + ξhi ) = hi dξ. D’altra parte ϕi (x(ξ)) = ϕ ϕi−1 (x(ξ)) = ϕ +0 (ξ). Osserviamo inoltre che d dξ 1 ϕi (x(ξ)) = ϕ +1 (ξ) = ϕ + (ξ). dx dx hi 1 Analogamente si trova che ϕ i−1 (x(ξ)) = (1/hi )ϕ +0 (ξ). Dunque, l’espressione dell’elemento ai,i−1 diventa 1 ai,i−1 = 0
1 ϕ + (ξ)ϕ +0 (ξ) + σ ϕ +1 (ξ)ϕ +0 (ξ)hi hi 1
dξ.
Il vantaggio sta nel fatto che nel caso di coefficienti costanti tutti gli integrali che compaiono all’interno della matrice A possono essere calcolati una volta per tutte. Vedremo nel caso multidimensionale come questo modo di procedere mantenga la sua importanza anche nel caso di coefficienti variabili.
3.3.3 Interpolazione e stima di interpolazione Consideriamo, ad esempio, l’intervallo I = (a, b). Per ogni v ∈ C 0 (I), definiamo interpolante di v nello spazio di X h1 , determinato dalla partizione T h , la funzione Π h1 v tale che: Πh1 v(xi ) = v(xi ) ∀xi , nodo della partizione, i = 0, . . . , N + 1. Utilizzando la base lagrangiana {ϕ i } dello spazio Xh1 , l’interpolante può essere espressa nel seguente modo: Πh1 v(x) =
N +1
v(xi )ϕi (x).
i=0
3.3 Il metodo degli elementi finiti nel caso monodimensionale
51
Quindi, una volta nota v e una base di X h1 , l’interpolante di v è facilmente calcolabile. L’operatore Π h1 : C 0 (I) → Xh1 che associa ad una funzione v la sua interpolante Π h1 v è detto operatore di interpolazione. Analogamente possiamo definire gli operatori Π hr : C 0 (I) → Xhr , per r ≥ 1. r Indicato con Π K l’operatore di interpolazione locale che associa ad una funzione v r il polinomio Π K v ∈ Pr (K), interpolante v negli r + 1 nodi dell’elemento K ∈ T h , definiamo Πhr v come r (v K ) ∀K ∈ Th . (3.18) Πhr v ∈ Xhr : Πhr v K = ΠK
Teorema 3.2 Sia v ∈ H r+1 (I), per r ≥ 1, e sia Πhr v ∈ Xhr la sua funzione interpolante definita nella (3.18). Vale allora la seguente stima dell’errore di interpolazione: |v − Πhr v|Hk (I) ≤ Ck,r hr+1−k |v|Hr+1 (I)
per k = 0, 1.
(3.19)
Le costanti Ck,r sono indipendenti da v ed h. Ricordiamo che H 0 (I)=L2 (I) e che | · |H0 (I) = · L2 (I) . Dimostrazione. Dimostriamo (3.19) per il caso r = 1, rimandando a [QV94, Cap. 3] o a [Cia78] per il caso più generale. Poniamo e = v − Π h1 v. Dato che e(xj ) = 0 per ogni nodo x j , il teorema di Rolle permette di concludere che esistono degli ξ j ∈ Kj = (xj−1 , xj ), con j = 1, . . . , N + 1, per i quali si ha e (ξj ) = 0. Essendo Πh1 v una funzione lineare in ciascun intervallo K j , otteniamo che per x ∈ Kj x
e (x) =
da cui deduciamo che
|e (x)| ≤
xj
x
e (s)ds =
v (s)ds,
ξj
ξj
|v (s)|ds,
per x ∈ Kj .
xj−1
Utilizzando ora la disuguaglianza di Cauchy-Schwarz otteniamo
|e (x)| ≤
xj
!1/2 1 ds 2
xj−1
xj
!1/2
|v (s)| ds
≤h
2
1/2
xj−1
xj
!1/2
|v (s)| ds 2
.
xj−1
(3.20) Pertanto,
xj
xj−1
|e (x)|2 dx ≤ h2
xj
|v (s)|2 ds.
xj−1
(3.21)
x
Per poter maggiorare e(x) basta notare che, per ogni x ∈ K j , e(x) = xj−1
quindi, applicando la disuguaglianza (3.20), si ottiene
e (s)ds, e
52
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
|e(x)| ≤
xj
|e (s)|ds ≤ h
xj−1
Dunque,
xj
!1/2
xj
3/2
|v (s)| ds 2
.
xj−1
|e(x)| dx ≤ h 2
xj−1
4
xj
|v (s)|2 ds.
(3.22)
xj−1
Sommando sugli indici j da 1 a N + 1 in (3.21) e (3.22) si ottengono, rispettivamente le disuguaglianze ⎛ ⎝
b
⎞1/2 |e (x)|2 dx⎠
a
e
⎛ b ⎞1/2 ≤ h ⎝ |v (x)|2 dx⎠ , a
⎞1/2 ⎞1/2 ⎛ b ⎛ b ⎝ |e(x)|2 dx⎠ ≤ h2 ⎝ |v (x)|2 dx⎠ a
a
che corrispondono alla stima desiderata (3.19) per r = 1, con C k,1 = 1 e k = 0, 1.
3.3.4 Stima dell’errore nella norma H1 Grazie al risultato (3.19) possiamo ottenere una stima sull’errore di approssimazione del metodo di Galerkin. Teorema 3.3 Sia u ∈ V la soluzione esatta del problema variazionale (3.1) completato con condizioni al bordo di Dirichlet omogenee e u h la sua soluzione approssimata con il metodo ad elementi finiti di grado r, ovvero la soluzione del problema (3.16) in cui Vh = {vh ∈ Xhr : vh (0) = vh (1) = 0}. Sia inoltre u ∈ Hp+1 (I), per un opportuno p tale che r ≤ p. Allora vale la seguente disuguaglianza, detta anche stima a priori dell’errore: u − uh V ≤
M Chr |u|Hr+1 (I) , α
(3.23)
essendo C una costante indipendente da u e da h. Dimostrazione. Dalla (3.9), ponendo w h = Πhr u, l’interpolante di grado r di u nello spazio Vh , si ottiene: u − uh V ≤
M u − Πhr uV . α
3.4 Il metodo degli elementi finiti nel caso multidimensionale
53
Ora il membro di destra può essere maggiorato con la stima dell’errore di interpolazione (3.19) per k = 1, da cui segue la tesi. Da quest’ultimo teorema segue che, per aumentare l’accuratezza, si possono seguire due strategie differenti: diminuire h, ossia raffinare la griglia, oppure aumentare r, cioè utilizzare elementi finiti di grado più elevato. Quest’ultima strada ha senso però solo se la soluzione u è abbastanza regolare: infatti, dalla (3.23) si ricava immediatamente che, se u ∈ V ∩ Hp+1 (I), il massimo valore di r che ha senso prendere è r = p. Valori maggiori di r non assicurano un miglioramento dell’approssimazione: dunque se la soluzione non è molto regolare non conviene usare elementi finiti di grado elevato, in quanto il maggior costo computazionale non è ripagato da un miglioramento della convergenza. Un caso interessante è quello in cui la soluzione possiede solo la regolarità minima (p = 0). Dalle relazioni (3.9) e (3.10) si ricava che si ha comunque convergenza, ma la stima (3.23) non è più valida. Non si sa quindi dire come la norma V dell’errore tenda a zero al decrescere di h. Nella Tabella 3.1 vengono riassunte queste situazioni. r u ∈ H1 (I) u ∈ H2 (I) u ∈ H3 (I) u ∈ H4 (I) u ∈ H5 (I) 1 converge
h1
h1
h1
h1
1
2
2
2 converge
h
h
h
h2
3 converge
h1
h2
h3
h3
4 converge
h1
h2
h3
h4
Tabella 3.1. Ordine di convergenza rispetto a h per il metodo degli elementi finiti al variare della regolarità della soluzione e del grado r degli elementi finiti. Su ogni colonna abbiamo evidenziato il risultato corrispondente alla scelta “ottimale” del grado polinomiale
In generale, possiamo affermare che: se u ∈ H p+1 (I), per un p > 0, allora esiste una costante C indipendente da u e da h, tale che u − uh H1 (I) ≤ Chs |u|Hs+1 (I) ,
s = min{r, p}.
(3.24)
3.4 Il metodo degli elementi finiti nel caso multidimensionale In questa sezione estendiamo al caso di problemi ai limiti in regioni bidimensionali il metodo degli elementi finiti introdotto precedentemente per problemi in una dimensione. Faremo inoltre specifico riferimento al caso di elementi finiti triangolari. Molti dei risultati presentati sono comunque immediatamente estendibili ad elementi finiti più generali (si veda, per esempio, [QV94]).
54
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
Per semplicità di trattazione, considereremo solo domini Ω ⊂ R 2 di forma poligonale e triangolazioni T h che ne rappresentino il ricoprimento con triangoli non sovrapposti. Si rimanda al Cap. 12 per una descrizione più dettagliata delle caratteristiche essenziali di una generica triangolazione T h . In questo modo il dominio discretizzato , Ωh = int K K∈Th
rappresentato dalla parte interna dell’unione dei triangoli di T h coincide esattamente con Ω. Ricordiamo che con int(A) indichiamo la parte interna dell’insieme A, ovvero la regione che si ottiene privando A della sua frontiera. Non tratteremo quindi la problematica relativa all’approssimazione di un dominio non poligonale con una triangolazione ad elementi finiti (vedi Fig. 3.7). Pertanto, utilizzeremo nel seguito il simbolo Ω per indicare indistintamente sia il dominio computazionale che la sua (eventuale) approssimazione.
Ωh
Ω
Figura 3.7. Esempio di triangolazione di un dominio non-poligonale. La triangolazione induce una approssimazione Ωh del dominio Ω tale che limh→0 mis(Ω − Ωh ) = 0. Questa problematica non viene trattata in questo testo. Il lettore interessato può consultare, per esempio, [Cia78] o [SF73]
Anche nel caso multidimensionale, il parametro h è legato alla spaziatura della griglia. Posto hK = diam(K), per ogni K ∈ T h , dove diam(K) = max x,y∈K |x − y| è il diametro dell’elemento K, definiamo h = max K∈Th hK . Inoltre, imporremo che la griglia soddisfi la seguente condizione di regolarità. Sia ρ K il diametro del cerchio inscritto al triangolo K (detto anche sfericità); una famiglia di triangolazioni {T h , h > 0} è detta regolare se, per un opportuno δ > 0, è verificata la condizione hK ≤δ ρK
∀K ∈ Th .
(3.25)
Osserviamo che la condizione (3.25) esclude automaticamente tutti i triangoli molto deformati (cioè allungati), ovvero la possibilità di utilizzare griglie computazionali anisotrope. Peraltro, griglie anisotrope sono spesso usate nell’ambito di problemi di fluidodinamica in presenza di strati limite. Si veda l’osservazione 3.4, e, soprattutto, le referenze ([AFG + 00, DV02, FMP04]).
3.4 Il metodo degli elementi finiti nel caso multidimensionale
55
Maggiori dettagli sulla generazione di griglie su domini bidimensionali sono forniti nel Cap. 12. Indichiamo con P r lo spazio dei polinomi di grado globale minore o uguale a r, per r = 1, 2, . . . P1
= {f (x1 , x2 ) = a + bx1 + cx2 , con a, b, c ∈ R},
P2
= {f (x1 , x2 ) = a + bx1 + cx2 + dx1 x2 + ex21 + gx22 , con a, b, c, d, e, g ∈ R}, .. .
Pr
= {f (x1 , x2 ) =
aij xi1 xj2 , con aij ∈ R}.
i+j≤r
Si verifica che gli spazi Pr hanno dimensione pari a (r + 1)(r + 2) . 2 Ad esempio, risulta dim P 1 = 3, dim P2 = 6 e dim P3 = 10, quindi su ogni singolo elemento della triangolazione T h la generica funzione v h è ben definita qualora se ne conosca il valore, rispettivamente, in 3, 6 e 10 nodi opportunamente scelti (si veda la Fig. 3.8). dim Pr =
Figura 3.8. Nodi per polinomi lineari (r = 1, a sinistra), quadratici (r = 2, al centro) e cubici (r = 3, a destra). Tali insiemi sono unisolventi
Introduciamo lo spazio degli elementi finiti * ' Xhr = vh ∈ C 0 (Ω) : vh |K ∈ Pr , ∀K ∈ Th ,
r = 1, 2, . . .
(3.26)
ossia lo spazio delle funzioni globalmente continue che sono polinomiali di grado r sui singoli triangoli (elementi) della reticolazione T h . Definiamo inoltre: ◦
◦
r X hr = {vh ∈ Xh : vh |∂Ω = 0}.
(3.27)
Gli spazi Xhr e X hr sono idonei ad approssimare rispettivamente H 1 (Ω) e H10 (Ω), in virtù della seguente proprietà: Proprietà 3.2 Condizione sufficiente perché una funzione v appartenga a H1 (Ω) è che v ∈ C 0 (Ω) e che v appartenga a H 1 (K), ∀K ∈ Th .
56
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
3.4.1 Risoluzione del problema di Poisson con elementi finiti ◦
Posto Vh =Xhr , si può introdurre il seguente problema a elementi finiti per l’approssimazione del problema di Poisson (2.1) con dato al bordo di Dirichlet (2.2), nel caso omogeneo (cioè con g = 0): trovare uh ∈ Vh : ∇uh ·∇vh dΩ = f vh dΩ ∀ vh ∈ Vh . (3.28) Ω
Ω
Come nel caso monodimensionale, ogni funzione v h ∈ Vh è caratterizzata, in modo univoco, dai valori che essa assume nei nodi N i , con i = 1, . . . , Nh , della triangolazione Th (escludendo i nodi di bordo dove v h = 0); ne consegue che una base dello spazio Vh può essere l’insieme delle ϕ j ∈ Vh , j = 1, . . . , Nh , tali che: 0 i = j, ϕj (Ni ) = δij = i, j = 1, . . . , Nh . 1 i = j, In particolare se r = 1, i nodi sono i vertici degli elementi esclusi quelli appartenenti al bordo di Ω, mentre la generica funzione ϕ j è lineare su ogni triangolo ed assume il valore 1 nel nodo N j e 0 in tutti gli altri nodi della reticolazione (si veda la Fig. 3.9). ϕj
Nj Figura 3.9. La funzione di base ϕj dello spazio Xh1 ed il suo supporto
Una generica funzione v h ∈ Vh può essere espressa attraverso una combinazione lineare delle funzioni della base di V h nel seguente modo: vh (x) =
Nh
vi ϕi (x)
∀ x ∈ Ω, con vi = vh (Ni ).
(3.29)
i=1
Esprimendo allora la soluzione discreta u h in termini della base {ϕj } tramite la (3.29), h uh (x) = N j=1 uj ϕj (x), con u j = uh (Nj ), ed imponendo che essa verifichi la (3.28) per ogni funzione della base stessa, si trova il seguente sistema lineare di N h equazioni nelle Nh incognite uj , equivalente al problema (3.28), Nh uj ∇ϕj · ∇ϕi dΩ = f ϕi dΩ, j=1
Ω
Ω
i = 1, . . . , Nh .
(3.30)
3.4 Il metodo degli elementi finiti nel caso multidimensionale
57
La matrice di rigidezza ha dimensioni N h × Nh ed è definita come A = [aij ]
aij =
con
∇ϕj · ∇ϕi dΩ.
(3.31)
Ω
Inoltre, introduciamo i vettori u = [uj ]
con
uj = uh (Nj ),
b = [bi ] con
bi =
f ϕi dΩ.
(3.32)
Ω
Il sistema lineare (3.30) si può allora scrivere come Au = b.
(3.33)
È evidente che, essendo il supporto della generica funzione di base ϕ i formato dai soli triangoli aventi in comune il nodo N i , A è una matrice sparsa. In particolare il numero degli elementi di A non nulli è dell’ordine di N h in quanto a ij è diverso da zero solo se Nj e Ni sono nodi dello stesso triangolo. Non è invece detto che A abbia una struttura definita, dipenderà da come i nodi sono stati numerati. Consideriamo ora il caso di un problema di Dirichlet non omogeneo rappresentato dalle equazioni (2.1)-(2.2). Abbiamo visto nel capitolo precedente che ci si può comunque ricondurre al caso omogeneo attraverso un rilevamento del dato di bordo. Nel corrispondente problema discreto si costruirà un rilevamento di una opportuna approssimazione del dato di bordo, procedendo nel seguente modo. Indichiamo con N h i nodi interni della triangolazione T h e con Nht il numero totale, inclusi quindi i nodi di bordo, che, per comodità, supporremo numerati per ultimi. L’insieme dei nodi di bordo sarà dunque formato da {N i , i = Nh + 1, . . . , Nht }. Una possibile approssimazione g h del dato al bordo g può essere ottenuta interpolando g sullo spazio formato dalle funzioni traccia su ∂Ω di funzioni di X hr . Essa può essere scritta come combinazione lineare delle tracce delle funzioni di base di X hr associate ai nodi di bordo: Nht ∂Ω (x) ∀x ∈ ∂Ω. (3.34) gh (x) = i=N g(N )ϕ i i +1 h Il suo rilevamento R gh ∈ Xhr è costruito come segue: Rgh (x) =
Nht
i=Nh +1
g(Ni )ϕi (x)
∀x ∈ Ω.
(3.35)
In Fig. 3.10 viene fornito un esempio di un possibile rilevamento del dato al bordo di Dirichlet non omogeneo (2.2), nel caso in cui g coincida con un valore costante. La formulazione ad elementi finiti del problema di Poisson diventa quindi: ◦
trovare uh ∈ Vh : ◦ ∇ uh ·∇vh dΩ = f vh dΩ − ∇Rgh ·∇vh dΩ Ω
Ω
Ω
∀ vh ∈ Vh .
(3.36)
58
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
Figura 3.10. Esempio di rilevamento di un dato al bordo di Dirichlet non omogeneo u = g, con g costante ◦
La soluzione approssimata sarà poi fornita da u h =uh +Rgh . Si noti che, grazie al particolare rilevamento adottato, si può dare il seguente significato algebrico alla (3.36): Au = b − Bg ◦
dove A e b sono definiti come in (3.31) e (3.32), essendo ora u j =uh (Nj ). Posto b Nhb = Nht − Nh (è il numero di nodi di bordo), il vettore g ∈ R Nh e la matrice b B∈ RNh ×Nh hanno componenti, rispettivamente gi = g(Ni+Nh ),
i = 1, . . . , Nhb ,
∇ϕj+Nh · ∇ϕi dΩ,
bij =
i = 1, . . . , Nh , j = 1, . . . , Nhb .
Ω
Osservazione 3.3 Le matrici A e B sono entrambe sparse. Un efficace programma memorizzerà esclusivamente gli elementi non nulli. (Si veda, per esempio, [Saa96] per una descrizione di possibili formati di memorizzazione per matrici sparse, ed anche il Cap. 11). In particolare, grazie allo speciale rilevamento adottato, la matrice B avrà nulle tutte le righe corrispondenti a nodi non adiacenti ad un nodo di bordo (si ricorda che due nodi di griglia si dicono adiacenti se esiste un elemento K ∈ T h a cui entrambi appartengono). Anche il vettore g presenta molti elementi nulli, che non vengono di solito memorizzati. •
3.4.2 Condizionamento della matrice di rigidezza Abbiamo visto che la matrice di rigidezza A = [a(ϕ j , ϕi )] associata al problema di Galerkin, e quindi, in particolare, al metodo degli elementi finiti, è definita positiva; inoltre A è simmetrica se la forma bilineare a(·, ·) è simmetrica. Per una matrice simmetrica e definita positiva, il numero di condizionamento rispetto alla norma 2 è dato da
3.4 Il metodo degli elementi finiti nel caso multidimensionale
K2 (A) =
59
λmax (A) , λmin (A)
essendo λmax (A) e λmin (A), gli autovalori massimo e minimo, rispettivamente, di A. Si può dimostrare che, sia nel caso monodimensionale che in quello multidimensionale, per la matrice di rigidezza vale la seguente relazione: K2 (A) = Ch−2 ,
(3.37)
dove C è una costante indipendente dal parametro h, ma dipendente dal grado degli elementi finiti utilizzati. Per dimostrare la (3.37), ricordiamo che gli autovalori della matrice A verificano la relazione Av = λh v, essendo v l’autovettore associato all’autovalore λ h . Sia vh l’unico elemento dello spazio Vh i cui valori nodali sono le componenti v i di v, ovvero la formulazione data dalla (3.29). Supponiamo a(·, ·) simmetrica, dunque A è simmetrica e i suoi autovalori sono reali e positivi. Abbiamo allora λh =
(Av, v) a(vh , vh ) = . |v|2 |v|2
(3.38)
Supponiamo che la famiglia di triangolazioni {T h , h > 0} sia regolare (ovvero soddisfi la (3.25)). Supporemo inoltre che le triangolazioni siano quasi-uniformi, ovvero tali per cui esiste una costante τ > 0: min hK ≥ τ h
K∈Th
∀h > 0.
Osserviamo ora che, nelle ipotesi fatte su T h , vale la seguente disuguaglianza inversa (per la dimostrazione rimandiamo a [QV94]): ∃ CI > 0
:
∇vh L2 (Ω) ≤ CI h−1 vh L2 (Ω) .
∀vh ∈ Vh ,
(3.39)
Possiamo ora dimostrare che esistono due costanti C 1 , C2 > 0 tali che, per ogni vh ∈ Vh di forma data dalla (3.29), si ha C1 hd |v|2 ≤ vh 2L2 (Ω) ≤ C2 hd |v|2
(3.40)
essendo | · | la norma vettoriale euclidea e d la dimenzione spaziale (ovvero Ω ⊂ R d ), con d = 1, 2, 3. Per la dimostrazione nel caso di d generica rimandiamo a [QV94], Proposizione 6.3.1. Qui ci limitiamo a verificare la seconda disuguaglianza nel caso monodimensionale (d = 1) e per elementi finiti lineari. In effetti, su ogni elemento K = [xi−1 , xi ], abbiamo: ( )2 vi−1 ϕi−1 (x) + vi ϕi (x) dx, vh2 (x) dx = K
K
60
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
con ϕi−1 e ϕi definite secondo la (3.13). Allora, un calcolo diretto mostra che ) ( 2 ) 2 ( 2 vh2 (x) dx ≤ 2 vi−1 ϕ2i−1 (x) dx + vi2 ϕ2i (x) dx = hi vi−1 + vi2 3 K K K con hi = xi − xi−1 . La disuguaglianza vh 2L2 (Ω) ≤ C h |v|2 con C = 4/3, si trova semplicemente sommando sugli intervalli K ed osservando che ogni contributo nodale w i è contato due volte. D’altro canto, dalla (3.38), otteniamo, grazie alla continuità e alla coercività della forma bilineare a(·, ·), α
vh 2H1 (Ω) |v|2
≤ λh ≤ M
vh 2H1 (Ω) |v|2
,
essendo M ed α le costanti di continuità e di coercività, rispettivamente. Ora, v h 2H1 (Ω) ≥ vh 2L2 (Ω) per definizione di norma in H 1 (Ω), mentre vh H1 (Ω) ≤ C3 h−1 vh L2 (Ω) (per un’opportuna costante C 3 > 0) grazie alla (3.39). Usando allora le disuguaglianze (3.40), otteniamo α C1 hd ≤ λh ≤ M C32 C2 h−2 hd . Abbiamo pertanto
λmax (A) M C32 C2 −2 h ≤ λmin (A) α C1
ovvero la (3.37). La (3.37) ci dice che al diminuire del passo h aumenta il numero di condizionamento della matrice di rigidezza e quindi il sistema ad essa associato diventa sempre più mal condizionato. In particolare, se il dato b del sistema lineare (3.33) subisce una perturbazione δb (ovvero è affetto da errore), questa si ripercuote sulla soluzione con una perturbazione δu; si può allora dimostrare che, se non si hanno perturbazioni sulla matrice A, si ha: δu δb ≤ K2 (A) . u b È evidente che tanto più il numero di condizionamento è elevato tanto più la soluzione risente della perturbazione sui dati. (Del resto, si noti che si è sempre in presenza di perturbazioni sui dati a causa degli inevitabili errori di arrotondamento introdotti dal calcolatore.) Come ulteriore esempio si può studiare come il condizionamento si ripercuota sul metodo di risoluzione. Ad esempio, pensiamo di risolvere il sistema lineare (3.33) con il metodo del gradiente coniugato (si veda l’Appendice B). In tal caso viene costruita, in modo iterativo, una successione di soluzioni approssimate u(k) che converge alla soluzione esatta u. In particolare si ha:
3.4 Il metodo degli elementi finiti nel caso multidimensionale
u
(k)
− uA ≤ 2
avendo indicato con v A = v ∈ RNh . Se definiamo
K2 (A) − 1 K2 (A) + 1
61
!k u(0) − uA ,
√ vT Av la cosiddetta “norma A” di un generico vettore K2 (A) − 1 , ρ= K2 (A) + 1
tale quantità dà un’idea della velocità di convergenza del metodo: tanto più ρ è vicino a 0 tanto più velocemente il metodo converge, tanto più ρ è vicino ad 1 tanto più lenta sarà la convergenza. Peraltro, per via della (3.37), tanto più si vuole essere accurati, diminuendo h, tanto più il sistema sarà mal condizionato, e quindi tanto più “problematica” ne risulterà la sua risoluzione. Nel caso si usi un metodo iterativo, il sistema andrà necessariamente precondizionato, ossia occorre trovare una matrice invertibile P, detta precondizionatore, tale che K2 (P−1 A) K2 (A), quindi applicare il metodo iterativo al sistema precondizionato con P (si veda l’Appendice B).
3.4.3 Stima dell’errore di approssimazione nella norma dell’energia ¯ definiamo interpolanAnalogamente al caso monodimensionale, per ogni v ∈ C 0 (Ω) 1 te di v nello spazio di X h determinato dalla triangolazione T h , la funzione Π h1 v tale che: Πh1 v(Ni ) = v(Ni ) ∀Ni , nodo di Th , per i = 1, . . . , Nh . È evidente che, se {ϕ i } è la base lagrangiana dello spazio X h1 , l’interpolante può essere espressa nel seguente modo: Πh1 v(x) =
Nh
v(Ni )ϕi (x).
i=1
Quindi, una volta nota v e la base di X h1 , l’interpolante di v è facilmente calcolabile. L’operatore Π h1 : C 0 (Ω) → Xh1 che associa ad una funzione continua v la sua interpolante Π h1 v è detto operatore di interpolazione. Analogamente possiamo definire un operatore Π hr : C 0 (Ω) → Xhr , per ogni inr tero r ≥ 1. Indicato con Π K l’operatore di interpolazione locale che associa ad una r funzione continua v il polinomio Π K v ∈ Pr (K), interpolante v nei gradi di libertà r dell’elemento K ∈ Th , definiamo Πh v come r (v K ) ∀K ∈ Th . (3.41) Πhr v ∈ Xhr : Πhr v K = ΠK
62
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
FK K
b K
b e il generico triangolo K Figura 3.11. Mappa FK tra il triangolo di riferimento K
Si supporrà che T h appartenga ad una famiglia di triangolazioni regolari di Ω. Per ricavare una stima per l’errore di approssimazione u − u h V seguiamo una procedura analoga a quella utilizzata nel Teorema 3.3 per il caso monodimensionale. Il primo obiettivo è dunque quello di derivare una opportuna stima per l’errore di interpolazione. A tal fine ricaveremo informazioni utili a partire dai parametri geometrici di ciascun triangolo K, ovvero dal diametro h K e dalla sfericità ρK di K. Sfrutte+ → K tra il triangolo di remo inoltre la trasformazione affine ed invertibile F K : K + riferimento K e il generico triangolo K (si veda la Fig. 3.11). Tale mappa è definiˆ + bK , con BK ∈ R2×2 e bK ∈ R2 , e soddisfa la relazione ta da FK (ˆ x ) = BK x + + non è univoca. FK (K) = K. Si ricorda che la scelta del triangolo di riferimento K Avremo bisogno di alcuni risultati preliminari. Lemma 3.2 (Trasformazione delle seminorme) Per ogni intero m ≥ 0 e ogni + → R la funzione definita da vˆ = v ◦ F K . Allora v ∈ Hm (K), sia vˆ : K m + vˆ ∈ H (K). Inoltre, esiste una costante C = C(m) > 0 tale che 1
m − |ˆ v |Hm (K) b ≤ C BK | det BK | 2 |v|Hm (K) ,
|v|Hm (K) ≤ C
−1 m BK
1 2
| det BK | |ˆ v |Hm (K) b ,
(3.42) (3.43)
essendo · la norma matriciale associata alla norma vettoriale euclidea · 2 , ovvero BK ξ2 BK = sup . (3.44) ξ∈R2 ,ξ=0 ξ2
Dimostrazione. Dal momento che C m (K) ⊂ Hm (K) con inclusione densa, per ogni m ≥ 0, possiamo limitarci a dimostrare le due disuguaglianze precedenti per le funzioni di C m (K), estendendo poi, per densità, il risultato alle funzioni di H m (K). Le derivate nel seguito saranno dunque da intendersi in senso classico. Ricordiamo che 1/2 α 2 |ˆ v |Hm (K) = |D v ˆ | dˆ x , b |α|=m
b K
3.4 Il metodo degli elementi finiti nel caso multidimensionale
63
rimandando all’Appendice A.2 per la definizione della derivata D α . Utilizzando la regola di derivazione per una funzione composita, otteniamo m Dα vˆL2 (K) (Dβ v) ◦ FK L2 (K) b ≤ CBK b . |β|=m
Riportando tale relazione sul triangolo K otteniamo 1
m − Dα vˆL2 (K) b ≤ CBK | det BK | 2 vHm (K) .
La disuguaglianza (3.42) segue dopo aver sommato sul multi-indice α, per |α| = m. Il risultato (3.43) può essere dimostrato procedendo in modo del tutto analogo.
−1 Lemma 3.3 (Stime per le norme BK e BK ) Si hanno le seguenti maggiorazioni:
hK , ρˆ ˆ h −1 BK ≤ , ρK BK ≤
(3.45) (3.46)
ˆ e ρˆ il diametro e la sfericità del triangolo di riferimento K. + essendo h Dimostrazione. Grazie alla (3.44) abbiamo BK =
1 ρˆ
sup ξ∈R2 , ξ 2 =ρˆ
BK ξ2 .
+ tali che x ˆey ˆ∈K ˆ−y ˆ = ξ. Per ogni ξ, con ξ 2 = ρˆ, possiamo trovare due punti x Poiché BK ξ = FK (ˆ x) − FK (ˆ y), abbiamo che B K ξ ≤ hK , ovvero la (3.45). Procedura del tutto analoga porta al risultato (3.46). + della seminorma di Quello di cui abbiamo bisogno ora è una stima in H m (K) r m (v − ΠK v) ◦ FK , per ogni funzione v di H (K). Denotiamo nel seguito l’interpolato r r + + + ΠK v ◦ FK con [ΠK v] b. I nodi di K sono N K i = FK (Ni ), essendo Ni i nodi di K, + e, analogamente, le funzioni di base ϕˆ i definite su K son identificate dalla relazione K ϕˆi = ϕK i ◦ FK , avendo indicato con ϕ i le funzioni di base associate all’elemento K. Pertanto r r [ΠK v] b = ΠK v ◦ FK =
MK i=1
K v(NK i )ϕi ◦ FK =
MK
+ i ))ϕˆi = Π r vˆ, v(FK (N b K
i=1
essendo MK il numero dei nodi su K individuati dalla scelta fatta per il grado r. Ne segue dunque che
64
3 Il metodo di Galerkin-elementi finiti per problemi ellittici r r |(v − ΠK v) ◦ FK |Hm (K) v − ΠK ˆ|Hm (K) b = |ˆ b . bv
(3.47)
Al fine di stimare il secondo membro dell’uguaglianza precedente, iniziamo a dimostrare il seguente risultato: + : Hr+1 (K) + → Hm (K), + con Lemma 3.4 (Lemma di Bramble-Hilbert) Sia L m ≥ 0 e r ≥ 0, una trasformazione lineare e continua tale che + p) = 0, L(ˆ
+ ∀ˆ p ∈ Pr (K).
(3.48)
+ si ha Allora, per ogni vˆ ∈ H r+1 (K), + + v )| m b ≤ L |L(ˆ m (K)) b b H (K) L(Hr+1 (K),H
inf
b p∈P ˆ r (K)
ˆ v + pˆHr+1 (K) b ,
(3.49)
+ Hm (K)) + indica lo spazio delle trasformazioni dove L(Hr+1 (K), + → Hm (K) + lineari e continue la cui norma è l : Hr+1 (K) lL(Hr+1 (K),H m (K)) b b =
l(v)Hm (K)) b
sup b v∈Hr+1 (K),v =0
vHr+1 (K) b
.
(3.50)
+ Per ogni pˆ ∈ Pr (K), + grazie alla (3.48) e alla Dimostrazione. Sia vˆ ∈ Hr+1 (K). definizione di norma (3.50), si ottiene + v )| m b = |L(ˆ + v + pˆ)| m b ≤ L + |L(ˆ v + pˆHr+1 (K) m (K)) b b ˆ b . H (K) H (K) L(Hr+1 (K),H Si deduce il risultato (3.49) grazie all’arbitrarietà di pˆ.
Il risultato seguente (per la cui dimostrazione rimandiamo a [QV94, Cap. 3]) fornisce l’ultimo strumento necessario per ottenere la stima per l’errore di interpolazione che stiamo cercando. Lemma 3.5 (Lemma di Deny-Lions) Per ogni r ≥ 0, esiste una costante C = + tale che C(r, K) inf ˆ v + pˆHr+1 (K) v |Hr+1 (K) b ≤ C |ˆ b
p∈P ˆ r
+ ∀ˆ v ∈ Hr+1 (K).
Come conseguenza dei due precedenti Lemmi, possiamo fornire il seguente
(3.51)
3.4 Il metodo degli elementi finiti nel caso multidimensionale
65
+ : Hr+1 (K) + → Hm (K), + con m ≥ 0 e r ≥ 0, una trasforCorollario 3.3 Sia L + Allora esiste una + p) = 0, ∀ˆ mazione lineare e continua tale che L(ˆ p ∈ Pr (K). + si ha + tale che, per ogni vˆ ∈ H r+1 (K), costante C = C(r, K) + + v )| m b ≤ C L v |Hr+1 (K) |L(ˆ m (K)) b b |ˆ b . H (K) L(Hr+1 (K),H
(3.52)
Siamo ora in grado di dimostrare la stima di interpolazione cercata. Teorema 3.4 (Stima locale dell’errore d’interpolazione) Sia r ≥ 1 e 0 ≤ + > 0 tale che m ≤ r + 1. Allora esiste una costante C = C(r, m, K) r |v − ΠK v|Hm (K) ≤ C
hr+1 K |v|Hr+1 (K) ρm K
∀v ∈ Hr+1 (K).
(3.53)
Dimostrazione. Dalla Proprietà A.3 ricaviamo innanzitutto che H r+1 (K) ⊂ C 0 (K), r per r ≥ 1. L’operatore d’interpolazione Π K risulta dunque ben definito in H r+1 (K). Utilizzando, nell’ordine, i risultati (3.43), (3.47), (3.46) e (3.52), abbiamo 1
−1 m r r |v − ΠK v|Hm (K) ≤ C1 BK | det BK | 2 |ˆ v − ΠK ˆ|Hm (K) b bv
≤ C1
ˆm h 1 r | det BK | 2 | vˆ − ΠK ˆ |Hm (K) b bv m ρK - ./ 0 + v) L(ˆ
ˆm h 1 + | det BK | 2 L v |Hr+1 (K) m (K)) b b |ˆ b L(Hr+1 (K),H ρm K 1 1 = C3 m | det BK | 2 |ˆ v |Hr+1 (K) b , ρK ≤ C2
+ e C3 = C3 (r, m, K) + costanti opportune. essendo C1 = C1 (m), C2 = C2 (r, m, K) + con l’operatore Osserviamo che il risultato (3.52) è stato applicato identificando L r r ˆ m e la + p = 0, per ogni pˆ ∈ P r (K). Inoltre la quantità h I − ΠKb , essendo (I − ΠKb )ˆ + sono state incluse nella costante C 3 . norma dell’operatore L Applicando a questo punto (3.42) e (3.45) otteniamo il risultato (3.53), ovvero r |v − ΠK v|Hm (K) ≤ C4
1 hr+1 BK r+1 |v|Hr+1 (K) ≤ C5 Km |v|Hr+1 (K) , m ρK ρK
(3.54)
+ e C5 = C5 (r, m, K) + due opportune costanti. La quantità essendo C4 = C4 (r, m, K) r+1 ρˆ generata dalla (3.45) e legata alla sfericità dell’elemento di riferimento è stata direttamente inglobata nella costante C 5 . Possiamo infine dimostrare la stima globale per l’errore d’interpolazione
66
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
Teorema 3.5 (Stima globale per l’errore d’interpolazione) Sia {T h }h>0 una famiglia di triangolazioni regolari del dominio Ω e sia m = 0, 1 e r ≥ 1. Allora + > 0 tale che esiste una costante C = C(r, m, K) |v − Πhr v|Hm (Ω) ≤ C
2(r+1−m)
hK
|v|2Hr+1 (K)
1/2
∀v ∈ Hr+1 (Ω).
K∈Th
(3.55) In particolare otteniamo |v − Πhr v|Hm (Ω) ≤ C hr+1−m |v|Hr+1 (Ω)
∀v ∈ Hr+1 (Ω).
(3.56)
Dimostrazione. Grazie alla (3.53) e alla condizione di regolarità (3.25), abbiamo r |v − ΠK v|2Hm (K) |v − Πhr v|2Hm (Ω) = K∈Th
hr+1 2 K |v|2Hr+1 (K) ρm K K∈Th hK 2m 2(r+1−m) = C1 hK |v|2Hr+1 (K) ρK K∈Th 2(r+1−m) ≤ C1 δ 2m hK |v|2Hr+1 (K) , ≤ C1
K∈Th
+ e C = C1 δ 2m . La (3.56) segue grazie al ovvero la (3.55), essendo C 1 = C1 (r, m, K) fatto che hK ≤ h, per ogni K ∈ Th , e che |v|Hp (Ω) =
|v|2Hp (K)
1/2
,
K∈Th
per ogni intero p ≥ 0.
Nel caso m = 0 la regolarità della griglia non è necessaria per ottenere la stima (3.56). Ciò non è più vero per m = 1. Infatti, dato un triangolo K e una funzione v ∈ Hr+1 (K), con r ≥ 1, si può dimostrare che vale la seguente disuguaglianza [QV94], hr+1 |v − Πhr v|Hm (K) ≤ C˜ Km |v|Hr+1 (K) , m = 0, 1, ρK con C˜ indipendente da v e da T h . Quindi, nel caso m = 1 per una famiglia di griglie ˜ essendo δ la costante che appare in regolari otteniamo la (3.56) ponendo C = δ C, (3.25). D’altra parte, la necessità della condizione di regolarità può essere dimostrata considerando un caso particolare per cui, per ogni C > 0, si può costruire una mesh
3.4 Il metodo degli elementi finiti nel caso multidimensionale
67
100
x2
90
80
70
60
50
40
Kl
l
30
20
10
x1
1
0
0
0.1
0.2
0.3
0.4
0.5 l
0.6
0.7
0.8
0.9
1
Figura 3.12. Il triangolo Kl (sinistra) e l’andamento, in funzione di l, del rapporto |v − Πh1 v|H1 (Kl ) /|v|H2 (Kl )
(non regolare) per la quale la disuguaglianza (3.56) non è vera. Ci limiteremo a fornire tale controesempio per il caso r = 1. Si consideri il triangolo K l illustrato in Fig. 3.12, di vertici (0, 0), (1, 0), (0.5, l), √ 3 con l ≤ 2 , e la funzione v(x1 , x2 ) = x21 . Chiaramente v ∈ H2 (Kl ) e la sua interpolante lineare su Kl è data da Πh1 v(x1 , x2 ) = x1 − (4l)−1 x2 . Essendo in questo caso hKl = 1, la disuguaglianza (3.56), applicata al singolo triangolo K l , fornirebbe |v − Πh1 v|H1 (Kl ) ≤ C|v|H2 (Kl ) .
(3.57)
Consideriamo ora il comportamento del rapporto ηl =
|v − Πh1 v|H1 (Kl ) |v|H2 (Kl )
quando l tende a zero, ovvero quando la forma del triangolo si schiaccia. Osserviamo che consentire a l di tendere a zero equivale a violare la condizione di regolarità (3.25) in quanto, per l sufficientemente piccoli, h Kl = 1, mentre, indicando con p Kl il perimetro di K l , 4|Kl | 2l √ ρK l = = , pKl 1 + 1 + 4l2 tende a zero, dove con |K l | si è indicata l’area dell’elemento K l . Si ha ∂x2 (v − Πh1 v)L2 (Kl ) ηl ≥ = |v|H2 (Kl )
Kl
( 1 )2 4l
2l
dx
! 12 =
1 . 8l
Quindi liml→0 ηl = +∞ (si veda la Fig. 3.12). Di conseguenza, non può esistere una costante C, indipendente da T h , per cui valga la (3.57). Il teorema sulla stima dell’errore di interpolazione ci fornisce immediatamente una stima sull’errore di approssimazione del metodo di Galerkin, la cui dimostrazione è del tutto analoga a quella del Teorema 3.3 per il caso monodimensionale. In effetti,
68
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
basta applicare la (3.9) ed il Teorema 3.5 (per m = 1) per ottenere la seguente stima dell’errore: Teorema 3.6 Sia u∈ V la soluzione esatta del problema variazionale (3.1) ed uh la sua soluzione approssimata con il metodo agli elementi finiti di grado r. Se u ∈ Hr+1 (Ω), allora valgono le seguenti stime a priori dell’errore: u − uh H1 (Ω) ≤
1/2 M 2r 2 C hK |u|Hr+1 (K) , α
(3.58)
K∈Th
ed anche
M Chr |u|Hr+1 (Ω) , α essendo C una costante indipendente da h e da u. u − uh H1 (Ω) ≤
(3.59)
Anche nel caso multidimensionale per aumentare l’accuratezza si possono seguire dunque due strategie differenti: 1. diminuire h, ossia raffinare la griglia; 2. aumentare r, cioè utilizzare elementi finiti di grado più elevato. Quest’ultima strada è percorribile però solo se la soluzione u è abbastanza regolare. In generale, possiamo affermare che, se u ∈ H p+1 (Ω) per qualche p > 0, allora u − uh H1 (Ω) ≤ Chs |u|Hs+1 (Ω) ,
s = min{r, p},
(3.60)
come già visto nel caso monodimensionale (si veda la (3.24)). Osservazione 3.4 (Caso di griglie anisotrope) La stima dell’errore d’interpolazione (3.53) (e la conseguente stima dell’errore di discretizzazione) può essere generalizzata al caso di griglie anisotrope. In tal caso il termine di destra della (3.53) assume un’espressione più complicata: queste stime, infatti, a causa della loro natura direzionale, devono tener conto delle informazioni provenienti da direzioni caratteristiche associate ai singoli triangoli che rimpiazzano l’informazione “globale” concentrata nella seminorma |v|Hr+1 (K) . Il lettore interessato può consultare [Ape99, FP01]. •
3.4.4 Stima dell’errore di approssimazione in norma L2 La (3.59) fornisce una stima dell’errore di approssimazione nella norma dell’energia. Analogamente può essere ricavata una stima dell’errore nella norma L 2 . Essendo quest’ultima norma meno forte della precedente, ci si deve aspettare una più elevata velocità di convergenza rispetto ad h.
3.4 Il metodo degli elementi finiti nel caso multidimensionale
69
Lemma 3.6 (di regolarità ellittica) Si consideri il generico problema di Dirichlet omogeneo −Δw = g in Ω, w=0 su ∂Ω, con g ∈ L2 (Ω). Se ∂Ω è sufficientemente regolare (ad esempio, è sufficiente che ∂Ω sia una curva di classe C 2 , oppure che Ω sia un poligono convesso), allora w ∈ H2 (Ω) ed esiste una costante C > 0 tale che wH2 (Ω) ≤ CgL2 (Ω) .
(3.61)
Per la dimostrazione si veda, ad esempio, [Bre86, Gri76]. Teorema 3.7 Sia u ∈ V la soluzione esatta del problema variazionale (3.1) ed uh la sua soluzione approssimata con il metodo agli elementi finiti di grado r. Sia inoltre u ∈ Hp+1 (Ω) per un opportuno p > 0. Allora vale la seguente stima a priori dell’errore nella norma L 2 (Ω): u − uh L2 (Ω) ≤ Chs+1 |u|Hs+1 (Ω) ,
s = min{r, p},
(3.62)
essendo C una costante indipendente da h e da u. Dimostrazione. Ci limiteremo a dimostrare questo risultato per il problema di Poisson (2.12), la cui formulazione debole è data in (2.16). Sia e h = u − uh l’errore di approssimazione e si consideri il seguente problema di Poisson ausiliario (detto problema aggiunto) con termine noto pari all’errore e h : −Δφ = eh in Ω, (3.63) φ=0 su ∂Ω, la cui formulazione debole è trovare φ ∈ V :
eh v dΩ
a(φ, v) =
∀ v ∈ V,
(3.64)
Ω
con V = H10 (Ω). Prendendo v = e h ∈ V , si ha eh 2L2 (Ω) = a(φ, eh ). Essendo la forma bilineare simmetrica, per l’ortogonalità di Galerkin (3.7) si ha a(eh , φh ) = a(φh , eh ) = 0 Ne segue che
∀ φh ∈ Vh .
70
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
eh 2L2 (Ω) = a(φ, eh ) = a(φ − φh , eh ).
(3.65)
Prendendo ora φ h = Πh1 φ, applicando la disuguaglianza di Cauchy-Schwarz alla forma bilineare a(·, ·) e la stima dell’errore di interpolazione (3.56) si ottiene eh 2L2 (Ω) ≤ |eh |H1 (Ω) |φ − φh |H1 (Ω) ≤ |eh |H1 (Ω) Ch|φ|H2 (Ω) .
(3.66)
Si noti che si può applicare l’operatore di interpolazione Π h1 a φ poiché, grazie al ¯ grazie alla proprietà A.3 Lemma 3.6, φ ∈ H2 (Ω) e quindi, in particolare, φ ∈ C 0 (Ω), dell’Appendice A. Applicando il Lemma 3.6 al problema aggiunto (3.63) si ottiene la disuguaglianza |φ|H2 (Ω) ≤ Ceh L2 (Ω) ,
(3.67)
che, applicata alla (3.66), fornisce infine eh L2 (Ω) ≤ Ch|eh |H1 (Ω) , dove C ingloba tutte le costanti apparse fino ad ora. Sfruttando ora la stima dell’errore nella norma dell’energia (3.59) si ottiene la (3.62). Generalizziamo il risultato appena dimostrato per il problema di Poisson al caso di un generico problema ai limiti ellittico approssimato con elementi finiti e per il quale valga una stima dell’errore di approssimazione nella norma dell’energia come la (3.59) ed una proprietà di regolarità ellittica analoga a quella enunciata nel Lemma 3.6. In particolare, consideriamo il caso in cui la forma bilineare a(·, ·) non sia necessariamente simmetrica. Sia u la soluzione esatta del problema trovare u ∈ V : a(u, v) = (f, v) ∀v ∈ V,
(3.68)
e uh la soluzione del problema di Galerkin trovare uh ∈ Vh : a(uh , vh ) = (f, vh )
∀vh ∈ Vh .
Si supponga infine che valga la stima dell’errore (3.59) e consideriamo il problema aggiunto: per ogni g ∈ L 2 (Ω), trovare φ= φ(g) ∈ V : a(v, φ) = (g, v) ∀v ∈ V.
(3.69)
Supponiamo che per la soluzione u del problema primale (3.68) valga un risultato di regolarità ellittica; si può verificare che allora lo stesso risultato è valido per il problema duale (o aggiunto) (3.69), ovvero che ∃C >0 :
φ(g)H2 (Ω) ≤ C gL2 (Ω)
∀g ∈ L2 (Ω).
3.5 Il problema dell’adattività della griglia
71
In particolare, ciò è vero per un generico problema ellittico con dati di Dirichlet o di Neumann (ma non misti) su di un dominio Ω poligonale e convesso [Gri76]. Scegliamo ora g = eh ed indichiamo, per semplicità, φ = φ(e h ). Scelto inoltre v = eh , si ha dunque eh 2L2 (Ω) = a(eh , φ). Essendo, per la regolarità ellittica del problema aggiunto, φ ∈ H 2 (Ω) e φH2 (Ω) ≤ Ceh L2 (Ω) grazie alla ortogonalità di Galerkin, si ha che: eh 2L2 (Ω)
=
a(eh , φ) = a(eh , φ − Πh1 φ)
≤
C1 eh H1 (Ω) φ − Πh1 φH1 (Ω)
≤
C2 eh H1 (Ω) h φH2 (Ω)
≤
C3 eh H1 (Ω) h eh L2 (Ω) ,
dove abbiamo sfruttato la continuità della forma a(·, ·) e la stima (3.59). Quindi eh L2 (Ω) ≤ C3 heh H1 (Ω) , da cui segue la (3.62), utilizzando la stima (3.60) dell’errore in H 1 (Ω). Osservazione 3.5 La tecnica sopra illustrata, basata sull’uso del problema aggiunto per la stima della norma L 2 dell’errore di discretizzazione, è nota in letteratura come trucco di Aubin-Nitsche [Aub67, Nit68]. • Esempio 3.1 Consideriamo il problema modello −Δu + u = f in Ω = (0, 1)2 con u = g su ∂Ω. Si supponga di scegliere il termine noto f e la funzione g in modo tale che la soluzione esatta del problema sia u(x, y) = sin(2πx) cos(2πy). Risolviamo tale problema con il metodo di Galerkin-elementi finiti di grado 1 e 2 su una griglia uniforme di passo h. Nel grafico di Fig. 3.13 viene mostrato l’andamento dell’errore al decrescere del passo h sia nella norma di L2 (Ω), sia in quella di H1 (Ω). Come si può osservare dalla pendenza delle rette in figura, l’errore si riduce, rispetto alla norma L2 (linee con le crocette), in modo quadratico se si utilizzano elementi finiti lineari (linea continua) e in modo cubico quando vengano utilizzati elementi finiti quadratici (linea tratteggiata). Rispetto alla norma H1 (linee senza le crocette) invece si ha una riduzione dell’errore lineare rispetto agli elementi finiti lineari (linea continua), quadratica qualora vengano utilizzati elementi finiti quadratici (linea tratteggiata). Nella Fig. 3.14 vengono mostrate le soluzioni sulla griglia di passo 1/8 ottenute con elementi finiti lineari (a sinistra) e quadratici (a destra).
3.5 Il problema dell’adattività della griglia Nella sezione precedente abbiamo derivato, grazie ai Teoremi 3.6 e 3.7, delle stime a priori dell’errore di approssimazione per il metodo degli elementi finiti.
72
3 Il metodo di Galerkin-elementi finiti per problemi ellittici 10 1
1
1
0.1 1
Errore
2
0.01 1 2
0.001 1 3
1e-04
1e-05 0.01
0.1 h
1
Figura 3.13. Andamento rispetto ad h dell’errore in norma H1 (Ω) (linee senza crocette) ed in norma L2 (Ω) (linee con le crocette) per elementi finiti lineari (linee continue) e quadratici (linee tratteggiate) per la risoluzione del problema riportato nell’Esempio 3.1
2
2
1
1
0
0
−1
1 −1
−2 0
0.5 0.2
0.4
0.6
0.8
1
−2 0
1 0.5 0.2
0.4
0
0.6
0.8
1
0
Figura 3.14. Soluzioni calcolate con elementi finiti lineari (a sinistra) e quadratici (a destra) su una griglia uniforme di passo 1/8
Essendo il parametro h la lunghezza massima dei lati della triangolazione, se facessimo riferimento alla (3.59) saremmo indotti a raffinare la reticolazione ovunque nella speranza di ridurre l’errore u − u h H1 (Ω) . Conviene piuttosto fare riferimento alla (3.58) in cui la maggiorazione dell’errore tiene conto del comportamento locale della soluzione, attraverso la seminorma |u| Hr+1 (K) su ogni elemento, e del parametro geometrico locale h K della triangolazione. In effetti, al fine di avere una griglia efficiente, che ottimizzi il numero di elementi necessari per ottenere una accuratezza desiderata, si può cercare di equidistribuire l’errore su ogni elemento K ∈ T h . In particolare, vorremmo ottenere hrK |u|Hr+1 (K) η
∀K ∈ Th ,
dove η è un’opportuna costante che dipende solo dall’accuratezza richiesta all’approssimazione u h e dal numero di elementi della griglia. È evidente che un maggior contributo di |u| Hr+1 (K) (dovuto ad una più pronunciata variabilità di u|K ) dovrà essere controbilanciato o da un passo reticolare locale h K
3.5 Il problema dell’adattività della griglia
73
più piccolo o da un grado polinomiale r più elevato. Nel primo caso si parla di hadattività della griglia, nel secondo caso di p-adattività (dove p sta per “polinomiale”). Nel seguito ci occuperemo solo della prima tecnica. Tuttavia facciamo riferimento al Cap. 4 per l’analisi di stime dell’errore che risultano più convenienti da utilizzarsi in vista di un’adattività di tipo polinomiale. Le osservazioni fatte fino ad ora, seppur corrette, risultano in realtà poco utili dato che la soluzione u non è nota. Si può allora operare seguendo diverse strategie. Un primo modo è quello di utilizzare la stima a priori dell’errore (3.58) sostituendo la soluzione esatta u con una sua approssimazione opportuna, facilmente calcolabile su ogni singolo elemento. Si parla in tal caso di adattività a priori. Un secondo approccio è invece basato sull’uso di una stima a posteriori dell’errore in grado di legare l’errore di approssimazione all’andamento della soluzione approssimata uh , nota dopo aver risolto numericamente il problema. In tal caso la griglia ottimale di calcolo verrà costruita tramite un processo iterativo in cui risoluzione, stima dell’errore e modifica della griglia di calcolo vengono ripetute fino al raggiungimento dell’accuratezza richiesta. Si parla in tal caso di adattività a posteriori. Le strategie di adattività a priori e a posteriori non sono mutuamente esclusive, ma possono coesistere. Precisamente, generata una griglia opportuna di partenza tramite un’adattività a priori, questa può essere ulteriormente raffinata tramite l’analisi a posteriori.
3.5.1 Adattività a priori basata sulla ricostruzione delle derivate Una tecnica di adattività a priori si basa sulla stima (3.58) in cui si approssimano opportunamente le derivate di u su ogni elemento, al fine di stimare le seminorme locali di u. Per far ciò si utilizza la soluzione approssimata u h∗ calcolata su una griglia di tentativo di passo h ∗ , con h∗ abbastanza grande in modo che il calcolo sia computazionalmente economico, ma non eccessivamente grande da generare un errore troppo elevato nell’approssimazione delle derivate, cosa che potrebbe compromettere l’efficacia dell’intera procedura. Esemplifichiamo l’algoritmo per elementi finiti lineari, nel qual caso la (3.58) assume la forma ! 12 2 2 u − uh H1 (Ω) ≤ C hK |u|H2 (K) (3.70) K∈Th
(C tiene ora conto anche delle costanti di continuità e di coercività della forma bilineare). Puntiamo a generare una triangolazione T h tale da garantirci che il termine di destra della (3.70) sia inferiore ad una tolleranza > 0 prestabilita. Supponiamo dunque di aver calcolato u h∗ su una griglia triangolare T h∗ con N ∗ triangoli. Utilizziamo uh∗ per approssimare le derivate seconde di u che intervengono nella definizione della seminorma |u|2H2 (K) . Poiché uh∗ non possiede derivate seconde continue in Ω, occorre procedere con un’adeguata tecnica di ricostruzione. Una possibile tecnica è basata sull’applicazione di una proiezione locale di tipo H 1 . Per ogni nodo N i della griglia si considera l’insieme (patch) K Ni degli elementi che hanno N i come nodo (cioè degli
74
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
elementi che formano il supporto di ϕ i , si veda la Fig. 3.9). Si trovano quindi i piani πij (x) = aji · x + bji che minimizzano ∂uh∗ j (x)2 dx, j = 1, 2, (3.71) πi (x) − ∂x j K Ni risolvendo un sistema a due equazioni per i coefficienti a ji e bji . Questa è la fase di proiezione locale. Si costruisce così un’approssimazione lineare a tratti g h∗ ∈ (Xh1∗ )2 del gradiente ∇u h∗ definita come j [gh∗ (x)]j = πi (xi )ϕi (x), j = 1, 2, (3.72) i
dove la somma si estende su tutti i nodi N i della griglia. Una volta ricostruito il gradiente si può procedere in due modi differenti, a seconda del tipo di ricostruzione che si vuole ottenere per le derivate seconde. Ricordiamo innanzitutto che la matrice Hessiana associata ad u è definita da D 2 (u) = ∇(∇u), ovvero 2 D (u) i,j =
∂2u , ∂xi ∂xj
i, j = 1, 2 .
Una sua approssimazione, costante a tratti, si ottiene ponendo, per ogni K ∗ ∈ Th∗ , ) 1( ∇gh∗ + (∇gh∗ )T K ∗ . D2h K ∗ = 2
(3.73)
Si noti l’uso della forma simmetrica del gradiente, necessaria per avere la simmetria dell’Hessiano. Come alternativa computazionalmente più onerosa, nel caso in cui si sia interessati ad una ricostruzione lineare a tratti dell’Hessiano, si può applicare la stessa tecnica di proiezione locale individuata dalle (3.71) e (3.72) direttamente al ricostruito g h∗ , simmetrizzando poi la matrice così ottenuta tramite la (3.73). In ogni caso, siamo ora in grado di calcolare una approssimazione di |u| H2 (K) su un generico triangolo K ∗ di Th∗ , approssimazione che sarà ovviamente legata al ricostruito D2h . Dalla (3.70) si deduce che, per ottenere la soluzione approssimata u h con un errore inferiore o eguale ad una tolleranza prefissata , si deve costruire una nuova griglia Thnew tale per cui
h2K |u|2H2 (K)
K∈Thnew
K∈Thnew
h2K
2
[D2h ]ij 2L2 (K) ≤
i,j=1
2 . C
Idealmente, si desidera inoltre che l’errore sia equidistribuito, cioè che ogni elemento della sommatoria sia all’incirca lo stesso su ciascun elemento K della nuova griglia. Una possibile procedura di adattazione consiste allora nel generare la nuova griglia suddividendo opportunamente tutti gli N ∗ triangoli K ∗ di Th∗ per i quali si abbia 2 2 ηK ∗ = hK ∗
2 i,j=1
[D2h ]ij 2L2 (K ∗ ) >
1 2 . N∗ C
(3.74)
3.5 Il problema dell’adattività della griglia
75
Questo metodo è detto di raffinamento poiché prevede solo di creare una griglia più fine rispetto a quella di partenza, e chiaramente non permette di soddisfare pienamente la condizione di equidistribuzione. Algoritmi più sofisticati permettono anche di deraffinare la griglia in corrispondenza dei triangoli per cui la disuguaglianza (3.74) è verificata con segno al posto di >. Le procedure di deraffinamento però sono di più difficile implementazione di quelle di raffinamento. Dunque, spesso si preferisce costruire la nuova griglia “da zero” (procedura detta di remeshing). A tale scopo si introduce, sulla base della stima dell’errore, la seguente funzione di spaziatura H, costante in ogni elemento: H K ∗ = ∀K ∗ ∈ Th∗ (3.75) 2 1/2 √ 2 2 ∗ C N [Dh ]ij L2 (K) |uh∗ |H2 (K ∗ ) i,j=1
e la si utilizza per costruire la griglia adattata applicando uno degli algoritmi di generazione illustrati nel Cap. 12. Spesso l’algoritmo di adattazione richiede che la funzione H sia continua e lineare su ciascun triangolo. In tal caso possiamo di nuovo ricorrere ad una proiezione locale, usando la procedura già vista. L’adattazione può essere quindi ripetuta per la soluzione calcolata sulla nuova griglia, sino a che tutti gli elementi soddisfino la disuguaglianza inversa alla (3.74). Osservazione 3.6 Per quanto concerne la costante C che compare nella disuguaglianza (3.70) la si può stimare applicando la stessa disuguaglianza a funzioni note (e di cui quindi è possibile calcolare l’errore esatto). Un’alternativa che non richiede la conoscenza esplicita di C consiste nel realizzare la griglia che equi-distribuisce l’errore per un numero N ∗ di elementi fissato a priori. In questo caso il valore di H calcolato ponendo e C pari a uno in (3.75) viene riscalato, moltiplicandolo per una costante, in modo che la nuova griglia abbia il numero di elementi prefissato. •
3.5.2 Adattività a posteriori Le procedure descritte nella sezione precedente possono risultare tuttavia insoddisfacenti in quanto la ricostruzione delle derivate di u a partire da u h∗ è spesso soggetta ad errori non facilmente quantificabili. Un’alternativa radicale consiste nell’adottare stime a posteriori dell’errore. Queste ultime non utilizzano la stima a priori (3.58) (e conseguentemente approssimazioni delle derivate della soluzione incognita u), ma sono ottenute in funzione di quantità calcolabili, normalmente basate sul cosiddetto residuo della soluzione approssimata. Quest’ultimo fornisce una misura di quanto la soluzione discreta soddisfi il problema differenziale su ogni elemento della triangolazione data. Consideriamo, a titolo di esempio, il problema di Poisson (2.12). La sua formulazione debole è data dalla (2.16), mentre la sua approssimazione agli elementi finiti è descritta dalla (3.28), dove ◦r
Vh è lo spazio X h definito in (3.27). Per ogni v ∈ H 10 (Ω) e per ogni vh ∈ Vh , si ha, grazie alla proprietà di ortogonalità di Galerkin (3.7) e sfruttando la (2.16),
76
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
∇(u − uh ) · ∇v dΩ =
Ω
=
Ω f (v − vh ) dΩ − ∇uh · ∇(v − vh ) dΩ
Ω
Ω
=
Ω
f (v − vh ) dΩ +
=
∇(u − uh ) · ∇(v − vh ) dΩ
K∈Th K
Δuh (v − vh ) dΩ −
K∈Th K
(3.76) ∂uh (v − vh ) dγ ∂n
K∈Th
∂K ∂uh (v − vh ) dγ. (f + Δuh )(v − vh ) dΩ − ∂n K∈Th ∂K
Osserviamo che gli integrali su Ω sono stati spezzati sui singoli triangoli al fine di garantire la buona definizione degli integrali stessi. Indicato con e un lato del generico triangolo K, definiamo salto della derivata normale di uh attraverso il lato e la quantità ) ( ∂uh = ∇uh K1 · n1 + ∇uh K2 · n2 = ∇uh K1 − ∇uh K2 · n1 , (3.77) ∂n e dove K1 e K2 sono i due triangoli che condividono il lato e, i cui versori normali uscenti sono dati da n 1 e n2 rispettivamente, con n 1 = −n2 (si veda la Fig. 3.15). La definizione (3.77) implicitamente sottointende che e non sia un lato di bordo. Al fine di estendere tale definizione anche ai lati di bordo, introduciamo il cosiddetto salto generalizzato, dato da ⎧ ∂uh ⎪ ⎨ , per e ∈ Eh , ∂uh ∂n e = (3.78) ⎪ ∂n ⎩ 0, per e ∈ ∂Ω, dove Eh indica l’insieme dei lati interni della griglia. Notiamo che, nel caso di elementi finiti lineari, la (3.78) identifica una funzione costante a pezzi definita su tutti i lati della griglia Th . Inoltre la definizione (3.78) può essere opportunamente modificata nel caso in cui il problema (2.12) sia completato con condizioni al bordo non necessariamente di Dirichlet.
e K1
K2 n1 n2
Figura 3.15. Triangoli coinvolti nella definizione del salto della derivata normale di uh attraverso il lato e
3.5 Il problema dell’adattività della griglia
77
Grazie alla (3.78) possiamo dunque scrivere che ∂uh ∂uh (v − vh ) dγ = − (v − vh ) dγ − ∂n ∂n K∈Th ∂K K∈Th e∈∂K e 1 ∂uh ∂uh 1 (v − vh ) dγ = − (v − vh ) dγ, =− 2 ∂n 2 ∂n K∈Th e∈∂K
K∈Th ∂K
e
(3.79) dove il fattore 1/2 tiene conto del fatto che ogni lato interno e della triangolazione è condiviso da due elementi. Inoltre, dal momento che v − v h = 0 sul bordo, in (3.78) si potrebbe assegnare un qualsiasi valore diverso da zero in corrispondenza di e ∈ ∂Ω in quanto i termini della (3.79) associati ai lati di bordo sarebbero comunque nulli. Inserendo ora la (3.79) nella (3.76) ed applicando la disuguaglianza di CauchySchwarz, otteniamo ∇(u − uh ) · ∇v dΩ ≤ f + Δuh L2 (K) v − vh L2 (K) K∈Th Ω 2 1 1 ∂uh 1 11 1 1 + v − vh L2 (∂K) . (3.80) 2 1 ∂n 1L2 (∂K) Occorre ora trovare un particolare v h ∈ Vh che permetta di esprimere le norme di v − vh in funzione di una norma opportuna di v. Si desidera inoltre che questa norma 3 contenente K e la meno estesa possibile. sia “locale”, cioè calcolata su una regione K Se v fosse continua si potrebbe prendere come v h l’interpolante Lagrangiana di v e utilizzare le già citate stime dell’errore di interpolazione su K. Purtroppo, nel nostro caso v ∈ H1 (Ω) e quindi non è necessariamente continua. Tuttavia, se T h è una griglia regolare, si può definire un opportuno operatore di interpolazione R h : H1 (Ω) → Vh , detto di Clément, definito, nel caso di elementi finiti lineari, come Rh v(x) = (Pj v)(Nj )ϕj (x) ∀v ∈ H1 (Ω), (3.81) Nj
dove Pj v denota il piano definito sul patch K Nj degli elementi della griglia che condividono il nodo N j (si veda la Fig. 3.16), individuato dalle relazioni (Pj v − v)ψ dx = 0 per ψ = 1, x, y, K Nj
e dove le ϕj sono le funzioni base di Lagrange dello spazio ad elementi finiti considerato. Si può dimostrare che, per ogni v ∈ H 1 (Ω) e per ogni K ∈ Th , valgono le seguenti disuguaglianze: v − Rh vL2 (K) ≤ C1 hK |v|H1 (K) e , 1
2 vH1 (K) v − Rh vL2 (∂K) ≤ C2 hK e ,
78
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
dove C1 e C2 sono due costanti positive che dipendono dal minimo angolo della trian3 = {Kj ∈ Th : Kj ∩K = ∅} rappresenta l’unione di K con tutti i golazione, mentre K triangoli che con esso condividono o un lato o un vertice (si veda la Fig. 3.16). Il lettore interessato a maggiori dettagli può, per esempio, consultare [BG98, BS94, Clé75]. Scegliendo dunque in (3.80) v h = Rh v, ponendo C = max(C 1 , C2 ) ed utilizzando la disuguaglianza di Cauchy-Schwarz discreta, si ottiene: ∇(u − uh ) · ∇v dΩ ≤ C ρK (uh )vH1 (K) e K∈T h Ω ! 12 ! 12 2 2 ≤C [ρK (uh )] vH1 (K) . e K∈Th
Abbiamo indicato con ρK (uh ) = hK
K∈Th
1 1 ∂uh 1 1 12 1 1 1 f + Δuh L2 (K) + hK 1 2 ∂n 1L2 (∂K)
(3.82)
il cosiddetto residuo locale, costituito dal residuo interno f + Δu h L2 (K) e dal 1 1 h 1 residuo di bordo 1 ∂u . ∂n L2 (∂K) 3 è necessaOsserviamo ora che, essendo T h regolare, il numero di elementi in K riamente limitato da un intero positivo indipendente da h, che indichiamo con n. Pertanto ! 12 √ 2 vH1 (K) ≤ nvH1 (Ω) . e K∈Th
Scelto infine v = u − uh e applicando la disuguaglianza di Poincaré, troviamo √
u − uh H1 (Ω) ≤ C n
! 12 [ρK (uh )]2
,
(3.83)
K∈Th
dove ora la costante C include anche il contributo della costante di Poincaré. e K
KNj
K
Nj
e di elementi che hanno in comune con K almeno un nodo di griglia Figura 3.16. L’insieme K (a sinistra) e l’insieme KNj degli elementi che condividono il nodo Nj (a destra)
3.5 Il problema dell’adattività della griglia
79
Si noti che ρK (uh ) è una quantità effettivamente calcolabile essendo funzione del dato f , del parametro geometrico h K e della soluzione calcolata u h . Il punto più delicato di questa analisi è la stima, non sempre immediata, delle costanti C ed n. La stima a posteriori (3.83) può essere, ad esempio, usata al fine di garantire che u − uh H1 (Ω) 1 3 ≤ ≤ , 2 uh H1 (Ω) 2
(3.84)
essendo > 0 una tolleranza prestabilita. A tale scopo, mediante un’opportuna procedura iterativa schematizzata in Fig. 3.17, si può raffinare e deraffinare localmente la griglia Th in modo tale che, per ogni K, siano soddisfatte le disuguaglianze locali seguenti: 1 2 9 2 uh 2H1 (Ω) ≤ [ρK (uh )]2 ≤ uh 2H1 (Ω) , (3.85) 4N 4N avendo indicato con N il numero di elementi della griglia T h . Ciò assicura che siano√soddisfatte le disuguaglianze globali (3.84), a meno del contributo della costante C n. Alternativamente, si può costruire una funzione di spaziatura di griglia H appropriata, analogamente a quanto detto nel paragrafo 3.5.1. Naturalmente il diagramma di flusso riportato in Fig. 3.17 si può usare anche per problemi ai limiti diversi da (3.28). Illustriamo il concetto di adattazione della griglia computazionale su un problema differenziale semplice. A tal fine adottiamo la procedura iterativa schematizzata in Fig. 3.17, limitandoci però alla sola fase di raffinamento. Il procedimento di deraffinamento risulta infatti di più difficile implementazione, tanto è vero che molti dei software matematici di uso comune prevedono il solo raffinamento della griglia iniziale, che converrà dunque scegliere opportunamente lasca. Consideriamo il problema −Δu = f in Ω = (−1, 1)2 , supponendo di assegnare condizioni di Dirichlet omogenee su tutto il bordo ∂Ω. Scegliamo inoltre un termine forzante f tale che la soluzione esatta sia u = sin(πx) sin(πy) exp(10x). Avviamo la procedura adattativa partendo da una griglia iniziale uniforme, costituita da 324 elementi, e da una tolleranza = 0.2. La procedura iterativa converge dopo 7 iterate. Riportiamo in Fig. 3.18 la griglia iniziale assieme a 3 delle griglie adattate così ottenute, mentre in Tabella 3.2 sono riassunti il numero N h degli elementi della griglia T h , l’errore relativo u−u hH1 (Ω) /uh H1 (Ω) e lo stimatore normalizzato η/u h H1 (Ω) sulla griglia iniziale e sulle prime 6 griglie adattate. Le griglie in Fig. 3.18 forniscono un riscontro qualitativo per l’affidabilità della procedura adattiva seguita: come ci si aspetta, i triangoli infatti si addensano in corrispondenza delle regioni di massimo e di minimo della funzione u. D’altro canto i valori in Tabella 3.2 permettono anche di effettuare un’analisi di tipo quantitativo: sia l’errore relativo che lo stimatore normalizzato si riducono progressivamente, all’aumentare delle iterate. Si può tuttavia notare una sovrastima media, rispetto alla tolleranza fissata, di circa 10-11 volte. Questo fatto non è così inusuale e trova una sua giustificazione, essenzialmente, nell’avere trascurato (ovvero posto uguale ad 1) la costante √ C n nelle disuguaglianze (3.84) e (3.85). √È chiaro che tale negligenza porta a richiedere in realtà una tolleranza 3 = /(C n), che coinciderà dunque con l’originale
80
3 Il metodo di Galerkin-elementi finiti per problemi ellittici lettura della griglia iniziale
discretizzazione e risoluzione del problema numerico
si pone R = D = ∅
ciclo sugli elementi K
se ρK >
se
3ε √ uh H 1 2 N
ρK <
K `e marcato R R ← R ∪ {K}
ε √ uh H 1 2 N
K `e marcato D D ← D ∪ {K}
R∪D =∅ ?
S`I
NO
costruzione della nuova griglia
Fine
Figura 3.17. Esempio di procedura iterativa per l’adattazione della griglia
√ nel solo caso in cui si abbia effettivamente C n ∼ 1. Procedure più precise, che √ tengano conto della costante C n, sono comunque possibili partendo, ad esempio, dall’analisi (teorica e numerica) fornita in [BDR92, EJ88].
3.5.3 Stime a posteriori dell’errore nella norma L2 Oltre alla (3.83) è possibile derivare una stima a posteriori dell’errore in norma L 2 . A tal fine ricorreremo nuovamente alla tecnica di dualità di Aubin-Nitsche usata nella Sez. 3.4.4, ed in particolare considereremo il problema aggiunto (3.63) associato al problema di Poisson (2.12). Supporremo inoltre che il dominio Ω sia sufficientemente
3.5 Il problema dell’adattività della griglia 1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
−0.2
−0.4
−0.4
−0.6
−0.6
−0.8
−1 −1
−0.8
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
−1 −1
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
−0.2
−0.4
−0.4
−0.6
−0.6
−0.8
−0.8
−1 −1
81
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
−1 −1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Figura 3.18. Griglia iniziale (in alto a sinistra) e tre griglie adattate seguendo la procedura adattiva di Fig. 3.17, alla seconda iterazione (in alto a destra), alla terza (in basso a sinistra) e alla quinta (in basso a destra) iterata 0 1 2 3 4 5 6
Nh u − uh H1 (Ω) /uh H1 (Ω) η/uh H1 (Ω) 324 0.7395 5.8333 645 0.3229 3.2467 1540 0.1538 1.8093 3228 0.0771 0.9782 7711 0.0400 0.5188 17753 0.0232 0.2888 35850 0.0163 0.1955
Tabella 3.2. Cardinalità, errore relativo e stimatore normalizzato associati alla griglia iniziale e alle prime sei griglie adattate
regolare (ad esempio sia un poligono convesso) in modo da garantire che il risultato di regolarità ellittica (3.61) enunciato nel Lemma 3.6 sia vero. Ci serviremo inoltre delle seguenti stime locali per l’errore d’interpolazione associato all’operatore Π hr applicato a funzioni v ∈ H 2 (Ω): 3
31 h 2 |v|H2 (K) v − Πhr vL2 (∂K) ≤ C K
(3.86)
(si veda [BS94] o [Cia78]), e 32 h2 |v|H2 (K) . v − Πhr vL2 (K) ≤ C K Quest’ultima disuguaglianza si ottiene dalla (3.54).
(3.87)
82
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
Partendo dal problema aggiunto (3.63) e sfruttando l’ortogonalità di Galerkin (3.7), abbiamo, per ogni φ h ∈ Vh , eh 2L2 (Ω)
=
f (φ − φh ) dΩ −
K∈Th K
∇uh · ∇(φ − φh ) dΩ.
K∈Th K
Controintegrando per parti si ottiene eh 2L2 (Ω) =
∂uh (φ − φh ) dγ. ∂n
(f + Δuh ) (φ − φh ) dΩ −
K∈Th K
K∈Th ∂K
Utilizzando la definizione (3.78) di salto generalizzato della derivata normale di u h attraverso i lati dei triangoli e ponendo φ h = Πhr φ, abbiamo eh 2L2 (Ω)
=
(f + Δuh ) (φ − Πhr φ) dΩ
K∈Th
K
1 2
∂uh ∂n
−
∂K
Πhr φ) dγ
(φ −
.
(3.88)
Stimiamo separatamente i due termini a secondo membro. Utilizzando la disuguaglianza di Cauchy-Schwarz e la (3.87) segue che (f + Δuh ) (φ − Π r φ) dΩ h
≤ f + Δuh L2 (K) φ − Πhr φL2 (K)
K
≤
32 h2 C K
(3.89)
f + Δuh L2 (K) |φ|H2 (K) .
Inoltre, grazie alla (3.86) otteniamo ∂uh r (φ − Πh φ) dγ ∂n ∂K
1 1 1 ∂uh 1 1 ≤1 φ − Πhr φL2 (∂K) 1 ∂n 1 2 L (∂K) 1 1 3 1 ∂u h 1 2 1 1 3 ≤ C1 hK 1 |φ|H2 (K) . ∂n 1L2 (∂K)
(3.90)
Inserendo ora la (3.89) e la (3.90) in (3.88) ed applicando la disuguaglianza di CauchySchwarz discreta abbiamo " 2 eh L2 (Ω) ≤ C hK ρK (uh )|φ|H2 (K) ≤ C [hK ρK (uh )]2 |φ|H2 (Ω) K∈Th
K∈Th
" ≤C
K∈Th
[hK ρK (uh )]2 eh L2 (Ω) ,
3.5 Il problema dell’adattività della griglia 1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0 −0.8
83
0 −0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Figura 3.19. La triangolazione di partenza (sinistra) e quella ottenuta dopo il raffinamento (destra)
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0 −0.8
0 −0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
−0.8
−0.6
−0.4
−0.2
0
0.2
0.4
0.6
0.8
1
Figura 3.20. Le isolinee della soluzione ad elementi finiti lineari del problema considerato nell’Esempio 3.2: a sinistra sulla griglia di partenza, a destra su quella adattata
31 , C 32 ), avendo introdotto la notazione (3.82) ed avendo sfruttato, con C = max(C nell’ultimo passaggio, la disuguaglianza (3.67). Possiamo quindi concludere che u − uh L2 (Ω) ≤ C
! 12 h2K [ρK (uh )]2
,
(3.91)
K∈Th
essendo C > 0 una costante indipendente dalla triangolazione. Esempio 3.2 Consideriamo il problema −Δu = 0 su Ω = {x = r(cos θ, sin θ)T , r ∈ (0, 1), θ ∈ (0, 34 π)} con u assegnata opportunamente sul bordo di Ω in modo che u(r, θ) = r 4/3 sin( 43 θ) sia la soluzione esatta. Essa risulta poco regolare in un intorno dell’origine. Supponiamo di risolvere tale problema con il metodo di Galerkin-elementi finiti lineari sulla griglia quasi uniforme riportata nella Fig. 3.19 a sinistra, e costituita da 132 triangoli. Come si può notare dalla distorsione delle isolinee di uh nella Fig. 3.20 a sinistra, la soluzione ottenuta risulta inaccurata in prossimità dell’origine. L’uso di una tecnica adattiva consente, dopo 4 passi di adattività, di ottenere sulla griglia riportata in Fig. 3.19 a destra, formata da 679 triangoli, una soluzione assai più accurata (Fig. 3.20 a destra). Per confronto, per ottenere una soluzione caratterizzata dalla stessa accuratezza su di una griglia uniforme sarebbero serviti circa 2100 triangoli.
84
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
−0.2
−0.4
−0.4
−0.6
−0.6
−0.8 −1
−1
−0.8 0
1
2
3
4
5
6
7
−1
−1
0
1
2
3
4
5
6
7
Figura 3.21. A sinistra, la triangolazione di partenza con 252 elementi, a destra quella con 2381 elementi, ottenuta dopo il raffinamento
Figura 3.22. Le isolinee della soluzione ad elementi finiti lineari del problema considerato nell’Esempio 3.3: a sinistra, relativamente alla griglia di partenza, a destra, sulla griglia adattata Esempio 3.3 Consideriamo il problema −Δu = 0 su Ω = (0, 6.3) × (−0.5, 0.5) con condizioni al contorno di tipo misto. In particolare, sulle porzioni di lato Γ1 = {x = (x, y)T : y = ±0.5, 0 < x < 3.8} e Γ3 = {x = (x, y)T : y = ±0.5, 4.5 < x < 6.3} è stata imposta u = 100, su Γ2 = {x = (x, y)T : y = ±0.5, 3.9 < x < 4.4} si è posto u = 800 e sulle restanti porzioni di bordo ∂u/∂n = 0. Questo problema è associato ad una sezione longitudinale di un sistema di lenti elettrostatiche piane, di estensione infinita nella direzione trasversale (u è il potenziale elettrostatico, i Γi rappresentano in sezione le armature del dispositivo, mentre le regioni di bordo fra di essi sono le lenti). Chiaramente per risolvere accuratamente un sistema siffatto è necessario adattare opportunamente la griglia in prossimità delle lenti in quanto i punti di raccordo fra condizioni al contorno di tipo diverso possono generare irregolarità nella soluzione. Nelle Figure 3.21 e 3.22 vengono riportate le griglie di calcolo iniziale (sinistra) e adattata (destra) e le isolinee della corrispondente soluzione ad elementi finiti lineari.
3.5.4 Stime a posteriori di un funzionale dell’errore Osserviamo che, nella sezione precedente, il problema aggiunto (3.63) è stato utilizzato in modo puramente formale, in quanto l’errore e h , che ne rappresenta il termine forzante, non è conosciuto. Esiste un’altra famiglia di stimatori a posteriori dell’errore, ancora basati sul problema aggiunto, che, al contrario, utilizzano esplicitamente le informazioni fornite da
3.5 Il problema dell’adattività della griglia
85
quest’ultimo (si veda, ad esempio, [Ran99]). In questo caso viene solitamente fornita una stima per un opportuno funzionale J dell’errore e h , anziché per una opportuna norma di e h . Questa prerogativa si rivela particolarmente utile nel momento in cui si vogliano fornire stime dell’errore significative per quantità di interesse fisico quali, ad esempio, resistenza o portanza nel caso di corpi immersi in un fluido, valori medi di concentrazioni, sforzi, deformazioni, flussi, valori puntuali, ecc. A tal fine sarà sufficiente fare una scelta opportuna per il funzionale J. Questo tipo di adattività è nota come adattività di tipo goal-oriented. Illustriamo questo approccio riferendoci ancora, per semplicità, al problema di Poisson (2.12) e supponendo di voler controllare l’errore di un certo funzionale J : H 01 (Ω) → R della soluzione u. Consideriamo la seguente formulazione debole del corrispondente problema aggiunto trovare φ ∈ V : ∇φ·∇w dΩ = J(w) ∀ w ∈ V, (3.92) Ω
con V = H10 (Ω). Utilizzando l’ ortogonalità di Galerkin e procedendo come fatto nella sezione precedente, troviamo
J(eh ) =
∇eh · ∇φ dΩ = Ω
−
1 2
∂K
∂uh ∂n
(f + Δuh ) (φ − φh ) dΩ
K∈Th K
(φ − φh ) dγ ,
(3.93)
dove φh ∈ Vh è solitamente un interpolante di φ da scegliersi opportunamente in base alla regolarità di φ. Utilizzando la disuguaglianza di Cauchy-Schwarz su ogni elemento K, otteniamo |J(eh )| = ∇eh · ∇φ dΩ ≤ f + Δuh L2 (K) φ − φh L2 (K) K∈Th
Ω 1 1 4 1 ∂u 1 1 h 1 1 + 1 φ − φh L2 (∂K) 2 ∂n 1L2 (∂K) 1 1 ≤ ρK (uh ) max , φ − φh L2 (K) , 1/2 φ − φh L2 (∂K) hK h K∈Th
K
essendo ρK (uh ) definito secondo la (3.82). Introduciamo ora i cosiddetti pesi locali 1 1 ωK (φ) = max φ − φh L2 (K) , 1/2 φ − φh L2 (∂K) . (3.94) hK hK Pertanto |J(eh )| ≤
K∈Th
ρK (uh )ωK (φ).
(3.95)
86
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
Possiamo osservare che, a differenza delle stime di tipo residuale introdotte nelle Sez. 3.5.2 e 3.5.3, la stima (3.95) dipende non solo dalla soluzione discreta u h ma anche dalla soluzione φ del problema duale. In particolare, considerato lo stimatore locale ρK (uh )ωK (φ), possiamo affermare che, mentre il residuo ρ K (uh ) misura come la soluzione discreta approssima il problema differenziale in esame, il peso ω K (φ) tiene conto di come questa informazione si propaga nel dominio per effetto del funzionale scelto. Pertanto le griglie ottenute per scelte differenti del funzionale J, ovvero del termine forzante del problema aggiunto (3.92), saranno diverse pur partendo dallo stesso problema differenziale (per maggiori dettagli, rimandiamo all’Esempio 5.10). Inoltre, per rendere efficace la stima (3.95), si procede sostituendo le norme φ − φh L2 (K) e φ − φh L2 (∂K) in (3.94) con opportune stime per l’errore di intepolazione, dopo aver scelto φ h come un opportuno interpolante della soluzione duale φ. Segnaliamo due casi particolari. Scegliendo J(w) = Ω w eh dΩ in (3.92) ritroveremmo la stima (3.91) per la norma L 2 dell’errore di discretizzazione, a patto ovviamente di poter garantire che il risultato di regolarità ellittica (3.61), enunciato nel Lemma 3.6, sia vero. Un’altra scelta del funzionale J ci permetterebbe di ottenere un controllo puntuale dell’errore di discretizzazione. Se invece siamo interessati a controllare eh in corrispondenza di un punto x di Ω, sarà infatti sufficiente definire J come J(w) = W < δx , w >W , essendo W = H10 (Ω) ∩ C 0 (Ω) e δx la delta di Dirac relativa al punto x. (Si veda l’Appendice A). Osservazione 3.7 L’analisi a posteriori di questa sezione, così come quella delle sezioni precedenti 3.5.2 and 3.5.3, può essere estesa al caso di problemi differenziali più complessi e più significativi, quali ad esempio i problemi di trasporto e diffusione del semplice problema di Poisson, e di condizioni al bordo più generiche (si veda l’Esempio 5.10). La procedura rimane essenzialmente invariata. Ciò che cambia è la definizione del residuo locale (3.82) e del salto generalizzato (3.78). Mentre infatti ρ direttamente dalla formulazione differenziale del problema in esame, K (uh ) dipende ∂uh /∂n dovrà tenere opportunamente conto delle condizioni assegnate al bordo. • Per una descrizione più approfondita delle tecniche di adattività fin qui fornite e per una presentazione di altre possibili metodologie di adattazione rinviamo il lettore a [AO00, Ran99, Ver96].
3.6 Come ottenere il problema aggiunto Abbiamo visto che il problema duale (o aggiunto) di un dato problema differenziale gioca un ruolo fondamentale, ad esempio, nell’ambito della derivazione di stimatori dell’errore, sia a priori che a posteriori (si vedano le Sez. 3.4.4 e 3.5.3-3.5.4, rispettivamente). Obiettivo di questa sezione è quello di fornire un metodo per ricavare l’aggiunto di un dato operatore differenziale assieme alle condizioni al bordo del problema duale, note quelle primali.
3.6 Come ottenere il problema aggiunto
87
3.6.1 Il caso lineare Più nel dettaglio, sia A : V → V l’operatore associato al problema differenziale assegnato (il problema primale), e A ∗ : V → V il corrispondente operatore aggiunto. Vale allora la seguente relazione, nota come identità di Lagrange: V
< Av, w >V =
V
< v, A∗ w >V
∀v, w ∈ V.
(3.96)
Osserviamo che, in tale relazione, non è presente alcun contributo di bordo e che entrambe le variabili, v e w, giocano il ruolo di soluzione (rispettivamente del problema primale e di quello duale) o di funzione test, a seconda che consideriamo il termine di sinistra o di destra della (3.96). Per determinare l’operatore A ∗ , l’idea è dunque quella di garantire il soddisfacimento dell’identità di Lagrange “scaricando” l’operatore differenziale A dalla soluzione primale v sulla soluzione duale w. I termini di bordo risultanti da tale operazione dovranno essere annullati utilizzando le condizioni al bordo associate al problema primale ed assegnando opportunamente quelle per il problema duale. Forniamo un esempio di tale procedura, partendo da un semplice problema differenziale di diffusione trasporto monodimensionale, completato da condizioni al bordo di tipo Robin-Dirichlet omogenee: Av = −v + v = f, x ∈ I = (0, 1), (3.97) v(1) = 0, v (0) + βv(0) = 0, assunta β costante. Integriamo per parti due volte il termine di diffusione e una volta il termine di trasporto, lasciando, per ora, in evidenza tutti i termini di bordo: 1 V
< Av, w >V
= −
1
v w dx + 0
1 =
v w dx
0
1 1 1 v w dx − v w − v w dx + v w
0
0
1
= −
0
0
1 1 1 1 v w dx + v w − v w − v w dx + v w . 0
0
0
0
0
(3.98) Trattiamo a parte i termini di bordo, esplicitando il contributo ai due estremi. Affinché sia verificata l’identità (3.96), dobbiamo innanzitutto garantire che v(1) w (1) − v(0) w (0) − v (1) w(1) + v (0) w(0) + v(1) w(1) − v(0) w(0) = 0, per ogni v ∈ V . Sfruttando le condizioni al bordo del problema primale, possiamo innanzitutto annullare il primo e il quinto termine, essendo v(1) = 0, e riscrivere il quarto termine come −β v(0) w(0), ottenendo così
88
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
−v(0) w (0) − v (1) w(1) − β v(0) w(0) − v(0) w(0) =
−v (1) w(1) − w (0) + (β + 1) w(0) v(0) = 0.
Dal momento che tale relazione deve valere per ogni v ∈ V , siamo indotti a fare le seguenti richieste sulla soluzione duale w: w (0) + (β + 1) w(0) = 0,
w(1) = 0.
(3.99)
Ritornando dunque alla (3.98), abbiamo così 1 V
< Av, w >V
= −
1
v w dx + 0
1 = − 0
v w dx
0
v w dx −
1
v w dx =
V
< v, A∗ w >V .
0
Possiamo dunque concludere che l’operatore aggiunto A ∗ di A è dato da A∗ w = −w − w , mentre le condizioni al bordo da associarsi al problema duale sono date dalle (3.99). Osserviamo che il campo di trasporto del problema duale ha direzione opposta rispetto a quello del problema primale. Inoltre a condizioni al bordo di tipo Robin-Dirichlet omogenee per il problema primale (3.97) corrispondono condizioni esattamente della stessa natura per il problema duale. La procedura illustrata per il problema (3.97) può chiaramente essere estesa al caso bidimensionale. In Tabella 3.3 forniamo un elenco di operatori differenziali 2D con relative condizioni al bordo e dei corrispondenti operatori aggiunti e condizioni al bordo duali ad essi associate (sulle funzioni che compaiono in Tabella, si assuma tutta la regolarità che serve per la buona definizione degli operatori differenziali considerati). Osserviamo, in particolare, che non necessariamente a condizioni primali di un certo tipo corrispondono condizioni duali della stessa natura e che ad una formulazione conservativa (rispettivamente, non conservativa) del problema primale corrisponde una formulazione non conservativa (rispettivamente, conservativa) di quello duale.
3.6.2 Il caso non lineare L’estensione dell’analisi della sezione precedente al caso non lineare non è così immediata. Per semplicità consideriamo il problema monodimensionale A(v)v = −v + vv = f, x ∈ I = (0, 1), (3.100) v(0) = v(1) = 0,
Operatore primale
C.B. primali
Operatore duale
C.B. duali
u = 0 su Γ −∆u
∂u = 0 su ∂Ω\Γ ∂n
w = 0 su Γ, −∆w
∂w = 0 su ∂Ω\Γ ∂n w = 0 su Γ,
u = 0 su Γ, −∆u + σu
∂u + γu = 0 su ∂Ω\Γ ∂n
−∆w + σw
∂w + γw = 0 su ∂Ω\Γ ∂n
u = 0 su Γ,
−∆w − b · ∇w + σw,
w = 0 su Γ,
∇·b =0
∂u + γu = 0 su ∂Ω\Γ ∂n
∇·b =0
∂w + (b · n + γ)w = 0 su ∂Ω\Γ ∂n
−∆u + b · ∇u + σu,
u = 0 su Γ,
−∆w − b · ∇w + σw,
w = 0 su Γ,
∇·b =0
∂u = 0 su ∂Ω\Γ ∂n
∇·b =0
∂w + b · n w = 0 su ∂Ω\Γ ∂n
u = 0 su Γ, −div(µ∇u) + div(bu) + σu
µ
∂u − b · nu = 0 su ∂Ω\Γ ∂n
−div(µ∇u) + b · ∇u + σu,
u = 0 su Γ,
∇·b =0
∂u = 0 su ∂Ω\Γ µ ∂n
w = 0 su Γ, −div(µ∇w) − b · ∇w + σw
µ
∂w = 0 su ∂Ω\Γ ∂n
−div(µ∇w) − div(bw) + σw,
w = 0 su Γ,
∇·b =0
∂w µ + b · nw = 0 su ∂Ω\Γ ∂n
89
Tabella 3.3. Operatori bidimensionali primali e condizioni al bordo (C.B.) per il problema primale e corrispondenti operatori duali (con condizioni al bordo associate)
3.6 Come ottenere il problema aggiunto
−∆u + b · ∇u + σu,
90
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
denotando con A(v) l’operatore d2 · d· +v . dx2 dx L’identità di Lagrange (3.96) viene ora così generalizzata: A(v)· = −
V
< A(v)u, w >V =
V
(3.101)
< u, A∗ (v)w >V ,
(3.102)
∗
per ogni u ∈ D(A) e w ∈ D(A ), essendo D(A) l’insieme delle funzioni continue, derivabili con continuità due volte e identicamente nulle in x = 0 e x = 1, e D(A ∗ ) il dominio dell’operatore aggiunto A ∗ le cui proprietà verranno identificate imponendo il soddisfacimento dell’identità di Lagrange (3.102). Partendo da tale identità, vediamo a quale operatore aggiunto A ∗ e a quali condizioni al bordo duali si perviene per il problema (3.100). Integrando per parti due volte il terminediffusivo e una volta il termine di ordine uno, otteniamo 1 V
< A(v)u, w >V
= −
1
u w dx + 0
1 =
vu w dx
0
1 1 1 u w dx − u w − (v w) u dx + v u w
0
0
1
= −
0
0
1 1 1 u w dx + u w − u w − (v w) u dx + v u w . 1
0
0
0
0
0
(3.103) Analizziamo a parte i termini di bordo, esplicitando i contributi ai due estremi. Per garantire la (3.102), si dovrà avere u(1) w (1)−u(0) w (0)−u (1) w(1)+u (0) w(0)+v(1) u(1) w(1)−v(0) u(0) w(0) = 0 per ogni u e v ∈ D(A). Osserviamo che l’appartenza di u a D(A) ci permette di annullare immediatamente i primi due e gli ultimi due termini, riducendoci così ad avere −u (1) w(1) + u (0) w(0) = 0. Dal momento che tale relazione deve valere per ogni u ∈ D(A), dobbiamo scegliere come condizioni duali al bordo di Dirichelt omogenee, ovvero w(0) = w(1) = 0.
(3.104)
Tornando alla (3.103), si ha quindi 1 V
< A(v)u, w >V
=
−
u w dx + 0
1 =
1
− 0
vu w dx
0
u w dx −
1 0
(v w) u dx =
V
< u, A∗ (v)w >V .
3.7 Esercizi
91
L’operatore aggiunto A ∗ dell’operatore primale A definito in (3.101) risulta dunque A∗ (v)· = −
d2 · d v· + dx2 dx
mentre le condizioni al bordo duali sono fornite dalla (3.104). Osserviamo infine che il problema duale è sempre lineare, pur essendo partiti da un problema primale non lineare. Per maggiori dettagli sulla derivazione e sull’analisi dei problemi aggiunti rimandiamo il lettore, ad esempio, a [Mar95].
3.7 Esercizi 1. Trasferimento di calore in una verga sottile. Consideriamo una verga sottile di lunghezza L, posta all’estremo x = 0 alla temperatura t 0 ed isolata al secondo estremo x = L. Supponiamo che la sezione trasversale della verga abbia area costante pari ad A e che il perimetro di A sia p. La temperatura t della verga in un generico punto x ∈ (0, L) soddisfa allora al seguente problema misto: −kAt + σpt = 0, x ∈ (0, L), (3.105) t (L) = 0, t(0) = t0 , avendo indicato con k il coefficiente di conducibilità termica e con σ il coefficiente di trasferimento convettivo. Si verifichi che la soluzione esatta di questo problema è t(x) = t0
cosh[m(L − x)] , cosh(mL)
con m = σp/kA. Si scriva la formulazione debole di (3.105), indi la sua approssimazione di Galerkin-elementi finiti. Si mostri come l’errore di approssimazione nella norma H 10 (0, L) dipenda dai parametri k, σ, p e t 0 . Infine, si risolva questo problema utilizzando elementi finiti lineari e quadratici su griglie uniformi, valutando l’errore di approssimazione. 2. Temperatura di un fluido tra due piastre parallele. Consideriamo un fluido viscoso posto tra due piastre orizzontali, parallele e distanti 2H. Supponiamo che la piastra superiore, posta ad una temperatura t sup , scorra con velocità U rispetto alla piastra inferiore, posta ad una temperatura t inf . In tal caso la temperatura t : (0, 2H) → R del fluido tra le due piastre soddisfa al problema di Dirichlet seguente
92
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
⎧ ⎨
d2 t = α(H − y)2 dy 2 ⎩ t(0) = tinf , −
in (0, 2H), t(2H) = tsup ,
4U 2 μ , essendo k il coefficiente di conducibilità termica e μ la viscosità H 4k del fluido. Si trovi la soluzione esatta t(y), indi si scriva la formulazione debole e la formulazione Galerkin-elementi finiti. [Soluzione: la soluzione esatta è
dove α =
t(y) = −
α tinf + tsup αH 4 tinf − tsup (H − y)4 + (H − y) + + .] 12 2H 2 12
3. Flessione di una fune. Consideriamo una fune di tensione T e di lunghezza unitaria, fissata agli estremi. La funzione u(x) che misura lo spostamento verticale del cavo quando soggetto ad un carico trasversale di intensità w per unità di lunghezza, soddisfa al seguente problema di Dirichlet: w k −u + u = in (0, 1), T T u(0) = 0, u(1) = 0, avendo indicato con k il coefficiente di elasticità della fune. Si scrivi la formulazione debole e la formulazione Galerkin-elementi finiti. 4. Si dimostri la Proprietà 3.1. [Soluzione: basta osservare che a ij = a(ϕj , ϕi ) ∀i, j.] 5. Si dimostri che nel caso in cui a(·, ·) sia una forma bilineare simmetrica, oltre che continua e coerciva, allora la (3.9) diventa 5 M u − uh V ≤ inf u − wh V . α wh ∈Vh [Soluzione: essendo la forma simmetrica si può ripetere il ragionamento contenuto nella osservazione 2.2, notando che la soluzione u h soddisfa il problema a(uh , vh ) = a(u, vh ) per ogni vh ∈ Vh . Si deduce quindi che u h minimizza J(vh ) = a(vh , vh ) − 2a(u, vh ) e quindi minimizza anche J ∗ (vh ) = J(vh ) + a(u, u) = a(u − vh , u − vh ) (l’ultimo passaggio è reso possibile dalla simmetria della forma bilineare). D’altra parte, √ √ αu − vh V ≤ a(u − vh , u − vh ) ≤ M u − vh V , da cui il risultato cercato.] 6. Data una partizione di un intervallo (a, b) in N + 1 intervalli, si supponga di numerare prima gli estremi dei singoli intervalli e successivamente i punti medi di ciascun intervallo. Questa numerazione è più o meno conveniente di quella introdotta nella Sez. 3.3 per la discretizzazione del problema di Poisson con elementi
3.7 Esercizi
93
finiti in Xh2 ? Si supponga di risolvere il sistema lineare di Galerkin con un metodo di fattorizzazione. [Soluzione: la matrice che si ottiene ha ancora solo cinque diagonali diverse da zero come quella ottenuta usando la numerazione proposta nella Sez. 3.3. Presenta però una larghezza di banda maggiore. Di conseguenza, nel caso in cui venga fattorizzata, è soggetta ad un riempimento maggiore come mostrato nella Fig. 3.23.] 0
0
2
2
4
4
6
6
8
8
10
10
12
12
14
14
16
16
18
18
20
20
0
5
10
15
20
0
5
10
15
20
Figura 3.23. A sinistra, la trama di sparsità della matrice di Galerkin associata ad una discretizzazione con 10 elementi del problema di Poisson con elementi finiti quadratici. La numerazione delle incognite è quella riportata nell’Esercizio 6. A destra, la trama dei fattori L ed U associati alla fattorizzazione di A. Si noti che, a causa del riempimento, il numero di elementi non nulli è passato da 81 nella matrice a 141 nei fattori
7. Si consideri il seguente problema ai limiti monodimensionale ⎧ −(αu ) + γu = f, 0 < x < 1, ⎪ ⎪ ⎪ ⎨ u=0 in x = 0, ⎪ ⎪ ⎪ ⎩ αu + δu = 0 in x = 1, dove α = α(x), γ = γ(x), f = f (x) sono funzioni assegnate con 0 ≤ γ(x) ≤ γ 1 e 0 < α0 ≤ α(x) ≤ α1 ∀x ∈ [0, 1], mentre δ ∈ R. Si suppone inoltre che f ∈ L2 (0, 1). Se ne scriva la formulazione debole precisando gli opportuni spazi funzionali e le ipotesi sui dati che garantiscono esistenza ed unicità della soluzione. Si supponga di trovare una soluzione approssimata u h utilizzando il metodo agli elementi finiti lineari. Cosa si può dire sull’esistenza, la stabilità e l’accuratezza della soluzione approssimata uh rispetto alla soluzione esatta? [Soluzione: cerchiamo u ∈ V ={v ∈ H 1 (0, 1) : v(0) = 0} tale che a(u, v) = F (v) ∀v ∈ V dove 1 1 1 a(u, v)= αu v dx + γuv dx + δu(1)v(1), F (v)= f v dx. 0
0
0
94
3 Il metodo di Galerkin-elementi finiti per problemi ellittici
L’esistenza e l’unicità della soluzione del problema debole sono garantite se valgono le ipotesi del Lemma di Lax-Milgram. La forma a(·, ·) è continua in quanto si ha |a(u, v)| ≤ 2 max(α1 , γ1 )uV vV + |δ| |v(1)| |u(1)|, 1 da cui, tenendo conto che u(1) =
u dx, si ricava
0
|a(u, v)| ≤ M uV vV
con M = 3 max(α1 , γ1 , |δ|).
La coercività si ha se δ≥0 in quanto si trova in tal caso a(u, u) ≥ α0 u 2L2 (0,1) + u2 (1)δ ≥ α0 u 2L2 (0,1) . Per trovare la disuguaglianza in · V basta, invocando la disuguaglianza di Poincarèe (Proprietà A.4 dell’Appendice) , dimostrare che 1 2 2 2 uV ≤ u L2 (0,1) , 1 + CΩ e quindi concludere a(u, u) ≥ α∗ u2V
con α∗ =
α0 2 . 1 + CΩ
Il fatto che F sia un funzionale lineare e continuo è di immediata verifica. Il metodo agli elementi finiti è un metodo di Galerkin con V h = {vh ∈ Xh1 : vh (0) = 0}. Di conseguenza, in virtù dei Corollari 3.1, 3.2 si deduce che la soluzione u h esiste ed è unica. Dalla stima (3.59) si deduce inoltre che, essendo r = 1, l’errore in norma V tenderà a zero linearmente rispetto ad h.] 8. Si consideri il seguente problema ai limiti bidimensionale ⎧ −div(α∇u) + γu = f in Ω ⊂ R2 , ⎪ ⎪ ⎪ ⎨ u=0 su ΓD , ⎪ ⎪ ⎪ ⎩ α∇u · n = 0 su ΓN , ◦
essendo Ω un dominio aperto limitato di bordo regolare ∂Ω = Γ D ∪ ΓN , ΓD ◦
∩ ΓN = ∅ e normale uscente n, α ∈ L ∞ (Ω), γ ∈ L∞ (Ω), f ∈ L2 (Ω) funzioni assegnate con γ(x) ≥ 0 e 0 < α0 ≤ α(x) q.o. in Ω. Si studi l’esistenza e l’unicità della soluzione debole e la stabilità della soluzione ottenuta con il metodo di Galerkin. Si supponga che u ∈ H 4 (Ω). Fino a quale grado polinomiale sarebbe conveniente arrivare utilizzando una approssimazione ad elementi finiti?
3.7 Esercizi
95
[Soluzione: il problema debole consiste nel trovare u ∈ V =H 1ΓD tale che a(u, v) = F (v) ∀v ∈ V dove a(u, v)= α∇u∇v dΩ + γuv dΩ, F (v)= f v dΩ. Ω
Ω
Ω
La forma bilineare è continua in quanto |a(u, v)| ≤ α|∇u||∇v| dΩ + |γ||u| |v| dΩ ≤ ≤
Ω
Ω
αL∞ (Ω) ∇uL2 (Ω) ∇vL2 (Ω) + γL∞ (Ω) uL2 (Ω) vL2 (Ω) M uV vV ,
avendo preso M = 2 max{α L∞ (Ω) , γL∞ (Ω) }. Inoltre è coerciva (si veda α0 la soluzione dell’Esercizio 7) con costante di coercività data da α ∗ = 2 . 1 + CΩ Essendo F un funzionale lineare e continuo, per il Lemma di Lax-Milgram la soluzione debole esiste ed è unica. Per quanto riguarda l’approssimazione con il metodo di Galerkin, introduciamo uno spazio V h di dimensione finita, sottospazio di V . Allora esiste unica la soluzione u h del problema di Galerkin: trovare uh ∈ Vh tale che a(uh , vh ) = F (vh ) ∀vh ∈ Vh . Inoltre, per il Corollario 3.2 si ha la stabilità. Per quanto riguarda il grado polinomiale k al quale al più è conveniente arrivare, basta osservare che l’esponente s che compare nella (3.24) è pari al minimo fra r e p = 3. Quindi, converrà utilizzare elementi di grado 3.] 9. I passi fondamentali di un codice ad elementi finiti possono essere così sintetizzati: (a) Input dati. (b) Costruzione della triangolazione T h = {K}. (c) Costruzione delle matrici locali A K e degli elementi fK del termine noto. (d) Assemblaggio della matrice globale A e del termine noto f . (e) Soluzione del sistema lineare Au = f . (f) Post-processing dei risultati. Supponiamo di utilizzare elementi finiti lineari e si consideri il patch in Fig. 3.24. a) Facendo riferimento ai punti (c) e (d) scrivere esplicitamente la matrice T K che permette di passare dalla matrice locale A K alla matrice globale A seT condo una trasformazione del tipo T K AK TK . Quale dimensione ha questa matrice? b) Quale pattern di sparsità caratterizza la matrice A associata al patch in Fig. 3.24? c) Scrivere esplicitamente gli elementi della matrice A in funzione degli elementi delle matrici locali AK . d) Nel caso di una griglia generale T h con NV vertici e NT triangoli, quale dimensione ha la matrice globale A nel caso di elementi finiti lineari e quadratici, rispettivamente?
96
3 Il metodo di Galerkin-elementi finiti per problemi ellittici 1 5
6 2
K
4
3
Figura 3.24. Patch di elementi per l’assemblaggio della matrice globale A
Per una trattazione più esaustiva di questa tematica, rimandiamo al Cap. 11. 10. Si dimostrino i risultati riassunti in Tabella 3.3 utilizzando l’identità di Lagrange (3.96).
4 I metodi spettrali
Come abbiamo visto nel capitolo precedente, quando si approssimano problemi ai limiti con il metodo degli elementi finiti, l’ordine di convergenza è comunque limitato dal grado dei polinomi usati, anche nel caso in cui le soluzioni siano regolari. In questo capitolo introdurremo i cosiddetti metodi spettrali, per i quali la velocità di convergenza è limitata dalla sola regolarità della soluzione del problema (ed è di tipo esponenziale per soluzioni analitiche). Per un’analisi dettagliata rinviamo a [CHQZ06, Fun92, BM92].
4.1 Il metodo di Galerkin spettrale per un problema ellittico La principale caratteristica che differenzia gli elementi finiti dai metodi spettrali è che questi ultimi utilizzano polinomi globali sul dominio computazionale Ω, anziché polinomi a tratti. Per ogni intero positivo N , denotiamo con Q N lo spazio dei polinomi a coefficienti reali di grado minore o eguale ad N rispetto a ciascuna delle variabili. Così in una dimensione, indicheremo con 4 N k QN (I) = v(x) = a k x , ak ∈ R k=0
lo spazio dei polinomi di grado ≤ N sull’intervallo I ⊂ R, mentre, in due dimensioni, QN (Ω) =
v(x) =
N
4 akm xk1 xm 2 ,
akm ∈ R
(4.1)
k,m=0
denoterà il medesimo spazio, ma sull’insieme aperto Ω ⊂ R 2 . Notiamo che, mentre in una dimensione Q N = PN , in più dimensioni ciò non accade. In particolare, dim QN = (N + 1)2 , mentre, come già visto nel capitolo precedente, dim P N = (N + 1)(N + 2)/2.
98
4 I metodi spettrali
ΓD
ΓD
Figura 4.1. Bordi di Dirichlet ammissibili (a sinistra) e non (a destra) per il metodo spettrale
Supponiamo di voler approssimare la soluzione u di un problema ellittico che ammette la formulazione variazionale (3.1). Con un metodo di Galerkin spettrale (MS), lo spazio V verrà approssimato con uno spazio V N ⊂ QN e la soluzione approssimata verrà conseguentemente indicata con u N . In particolare, se supponiamo che V sia un sottospazio di H1ΓD (Ω), VN denoterà l’insieme dei polinomi di Q N che si annullano sulla porzione di frontiera Γ D su cui si ha una condizione di tipo Dirichlet, ovvero VN = {vN ∈ QN :
vN |ΓD = 0}.
È evidente che VN ⊂ V . Il metodo di Galerkin verrà dunque formulato sul sottospazio VN . Nella definizione di VN è però insita una difficoltà: nel caso multidimensionale non è infatti possibile (in generale) richiedere che un polinomio v N si annulli soltanto su una parte arbitraria del bordo di Ω. Ad esempio, se Ω è il quadrato (−1, 1) 2 , non è possibile costruire un polinomio che sia nullo solo su una parte di un lato del quadrato senza che esso sia nullo su tutto quel lato (si veda la Fig. 4.1). Ciò non toglie che un polinomio possa annullarsi su tutto un lato del quadrato o su tutti i lati senza essere necessariamente nullo in tutto Ω (ad esempio, v 2 (x) = (1 − x21 )(1 − x22 ) è nullo solo sul bordo di Ω). Per questo motivo, nel caso bidimensionale restringiamo la nostra attenzione a domini quadrati (o riconducibili, tramite opportune trasformazioni, ad un quadrato di + = (−1, 1)2 ) e supponiamo che la porzione di frontiera Γ D sia formata riferimento Ω dall’unione di uno o più lati del dominio. Il metodo spettrale può tuttavia essere esteso al caso di un dominio Ω costituito dall’unione di quadrilateri Ω k , ciascuno dei quali riconducibile al quadrato di riferimento + → Ωk (si veda la Fig. 4.2). + mediante una trasformazione invertibile ϕ k : Ω Ω Parleremo in tal caso di metodo agli elementi spettrali (MES) [CHQZ06]. È evidente che in tale ambito si potrà imporre che la soluzione si annulli su porzioni di frontiera date dall’unione di lati dei quadrilateri, ma naturalmente non da porzioni di lati (si veda la Fig. 4.2). Lo spazio discreto ha ora la forma seguente: + VNC ={vN ∈ C 0 (Ω) : vN |Ωk ◦ ϕk ∈ QN (Ω)}. Esempio 4.1 Una mappa bidimensionale particolarmente importante è quella costituita dall’interpolazione transfinita (detta trasformazione di Gordon-Hall o anche Coons patch). (i) La mappa ϕk , in questo caso, viene espressa in funzione delle mappe invertibili πk : (−1, 1) → Γi (per i = 1, . . . , 4) che definiscono i quattro lati del dominio computazionale Ωk (si veda la Fig. 4.3). La trasformazione assume la forma seguente:
4.1 Il metodo di Galerkin spettrale per un problema ellittico
ΓD
Ωk
99
b Ω
ϕk
Figura 4.2. Scomposizione del dominio di risoluzione e condizioni al bordo ammissibili per il MES
Γ3
ϕk Γ4
+ Ω η
Ωk
Γ2
Γ1
ξ
Figura 4.3. La trasformazione ϕk nel caso dell’interpolazione transfinita ϕk (ξ, η)
= + +
1−η 1 1+η 3 πk (ξ) + πk (ξ) 2 2 1−ξ 4 1+η 3 1−η 1 [πk (η) − πk (−1) − πk (−1)] 2 2 2 1+η 2 1−η 2 1+ξ 2 [πk (η) − πk (1) − πk (−1)]. 2 2 2
(4.2)
L’interpolazione transfinita consente dunque di passare a considerare domini computazionali Ω caratterizzati da bordi curvi.
L’approssimazione del problema (3.1) con il metodo spettrale di Galerkin (MS) è la seguente: trovare uN ∈ VN :
a(uN , vN ) = F (vN ) ∀vN ∈ VN ,
mentre quella ad elementi spettrali (MES) sarà: trovare uN ∈ VNC : aC (uN , vN ) = FC (vN ) ∀vN ∈ VNC , dove aC (uN , vN ) =
k
aΩk (uN , vN ),
FC (vN ) =
k
essendo aΩk (·, ·) e FΩk (·) le restrizioni di a(·, ·) e di F (·) a Ω k .
FΩk (vN ),
(4.3)
100
4 I metodi spettrali
Poiché questi metodi rappresentano un caso particolare del metodo di Galerkin (3.2), l’analisi fatta nella Sez. 3.2 continua a valere e quindi, in particolare, si possono applicare i risultati di esistenza, unicità, stabilità e convergenza. Si può inoltre dimostrare che, per i metodi spettrali MS e MES, valgono le seguenti stime a priori dell’errore: Teorema 4.1 Sia u ∈ V la soluzione esatta del problema variazionale (3.1) ed uN la corrispondente soluzione approssimata ottenuta con il metodo MS; si supponga inoltre u ∈ H s+1 (Ω), per qualche s ≥ 0. Allora vale la seguente stima: u − uN H1 (Ω) ≤ Cs N −s uHs+1(Ω) essendo N il grado dei polinomi approssimanti e C s una costante che non dipende da N , ma può dipendere da s. Se u N è invece la soluzione ottenuta con il metodo MES, allora si ha u − uN H1 (Ω) ≤ Cs H min(N,s) N −s uHs+1 (Ω) , essendo H la massima lunghezza dei lati dei macroelementi Ω k . È pertanto evidente che, diversamente da quanto avviene nel metodo ad elementi finiti, una maggior regolarità della soluzione si ripercuote in un aumento della velocità di convergenza pur supponendo di aver fissato il grado polinomiale N . In particolare, se u è analitica l’ordine di convergenza del metodo spettrale diventa più che algebrico, ovvero esponenziale; più precisamente, ∃γ > 0 :
u − uN H1 (Ω) ≤ C exp(−γN ).
Anche nel caso in cui u abbia regolarità finita, si riesce comunque ad ottenere dal metodo spettrale la maggiore velocità di convergenza ammessa dalla regolarità della soluzione esatta: questo è un indiscutibile vantaggio dei metodi spettrali rispetto agli elementi finiti. Lo svantaggio principale di tali metodi è che (in due o più dimensioni) riescono a trattare solo geometrie semplici: rettangoli o quadrilateri mappabili in un quadrato tramite una trasformazione invertibile, anche se, come già accennato, si può estendere, attraverso il MES, al caso in cui il dominio sia dato dall’unione di quadrilateri, eventualmente anche con lati curvi. Un ulteriore svantaggio dei metodi spettrali sta nel fatto che la matrice di rigidezza A ad essi associata è piena (nel caso monodimensionale) o comunque molto meno sparsa di quella degli elementi finiti (in più dimensioni), a causa del fatto che le funzioni di base di tale metodo hanno supporto globale (e non locale). Il sistema di equazioni ad essa associato risulta quindi in generale più difficile e più costoso da risolvere. Non è infine da sottovalutare lo sforzo computazionale richiesto per calcolare gli elementi della matrice di rigidezza e del termine noto, in quanto si ha a che fare con polinomi di grado elevato. Quest’ultimo inconveniente viene superato grazie all’uso di
4.2 Polinomi ortogonali e integrazione numerica gaussiana
101
opportune formule di integrazione numerica di tipo gaussiano, oggetto della prossima sezione. Osservazione 4.1 Nel corso della Sez. 4.5 alla fine di questo capitolo verrà fornita la formulazione algebrica del metodo MES per un problema monodimensionale. In particolare verranno introdotte le funzioni di base per lo spazio dei polinomi compositi VNC . • Osservazione 4.2 L’approccio MES ha una formulazione non molto diversa dalla versione p del metodo degli elementi finiti. In entrambi i casi, il numero dei sottodomini Ωk è fissato mentre il grado locale dei polinomi (N nel caso del MES, p per lo schema ad elementi finiti) viene aumentato localmente al fine di migliorare l’accuratezza dell’approssimazione numerica. La differenza principale caratterizzante tali schemi sta essenzialmente nella diversa scelta delle funzioni di base e, conseguentemente, nella diversa struttura assunta dalla matrice di rigidezza. Per ulteriori dettagli, rimandiamo il lettore interessato a [CHQZ07, Sch98]. •
4.2 Polinomi ortogonali e integrazione numerica gaussiana In questa sezione introduciamo gli ingredienti matematici che consentono di costruire formule di integrazione numerica di tipo Gaussiano. Come anticipato, tali formule saranno alla base dei metodi pseudo-spettrali, ma anche dei metodi agli elementi spettrali che facciano uso di formule di integrazione numerica.
4.2.1 Polinomi ortogonali di Legendre Consideriamo una funzione f : (−1, 1) → R. Ricordiamo che lo spazio L 2 (−1, 1) è definito da 1 4 L (−1, 1) = f : (−1, 1) → R : f L2 (−1,1) = f 2 (x) dx 1/2 < ∞ . 2
−1
Il prodotto scalare in L 2 (−1, 1) è dato da 1 f (x)g(x)dx,
(f, g) = −1
e per esso vale la disuguaglianza di Cauchy-Schwarz (2.7). I polinomi ortogonali di Legendre Lk ∈ Pk , per k = 0, 1, . . ., costituiscono una successione per cui è soddisfatta la seguente relazione di ortogonalità
102
4 I metodi spettrali
(Lk , Lm ) =
se m = k,
0 (k +
1 −1 2)
se m = k.
Essi sono linearmente indipendenti e formano una base per L 2 (−1, 1). Questo ci permette di dire che ogni funzione f ∈ L 2 (−1, 1) può essere espressa tramite uno sviluppo in serie della forma f (x) =
∞
f+k Lk (x)
(4.4)
k=0
noto come serie di Legendre. I coefficienti f+k di questo sviluppo in serie possono essere facilmente calcolati sfruttando l’ortogonalità dei polinomi di Legendre. Infatti abbiamo 1 (f, Lk ) =
=
f (x)Lk (x) dx = −1 ∞ i=0
1
1 ∞ −1
+ fi Li (x)Lk (x) dx
i=0
Li (x)Lk (x) dx f+i = f+k Lk 2L2 (−1,1) .
−1
I coefficienti f+k , noti come coefficienti di Legendre, hanno dunque la seguente espressione: 1 1 2 + fk = (f, Lk )/Lk L2 (−1,1) = (k + ) f (x)Lk (x)dx (4.5) 2 −1
da cui discende immediatamente la cosiddetta identità di Parseval: f 2L2 (−1,1) =
∞
(f+k )2 Lk 2L2 (−1,1) .
k=0
Osserviamo che lo sviluppo (4.4), le cui incognite coincidono con i coefficienti f+k definiti nella (4.5), è detto modale. È possibile calcolare, in maniera ricorsiva, i polinomi di Legendre tramite la seguente relazione a tre termini: L0 = 1, Lk+1 =
L1 = x, 2k + 1 k x Lk − Lk−1 , k+1 k+1
k = 1, 2, . . .
(si veda la Fig. 4.4 in cui vengono riportati i grafici dei polinomi L k , per k = 2, . . . , 5). Possiamo dimostrare che, per ogni f ∈ L 2 (−1, 1), la sua serie di Legendre converge a f nella norma di L 2 (−1, 1). Indicando con
4.2 Polinomi ortogonali e integrazione numerica gaussiana
103
1
0.5
0
-0.5 N=2 N=3 N=4 N=5
-1 -1
-0.5
0
0.5
1
Figura 4.4. I polinomi di Legendre di grado k = 2, 3, 4, 5
fN (x) =
N
f+k Lk (x)
k=0
la troncata N-esima della serie di Legendre di f , ciò significa che lim f − fN L2 (−1,1) = 0,
(4.6)
N →∞
ovvero
∞ 1 1 1 1 f+k Lk 1 lim 1
N →∞
k=N +1
L2 (−1,1)
= 0.
Grazie all’identità di Parseval si ha che f − fN 2L2 (−1,1) =
∞
(f+k )2 Lk 2L2 (−1,1) =
k=N +1
∞ (f+k )2 , k + 12 k=N +1
e dunque la condizione (4.6) equivale a ∞ (f+k )2 = 0. N →∞ k + 12 k=N +1
lim
Inoltre si può dimostrare che, se f ∈ H s (−1, 1), per qualche s ≥ 1, allora è possibile trovare una opportuna costante C s > 0, indipendente da N , tale che s 1 f − fN L2 (−1,1) ≤ Cs f (s) L2 (−1,1) , N ossia si ha convergenza di ordine s, per s ≥ 1, rispetto a 1/N . Possiamo a questo punto dimostrare che f N è la proiezione ortogonale di f su Q N rispetto al prodotto scalare di L 2 (−1, 1), ovvero che (f − fN , p) = 0 ∀ p ∈ QN .
(4.7)
104
4 I metodi spettrali
Infatti (f − fN , Lm ) =
∞
f+k Lk , Lm
k=N +1
∞
=
f+k (Lk , Lm ).
k=N +1
I polinomi L k , con 0 ≤ k ≤ N , formano una base per lo spazio Q N . Inoltre, per m ≤ N , (Lk , Lm ) = 0 ∀k ≥ N + 1 per via dell’ortogonalità, da cui segue la (4.7). In particolare dalla (4.7) discende anche che f N è la funzione che rende minima la distanza di f da QN , ovvero f − fN L2 (−1,1) ≤ f − pL2 (−1,1)
∀ p ∈ QN .
(4.8)
A tal fine cominciamo con l’osservare che f − fN 2L2 (−1,1) = (f − fN , f − fN ) = (f − fN , f − p) + (f − fN , p − fN ), per ogni p ∈ Q N e che (f − fN , p − fN ) = 0 per la proprietà di ortogonalità (4.7). Di conseguenza f − fN 2L2 (−1,1) = (f − fN , f − p) ∀ p ∈ QN , da cui, applicando la disuguaglianza di Cauchy-Schwarz, si ottiene f − fN 2L2 (−1,1) ≤ f − fN L2 (−1,1) f − pL2 (−1,1)
∀ p ∈ QN ,
ossia la (4.8).
4.2.2 Integrazione gaussiana Fissato pari ad N il numero dei nodi di quadratura, l’obiettivo è quello di ottenere formule di quadratura interpolatorie con grado di precisione massimo. Inizieremo con l’introdurre tali formule sull’intervallo (−1, 1) per poi estenderle al caso di un intervallo generico. Introduciamo i nodi di quadratura detti di Gauss-Legendre identificandoli con gli zeri {¯ x1 , . . . , x ¯N } del polinomio di Legendre L N . In corrispondenza di tale insieme di nodi considereremo la seguente formula di quadratura (detta interpolatoria): 1 GL IN −1 f =
GL ΠN −1 f (x) dx,
(4.9)
−1 GL essendo ΠN ¯ 1, . . . , x ¯N . −1 f il polinomio di grado N − 1 interpolante f nei nodi x Indichiamo con ψ k ∈ QN −1 i polinomi caratteristici di Lagrange associati ai nodi di Gauss-Legendre, ovvero tali che
ψ k (¯ xj ) = δkj ,
j = 1, .., N.
La formula di quadratura (4.9) assume allora la seguente espressione
4.2 Polinomi ortogonali e integrazione numerica gaussiana
1 f (x) dx
GL IN −1 f
=
N
1 α ¯ k f (¯ xk ),
con α ¯k =
k=1
−1
105
ψ k (x)dx, −1
e viene detta formula di quadratura di Gauss-Legendre (GL). Per trovare i nodi t¯k ed i pesi δ¯k caratterizzanti tale formula su un generico intervallo [a, b], basterà ricorrere per i primi alla relazione b−a a+b x ¯k + , t¯k = 2 2 mentre, per i secondi, si verifica facilmente che b−a δ¯k = α ¯k . 2 Il grado di esattezza di queste formule è pari a 2N − 1. Si ha quindi b f (x)dx = a
N
δ¯k f (t¯k )
se f ∈ Q2N −1
k=1
qualunque sia l’intervallo (a, b), ovvero il massimo grado ottenibile usando N nodi.
4.2.3 Le formule di Gauss-Legendre-Lobatto Una caratteristica delle formule di integrazione di Gauss-Legendre è di avere tutti i nodi di quadratura interni all’intervallo di integrazione. Tuttavia nel caso di problemi differenziali ciò rende problematica l’imposizione delle condizioni al bordo nei punti estremi dell’intervallo. Per superare tale difficoltà vengono introdotte le cosiddette formule di Gauss-Lobatto, in particolare le formule di Gauss-Legendre-Lobatto (GLL) i cui nodi, relativamente all’intervallo (−1, 1), sono rappresentati dagli estremi stessi dell’intervallo, e dai punti di massimo e di minimo del polinomio di Legendre di grado N , ossia dagli zeri della derivata prima del polinomio L N . Denotiamo tali nodi con {x 0 = −1, x1 , . . . , xN −1 , xN = 1}. Si ha pertanto che LN (xi ) = 0, per i = 1, . . . , N − 1.
(4.10)
Siano ψi i corrispondenti polinomi caratteristici: ψi ∈ QN : ψi (xj ) = δij , 0 ≤ i, j ≤ N ; l’espressione analitica di tali polinomi è data da ψi (x) =
(1 − x2 )LN (x) −1 , N (N + 1) (x − xi )LN (xi )
i = 0, . . . , N
(4.11)
106
4 I metodi spettrali
1
0.5
0
-0.5 i=0 i=1 i=2 i=3 i=4
-1 -1
-0.5
0
0.5
1
Figura 4.5. I polinomi caratteristici ψi , i = 0, . . . , 4 di grado 4 relativi ai nodi di GaussLegendre-Lobatto
(si veda la Fig. 4.5 in cui vengono riportati i grafici dei polinomi caratteristici ψ i , per i = 0, . . . , 4 nel caso N = 4). Osserviamo che le funzioni ψ i (x) sono la controparte delle funzioni di base lagrangiane degli elementi finiti. Per ogni funzione GLL f ∈ C 0 ([−1, 1]), il suo polinomio d’interpolazione Π N f ∈ QN nei nodi GLL è identificato dalla relazione GLL ΠN f (xi ) = f (xi ),
0≤i≤N .
(4.12)
Esso ha la seguente espressione GLL ΠN f (x)
=
N
f (xi )ψi (x).
(4.13)
i=0 GLL Si può dimostrare che, grazie alla distribuzione non uniforme dei nodi {x i }, ΠN f converge verso f quando N → ∞. Inoltre è soddisfatta la seguente stima dell’errore nel caso in cui f ∈ Hs (−1, 1), per qualche s ≥ 1: s 1 GLL f L2 (−1,1) ≤ Cs f (s) L2 (−1,1) , (4.14) f − ΠN N
dove Cs è una costante dipendente da s ma non da N . Più in generale (si veda [CHQZ06]), s−k 1 GLL f − ΠN f Hk (−1,1) ≤ Cs f (s) L2 (−1,1) , s ≥ 1, k = 0, 1. N (4.15) In Fig. 4.6 riportiamo le curve di convergenza dell’errore d’interpolazione per due diverse funzioni. 1 Tornando alla formula di quadratura, i pesi α i = ψi (x) dx assumono la seguente −1
espressione:
4.2 Polinomi ortogonali e integrazione numerica gaussiana
107
5
10
errore interpolazione
0
10
−5
10
−10
10
−15
10
0
10
20
30
40
50
60
70
N
Figura 4.6. Comportamento dell’errore di interpolazione nei nodi GLL in funzione del grado N per le due funzioni f1 (x) = cos(4πx) (•) e f2 (x) = 4 cos(4x) exp(sin(4x)) () sull’intervallo (−1, 1)
αi =
2 1 . 2 N (N + 1) LN (xi )
(4.16)
La formula di quadratura GLL è dunque data da 1 GLL f (x)dx IN f=
N
αk f (xk )
(4.17)
k=0
−1
e ha grado di esattezza pari a 2N − 1, ovvero integra esattamente tutti i polinomi di grado ≤ N − 1, 1 GLL f (x)dx = IN f ∀f ∈ Q2N −1 . (4.18) −1
Questo è il massimo grado ottenibile quando si usano N + 1 nodi, di cui 2 assegnati a priori. Si dimostra inoltre, usando la stima di interpolazione (4.14), la seguente stima per l’errore di integrazione: se f ∈ H s (−1, 1), con s ≥ 1, 1 s f (x) dx − I GLL f ≤ Cs 1 f (s) L2 (−1,1) , N N −1
dove Cs è indipendente da N ma può dipendere, in generale, da s. Ciò significa che tanto più la funzione f è regolare, tanto più elevato è l’ordine di convergenza della formula di quadratura. In Fig. 4.7 riportiamo l’errore d’integrazione per due diverse funzioni (le stesse considerate nel grafico di sinistra). Considerando un generico intervallo (a, b) e definendo nodi e pesi in (a, b) come tk =
b−a a+b xk + , 2 2
la generalizzazione della formula (4.17) diventa
δk =
b−a αk , 2
108
4 I metodi spettrali 10
errore quadratura
10
10
10
10
0
−4
−8
−12
−16
0
10
20
30
40
50
60
70
N
Figura 4.7. Comportamento dell’errore di integrazione numerica con la formula GLL per le due funzioni integrande f1 (x) = cos(4πx) (•) e f2 (x) = 4 cos(4x) exp(sin(4x)) () sull’intervallo (−1, 1)
b f (x)dx
N
δk f (tk ).
(4.19)
k=0
a
4.3 Metodi G-NI in una dimensione Consideriamo il seguente esempio di problema ellittico monodimensionale, con dati di Dirichlet omogenei: Lu= − (μu ) + σu = f, −1 < x < 1, (4.20) u(−1) = 0, u(1) = 0, con μ(x) ≥ μ0 > 0 e σ(x) ≥ 0, al fine di avere una forma bilineare associata che sia coerciva in H10 (−1, 1). Il metodo di Galerkin spettrale si scrive 1 trovare uN ∈ VN :
μuN vN dx +
−1
1
1 σuN vN dx =
−1
f vN dx
∀ vN ∈ VN ,
−1
(4.21) con VN = {vN ∈ QN : vN (−1) = vN (1) = 0}.
(4.22)
Il metodo G-NI (Galerkin with Numerical Integration) si ottiene approssimando gli integrali in (4.21) con le formule di quadratura GLL, ossia sostituendo al prodotto scalare (f, g) in L2 (−1, 1) il prodotto scalare discreto di GLL (per funzioni continue) (f, g)N =
N i=0
αi f (xi )g(xi ),
(4.23)
4.3 Metodi G-NI in una dimensione
109
dove gli xi e gli αi sono definiti secondo la (4.10) e la (4.16). Dunque il metodo G-NI si scrive: trovare u∗N ∈ VN : (μu∗N , vN )N + (σu∗N , vN )N = (f, vN )N
∀ vN ∈ VN . (4.24)
A causa dell’integrazione numerica, in generale sarà u ∗N = uN , cioè le soluzioni del metodo spettrale e di quello G-NI non coincidono. Tuttavia, osserviamo che, grazie alla proprietà di esattezza (4.18), si avrà (f, g)N = (f, g)
purché
f g ∈ Q 2N −1 .
(4.25)
Se consideriamo il caso particolare in cui in (4.20) μ = costante e σ = 0, il problema G-NI diviene: μ(u∗ N , vN )N = (f, vN )N . (4.26) In alcuni casi molto particolari si può riscontrare coincidenza tra il metodo spettrale e quello G-NI. È questo ad esempio il caso della (4.26) in cui f sia un polinomio di grado al massimo uguale a N − 1. È semplice verificare che i due metodi coincidono grazie alla relazione di esattezza (4.25). Generalizzando al caso di formulazioni differenziali più complesse e di condizioni al bordo differenti (di Neumann, o miste), il problema G-NI si scrive: trovare u∗N ∈ VN :
aN (u∗N , vN ) = FN (vN ) ∀ vN ∈ VN ,
(4.27)
dove aN (·, ·) e FN (·) si ottengono a partire dalla forma bilineare a(·, ·) e dal termine noto F (·) del problema di Galerkin spettrale, sostituendo gli integrali esatti con le formule di quadratura GLL, essendo V N lo spazio dei polinomi di grado N che si annullano su quei tratti di bordo (ammesso che ve ne siano) su cui siano assegnate condizioni di Dirichlet. Si osservi che, a causa del fatto che la forma bilineare a N (·, ·) e il funzionale FN (·) non sono più quelli associati al problema di partenza, quello che si ottiene non è più un problema di Galerkin, e pertanto non sono più applicabili i risultati teorici ad esso relativi (in particolare, il Lemma di Céa). In generale, un metodo derivato da un problema di Galerkin, di tipo spettrale o elementi finiti ([Cia78, QV94]), previa sostituzione degli integrali esatti con quelli numerici verrà detto metodo di Galerkin generalizzato (GG). Per la corrispondente analisi si farà ricorso al Lemma di Strang (si veda la Sez. 4.4.1).
4.3.1 Interpretazione algebrica del metodo G-NI Le funzioni ψ i , con i = 1, 2, . . . , N − 1, introdotte nella Sez. 4.2.3 costituiscono una base per lo spazio VN , in quanto sono tutte nulle in corrispondenza di x 0 = −1 e di xN = 1. Possiamo dunque fornire per la soluzione u ∗N del problema G-NI (4.27) la rappresentazione nodale u∗N (x) =
N −1
u∗N (xi )ψi (x),
i=1
110
4 I metodi spettrali
ovvero, in analogia con il metodo degli elementi finiti, identificare le incognite del nostro problema con i valori assunti da u ∗N in corrispondenza dei nodi x i (ora coincidenti con quelli di Gauss-Legendre-Lobatto). Inoltre, affinché il problema (4.27) risulti verificato per ogni v N ∈ VN , basterà che lo sia per ogni funzione di base ψ i . Avremo perciò: N −1
u∗N (xj ) aN (ψj , ψi ) = FN (ψi ),
i = 1, 2, . . . , N − 1,
j=1
che possiamo riscrivere: N −1
aij u∗N (xj ) = fi ,
i = 1, 2, . . . , N − 1,
j=1
ovvero, in forma matriciale:
Au∗N = f
(4.28)
dove A = (aij ) con aij = aN (ψj , ψi ),
f = (fi ) con fi = FN (ψi ),
e u∗N denota il vettore dei coefficienti incogniti u ∗N (xj ), per j = 1, . . . , N − 1. Nel caso particolare del problema (4.24), si otterrebbe aij = (μψj , ψi )N + αi σ(xi )δij ,
fi = (f, ψi )N = αi f (xi ),
per ogni i, j = 1, . . . , N − 1. La matrice in 1D è piena a causa della presenza del termine diffusivo. Il termine reattivo è invece diagonale. In più dimensioni la matrice A ha una struttura a blocchi, e i blocchi diagonali sono pieni. Si veda la Fig. 4.8 in cui è riportato il pattern di sparsità relativo alla matrice A in 2D e 3D. Osserviamo 0
0
5 100
10 200
15
20
300
25 400
30 500
35
40
600
45 700
50
0
5
10
15
20
25 nz = 637
30
35
40
45
50
0
100
200
300 400 nz = 18225
500
600
700
Figura 4.8. Pattern di sparsità della matrice A del metodo G-NI per il caso 2D (a sinistra) e 3D (a destra): nz indica il numero degli elementi non nulli della matrice
4.3 Metodi G-NI in una dimensione 6
4
10
4
10
10 non precondizionato prec. diagonale prec. Cholesky prec. EF int. num. prec. EF int. esatta
3
10 iterazioni
condizionamento
5
10
111
3
10
non precondizionato prec. diagonale prec. Cholesky prec. EF int. num. prec. EF int. esatta
2
10
2
10
1
10 1
10
0
10
0
0
10
20
30
40
50
60
70
10
0
10
20
N
30
40
50
60
70
N
Figura 4.9. Numero di condizionamento (a sinistra) e numero di iterazioni (a destra), per diversi tipi di precondizionamento
infine che il numero di condizionamento della matrice a cui si perverrebbe in assenza di integrazione numerica risulta, in generale, ancora più grande, essendo un O(N 4 ). La matrice A risulta inoltre mal condizionata, con un numero di condizionamento che risulta dell’ordine di O(N 3 ). Per la risoluzione del sistema (4.28) è dunque conveniente ricorrere, specialmente in 2D e 3D, ad un metodo iterativo opportunamente precondizionato. Scegliendo come precondizionatore la matrice degli elementi finiti lineari associati alla stessa forma bilineare a(·, ·) e ai nodi GLL, si ottiene una matrice precondizionata il cui condizionamento è indipendente da N ([CHQZ06]). Nella Fig. 4.9, in alto, riportiamo il numero di condizionamento (in funzione di N ) della matrice A e della matrice ottenuta precondizionando A con diverse matrici di precondizionamento: la matrice diagonale di A, quella ottenuta da A attraverso la fattorizzazione incompleta di Cholesky, quella con elementi finiti lineari approssimando gli integrali con la formula dei trapezi composita, e infine quella esatta degli elementi finiti. Nella stessa figura, in basso, riportiamo invece il numero di iterazioni che servono nei vari casi a far convergere il metodo del gradiente coniugato.
4.3.2 Condizionamento della matrice di rigidezza del metodo G-NI Cerchiamo delle stime per gli autovalori λ N della matrice di rigidezza A del metodo G-NI: Au = λN u dove A = (aij ), nel caso del semplice operatore di derivata seconda, ovvero a ij = (ψj , ψi )N = (ψj , ψi ), ψj essendo la j-esima funzione caratteristica di Lagrange associata al nodo xj . Allora λN =
2 uN uT Au x L2 (−1,1) = , uT u uT u
(4.29)
112
4 I metodi spettrali
essendo uN ∈ VN l’unico polinomio dello spazio V N definito in (4.22) soddisfacente xj N u (xj ) = uj , per j = 1, . . . , N − 1, dove u = (u j ). Per ogni j, u j = uN x (s) ds, −1
dunque, grazie alla disuguaglianza di Cauchy-Schwarz, xj 1/2 xj 1/2 √ N 2 |ux (s)| ds ds ≤ 2 uN |uj | ≤ x L2 (−1,1) . −1
−1
Pertanto
N −1
2 u2j ≤ 2 (N − 1) uN x L2 (−1,1) ,
uT u =
j=1
il che, grazie alla (4.29), fornisce la minorazione λN ≥
1 . 2(N − 1)
(4.30)
Una maggiorazione per λ N si ottiene ricorrendo alla seguente disuguaglianza inversa per i polinomi algebrici, secondo la quale (si veda [CHQZ06], Sez. 5.4.1) ∃ C > 0 : ∀ p ∈ VN ,
px L2 (−1,1)
√ ≤ 2N
1 −1
1/2 p2 (x) dx . 1 − x2
(4.31)
Allora 1 2 uN x L2 (−1,1)
≤ 2N
2 −1
N −1 N [uN (x)]2 [u (xj )]2 2 dx = 2 N αj , 1 − x2 1 − x2j j=1
(4.32)
dove si è usata l’esattezza della formula di quadratura GLL (si veda la (4.18)), essendo [uN ]2 /(1−x2 ) ∈ P2N −2 . Poiché per i coefficiente α j vale la stima asintotica: αj /(1− x2j ) ≤ C, per un’opportuna costante C indipendente da N , possiamo concludere, grazie alla (4.29) e alla (4.32), che λN ≤ 2 C N 2 .
(4.33)
Si può infine dimostrare che entrambe le stime (4.30) e (4.33) sono ottimali per quanto attiene al comportamente asintotico rispetto a N .
4.3.3 Equivalenza tra il metodo G-NI e un metodo di collocazione Vogliamo mostrare che esiste una relazione precisa fra il metodo G-NI e i metodi di collocazione, quei metodi cioè che impongono il soddisfacimento dell’equazione differenziale solo in punti selezionati dell’intervallo di definizione. Consideriamo ancora
4.3 Metodi G-NI in una dimensione
113
il problema di Dirichlet omogeneo (4.20), il cui problema G-NI associato si scrive nella forma (4.24). Vorremmo controintegrare per parti l’equazione (4.24), ma, per poterlo fare, dobbiaGLL mo prima riscrivere i prodotti scalari discreti sotto forma di integrali. Sia Π N : 0 C ([−1, 1]) → QN l’operatore di interpolazione introdotto nella Sez. 4.2.3 che associa ad una funzione continua il corrispondente polinomio interpolante tale funzione nei nodi di Gauss-Legendre-Lobatto. Poiché la formula di quadratura di Gauss-Legendre-Lobatto usa solo i valori della funzione nei nodi di quadratura e poiché ivi la funzione e il suo interpolato G-NI coincidono, si ha N
N GLL GLL αi ΠN f (xi ) = ΠN f (x)dx, 1
αi f (xi ) =
i=0
i=0
−1
GLL f , essendo un polidove l’ultima uguaglianza discende dalla (4.18) in quanto Π N nomio di grado N , viene integrato esattamente. Il prodotto scalare discreto può essere così ricondotto ad un prodotto scalare in L2 (−1, 1), nel caso in cui una delle due funzioni sia un polinomio di grado strettamente minore di N : GLL GLL (f, g)N = (ΠN f, g)N = (ΠN f, g)
∀ g ∈ QN −1 .
(4.34)
GLL GLL In tal caso, infatti, g ∈ Q N −1 , ΠN f ∈ QN , (ΠN f )g ∈ Q2N −1 e quindi l’integrale viene calcolato esattamente. Quindi, integrando per parti gli integrali esatti, si ottiene1 (μuN , vN )N
=
GLL GLL (ΠN (μuN ), vN )N = (ΠN (μuN ), vN )
=
GLL GLL (μuN )] , vN )+ [ΠN (μuN ) vN ]1−1 −([ΠN
=
GLL −([ΠN (μuN )] , vN )N ,
dove l’ultimo passaggio si giustifica poiché v N si annulla al bordo ed i termini nel prodotto scalare danno luogo ad un polinomio il cui grado totale è pari a 2N − 1. A questo punto, possiamo riscrivere il problema G-NI come segue: trovare uN ∈ VN : (LN uN , vN )N = (f, vN )N dove si è definito
∀ vN ∈ VN ,
GLL LN uN = −[ΠN (μuN )] + σuN .
(4.35)
(4.36)
Imponendo ora che la (4.35) valga per ogni funzione di base ψ i , si ottiene (LN uN , ψi )N = (f, ψi )N , 1
i = 1, 2, . . . , N − 1.
D’ora in poi, per semplicità di notazione, indicheremo la soluzione G-NI con uN (anziché u∗N ), non essendoci più rischio di confusione con la soluzione spettrale.
114
4 I metodi spettrali
Esaminiamo ora come è fatta la i-esima equazione. Il primo termine, a meno del segno, vale GLL ([ΠN (μuN )] , ψi )N
=
N
GLL GLL αj [ΠN (μuN )] (xj )ψi (xj ) = αi [ΠN (μuN )] (xi ),
j=0
essendosi tenuto conto del fatto che ψ i (xj ) = δij . Analogamente, per il secondo termine, si ha: (σuN , ψi )N =
N
αj σ(xj )uN (xj )ψi (xj ) = αi σ(xi )uN (xi ).
j=0
Infine, il secondo membro diviene: (f, ψi )N =
N
αj f (xj )ψi (xj ) = αi f (xi ).
j=0
Dividendo per α i l’equazione così trovata, si ottiene, in definitiva, il seguente problema equivalente al problema G-NI: LN uN (xi ) = f (xi ), i = 1, 2, . . . , N − 1, (4.37) uN (xN ) = 0. uN (x0 ) = 0, Questo problema si dice di collocazione perché equivale a collocare nei nodi interni xi l’equazione differenziale assegnata (previa approssimazione dell’operatore differenziale L con l’operatore L N ), nonché a soddisfare le condizioni al contorno nei nodi di bordo. Introduciamo ora il concetto di derivata di interpolazione, D N (Φ), di una funGLL zione continua Φ, identificandola con la derivata del polinomio interpolatore Π N Φ definito secondo la (4.12), ovvero GLL DN (Φ)=D[ΠN Φ],
(4.38)
essendo D il simbolo di derivazione esatta. Se ora consideriamo l’operatore differenziale L e sostituiamo a tutte le derivate le corrispondenti derivate di interpolazione, otteniamo un nuovo operatore, detto operatore pseudo-spettrale L N , che coincide esattamente con quello definito nella (4.36). Ne consegue che il metodo G-NI, qui introdotto come metodo di Galerkin generalizzato, può essere interpretato anche come un metodo di collocazione che opera direttamente sulla forma forte del problema, in analogia a quanto avviene, ad esempio, nel caso delle differenze finite. In questo senso le differenze finite possono essere considerate come una versione meno accurata del metodo G-NI in quanto le derivate sono approssimate con formule che fanno uso di un numero ridotto di valori nodali. Se l’operatore di partenza fosse stato
4.3 Metodi G-NI in una dimensione
115
Lu = (−μu ) + (bu) + σu il corrispondente operatore pseudo-spettrale sarebbe stato LN uN = −DN (μuN ) + DN (buN ) + σuN .
(4.39)
Nel caso le condizioni al contorno per il problema (4.20) fossero di tipo Neumann, ( ) ( ) μu (1) = g+ , μu (−1) = g− , il metodo di Galerkin spettrale si formulerebbe come segue: 1 trovare uN ∈ QN
:
μuN vN dx +
−1
1 f vN dx
+
1 σuN vN dx = −1
μ(1) g+ vN (1) − μ(−1) g− vN (−1) ∀ vN ∈ QN ,
−1
mentre il metodo G-NI diventerebbe trovare uN ∈ QN
:
(f, vN )N
+
(μuN , vN )N + (σuN , vN )N =
μ(1) g+ vN (1) − μ(−1) g− vN (−1) ∀ vN ∈ QN .
La sua interpretazione come metodo di collocazione diventa: trovare u N ∈ QN : LN uN (xi ) = f (xi ),
i = 1, . . . , N − 1
(
) ) 1 (( ) LN uN (x0 ) − f (x0 ) − μ uN (−1) − g− = 0, α0 ( ) ) 1 (( ) LN uN (xN ) − f (xN ) + μ uN (1) − g+ = 0, αN dove LN è definito in (4.36). Si noti che nei nodi di bordo viene soddisfatta la condizione di Neumann a meno del residuo L N uN − f moltiplicato per il coefficiente della formula GLL che è un infinitesimo di ordine 2 rispetto a 1/N . In Fig. 4.10 1 riportiamo ( ) l’errore nella norma H (−1, 1) (sopra) ed il valore assoluto della differenza μ uN (±1) − g± (sotto) per diversi valori di N . Entrambi gli errori decadono esponenzialmente al crescere di N . Riportiamo inoltre gli errori ottenuti usando le approssimazioni di Galerkin ad elementi finiti di grado r = 1, 2, 3. Può infine esser utile osservare che la derivata di interpolazione (4.38) si può rappresentare attraverso una matrice D ∈ R (N +1)×(N +1) , detta matrice della derivata di interpolazione, la quale associa ad un qualunque vettore v ∈ R N +1 di valori nodali v i = Φ(xi ), i = 0, . . . , N , il vettore w = Dv le cui componenti sono i valori nodali del polinomio DN (Φ), ovvero wi = (DN (Φ))(xi ), i = 0, . . . , N . La matrice D ha per elementi i valori Dij = ψj (xi ), i, j = 0, . . . , N.
116 10
10
10
10
10
4 I metodi spettrali 5
10
0
10
−5
10 r=N r=1 r=2 r=3
−10
10
−15
0
50
100
150
200
250
300
350
10
5
r=N r=1 r=2 r=3
0
−5
−10
−15
0
50
100
150
N
200
250
300
350
N
Figura 4.10. Errore in H1 (−1, 1) (a sinistra) ed errore sul dato di Neumann (a destra) al variare di N
Si può dimostrare che tali valori sono dati da ⎧ di (−1)i+j ⎪ ⎪ , i = j, ⎪ ⎪ dj xi − xj ⎪ ⎪ ⎪ ⎪ −xj ⎪ ⎪ , 1 ≤ i = j ≤ N − 1, ⎨ 2(1 − x2j ) Dij = ⎪ 2N 2 + 1 ⎪ ⎪ − , i = j = 0, ⎪ ⎪ 6 ⎪ ⎪ ⎪ ⎪ 2 ⎪ ⎩ 2N + 1 , i = j = N, 6 dove d0 = dN = 2 e dj = 1 per j = 1, . . . , N − 1.
4.4 Generalizzazione al caso bidimensionale Consideriamo come dominio il quadrato unitario Ω = (−1, 1) 2 . Essendo Ω il prodotto tensoriale dell’intervallo monodimensionale (−1, 1), è naturale scegliere come nodi i punti xij le cui coordinate coincidono entrambe con i nodi di Gauss-Legendre-Lobatto monodimensionali x i , xij = (xi , xj ), i, j = 0, . . . , N, mentre come pesi prendiamo il prodotto dei corrispondenti pesi monodimensionali di Gauss-Legendre-Lobatto αij = αi αj , i, j = 0, . . . , N. La formula di quadratura di Gauss-Legendre-Lobatto in due dimensioni è dunque definita da N f (x) dΩ αij f (xij ), Ω
i,j=0
4.4 Generalizzazione al caso bidimensionale
117
mentre il prodotto scalare discreto è dato da N
(f, g)N =
αij f (xij )g(xij ).
i,j=0
Analogamente al caso monodimesionale si dimostra che la formula di quadratura di Gauss-Legendre-Lobatto è esatta ogniqualvolta la funzione integranda sia un polinomio di grado al più 2N − 1. In particolare, ciò implica che (f, g)N = (f, g)
∀ f, g t.c. f g ∈ Q2N −1 .
In questa sezione, per ogni N , Q N indica lo spazio dei polinomi di grado minore o uguale ad N rispetto ad ognuna delle variabili, introdotto in (4.1). Consideriamo ora il problema Lu= − div(μ∇u) + σu = f in Ω = (−1, 1)2 , u=0
su ∂Ω,
nell’ipotesi che μ(x) ≥ μ0 > 0 e σ(x) ≥ 0, al fine di avere una forma bilineare associata coerciva in H10 (Ω). La sua approssimazione G-NI è data da: trovare uN ∈ VN : dove
aN (uN , vN ) = FN (vN )
∀ vN ∈ VN ,
VN = {v ∈ QN : v|∂Ω = 0}, aN (u, v) = (μ∇u, ∇v)N + (σu, v)N
e FN (vN ) = (f, vN )N . Osserviamo che, come mostrato nel caso monodimensionale, anche in più dimensioni si può verificare che la formulazione G-NI equivale ad un metodo di collocazione in cui l’operatore L sia sostituito da L N , l’operatore pseudo-spettrale che si ottiene approssimando ogni derivata con una derivata G-NI. Nel caso di metodi ad elementi spettrali avremo bisogno di generalizzare la formula di integrazione numerica GLL su ogni elemento Ω k . Questo si può fare grazie alla + → Ωk (si veda la Fig. 4.2). In effetti, possiamo innanzitutto trasformazione ϕ k : Ω generare i nodi GLL sul generico elemento Ω k , ponendo (k)
xij = ϕk (xij ),
i, j = 0, . . . , N,
quindi definendo i corrispondenti pesi (k)
αij = αij | det Jk | = αij
|Ωk | , 4
i, j = 0, . . . , N,
118
4 I metodi spettrali
avendo indicato con J k lo Jacobiano della trasformazione ϕ k e con |Ωk | la misura di Ωk . La formula GLL su Ω k diventa dunque: GLL f (x) dx IN,k (f ) =
N
(k)
(k)
αij f (xij ).
i,j=0
Ωk
La formulazione agli elementi spettrali con integrazione numerica gaussiana, ovvero MES-NI, diventa allora: trovare uN ∈ VNC :
aC,N (uN , vN ) = FC,N (vN ) ∀ vN ∈ VNC .
Abbiamo posto aC,N (uN , vN ) =
(4.40)
aΩk ,N (uN , vN )
k
dove aΩk ,N (uN , vN ) è l’approssimazione di a Ωk (uN , vN ) ottenuta approssimando ogni integrale su Ω k che compare nella forma bilineare attraverso la formula di integrazione numerica di Gauss-Legendre-Lobatto in Ω k . Il termine FC,N si definisce in modo simile, ovvero F C,N (vN ) = k FΩk ,N (vN ), dove per ogni k F Ωk ,N è ottenuto, GLL (f vN ). a sua volta, sostituendo a f vN dx la formula IN,k Ωk
Osservazione 4.3 La Fig. 4.11 riassume in modo assai schematico la genesi dei diversi schemi di approssimazione sino ad ora evocati. Nel caso delle differenze finite si è indicato con L Δ la discretizzazione dell’operatore attraverso schemi alle differenze finite applicati alle singole derivate che appaiono in L. •
4.4.1 Convergenza del metodo G-NI Come osservato nel caso monodimensionale, il metodo G-NI si può considerare come un metodo di Galerkin generalizzato. Per quest’ultimo, l’analisi di convergenza si basa sul seguente risultato generale: Lemma 4.1 (di Strang) Si consideri il problema trovare u ∈ V :
a(u, v) = F (v)
∀ v ∈ V,
(4.41)
in cui V sia uno spazio di Hilbert con norma · V , F ∈ V un funzionale lineare e continuo su V ed a(·, ·) : V × V →R una forma bilineare, continua e coerciva su V (valgano, cioè, le ipotesi del Lemma di Lax-Milgram). Sia data, inoltre, un’approssimazione di (4.41) formulabile attraverso il seguente problema di Galerkin generalizzato: trovare uh ∈ Vh :
ah (uh , vh ) = Fh (vh )
∀vh ∈ Vh ,
(4.42)
4.4 Generalizzazione al caso bidimensionale
119
essendo {Vh , h > 0} una famiglia di sottospazi di dimensione finita di V . Supponiamo che la forma bilineare discreta a h (·, ·) sia continua su Vh × Vh , e sia uniformemente coerciva su V h , cioè: ∃α∗ > 0, indipendente da h, t.c. a h (vh , vh ) ≥ α∗ vh 2V
∀ vh ∈ Vh .
Sia inoltre Fh un funzionale lineare e continuo su V h . Allora: 1. esiste una ed una sola soluzione u h del problema (4.42); 2. tale soluzione dipende con continuità dai dati, ovvero si ha che uh V ≤
1 Fh (vh ) sup ; ∗ α vh ∈Vh \{0} vh V
3. vale infine la seguente stima a priori dell’errore: M u − uh V ≤ 1 + ∗ u − wh V inf wh ∈Vh α +
1 |a(wh , vh ) − ah (wh , vh )| sup ∗ α vh ∈Vh \{0} vh V
+
|F (vh ) − Fh (vh )| 1 sup , ∗ α vh ∈Vh \{0} vh V
2 (4.43)
essendo M la costante di continuità della forma bilineare a(·, ·). Dimostrazione. Essendo soddisfatte le ipotesi del Lemma di Lax-Milgram per il problema (4.42), la soluzione di tale problema esiste ed è unica. Inoltre 1 uh V ≤ ∗ Fh Vh , α Fh (vh ) essendo la norma nello spazio duale V h di Vh definita da Fh Vh = sup . vh ∈Vh \{0} vh V Accingiamoci ora a dimostrare la (4.43). Sia u h ∈ Vh la soluzione del problema (4.42) e sia wh una qualunque funzione del sottospazio V h . Ponendo σh = uh − wh ∈ Vh , abbiamo: α∗ σh 2V ≤ ah (σh , σh ) [per la coercività di a h ] =
ah (uh , σh ) − ah (wh , σh )
=
Fh (σh ) − ah (wh , σh )
=
Fh (σh ) − F (σh ) + F (σh ) − ah (wh , σh )
[grazie a (4.42)]
120
4 I metodi spettrali
-
F ORMA FORTE Lu = f
F ORMA DEBOLE u ∈ V : a(u, v) = F (v) ∀v ∈ V
Galerkin
? F ORMA I NTEGRALE Lu := div(F(u)) = f
? 6
-
Galerkin-Elementi Finiti uh ∈ Vh : a(uh , vh ) = F (vh ) ∀vh ∈ Vh
-
Galerkin-spettrale uN ∈ VN : a(uN , vN ) = F (vN ) ∀vN ∈ VN
-
MES uN ∈ VNC : aC (uN , vN ) = FC (vN ) ∀vN ∈ VNC
Volumi Finiti Fh (uh ) · n =
f ΩV
∂ΩV
∀ΩV volume di controllo
Galerkin generalizzato
-
Galerkin discontinuo (DG)
Collocazione nei nodi interni Differenze finite L Δ u Δ = fΔ Collocazione spettrale L N u N = fN
-
Elementi Finiti con integrazione numerica uh ∈ Vh : ah (uh , vh ) = Fh (vh ) ∀vh ∈ Vh
-
G-NI uN ∈ VN : aN (uN , vN ) = FN (vN ) ∀vN ∈ VN
-
MES-NI uN ∈ VNC : aC,N (uN , vN ) = FC,N (vN ) ∀vN ∈ VNC
Figura 4.11. Quadro di riferimento per i principali metodi numerici considerati in questo libro
=
[Fh (σh ) − F (σh )] + a(u, σh ) − ah (wh , σh ) [ grazie a (4.41)]
=
[Fh (σh ) − F (σh )] + a(u − wh , σh ) +[a(wh , σh ) − ah (wh , σh )].
Se σh = 0 si può dividere la (4.44) per α ∗ σh V , ottenendo
(4.44)
4.4 Generalizzazione al caso bidimensionale
σh V
≤ + ≤ +
121
|a(u − wh , σh )| |a(wh , σh ) − ah (wh , σh )| + σh V σh V 4 |Fh (σh ) − F (σh )| σh V |a(wh , vh ) − ah (wh , vh )| 1 M u − wh V + sup ∗ α vh V vh ∈Vh \{0} 2 |Fh (vh ) − F (vh )| [per la continuità di a]. sup vh V vh ∈Vh \{0} 1 α∗
Osserviamo che se σh = 0 tale disuguaglianza è ancora valida (in quanto afferma che 0 è minore di una somma di termini positivi), pur non essendo più valido il procedimento con cui essa è stata ricavata. Possiamo ora stimare l’errore fra la soluzione u di (4.41) e la soluzione u h di (4.42). Essendo u − uh = (u − wh ) − σh , otteniamo u − uh V
≤ u − wh V + σh V ≤ u − wh V
|a(wh , vh ) − ah (wh , vh )| vh V vh ∈Vh \{0}
+
1 α∗
+
|Fh (vh ) − F (vh )| sup vh V vh ∈Vh \{0}
=
+
M u − wh V +
M 1+ ∗ α
u − wh V +
sup
2
1 |a(wh , vh ) − ah (wh , vh )| sup ∗ α vh ∈Vh \{0} vh V
|Fh (vh ) − F (vh )| 1 sup . α∗ vh ∈Vh \{0} vh V
Se la disuguaglianza precedente vale ∀w h ∈ Vh , essa vale anche per l’estremo inferiore al variare di w h in Vh . Pertanto si ottiene la (4.43). Osserviamo che, partendo dalla (4.43), possiamo riconoscere il contributo di tre diverse sorgenti d’errore alla stima dell’errore d’approssimazione u − u h : l’errore di miglior approssimazione inf u − wh V , l’errore |a(wh , vh ) − ah (wh , vh )| genewh ∈Vh
rato dall’approssimazione della forma bilineare a(·, ·) con la forma bilineare discreta ah (·, ·), e l’errore |F (vh ) − Fh (vh )| associato all’approssimazione del funzionale lineare F (·) tramite il funzionale lineare discreto F h (·).
122
4 I metodi spettrali
Osservazione 4.4 Si noti che se si sceglie in (4.44) w h = u∗h , essendo u∗h la soluzione del problema di Galerkin u∗h ∈ Vh : a(u∗h , vh ) = F (vh ) ∀ vh ∈ Vh , allora il termine a(u − wh , σh ) nella (4.44) è nullo grazie alla (4.41). Quindi si può ottenere la seguente stima alternativa alla (4.43): u − uh V
≤
u − u∗h V
+
|a(u∗h , vh ) − ah (u∗h , vh )| 1 sup ∗ α vh ∈Vh \{0} vh V
+
|F (vh ) − Fh (vh )| 1 sup , α∗ vh ∈Vh \{0} vh V
che ben mette in evidenza che l’errore dovuto al metodo di Galerkin generalizzato è maggiorabile con quello del metodo di Galerkin più gli errori indotti dall’uso dell’integrazione numerica per il calcolo di a(·, ·) e di F (·). • Vogliamo ora applicare il Lemma di Strang al metodo G-NI, per verificarne la convergenza, limitandoci, per semplicità, al caso monodimensionale. Naturalmente Vh sarà sostituito da VN , uh da uN , vh da vN e wh da wN . Cominciamo, innanzitutto, col calcolare l’errore di quadratura di Gauss-LegendreLobatto, che definiamo E(g, vN ) = (g, vN ) − (g, vN )N , essendo g e vN , rispettivamente, una generica funzione continua ed un generico poGLL linomio di QN . Introducendo il polinomio d’interpolazione Π N g definito secondo la (4.12), otteniamo dunque E(g, vN )
GLL = (g, vN ) − (ΠN g, vN )N
∈QN −1
∈QN / 0- . /0-. GLL GLL GLL Π = (g, vN ) − (ΠN g, v ) + ( g, g, vN )N vN ) −(ΠN N N −1 −1 ./ 0 GLL = (g, vN ) − (ΠN −1 g, vN )
∈Q2N −1
GLL GLL g, vN )N [ per la (4.25)] +(ΠN −1 g, vN )N − (ΠN GLL GLL GLL g, vN )N . = (g − ΠN −1 g, vN ) + (ΠN −1 g − ΠN
(4.45) Il primo addendo del termine di destra si può maggiorare usando la disuguaglianza di Cauchy-Schwarz: GLL GLL |(g − ΠN −1 g, vN )| ≤ g − ΠN −1 gL2 (−1,1) vN L2 (−1,1) .
(4.46)
4.4 Generalizzazione al caso bidimensionale
123
Per maggiorare il secondo addendo, dobbiamo innanzitutto introdurre i due seguenti lemmi per la cui dimostrazione rinviamo a [CHQZ06]: Lemma 4.2 Il prodotto scalare discreto (·, ·) N definito in (4.23) è un prodotto scalare su QN e, come tale, soddisfa la disuguaglianza di Cauchy-Schwarz |(ϕ, ψ)N | ≤ ϕN ψN , dove la norma discreta · N è data da ϕN = (ϕ, ϕ)N
∀ ϕ ∈ QN .
(4.47)
(4.48)
Lemma 4.3 La norma “continua” di L 2 (−1, 1) e la norma “discreta” · N definita in (4.48) sono uniformemente equivalenti su Q N , cioè √ vN L2 (−1,1) ≤ vN N ≤ 3vN L2 (−1,1) ∀ vN ∈ QN . (4.49) GLL In base a tali lemmi, possiamo procedere alla maggiorazione del termine (Π N −1 g − GLL ΠN g, vN )N , avendo GLL GLL |(ΠN g, vN )N | −1 g − ΠN GLL GLL gN vN N ≤ ΠN −1 g − ΠN
[ grazie al Lemma 4.2]
GLL GLL g − gL2 (−1,1) vN L2 (−1,1) ≤ 3 ΠN −1 g − gL2 (−1,1) + ΠN [grazie al Lemma 4.3]. Usando tale disuguaglianza e la (4.46), dalla (4.45) si può ottenere la seguente maggiorazione: GLL GLL |E(g, vN )| ≤ 4ΠN g − gL2 (−1,1) vN L2 (−1,1) . −1 g − gL2 (−1,1) + 3ΠN Usando la stima d’interpolazione (4.15), abbiamo che, purché g ∈ H s (−1, 1), per qualche s ≥ 1, s s 1 1 |E(g, vN )| ≤ C gHs (−1,1) vN L2 (−1,1) . + N −1 N In definitiva, essendo, per ogni N ≥ 2, 1/(N − 1) ≤ 2/N , l’errore di quadratura di Gauss-Legendre-Lobatto risulta maggiorabile come
124
4 I metodi spettrali
|E(g, vN )| ≤ C
1 N
s gHs (−1,1) vN L2 (−1,1) ,
(4.50)
per ogni g ∈ Hs (−1, 1) e per ogni polinomio v N ∈ QN . A questo punto siamo pronti a valutare i vari contributi che intervengono nella (4.43). Anticipiamo che quest’analisi verrà fatta nel caso in cui siano introdotte opportune ipotesi semplificatrici sul problema differenziale in esame. Iniziamo dal termine più semplice, ovvero quello associato al funzionale F , supponendo di considerare un problema con condizioni al bordo di Dirichlet omogenee, in modo che risulti F (vN ) = (f, vN ) e FN (vN ) = (f, vN )N . Si ha allora, purché f ∈ H s (−1, 1), per un opportuno s ≥ 1, |F (vN ) − FN (vN )| |(f, vN ) − (f, vN )N | = sup v vN V N V vN ∈VN \{0} vN ∈VN \{0} s 1 C f Hs (−1,1) vN L2 (−1,1) |E(f, vN )| N = sup ≤ sup vN V vN ∈VN \{0} vN V vN ∈VN \{0} s 1 ≤C f Hs(−1,1) , N sup
(4.51)
essendosi sfruttata la relazione (4.50) ed avendo maggiorato la norma in L 2 (−1, 1) con quella in Hs (−1, 1). Per quanto riguarda il contributo |a(wN , vN ) − aN (wN , vN )| vN V vN ∈VN \{0} sup
dovuto alla forma bilineare, non possiamo valutarlo esplicitamente senza riferirci ad un particolare problema differenziale. Scegliamo quindi, a titolo d’esempio, il problema di diffusione-reazione monodimensionale (4.20), supponendo inoltre μ e σ costanti. Per inciso tale problema soddisfa condizioni al bordo di Dirichlet omogenee, in accordo con quanto richiesto per la derivazione della stima (4.51). In tal caso la forma bilineare associata è a(u, v) = (μu , v ) + (σu, v), mentre la sua approssimazione G-NI è data da aN (u, v) = (μu , v )N + (σu, v)N . Dobbiamo quindi valutare a(wN , vN )−aN (wN , vN ) = (μwN , vN )−(μwN , vN )N +(σwN , vN )−(σwN , vN )N . Trattandosi di polinomi algebrici monodimensionali, w N , vN ∈ QN , quindi wN vN ∈ Q2N −2 . Se supponiamo che μ sia costante, il prodotto w N vN viene integrato esattamente dalla formula di quadratura di Gauss-Legendre-Lobatto. In particolare si deduce che (μwN , vN ) − (μwN , vN )N = 0. Resta quindi da valutare il contributo
4.4 Generalizzazione al caso bidimensionale
125
(σwN , vN ) − (σwN , vN )N . Osserviamo che (σwN , vN ) − (σwN , vN )N =E(σwN , vN ) = E(σ(wN − u), vN ) + E(σu, vN ), e quindi, usando la (4.50), si ottiene 1 σ(wN − u)H1 (−1,1) vN L2 (−1,1) , |E(σ(wN − u), vN )| ≤ C N |E(σu, vN )| ≤ C
1 N
s σuHs (−1,1) vN L2 (−1,1) .
GLL u ed utilizzando la (4.15), D’altra parte, essendo anche σ costante, posto w N = ΠN si ottiene s−1 1 GLL σ(wN − u)H1 (−1,1) ≤ Cu − ΠN uH1 (−1,1) ≤ C uHs (−1,1) . N
Pertanto |a(wN , vN ) − aN (wN , vN )| ≤ C∗ sup vN V vN ∈VN \{0}
1 N
s uHs (−1,1) .
(4.52)
GLL u Resta ancora da stimare il primo addendo della (4.43). Avendo scelto w N = ΠN e sfruttando ancora la (4.15), otteniamo che s 1 GLL u − wN V =u − ΠN uH1 (−1,1) ≤ C uHs+1(−1,1) (4.53) N
purché u ∈ Hs+1 (−1, 1), per un opportuno s ≥ 1. In conclusione, grazie alle (4.51), (4.52) e (4.53), dalla (4.43) applicata all’approssimazione G-NI del problema (4.20), con μ e σ costanti, troviamo la seguente stima dell’errore s ( ) 1 u − uN H1 (−1,1) ≤ C f Hs(−1,1) + uHs+1(−1,1) , N nell’ipotesi che f ∈ Hs (−1, 1) e u ∈ Hs+1 (−1, 1) ∩ H10 (−1, 1), per un opportuno s ≥ 1. L’analisi di convergenza appena fatta per il problema modello (4.20) può essere generalizzata (con qualche piccola difficoltà tecnica) al caso di problemi differenziali più complessi e di condizioni al bordo differenti. Esempio 4.2 (Problema con regolarità dipendente da un parametro) Consideriamo il seguente problema (banale ma istruttivo): 8 x ∈ (0, 1], < −u = 0, −u = −α(α − 1)(x − 1)α−2 , x ∈ (1, 2), : u(0) = 0, u(2) = 1,
126
4 I metodi spettrali 1
1
0.9
0.9
0.8 0.7
0.8 0.7
0.6
0.6
0.5
0.5
0.4
0.4
0.3
0.3
0.2 0.1 0 −0.7071
0.2 0.1 0 −0.7071
0
1
0
1
Figura 4.12. La griglia (a sinistra) e la soluzione ottenuta (a destra) con il metodo degli elementi spettrali per il problema dell’Esempio 4.3 con α ∈ N. La soluzione esatta è nulla fra (0, 1) e vale (x − 1)α per x ∈ (1, 2). Essa appartiene a Hα (0, 2), ma non a Hα+1 (0, 2). Riportiamo in Tabella 4.1 l’andamento dell’errore in norma H1 (0, 2) rispetto a N utilizzando un metodo G-NI per tre diversi valori di α. Come si vede, all’aumentare della regolarità, cresce anche l’ordine di convergenza del metodo spettrale rispetto a N , come previsto dalla teoria. In Tabella 4.2 si riportano invece i risultati ottenuti usando elementi finiti lineari (questa volta N indica il numero di elementi). L’ordine di convergenza del metodo degli elementi finiti si mantiene, al contrario, lineare. Esempio 4.3 Riprendiamo l’Esempio 3.2 utilizzando, questa volta, il metodo degli elementi spettrali. Consideriamo una partizione del dominio in 4 elementi spettrali di grado 8 come mostrato in Fig. 4.12, a sinistra. La soluzione ottenuta (Fig. 4.12, a destra) non presenta alcuna inaccuratezza in prossimità dell’origine, contrariamente alla soluzione ottenuta con gli elementi finiti in assenza di adattività di griglia (si confronti con la Fig. 3.20, a sinistra).
4.5 Metodo G-NI e MES-NI per un problema modello monodimensionale Consideriamo il problema di diffusione-reazione monodimensionale −[(1 + x2 ) u (x)] + cos(x2 ) u(x) = f (x),
x ∈ (−1, 1),
(4.54)
completato con condizioni al bordo di tipo misto N 2 4 8 16 32
α=2 1.2247 0.5931 0.3064 0.1566 0.0792
α=3 α=4 1.6833 2.1985 0.2502 0.2041 0.0609 0.0090 0.0154 7.5529 ·10−4 0.0039 6.7934 ·10−5
Tabella 4.1. Andamento dell’errore del metodo spettrale G-NI al variare del grado polinomiale N e dell’indice di regolarità della soluzione
4.5 Metodo G-NI e MES-NI per un problema modello monodimensionale N 4 8 16 32
α=2 0.4673 0.2456 0.1312 0.0745
127
α=3 0.5768 0.3023 0.1467 0.0801
Tabella 4.2. Andamento dell’errore del metodo degli elementi finiti lineari al variare del numero di intervalli N e dell’indice di regolarità della soluzione
u(−1) = 0,
u (1) = 1.
Obiettivo di questa sezione è di discutere in dettaglio come formulare le approssimazioni G-NI e MES-NI. Per la prima forniremo anche la corrispondente formulazione matriciale ed un’analisi di stabilità.
4.5.1 Il metodo G-NI La formulazione debole del problema (4.54) è: trovare u ∈ V : a(u, v) = F (v)
∀v ∈ V
essendo V = {v ∈ H1 (−1, 1) : v(−1) = 0}, a : V × V −→ R e F : V −→ R la forma bilineare e il funzionale lineare definiti, rispettivamente, da 1 a(u, v) =
1
(1 + x ) u (x) v (x) dx + 2
−1
1 F (v) =
cos(x2 ) u(x) v(x) dx, −1
f (x) v(x) dx + 2 v(1). −1
La formulazione Galerkin-spettrale (MS) assume la seguente forma: trovare uN ∈ VN : t.c.
a(uN , vN ) = F (vN ) ∀vN ∈ VN ,
(4.55)
essendo VN = {vN ∈ QN : vN (−1) = 0} ⊂ V.
(4.56)
Per ottenere la corrispondente formulazione G-NI è sufficiente approssimare in (4.55) tutti i prodotti scalari su L 2 (−1, 1) con il prodotto scalare discreto GLL definito in (4.23). Abbiamo dunque: trovare u∗N ∈ VN : aN (u∗N , vN ) = FN (vN ) ∀vN ∈ VN , avendo posto
(4.57)
128
4 I metodi spettrali
aN (u, v) = =
) ( ( ) (1 + x2 ) u , v N + cos(x2 ) u, v N N
(1 + x2i ) u (xi ) v (xi ) αi +
i=0
N
cos(x2i ) u(xi ) v(xi ) αi
i=1
(4.58) e FN (v) = (f, v)N + 2 v(1) =
N
f (xi ) v(xi ) αi + 2 v(1).
(4.59)
i=1
Osserviamo che l’indice dell’ultima sommatoria in (4.58) e della sommatoria in (4.59) parte da 1, anziché da 0, essendo v(x 0 ) = v(−1) = 0. Inoltre, le formulazioni MS (4.55) e G-NI (4.57) non coincidono sotto condizione alcuna. Si consideri, ad esempio, il termine diffusivo (1 + x 2 ) (u∗N ) vN : esso è un polinomio di grado 2N . Poiché la formula di quadratura GLL ha grado di esattezza (2N − 1), il prodotto scalare discreto ( (4.23) non restituirà ) il valore esatto del corri spondente prodotto scalare continuo (1 + x2 ) (u∗N ) , vN . Per ottenere la formulazione matriciale dell’approssimazione G-NI, indichiamo con ψi , per i = 1, . . . , N , i polinomi caratteristici associati ai nodi GLL non di Dirichlet. Tali polinomi costituiscono una base per lo spazio V N in (4.56). Questo ci permette, in primo luogo, di scrivere la soluzione u ∗N della formulazione G-NI come u∗N (x) =
N
u∗N (xj ) ψj (x).
j=1
In secondo luogo possiamo scegliere nella (4.57) v N = ψi , i = 1, . . . , N . Abbiamo così aN (u∗N , ψi ) = FN (ψi ), i = 1, . . . , N, ovvero
N
u∗N (xj ) aN (ψj , ψi ) = FN (ψi ),
i = 1, . . . , N,
j=1
che possiamo riscrivere in forma matriciale come A u∗N = f , essendo u∗N = (u∗N (xi )), A = (aij ), con aij = aN (ψj , ψi ) =
N
(1 + x2k ) ψj (xk ) ψi (xk ) αk
k=0
+
N
cos(x2k ) ψj (xk ) ψi (xk ) αk
k=1
=
N k=0
(1 + x2k ) ψj (xk ) ψi (xk ) αk + cos(x2i ) αi δij ,
4.5 Metodo G-NI e MES-NI per un problema modello monodimensionale
e
f = (fi ) con fi
129
= FN (ψi ) = (f, ψi )N + 2 ψi (1)
=
N
f (xk ) ψi (xk ) αk + 2 ψi (1)
k=1
⎧ ⎨ αi f (xi )
=
⎩
per i = 1, . . . , N − 1,
αN f (1) + 2 per i = N.
Ricordiamo che la matrice A è, oltre che mal condizionata, piena. Infatti, anche se il termine reattivo è diagonale, la natura globale delle funzioni di base ψ i rende piena la matrice associata al termine diffusivo. Possiamo da ultimo verificare che il metodo G-NI (4.57) può essere riformulato come un opportuno metodo di collocazione. A tal fine, si vorrebbe riscrivere la formulazione discreta (4.57) in forma continua in modo da poter controintegrare per parti, ovvero ricondursi all’operatore differenziale di partenza. Per poter far ciò ricorreremo all’oGLL peratore d’interpolazione Π N definito in (4.13), ricordando inoltre che il prodotto scalare discreto (4.23) coincide con quello continuo su L 2 (−1, 1) se il prodotto delle due funzioni integrande è un polinomio di grado ≤ 2N − 1 (si veda la (4.34)). Riscriviamo dunque opportunamente il primo addendo di a N (u∗N , vN ), tralasciando, per semplificare le notazioni, l’apice ∗. Grazie alla (4.34) ed integrando per parti, abbiamo ( ) (1 + x2 ) uN , vN N =
( ) ) ) ) ( GLL ( GLL (1 + x2 ) uN , vN (1 + x2 ) uN , vN ΠN = ΠN N
(
=
) ) ( ) ( GLL( GLL (1 + x2 ) uN ] , vN + ΠN (1 + x2 ) uN (1) vN (1) − ΠN
=
) ) ( ) ( GLL( GLL (1 + x2 ) uN ] , vN N + ΠN (1 + x2 ) uN (1) vN (1). − ΠN
Possiamo così riformulare la (4.57) come: ) ( trovare uN ∈ VN : LN uN , vN N = (f, vN )N +
( ) ) ( GLL (1 + x2 ) uN (1) vN (1) ∀vN ∈ VN , 2 − ΠN (4.60)
con ) ( ) GLL ( L N u N = − ΠN (1+x2 ) uN +cos(x2 ) uN = −DN (1+x2 ) uN +cos(x2 ) uN , essendo DN la derivata d’interpolazione introdotta in (4.38). Scegliamo ora in (4.60) vN = ψi . Per i = 1, . . . , N − 1, abbiamo
130
4 I metodi spettrali
(
LN uN , ψi
=−
) N
) ) ) ( GLL ( ( (1 + x2 ) uN , ψi N + cos(x2 ) uN , ψi N = − ΠN
N N GLL( ) (1 + x2 ) uN (xj ) ψi (xj ) + αj ΠN αj cos(x2j ) uN (xj ) ψi (xj ) j=0
j=1
GLL ( ) (1 + x2 ) uN (xi ) + αi cos(x2i ) uN (xi ) = (f, ψi )N = −αi ΠN =
N αj f (xj ) ψi (xj ) = αi f (xi ), j=1
ovvero, sfruttando la definizione dell’operatore L N e dividendo tutto per α i , LN uN (xi ) = f (xi ),
i = 1, . . . , N − 1.
(4.61)
Posto vN = ψN in (4.60), otteniamo invece ) GLL ( ) ( (1 + x2 ) uN (xN ) + αN cos(x2N ) uN (xN ) LN uN , ψN N = −αN ΠN ( ) GLL (1 + x2 ) uN (1) = (f, ψN )N + 2 − ΠN ( ) GLL (1 + x2 ) uN (1), = αN f (xN ) + 2 − ΠN ovvero, dividendo tutto per α N , ( ) ) 1 ( GLL 2 − ΠN (1 + x2 ) uN (1) . αN
LN uN (xN ) = f (xN ) +
(4.62)
Le equazioni (4.61) e (4.62) forniscono dunque la collocazione nei nodi non di Dirichlet del problema differenziale assegnato, previa l’approssimazione dell’operatore differenziale L con l’operatore L N . Studiamo, da ultimo, la stabilità della formulazione (4.57). Trattandosi di un approccio di tipo Galerkin generalizzato, dovremo ricorrere al Lemma 4.1 di Strang il quale ci garantisce che, per la soluzione u ∗N di (4.57), vale la seguente stima: u∗N V ≤
1 α∗
|FN (vN )| , vN ∈VN \{0} vN V sup
(4.63)
essendo α∗ la costante di coercività (uniforme) associata alla forma bilineare discreta aN (·, ·). Particolarizziamo tale risultato al problema (4.54), calcolando innanzitutto α∗ . Sfruttando la definizione (4.48) della norma discreta · N e la relazione di equivalenza (4.49), si ha ) ) ( ( aN (uN , uN ) = (1 + x2 ) uN , uN N + cos(x2 ) uN , uN N ≥ ≥
(
uN , uN
) N
) ( + cos(1) uN , uN N = uN 2N + cos(1) uN 2N
uN 2L2 (−1,1) + cos(1) uN 2L2 (−1,1) ≥ cos(1) uN 2V ,
4.5 Metodo G-NI e MES-NI per un problema modello monodimensionale
131
avendo inoltre sfruttato le relazioni min(1 + x2j ) ≥ j
≥
min cos(x2j ) j
min (1 + x2 ) = 1,
x∈[−1,1]
min cos(x2 ) = cos(1). x∈[−1,1]
Questo ci permette di identificare α ∗ con il valore cos(1). Possiamo a questo punto valutare il quoziente |F N (vN )|/vN V in (4.63). Abbiamo infatti ) ( |FN (vN )| = | f, vN N + 2 vN (1)| ≤ f N vN N + 2 |vN (1)| ≤
√
1 √ √ 3 f N vN V + 2 vN (x) dx ≤ 3 f N vN V + 2 2 vN V , −1
avendo ancora utilizzato la relazione di equivalenza (4.49) unitamente alla disuguaglianza di Cauchy-Schwarz nella sua versione discreta (4.47) e continua (2.7). Possiamo così concludere che √ √ |FN (vN )| √ ≤ 3 f N + 2 2 ≤ 3 f L2(−1,1) + 2 2, vN V ovvero, ritornando alla stima di stabilità (4.63), u∗N V ≤
√ 1 3 f L2(−1,1) + 2 2 . cos(1)
4.5.2 Il metodo MES-NI Partendo dal problema (4.54) vogliamo ora considerarne la formulazione MES-NI, ovvero una formulazione agli elementi spettrali con l’uso delle formule di integrazione di tipo GLL in ogni elemento. Ci proponiamo inoltre di fornire una base per lo spazio in cui verrà ambientata tale formulazione. Introduciamo, innanzitutto, una partizione dell’intervallo (−1, 1) in M (≥ 2) sottointervalli disgiunti Ω m = (xm−1 , xm ), con m = 1, . . . , M , indicando con h m = xm − xm−1 l’ampiezza dell’m-esimo intervallo, e ponendo h = max m hm . La formulazione MES del problema (4.54) assume dunque la seguente forma: trovare uN ∈ VNC : a(uN , vN ) = (f, vN )
∀vN ∈ VNC ,
(4.64)
essendo VNC = {vN ∈ C 0 ([−1, 1]) : vN Ωm ∈ QN , ∀m = 1, . . . , M, vN (−1) = 0}. Notiamo che lo spazio funzionale V NC dell’approccio MES perde la natura “globale” propria invece di una formulazione MS. Analogamente a quanto avviene nel caso di approssimazioni agli elementi finiti, si hanno ora nuovamente delle funzioni di tipo
132
4 I metodi spettrali
polinomiale a tratti. Sfruttando la partizione {Ω m } introdotta su (−1, 1), possiamo riscrivere la formulazione (4.64) nel seguente modo: M
trovare uN ∈ VNC :
aΩm (uN , vN ) =
m=1
dove
M
(f, vN )Ωm
∀vN ∈ VNC ,
(4.65)
m=1
aΩm (uN , vN ) = a(uN , vN )Ωm
xm
=
(1 + x2 ) uN (x) vN (x) dx +
xm−1
xm
cos(x2 ) uN (x) vN (x) dx,
xm−1
mentre (·, ·)Ωm denota il prodotto scalare L 2 ristretto al dominio Ω m . La formulazione MES-NI a questo punto si ottiene rimpiazzando semplicemente nella (4.65) i prodotti scalari continui con il prodotto scalare discreto GLL (4.23). Troviamo quindi: trovare u∗N ∈ VNC :
M
aN,Ωm (u∗N , vN ) =
m=1
M
(f, vN )N,Ωm
∀vN ∈ VNC ,
m=1
essendo ) ( ( ) aN,Ωm (u, v) = (1 + x2 ) u , v N,Ωm + cos(x2 ) u, v N,Ωm , dove si è indicato con N ( ) (m) (m) u(xi ) v(xi ) αi u, v N,Ωm = i=0 (m)
con xi i-esimo nodo GLL del sotto-intervallo Ω m e αi corrispondente peso di quadratura. Vogliamo da ultimo definire una base globale per lo spazio V NC . Procederemo introducendo dapprima una base locale per ogni Ω m ed estenderemo poi tale definizione a tutto il dominio (−1, 1). + = (−1, 1), che, nel caso in esame, coincide Partiamo dall’elemento di riferimento Ω con il dominio Ω del problema (4.54). Indicata con ϕm (ξ) =
xm + xm−1 hm ξ+ , 2 2
ξ ∈ [−1, 1],
+ in Ωm , per m = 1, . . . , M , introduciamo, su la trasformazione affine che mappa Ω (m) N ogni Ωm , l’insieme {ψi }i=0 delle funzioni di base, tali che (m)
ψi
(x) = ψi (ϕ−1 m (x))
∀x ∈ Ωm ,
4.5 Metodo G-NI e MES-NI per un problema modello monodimensionale
133
1
~ (m) ψ i
x0
xi(m)
xm−1 Figura 4.13. Funzione di base ψei
(m)
xm
xM (m)
associata al nodo interno xi
+ Abbiamo essendo ψi il polinomio caratteristico associato al nodo x i di GLL in Ω. dunque una base per ogni sotto-intervallo Ω m , ovvero possiamo scrivere la soluzione uN del MES su ogni Ωm come uN (x) =
N
(m)
ui
(m)
ψi
(x),
(4.66)
i=0 (m)
(m)
(m)
con ui = uN (xi ), essendo xi l’immagine, attraverso la mappa ϕ m , dell’i+ esimo nodo GLL di Ω. Volendo definire una base globale per lo spazio V NC , iniziamo a definire le funzioni di base associate ai nodi interni di Ω m , per m = 1, . . . , M : sarà sufficiente estendere a (m) zero, fuori da Ω m , ogni funzione di base ψ i : ⎧ (m) ⎨ ψi (x), x ∈ Ωm (m) ψ3i (x) = ⎩ 0, altrimenti. Queste funzioni sono in totale (N − 1)M e assumono andamento analogo a quello in Fig. 4.13. Per ogni nodo estremo x m , con m = 1, . . . , M − 1, dei sottodomini Ω m definiamo invece la funzione di base ⎧ (m) ⎪ x ∈ Ωm ⎪ ψN (x), ⎪ ⎪ ⎨ ∗ (m+1) ψm (x) = ψ0 (x), x ∈ Ωm+1 ⎪ ⎪ ⎪ ⎪ ⎩ 0, altrimenti, (m)
(m+1)
(si veda la Fig. 4.14). In particolare, ottenuta “unendo” le funzioni ψ N e ψ0 osserviamo che la funzione ψ 0∗ non è definita essendo assegnata in x 0 = −1 una ∗ condizione di Dirichlet omogenea. Esiste invece la funzione ψ M che coincide con (M) ψN . Per la scelta fatta per le condizioni al bordo, esistono dunque M funzioni di base associate ai nodi estremi dei sotto-intervalli Ω m . Se fossero state assegnate condizioni di Dirichlet in corrispondenza di entrambi gli estremi di Ω, avremmo avuto (M − 1) ∗ di tali funzioni, non esistendo, in questo caso, nemmeno ψ M . In tutto dunque abbiamo n = (N − 1)M + M funzioni di base per lo spazio V NC . Ogni funzione u N ∈ VNC può dunque essere espressa nel seguente modo:
134
4 I metodi spettrali 1 ψ*
m
x0
xm−1
xm+1
xm
xM
∗ Figura 4.14. Funzione di base ψm associata al nodo estremo xm
uN (x) =
M
∗ uΓm ψm (x) +
m=1
−1 M N (m) (m) ui ψ3i (x), m=1 i=1
(m)
con uΓm = uN (xm ) e ui definito come nella (4.66). La condizione al bordo di Dirichlet è in tal modo rispettata.
4.6 Metodi spettrali su triangoli e tetraedri Come abbiamo visto, l’uso di metodi spettrali su quadrilateri in due dimensioni (o parallelepipedi in tre dimensioni) è reso possibile attraverso prodotti tensoriali di funzioni di base monodimensionali (sull’intervallo di riferimento [−1, 1]) e delle formule di integrazione numerica Gaussiane monodimensionali. Da alcuni anni, tuttavia, si assiste ad una crescita di interesse verso l’uso di metodi di tipo spettrale anche su geometrie che non abbiano struttura di prodotto tensoriale, come, ad esempio, triangoli in 2D e tetraedri, prismi o piramidi in 3D. Descriviamo brevemente l’idea (pionieristica) di Dubiner [Dub91] di introdurre basi polinomiali di grado elevato su triangoli, estesa in seguito da Karniadakis e Sherwin [KS05] al caso tridimensionale. Consideriamo il triangolo di riferimento T+ = {(x1 , x2 ) ∈ R2 : −1 < x1 , x2 ; x1 + x2 < 0} ed il quadrato di riferimento + = {(ξ1 , ξ2 ) ∈ R2 : −1 < ξ1 , ξ2 < 1}. Q La trasformazione (x1 , x2 ) → (ξ1 , ξ2 ),
ξ1 = 2
1 + x1 − 1, 1 − x2
ξ2 = x2
(4.67)
+ La sua inversa è data da è una biezione tra T+ e Q. (ξ1 , ξ2 ) → (x1 , x2 ),
x1 =
1 (1 + ξ1 )(1 − ξ2 ) − 1, 2
x2 = ξ2 .
Come evidenziato in Fig. 4.15, la mappa (x 1 , x2 ) → (ξ1 , ξ2 ) invia il raggio in T+
4.6 Metodi spettrali su triangoli e tetraedri x2
Tb
b Q
1
ξ2 1
x1
-1
1
-1
-1
135
1
ξ1
-1
b I Figura 4.15. Trasformazione del triangolo di riferimento Tb sul quadrato di riferimento Q. segmenti obliqui sono trasformati in segmenti verticali
uscente dal vertice (−1, 1) e passante per il punto (x 1 , −1) nel segmento verticale di + di equazione ξ 1 = x1 . Essa diventa pertanto singolare in (−1, 1). Per tale ragioQ ne chiamiamo (ξ1 , ξ2 ) le coordinate cartesiane collassate del punto del triangolo di coordinate (x1 , x2 ). (α,β) Indichiamo con {J k (ξ), k ≥ 0} la famiglia dei polinomi di Jacobi ortogonali rispetto al peso w(ξ) = (1 − ξ)α (1 + ξ)β , per α, β ≥ 0. Pertanto, ∀k ≥ 0,
(α,β) Jk
1 ∈ Pk
(α,β)
Jk
e
(α,β) (ξ) Jm (ξ) w(ξ) dξ = 0 ∀ m = k. (4.68)
−1 (0,0)
Osserviamo che per α = β = 0, J k coincide con il k-esimo polinomio di Legendre Lk . Per ogni coppia di interi k = (k 1 , k2 ) definiamo la base prodotto tensoriale warped + su Q: Φk (ξ1 , ξ2 ) = Ψk1 (ξ1 ) Ψk1 ,k2 (ξ2 ), (4.69) (0,0)
(2k +1,0)
(ξ2 ). Si osservi che essendo Ψk1 (ξ1 ) = Jk1 (ξ1 ) e Ψk1 ,k2 (ξ2 ) = (1 − ξ2 )k1 Jk2 1 Φk è un polinomio di grado k 1 in ξ1 e k1 + k2 in ξ2 . Applicando ora la mappa (4.67) troviamo la seguente funzione definita su T+: (0,0)
ϕk (x1 , x2 ) = Φk (ξ1 , ξ2 ) = Jk1
1+x 1 (2k +1,0) 2 − 1 (1 − x2 )k1 Jk2 1 (x2 ). (4.70) 1 − x2
Essa è un polinomio di grado totale k 1 + k2 nelle variabili x1 , x2 , ovvero ϕk ∈ Pk1 +k2 (T+). Si può inoltre dimostrare che grazie all’ortogonalità dei polinomi di Jacobi (4.68), per ogni m = k,
136
4 I metodi spettrali
b T
1 ϕk (x1 , x2 )ϕm (x1 , x2 ) dx1 dx2 = 2 1
1
(0,0)
Jk1
(0,0) · (ξ1 ) Jm (ξ ) dξ 1 1 1
−1
(2k +1,0) (2m1 +1,0) Jk2 1 (ξ2 ) Jm (ξ2 ) (1 2
(4.71)
− ξ2 )k1 +m1 +1 dξ2 = 0.
−1
Pertanto, {ϕk : 0 ≤ k1 , k2 , k1 + k2 ≤ N } costituisce una base (modale) ortogonale dello spazio di polinomi P N (T+), di dimensione 12 (N + 1)(N + 2). La proprietà di ortogonalità indubbiamente è conveniente in quanto consente di diagonalizzare la matrice di massa, si veda il Cap. 6. Tuttavia, con la base modale sopra descritta non risulta agevole l’imposizione delle condizioni al bordo (nel caso si consideri il dominio computazionale triangolare T+) né il soddisfacimento delle condizioni di continuità agli interelementi nel caso si usino metodi agli elementi spettrali con elementi triangolari. Un possibile rimedio consiste nell’adattare questa base, generandone una nuova, che indicheremo con {ϕ ba k }; ba sta per boundary adapted. Per (α,0) ottenerla iniziamo con il sostituire la base uni-dimensionale di Jacobi J k (ξ) (con α = 0 o 2k + 1) con la base adattata costituita da: -
1−ξ due funzioni di bordo : 1+ξ 2 ( e 2)(; ) (α,β) 1+ξ 1−ξ Jk−2 (ξ), k = 2, . . . , N , per opportuni (N − 1) funzioni bolla : 2 2 α, β ≥ 1, fissati.
Queste basi mono-dimensionali vengono poi usate come fatto in (4.69) al posto dei polinomi di Jacobi non adattati. In questo modo si trovano funzioni di tipo-vertice, di tipo-lato, e di tipo bolla. Precisamente troviamo: •
funzioni tipo-vertice: ΦV1 (ξ1 , ξ2 ) = ΦV2 (ξ1 , ξ2 ) = ΦV3 (ξ1 , ξ2 ) =
•
1 − ξ 1 − ξ 1 2 2 2 1 + ξ 1 − ξ 1
2 1 + ξ2 2
2
2
(vertice V1 = (−1, −1)), (vertice V2 = (1, −1)), (vertice V3 = (−1, 1));
funzioni tipo-lato: 1 − ξ 1 + ξ 1 − ξ k1 1 1 2 (β,β) Jk1 −2 (ξ1 ) , 2 2 2 1 − ξ 1 − ξ 1 + ξ 1 2 2 (β,β) Jk2 −2 (ξ2 ), ΦVK12V3 (ξ1 , ξ2 ) = 2 2 2 1 + ξ 1 − ξ 1 + ξ 1 2 2 (β,β) Jk2 −2 (ξ2 ), ΦVK22V3 (ξ1 , ξ2 ) = 2 2 2 ΦVK11V2 (ξ1 , ξ2 ) =
2 ≤ k1 ≤ N, 2 ≤ k2 ≤ N, 2 ≤ k2 ≤ N ;
4.6 Metodi spettrali su triangoli e tetraedri
•
137
funzioni tipo-bolla: 1 − ξ 1 + ξ 1 1 (β,β) Jk1 −2 (ξ1 )· 2 2 1 − ξ k1 1 + ξ 2 2 (2k1 −1+δ,β) Jk2 −2 (ξ2 ), 2 2
Φβk1 ,k2 (ξ1 , ξ2 ) =
2 ≤ k1 , k2 , k1 + k2 ≤ N . Nonostante la scelta β = δ = 2 dia ortogonalità fra le funzioni-bolla, in genere si preferisce la scelta β = 1, δ = 0 in quanto garantisce una buona sparsità delle matrici di massa e di rigidezza e un numero di condizionamento accettabile per la matrice di rigidezza per operatori differenziali del secondo ordine. In Fig. 4.16 riportiamo alcuni esempi di basi su triangoli corrispondenti a diverse scelte di β e δ e per diversi valori del grado N . Con queste basi modali si può ora impostare un’approssimazione di Galerkin spettrale per un problema ai limiti posto sul triangolo T+, oppure un metodo di tipo MES su un dominio Ω partizionato in elementi triangolari. Rinviamo il lettore interessato a [CHQZ06], [CHQZ07], [KS05].
138
4 I metodi spettrali
Figura 4.16. Funzioni di base di grado N = 5: basi boundary-adapted sul quadrato (prima dall’alto) e sul triangolo (seconda dall’alto) associate ai valori β = 1 e δ = 0; base di Jacobi (α,β) Jk sul quadrato (seconda dal basso) corrispondente ai valori α = β = 0 (caso di Legendre); funzioni di base di Dubiner {Φk } sul triangolo (prima dal basso)
4.7 Esercizi
139
4.7 Esercizi 1. Si dimostri la disuguaglianza (4.47). 2. Si dimostri la proprietà (4.49). 3. Si scriva la formulazione debole del problema − ((1 + x)u (x)) + u(x) = f (x), u(0) = α,
0 < x < 1,
u(1) = β,
ed il sistema lineare risultante dalla sua discretizzazione con il metodo G-NI. 4. Si approssimi il problema −u (x) + u (x) = x2 , −1 < x < 1, u(−1) = 1,
u (1) = 0,
con il metodo G-NI e se ne studi la stabilità e la convergenza. 5. Si scriva l’approssimazione G-NI del problema Lu(x) = −(μ(x)u (x)) + (b(x)u(x)) + σ(x)u(x) = f (x), −1 < x < 1, μ(±1)u (±1) = 0. Si dimostri, sotto quali condizioni sui dati, l’approssimazione pseudospettrale è stabile. Si verifichi inoltre che valgono le seguenti relazioni: LN uN (xj ) = f (xj ),
j = 1, . . . , N − 1,
μ(1) uN (1) = αN (f − LN uN )(1), μ(−1) uN (−1) = −α0 (f − LN uN )(−1), essendo LN l’operatore pseudo-spettrale definito nella (4.39). 6. Si consideri il problema: ⎧ 2 ⎪ ⎪ −μΔu + b · ∇u − σu = f in Ω = (−1, 1) , ⎪ ⎪ ⎪ ⎨ u(x) = u0 per x1 = −1, ⎪ u(x) = u1 ⎪ ⎪ ⎪ ⎪ ⎩ ∇u(x) · n(x) = 0
per x1 = 1, per x2 = −1 e x2 = 1,
dove x = (x1 , x2 )T , n è la normale uscente ad Ω, μ = μ(x), b = b(x), σ = σ(x), f = f (x) sono funzioni assegnate, e u 0 ed u1 sono delle costanti assegnate. Si forniscano condizioni sui dati sufficienti a garantire l’esistenza e l’unicità della soluzione debole, e si dia una stima a priori. Si approssimi poi il problema debole con il metodo G-NI, fornendone un’analisi di stabilità e convergenza.
5 Equazioni di diffusione-trasporto-reazione
In questo capitolo consideriamo problemi del tipo: −div(μ∇u) + b · ∇u + σu = f u=0
in Ω, su ∂Ω,
(5.1)
dove μ, σ, f e b sono funzioni (o costanti) assegnate. Nel caso più generale supporremo che μ ∈ L∞ (Ω), con μ(x) ≥ μ0 > 0, σ ∈ L2 (Ω) con σ(x) ≥ 0 q.o. in Ω, b ∈ [L∞ (Ω)]2 , con div(b) ∈ L2 (Ω), e f ∈ L2 (Ω). Problemi come (5.1) modellano i processi fisici di diffusione, trasporto e reazione. Per una derivazione di questi modelli, e per cogliere l’analogia con processi di camminata aleatoria (random walk), si veda [Sal04], Cap. 2. In molte applicazioni pratiche il termine di diffusione −div(μ∇u) è dominato dal termine convettivo b · ∇u (detto anche di trasporto) o da quello reattivo σu (detto anche di assorbimento quando si faccia l’ipotesi di non negatività di σ). In questi casi, come vedremo, la soluzione può dar luogo ai cosiddetti strati limite, ovvero a regioni, generalmente in prossimità della frontiera di Ω, in cui la soluzione è caratterizzata da forti gradienti. In questo capitolo ci proponiamo di analizzare le condizioni che assicurano l’esistenza e l’unicità della soluzione del problema (5.1). Considereremo poi il metodo di Galerkin, ne illustreremo le difficoltà a fornire soluzioni stabili in presenza di strati limite, quindi proporremo metodi di discretizzazione alternativi per l’approssimazione di (5.1).
5.1 Formulazione debole del problema Sia V =H10 (Ω). Introducendo la forma bilineare a : V × V → R, a(u, v) = μ∇u · ∇v dΩ + vb · ∇u dΩ + σuv dΩ ∀u, v ∈ V , Ω
Ω
Ω
la formulazione debole del problema (5.1) diviene:
(5.2)
142
5 Equazioni di diffusione-trasporto-reazione
trovare u ∈ V :
a(u, v) = (f, v)
∀v ∈ V.
(5.3)
Al fine di dimostrare l’esistenza e l’unicità della soluzione di (5.3) vogliamo porci nelle condizioni di applicare il Lemma di Lax-Milgram. Per verificare la coercività della forma bilineare a(·, ·), operiamo separatamente sui singoli termini che compongono la (5.2). Per il primo termine abbiamo: μ∇v · ∇v dΩ ≥ μ0 ∇v2L2 (Ω) .
(5.4)
Ω
Poiché v ∈ H10 (Ω), vale la disuguaglianza di Poincarée (si veda l’Appendice A.3) vL2 (Ω) ≤ CΩ ∇vL2 (Ω) . Pertanto 2 )∇v2L2 (Ω) v2H1 (Ω) = v2L2 (Ω) + ∇v2L2 (Ω) ≤ (1 + CΩ
e, quindi, dalla (5.4), segue: μ∇v · ∇v dΩ ≥ Ω
μ0 2 2 vH1 (Ω) . 1 + CΩ
Passiamo ora a considerare il termine convettivo: 1 1 1 2 2 vb · ∇v dΩ = b · ∇(v ) dΩ = − v div(b) dΩ + b · nv 2 dγ 2 2 2 Ω
Ω
=
−
1 2
Ω
∂Ω
v 2 div(b) dΩ, Ω
essendo v = 0 su ∂Ω. Se ora sommiamo a questo termine quello relativo al termine di ordine zero, otteniamo 1 2 vb · ∇v dΩ + σv dΩ = v 2 (− div(b) + σ) dΩ, 2 Ω
Ω
Ω
e tale integrale è sicuramente positivo se si suppone che 1 − div(b) + σ ≥ 0 2
q.o. in Ω.
(5.5)
In definitiva, se vale la (5.5), la forma bilineare a(·, ·) risulta coerciva essendo a(v, v) ≥ αv2H1 (Ω)
∀v ∈ V, con α =
μ0 2 . 1 + CΩ
(5.6)
5.1 Formulazione debole del problema
143
Affinché la forma bilineare a(·, ·) sia continua deve, invece, esistere una costante positiva M tale che: |a(u, v)| ≤ M uH1(Ω) vH1 (Ω)
∀u, v ∈ V.
(5.7)
Il primo termine al secondo membro della (5.2) può essere maggiorato come segue: μ∇u · ∇v dΩ ≤ μL∞ (Ω) ∇uL2 (Ω) ∇vL2 (Ω) (5.8) Ω
≤ μL∞ (Ω) uH1 (Ω) vH1 (Ω) ,
dove sono state usate le disuguaglianze di Hölder (si veda l’Appendice A.4) e di Cauchy-Schwarz e si è tenuto conto del fatto che ∇w L2 (Ω) ≤ wH1 (Ω) , ∀w ∈ H 1 (Ω). Per il secondo termine, procedendo in modo analogo, si trova vb · ∇u dΩ ≤ bL∞ (Ω) vL2 (Ω) ∇uL2 (Ω) (5.9) Ω
≤ bL∞ (Ω) vH1 (Ω) uH1 (Ω) .
Infine, per il terzo termine, abbiamo grazie alla disuguaglianza di Cauchy-Schwarz σuv dΩ ≤ σL2 (Ω) uvL2 (Ω) . Ω
Peraltro, uvL2 (Ω) ≤ uL4 (Ω) vL4 (Ω) ≤ uH1 (Ω) vH1 (Ω) , avendo applicato la disuguaglianza (A.11) e sfruttato le immersioni (A.12). Dunque σuv dΩ ≤ σL2 (Ω) uH1 (Ω) vH1 (Ω) . (5.10) Ω
Sommando membro a membro la (5.8), la (5.9) e la (5.10), si dimostra così la continuità della forma bilineare a(·, ·), ovvero la (5.7), pur di prendere M = μL∞ (Ω) + bL∞ (Ω) + σL2 (Ω) .
(5.11)
La continuità del funzionale lineare rappresentato dal termine di destra della (5.3) è infine facilmente dimostrabile, in virtù ancora della disuguaglianza di Cauchy-Schwarz. Essendo verificate le ipotesi del Lemma di Lax-Milgram segue che la soluzione del problema debole (5.3) esiste ed è unica. Valgono inoltre le seguenti stime a priori: uH1 (Ω) ≤
1 CΩ f L2 (Ω) , ∇uL2 (Ω) ≤ f L2 (Ω) . α μ0
La prima è una conseguenza immediata del Lemma di Lax-Milgram, la seconda si può facilmente dimostrare partendo dall’equazione a(u, u) = (f, u) ed utilizzando le disuguaglianze di Cauchy-Schwarz, di Poincarée e le disuguaglianze (5.4) e (5.5).
144
5 Equazioni di diffusione-trasporto-reazione
L’approssimazione di Galerkin del problema (5.3) è ora data da: trovare uh ∈ Vh :
a(uh , vh ) = (f, vh )
∀vh ∈ Vh ,
dove {Vh , h > 0} è una famiglia opportuna di sottospazi di dimensione finita di H10 (Ω). Replicando la dimostrazione a cui si è accennato poco sopra nel caso del problema continuo, si possono dimostrare le seguenti stime: uh H1 (Ω) ≤
1 f L2 (Ω) , α
∇uh L2 (Ω) ≤
CΩ f L2 (Ω) . μ0
Esse mostrano, in particolare, che il gradiente della soluzione discreta (così come quello della soluzione debole u) potrebbe essere tanto più grande quanto più μ 0 è piccola. Inoltre, grazie al Lemma di Céa, si ottiene la seguente stima dell’errore: u − uh V ≤
M inf u − vh V . α vh ∈Vh
(5.12)
In virtù delle definizioni di α e M (si vedano (5.6) e (5.11)), la costante di maggiorazione M/α diventa tanto più grande (ovvero la stima (5.12) tanto meno significativa) quanto più cresce il rapporto b L∞ (Ω) /μL∞ (Ω) (ovvero il rapporto σL∞ (Ω) /μL∞ (Ω) ), ossia quando il termine convettivo (ovvero reattivo) domina su quello diffusivo. In tali casi il metodo di Galerkin può dar luogo a soluzioni poco accurate, a meno di non usare, come vedremo, un passo di discretizzazione h estremamente piccolo. Al fine di valutare più precisamente il comportamento della soluzione numerica fornita dal metodo di Galerkin analizziamo un problema monodimensionale.
5.2 Analisi di un problema di diffusione-trasporto monodimensionale Consideriamo il seguente problema di diffusione-trasporto unidimensionale: −μu + bu = 0, 0 < x < 1, u(0) = 0, u(1) = 1,
(5.13)
con μ e b costanti positive. La sua formulazione debole è: trovare u ∈ H1 (0, 1) :
a(u, v) = 0 ∀v ∈ H10 (0, 1), (5.14) 1 con u(0) = 0 e u(1) = 1, essendo a(u, v) = (μu v + bu v)dx. Seguendo quan0
to indicato nella Sez. 2.2.2, possiamo riformulare (5.14) introducendo un opportuno
5.2 Analisi di un problema di diffusione-trasporto monodimensionale
145
rilevamento dei dati al bordo. In questo caso particolare, possiamo scegliere R g = x. ◦ Posto allora u= u − Rg = u − x, possiamo riformulare (5.14) nel modo seguente: ◦
◦
trovare u∈ H10 (0, 1) :
a(u, v) = F (v)
∀v ∈ H10 (0, 1),
(5.15)
1 essendo F (v) = −a(x, v) = − 0 bv dx il contributo dovuto al rilevamento dei dati. Definiamo numero di Péclet globale il rapporto Peg =
|b|L , 2μ
essendo L la dimensione lineare del dominio (1 nel nostro caso). Esso rappresenta una misura di quanto il termine convettivo domini quello diffusivo, ed ha pertanto lo stesso ruolo del numero di Reynolds nelle equazioni di Navier-Stokes che vedremo nel Cap. 10. Calcoliamo, innanzitutto, la soluzione esatta di tale problema. L’equazione caratteristica ad esso associata è −μλ2 + bλ = 0 ed ha, come radici, i valori λ 1 = 0 e λ2 = b/μ. La soluzione generale è quindi: b
u(x) = C1 eλ1 x + C2 eλ2 x = C1 + C2 e μ x . Imponendo le condizioni al bordo si trovano le costanti C 1 e C2 , e, di conseguenza, la soluzione: exp( μb x) − 1
u(x) =
exp( μb ) − 1
.
Se b/μ 1, possiamo sviluppare in serie gli esponenziali ed arrestarci al secondo termine ottenendo così : u(x) =
1 + μb x + · · · − 1 1+
b μ
+ ···− 1
b μx b μ
= x.
Pertanto la soluzione è prossima alla retta interpolante i dati al bordo (che è la soluzione corrispondente al caso b = 0). Se, viceversa, b/μ 1, gli esponenziali sono molto grandi, per cui: b u(x) = exp − (1 − x) . μ exp( μb ) exp( μb x)
Dato che l’esponente è grande e negativo, la soluzione è prossima a zero in quasi tutto l’intervallo, tranne che in un intorno del punto x = 1, dove si raccorda ad 1 con un andamento esponenziale. Tale intorno ha un’ampiezza dell’ordine di μ/b ed è quindi
146
5 Equazioni di diffusione-trasporto-reazione 1 0.9
b/μ=−100 b/μ=−10
0.8 0.7
b/μ=0
0.6 0.5 0.4 0.3
b/μ=10
0.2 0.1
b/μ=100 0 0
0.1
0.2
0.3
0.4
0.5 x
0.6
0.7
0.8
0.9
1
Figura 5.1. Andamento della soluzione del problema (5.13) al variare del rapporto b/μ. Per completezza sono evidenziate anche le soluzioni relative al caso in cui b sia negativo
molto piccolo: la soluzione presenta uno strato limite di bordo (boundary layer in inglese) di ampiezza O( μb ) in corrispondenza di x = 1 (si veda la Fig. 5.1). Supponiamo ora di usare il metodo di Galerkin con elementi finiti lineari per approssimare (5.14): ◦1 ∀vh ∈X h , a(uh , vh ) = 0 1 trovare uh ∈ Xh : (5.16) uh (0) = 0, uh (1) = 1, dove, indicando con x i , per i = 0, . . . M , i vertici della partizione introdotta su (0, 1), abbiamo posto, coerentemente a (3.12), Xhr = {vh ∈ C 0 ([0, 1]) : vh ∈ Pr , i = 1, . . . , M }, [xi−1 ,xi ]
◦
r X hr = {vh ∈ Xh : vh (0) = vh (1) = 0},
per r ≥ 1. Scelto, per ogni i = 1, . . . , M − 1, v h = ϕi (l’i-esima funzione di base di Xh1 ), si ha: 1 1 μuh ϕi dx + buh ϕi dx = 0, 0
0
ovvero, essendo supp ϕ i = [xi−1 , xi+1 ], e potendo scrivere u h =
i
⎡ μ ⎣ui−1 ⎡
xi
xi−1
+b ⎣ui−1
xi
xi−1
ϕi−1 ϕi dx + ui
x i+1
(ϕi )2 dx + ui+1
xi−1
ϕi−1 ϕi dx + ui
ϕi ϕi dx + ui+1
⎤
ϕi+1 ϕi dx⎦
xi
x i+1
xi−1
x i+1
ui ϕi ,
x i+1
⎤
ϕi+1 ϕi dx⎦ = 0,
xi
5.2 Analisi di un problema di diffusione-trasporto monodimensionale
147
∀i = 1, . . . , M − 1. Se la partizione è uniforme, ovvero se x i = xi−1 + h, con i = 1 1 se xi−1 < x < xi , ϕi (x) = − se 1, . . . , M , ed osservando che ϕi (x) = h h xi < x < xi+1 , per i = 1, . . . , M − 1, si ha 1 2 1 1h 1h + b −ui−1 + ui+1 = 0, μ −ui−1 + ui − ui+1 h h h h2 h2 cioè μ 1 (−ui−1 + 2ui − ui+1 ) + b(ui+1 − ui−1 ) = 0, h 2 Riordinando i termini troviamo b μ 2μ b μ − ui+1 + ui − + ui−1 = 0, 2 h h 2 h
i = 1, . . . , M − 1.
(5.17)
i = 1, . . . , M − 1.
Dividendo per μ/h e definendo il numero di Péclet locale (o “di griglia”) Pe =
|b|h , 2μ
(5.18)
si ha infine (Pe − 1)ui+1 + 2ui − (Pe + 1)ui−1 = 0,
i = 1, . . . , M − 1.
(5.19)
Questa è un’equazione alle differenze di tipo lineare che ammette soluzioni di tipo esponenziale, ovvero della forma u i = ρi (si veda [QSS00]). Sostituendo tale espressione nella (5.19), otteniamo: (Pe − 1)ρ2 + 2ρ − (Pe + 1) = 0,
i = 1, . . . , M − 1,
dalla quale ricaviamo le due radici √ (1 + Pe)/(1 − Pe), −1 ± 1 + Pe2 − 1 ρ1,2 = = Pe − 1 1. Grazie alla linearità della (5.19), la soluzione generale di tale equazione assume la forma ui = A1 ρi1 + A2 ρi2 , con A1 e A2 costanti arbitrarie. Imponendo le condizioni al bordo si trova: u0 = 0
=⇒
uM = 1
=⇒
A2 = −A1 , M −1 1 + Pe A1 = 1 − . 1 − Pe
In conclusione, la soluzione del problema (5.16) ha i seguenti valori nodali:
148
5 Equazioni di diffusione-trasporto-reazione 1
esatta Pe locale= 2.63 Pe locale= 1.28 Pe locale= 0.63
0.5
0
−0.5 0.75
0.8
0.85
0.9
0.95
1
Figura 5.2. Soluzione agli elementi finiti del problema di diffusione trasporto (5.13) con Peg = 50 per diversi valori del numero di Péclet locale
i 1 + Pe 1− 1 − Pe ui = M , 1 + Pe 1− 1 − Pe
per i = 0, . . . , M.
Osserviamo che, se Pe > 1, al numeratore compare una potenza con base negativa e quindi la soluzione approssimata diviene oscillante, al contrario della soluzione esatta che è monotona! Questo fenomeno è esemplificato in Fig. 5.2 dove la soluzione della (5.19) per valori differenti del numero di Péclet locale è confrontata con la soluzione esatta per un caso in cui il numero di Péclet globale è pari a 50. Come si può osservare, più il numero di Péclet locale aumenta, più l’andamento della soluzione approssimata si discosta da quello della soluzione esatta, presentando oscillazioni che diventano sempre più marcate in corrispondenza dello strato limite. Il rimedio più ovvio è quello di scegliere il passo h della mesh sufficientemente piccolo, in modo da garantire Pe < 1. Tuttavia questa soluzione non è sempre conveniente: ad esempio, se b = 1 e μ = 1/5000, bisognerebbe prendere h < 10 −4 , ossia introdurre sull’intervallo (0, 1) almeno 10000 intervalli! In particolare, tale strategia può rivelarsi assolutamente impraticabile per problemi ai limiti in più dimensioni. Una ragionevole soluzione alternativa è rappresentata da una strategia di raffinamento adattativo che infittisca la griglia solo in corrispondenza dello strato limite.
5.3 Analisi di un problema di diffusione-reazione monodimensionale Passiamo ora ad analizzare un problema monodimensionale di diffusione-reazione: −μu + σu = 0, 0 < x < 1, (5.20) u(0) = 0, u(1) = 1, con μ e σ costanti positive. La soluzione di tale problema è:
5.3 Analisi di un problema di diffusione-reazione monodimensionale
149
1
Esatta Pe locale= 5.56 Pe locale = 1.18 Pe locale= 0.27
0.5
0
−0.5 0.5
0.55
0.6
0.65
0.7
0.75
0.8
0.85
0.9
0.95
1
Figura 5.3. Confronto tra soluzione numerica e soluzione esatta del problema di diffusionereazione (5.20) con Peg = 200. La soluzione numerica è stata ottenuta utilizzando il metodo di Galerkin-elementi finiti lineari su griglie uniformi
u(x) =
eαx − e−αx sinh(αx) = α sinh(α) e − e−α
con α = σ/μ. Anche in questo caso vi è uno strato limite per x → 1 con uno spessore dell’ordine di μ/σ (si osservi, ad esempio, la soluzione esatta per il caso riportato in Fig. 5.3). Lo spessore di tale strato limite decresce al crescere di α. È interessante definire anche in questo caso un numero di Péclet globale, che prende la forma Peg =
σL2 , 6μ
essendo ancora L la dimensione lineare del dominio (1 nel nostro caso). Applichiamo ora il metodo di Galerkin con elementi finiti lineari su di una mesh uniforme. L’equazione relativa alla generica funzione di base ϕ i , i = 1, . . . , M − 1, è dunque: 1 0
μuh ϕi
1 dx +
σuh ϕi dx = 0. 0
Sviluppando i calcoli in maniera analoga a quanto fatto nel paragrafo precedente, ed osservando che xi xi+1 xi+1 h 2 h ϕi−1 ϕi dx = , ϕ2i dx = h, ϕi ϕi+1 dx = , 6 3 6 xi−1 xi−1 xi si ottiene 1 2 1 h 2 h + σ ui−1 + ui h + ui+1 = 0, μ −ui−1 + ui − ui+1 h h h 6 3 6 ossia:
(5.21)
150
5 Equazioni di diffusione-trasporto-reazione
μ h σ− 6 h
ui+1 +
2μ 2 h+σ 3 h
ui +
μ h σ− 6 h
ui−1 = 0.
Dividendo per μ/h e definendo il seguente numero di Péclet locale: Pe =
σh2 , 6μ
(5.22)
si ha infine: (Pe − 1)ui+1 + 2(1 + 2Pe)ui + (Pe − 1)ui−1 = 0,
i = 1, . . . , M − 1.
Tale equazione alle differenze ammette come soluzione, per ogni i = 0, . . . , M :
i i 1 + 2Pe + 3Pe(Pe + 2) 1 + 2Pe − 3Pe(Pe + 2) − 1 − Pe 1 − Pe ui = M M , 1 + 2Pe + 3Pe(Pe + 2) 1 + 2Pe − 3Pe(Pe + 2) − 1 − Pe 1 − Pe che, ancora una volta, risulta oscillante quando Pe > 1. Il problema è dunque critico quando σμ 1, ovvero quando il coefficiente di diffusione è molto piccolo rispetto a quello di reazione e lo diventa sempre più all’aumentare del rapporto σμ (si veda l’esempio riportato in Fig. 5.3).
5.4 Relazioni tra elementi finiti e differenze finite Vogliamo analizzare il comportamento del metodo delle Differenze Finite (DF, per brevità) applicato alla risoluzione di problemi di diffusione-trasporto e di diffusionereazione, ed evidenziarne analogie e differenze con il metodo agli Elementi Finiti (EF, per brevità). Ci limiteremo al caso monodimensionale e considereremo una mesh uniforme. Consideriamo ancora il problema (5.13) e approssimiamolo mediante differenze finite. Allo scopo di avere un errore di discretizzazione locale dello stesso ordine di grandezza su entrambi i termini, si approssimeranno le derivate utilizzando i rapporti incrementali centrati seguenti: u (xi ) =
u(xi+1 ) − u(xi−1 ) + O(h2 ), 2h
u (xi ) =
u(xi+1 ) − 2u(xi ) + u(xi−1 ) + O(h2 ), h2
i = 1, . . . , M − 1, i = 1, . . . , M − 1.
In entrambi i casi, come evidenziato, il resto è un infinitesimo rispetto al passo reticolare h, come si può facilmente provare invocando gli sviluppi troncati di Taylor
5.4 Relazioni tra elementi finiti e differenze finite
151
(si veda, ad esempio, [QSS00]). Sostituendo in (5.13) le derivate esatte con i rapporti incrementali (trascurando dunque l’errore infinitesimo), si ottiene: ⎧ ⎨ −μ ui+1 − 2ui + ui−1 + b ui+1 − ui−1 = 0, i = 1, . . . , M − 1, h2 2h (5.23) ⎩ u0 = 0, uM = 1. Per ogni i, l’incognita u i fornisce un’approssimazione per il valore nodale u(x i ). Moltiplicando per h otteniamo: μ 1 − (ui+1 − 2ui + ui−1 ) + b(ui+1 − ui−1 ) = 0, h 2
i = 1, . . . , M − 1,
cioè la stessa equazione (5.17) ottenuta usando elementi finiti lineari sulla stessa griglia uniforme. Consideriamo ora il problema di diffusione e reazione (5.20). Procedendo in modo analogo, la sua approssimazione con le differenze finite fornisce: ⎧ ⎨ −μ ui+1 − 2ui + ui−1 + σui = 0, i = 1, . . . , M − 1, h2 (5.24) ⎩ uM = 1. u0 = 0, Tale equazione risulta diversa dalla (5.21), che si è ottenuta con elementi finiti lineari, in quanto il termine di reazione, che in (5.24) compare con il contributo diagonale σui , nella (5.21) dà luogo alla somma di tre contributi differenti: h 2 h . σ ui−1 + ui h + ui+1 6 3 6 Dunque i due metodi EF e DF non sono in questo caso equivalenti. Osserviamo che la soluzione ottenuta con lo schema alle DF (5.24) non presenta oscillazioni, qualunque sia il valore scelto per il passo h di discretizzazione. Infatti la soluzione di (5.24) è M −1 i ui = (ρM (ρ1 − ρi2 ), 1 − ρ2 )
con ρ1,2 =
γ ± 2
γ2 −1 4
12
e γ =2+
σh2 . μ
Le potenze i-esime ora hanno una base positiva. Questo garantisce un andamento monotono alla soluzione discreta a differenze finite. Ciò differisce da quanto accade per gli EF; in quest’ultimo caso, come visto nella Sez. 5.3, occorre7garantire che il numero
6μ di Péclet locale (5.22) sia minore di 1, ovvero scegliere h ≤ σ . Si veda l’esempio riportato in Fig. 5.4 per avere un confronto tra un’approssimazione ad elementi finiti ed una a differenze finite.
152
5 Equazioni di diffusione-trasporto-reazione 1.2
Esatta Pe=10.20 (FEM) Pe=10.20 (FD) Pe= 0.57 (FEM) Pe= 0.57 (FD)
1
0.8
0.6
0.4
0.2
0
−0.2 0.8
0.82
0.84
0.86
0.88
0.9
0.92
0.94
0.96
0.98
1
Figura 5.4. Confronto tra soluzioni numeriche dell’equazione di diffusione-reazione monodimensionale (5.20) con Peg = 2000 ottenute utilizzando il metodo di Galerkin-elementi finiti lineari (FEM) ed il metodo alle differenze finite (FD), per diversi valori del numero di Péclet locale
5.5 La tecnica del mass-lumping Nel caso del problema di reazione-diffusione, per ottenere anche nell’ambito degli elementi finiti lineari lo stesso risultato ottenuto usando le differenze finite, si può far ricorso alla cosiddetta tecnica del mass-lumping nella quale si approssima la matrice di massa, definita da 1 M = (mij ),
mij =
ϕj ϕi dx, 0
che è tridiagonale, con una matrice diagonale detta matrice condensata. A tale scopo, si utilizzi la seguente formula di quadratura dei trapezi su ciascun intervallo (xi , xi+1 ), per ogni i = 0, . . . , M − 1: x i+1
f (x) dx
h (f (xi ) + f (xi+1 )). 2
xi
Grazie alle proprietà delle funzioni di base degli elementi finiti lineari, si trova allora: xi ϕi−1 ϕi dx h2 [ϕi−1 (xi−1 )ϕi (xi−1 ) + ϕi−1 (xi )ϕi (xi )] = 0, xxi−1 i+1 xi ϕ2i dx = 2 xi−1 ϕ2i dx 2 h2 ϕ2 i (xi−1 ) + ϕ2 i (xi ) = h, xxi−1 i+1 ϕi ϕi+1 dx h2 [ϕi (xi )ϕi+1 (xi ) + ϕi (xi+1 )ϕi+1 (xi+1 )] = 0. xi
Usando le formule precedenti per calcolare in modo approssimato gli elementi della matrice di massa, si perviene alla seguente matrice diagonale M L avente per elementi le somme degli elementi di ogni riga della matrice M , ovvero
5.5 La tecnica del mass-lumping
ML = diag(m 3 ii ), con m 3 ii =
i+1
mij .
153
(5.25)
j=i−1
Si noti che, grazie alla seguente proprietà di partizione dell’unità delle funzioni di base: M ϕj (x) = 1 ∀x ∈[0, 1], (5.26) j=0
gli elementi della matrice M L assumono la seguente espressione sull’intervallo [0, 1]: 1 ϕi dx,
m 3 ii =
i = 0, . . . , M.
0
La loro espressione è riportata nell’Esercizio 3 per elementi finiti di grado 1, 2, 3. Il problema agli elementi finiti in cui si sostituiscano i termini di ordine zero nel seguente modo 1 1 M−1 M−1 σ uh ϕi dx = σ uj ϕj ϕi dx = σ mij uj σ m 3 ii ui , 0
j=1
0
j=1
produce soluzioni coincidenti con quelle delle differenze finite, dunque monotone per ogni valore di h. Inoltre, la sostituzione di M con M L non riduce l’ordine di accuratezza del metodo. Il procedimento di mass-lumping (5.25) è generalizzabile al caso bidimensionale nel caso si usino elementi lineari. Per elementi finiti quadratici, invece, la procedura di somma per righe precedentemente descritta genererebbe una matrice di massa M L singolare (si veda l’Esempio 5.1). Una strategia di diagonalizzazione alternativa alla + = diag(m precedente consiste nell’utilizzare la matrice M + ii ) con elementi dati da mii . m + ii = j mjj + e ML Nel caso monodimensionale, per elementi finiti lineari e quadratici, le matrici M coincidono, mentre differiscono per elementi cubici (si veda l’Esercizio 3). La matrice + è non singolare anche per elementi finiti lagrangiani di ordine elevato, mentre può M risultare singolare se si utilizzano elementi finiti non lagrangiani, per esempio se si usano basi gerarchiche. In quest’ultimo caso, si ricorre a procedure di mass-lumping più sofisticate. Recentemente sono state infatti elaborate diverse nuove tecniche per eseguire il “mass lumping” anche per elementi finiti di grado elevato, e in grado di generare matrici condensate non-singolari. La descrizione di tali metodologie esula dallo scopo di questo libro; si rimanda il lettore interessato alla letteratura specializzata, per esempio a [CJRT01]. Esempio 5.1 La matrice di massa per i P2 , sull’elemento di riferimento di vertici (0, 0), (1, 0) e (0, 1), è data da
154
5 Equazioni di diffusione-trasporto-reazione 2 6 −1 −1 0 6 −1 6 −1 0 6 1 6 −1 −1 6 −4 6 M= 0 −4 32 180 6 6 0 4 −4 0 0 16 0 −4 0 16
−4 0 0 16 32 16
0 −4 0 16 16 32
3 7 7 7 7, 7 7 5
mentre le matrici di massa condensate sono date da 1 diag(0 0 0 60 60 60), 180 1 b = M diag(6 6 6 32 32 32). 114
ML =
Come si vede la matrice ML è singolare.
La tecnica del mass-lumping verrà utilizzata anche in altri contesti, ad esempio nella risoluzione di problemi parabolici (si veda il Cap. 6) quando si utilizzano discretizzazioni spaziali agli elementi finiti e discretizzazioni temporali esplicite alle differenze finite (come il metodo di Eulero in avanti). In tal caso, ricorrendo al lumping della matrice di massa derivante dalla discretizzazione della derivata temporale, ci si riconduce alla soluzione di un sistema diagonale con conseguente riduzione del corrispondente costo computazionale.
5.6 Schemi decentrati e diffusione artificiale Il confronto con le differenze finite ci ha permesso di trovare una strada per risolvere i problemi degli schemi ad elementi finiti nel caso di un problema di diffusionereazione. Vogliamo ora trovare un rimedio anche per il caso del problema di diffusionetrasporto (5.13). Mettiamoci nell’ambito delle differenze finite. Le oscillazioni nella soluzione numerica nascono dal fatto che si è utilizzato uno schema alle differenze finite centrate (DFC) per la discretizzazione del termine di trasporto. Un’idea che deriva dal significato fisico del termine di trasporto suggerisce di discretizzare la derivata prima in un punto xi con un rapporto incrementale decentrato nel quale intervenga il valore in xi−1 se il campo è diretto verso destra (b > 0), e in x i+1 in caso contrario. Questa tecnica è detta di upwinding (DFUP) e lo schema risultante, denominato schema upwind, si scrive, nel caso b > 0, come −μ
ui+1 − 2ui + ui−1 ui − ui−1 = 0, +b h2 h
i = 1, . . . , M − 1
(5.27)
(si veda la Fig. 5.5 per un esempio di applicazione dello schema upwind). Il prezzo da pagare è una riduzione dell’ordine di convergenza in quanto il rapporto incrementale decentrato introduce un errore di discretizzazione locale che è O(h) e non O(h 2 ) come nel caso delle DFC. Osserviamo ora che ui − ui−1 ui+1 − ui−1 h ui+1 − 2ui + ui−1 = − , h 2h 2 h2
5.6 Schemi decentrati e diffusione artificiale
155
1.2
1
0.8
Esatta FDC Pe= 2.94 FDUP Pe= 2.94 FDC Pe= 0.70 FDUP Pe= 0.70
0.6
0.4
0.2
0
−0.2
−0.4 0.7
0.75
0.8
0.85
0.9
0.95
1
Figura 5.5. Soluzione ottenuta utilizzando lo schema delle differenze finite centrate (FDC) ed upwind (FDUP) per l’equazione di diffusione trasporto monodimensionale (5.13) con Peg = 50. Si può notare l’effetto stabilizzante anche ad alti numeri di Péclet locale della diffusione artificiale introdotta dallo schema upwind accompagnata, inevitabilmente, da una perdita di accuratezza
ovvero il rapporto incrementale decentrato si può scrivere come la somma di un rapporto incrementale centrato per approssimare la derivata prima e di un termine proporzionale alla discretizzazione della derivata seconda ancora con un rapporto incrementale centrato. Pertanto, lo schema upwind si può reinterpretare come uno schema alle differenze finite centrate in cui è stata aggiunta una diffusione artificiale proporzionale ad h. In effetti, la (5.27) è equivalente a −μh
ui+1 − 2ui + ui−1 ui+1 − ui−1 = 0, +b h2 2h
i = 1, . . . , M − 1,
(5.28)
dove μh = μ(1 + Pe), essendo Pe il numero di Péclet locale introdotto in (5.18). Lo schema (5.28) corrisponde alla discretizzazione con uno schema DFC del problema perturbato −μh u + bu = 0. (5.29) bh è detta viscosità numerica o La “correzione” della viscosità μ h − μ = μPe = 2 anche viscosità artificiale. Il nuovo numero di Péclet locale, associato allo schema (5.28) è Pe∗ =
bh Pe = , 2μh (1 + Pe)
e pertanto esso verifica Pe ∗ < 1, per ogni valore possibile di h > 0. Come vedremo nella prossima sezione, questa interpretazione consente di estendere la tecnica upwind agli elementi finiti ed anche al caso bidimensionale, dove il concetto di decentramento della derivata non è così ovvio. Più in generale, possiamo utilizzare in uno schema DFC della forma (5.28) il seguente coefficiente di viscosità numerica μh = μ(1 + φ(Pe)),
(5.30)
156
5 Equazioni di diffusione-trasporto-reazione
dove φ è una funzione opportuna del numero di Péclet locale che deve soddisfare la proprietà lim φ(t) = 0. È facile osservare che se φ = 0 si ottiene il metodo DFC t→0+
(5.23), mentre se φ(t) = t, si ottiene il metodo DFUP (o upwind) (5.27) (o (5.28)). Altre scelte di φ danno luogo a schemi diversi. Ad esempio, ponendo φ(t) = t − 1 + B(2t), dove B è la cosiddetta funzione di Bernoulli definita come t et − 1
B(t) =
se t > 0,
B(0) = 1,
e
si ottiene lo schema comunemente chiamato di Scharfetter e Gummel, detto anche del fitting esponenziale (in realtà tale schema è stato originariamente introdotto da Allen e Southwell [AS55]). Indicati con φU e φSG rispettivamente le due funzioni individuate dalle scelte φ(t) = t e φ(t) = t − 1 − B(2t), si osserva che φSG φU se Pe → +∞, mentre φSG = O(Pe2 ) e φU = O(Pe) se Pe → 0+ (si veda la Fig. 5.6). Si può verificare che per ogni μ e b fissati, lo schema di Scharfetter e Gummel è del secondo ordine (rispetto ad h) e, per tale ragione, è anche detto schema upwind con viscosità ottimale. In realtà, si può verificare anche che, nel caso in cui f sia costante (o, più in generale, è sufficiente che sia costante in ogni intervallo [x i , xi+1 ]), la soluzione numerica prodotta da questo schema coincide esattamente con la soluzione u nei nodi di discretizzazione x i interni all’intervallo (0, 1), ovvero si ha che ui = u(xi ) per i = 1, . . . , M − 1, indipendentemente dalla scelta fatta per h. In tal caso, si parla di superconvergenza della soluzione numerica a quella esatta (si veda la Fig. 5.7). Osserviamo che anche nel caso degli schemi upwind e di Scharfetter e Gummel il numero di Péclet locale, dato da Pe∗ =
bh Pe , = 2μh (1 + φ(Pe))
10 1
9
0.9 0.8 0.7
8
0.6 0.5
7
0.4 0.3 0.2
6
0.1 0 0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
5 4 3 2 1 0 0
1
2
3
4
5
6
7
8
9
10
Figura 5.6. Le funzioni φU (in linea continua) e φSG (in linea tratteggiata) al variare del numero di Péclet
5.7 Autovalori del problema di diffusione-trasporto
157
1.2
Exact FDUP Pe= 2.94 FDSG Pe= 2.94 FDUP Pe= 0.70 FDSG Pe= 0.70
1
0.8
0.6
0.4
0.2
0
−0.2
−0.4
0.8
0.82
0.84
0.86
0.88
0.9
0.92
0.94
0.96
0.98
1
Figura 5.7. Confronto fra la soluzione con viscosità numerica upwind (FDUP) e quella di Scharfetter e Gummel (FDSG) nel caso in cui Peg = 50
è sempre minore di 1, per ogni valore di h. Osservazione 5.1 La matrice associata agli schemi upwind e del fitting esponenziale è una M-matrice indipendentemente dal valore di h; pertanto la soluzione numerica ha un andamento monotono (si veda [QSS00, Cap. 1]). •
5.7 Autovalori del problema di diffusione-trasporto Consideriamo l’operatore Lu = −μu +bu associato al problema (5.13) in un generico intervallo (α, β), e studiamo il comportamento degli autovalori λ ad esso associati. Essi verificano il problema Lu = λu, α < x < β, u(α) = u(β) = 0, u essendo un’autofunzione. Tali autovalori saranno, in generale, complessi per via della presenza del termine bu di ordine 1. Supponendo μ > 0 costante (e b a priori variabile), abbiamo: β β β 1 2 Lu u dx b |u|2 dx μ |u | dx − 2 α Re(λ) = α β = α . (5.31) β |u|2 dx |u|2 dx α
α
Si evince che se μ è piccolo e b è strettamente positivo la parte reale di λ non è necessariamente positiva. Grazie alla disuguaglianza di Poincaré, β
2
β
|u | dx ≥ Cα,β α
|u|2 dx,
(5.32)
α
essendo Cα,β una costante positiva che dipende da β − α, deduciamo da (5.31) che Re(λ) ≥ Cα,β μ −
1 b 2 max
158
5 Equazioni di diffusione-trasporto-reazione
essendo bmax = max b (s). Pertanto solo un numero finito di autovalori possono α≤s≤β
avere parte reale negativa. In particolare, osserviamo che Re(λ) > 0
se b è costante o b (x) ≤ 0 ∀x ∈ [α, β].
Lo stesso tipo di limitazione inferiore si ottiene per gli autovalori associati all’approssimazione di Galerkin-elementi finiti. Questi ultimi sono la soluzione del problema β trovare λh ∈ C, uh ∈ Vh :
μuh vh
β dx +
α
buh vh
β dx = λh
α
uh vh dx, ∀vh ∈ Vh , α
(5.33) dove Vh = {vh ∈ Xhr : vh (α) = vh (β) = 0}. Per dimostrarlo basta prendere ancora vh = uh in (5.33) ed operare come in precedenza. Possiamo invece ottenere una limitazione dall’alto scegliendo ancora v h = uh in (5.33) e prendendo il modulo in entrambi i membri: |λh | ≤
μuh 2L2 (α,β) + bL∞ (α,β) uh L2 (α,β) uh L2 (α,β) uh 2L2 (α,β)
.
Usando ora la disuguaglianza inversa (3.39) nel caso monodimensionale: ∃ CI = CI (r) > 0 : ∀vh ∈ Xhr ,
vh L2 (α,β) ≤ CI h−1 vh L2 (α,β) ,
(5.34)
troviamo facilmente che |λh | ≤ μ CI2 h−2 + bL∞ (α,β) CI h−1 . Nel caso di un’approssimazione spettrale di Legendre G-NI sul solito intervallo di riferimento (−1, 1), il problema agli autovalori assumerebbe la forma seguente: trovare λN ∈ C, uN ∈ P0N : (
μuN , vN
) N
) ( ) ( + buN , vN N = λN uN , vN N ∀vN ∈ P0N ,
(5.35)
essendo ora P0N lo spazio dei polinomi algebrici di grado N che si annullano in x = ±1 e (·, ·)N il prodotto scalare discreto di GLL definito in (4.23). Supporremo, per semplicità, che anche b sia costante. Prendendo v N = uN , otteniamo: Re(λN ) =
μuN 2L2 (−1,1) uN 2N
,
pertanto Re(λN ) > 0. Grazie alla disuguaglianza di Poincaré (5.32) (che nell’intervallo (−1, 1) vale con Cα,β = π 2 /4), otteniamo la stima inferiore
5.8 Metodi di stabilizzazione
Re(λN ) > μ
159
2 π 2 uN L2 (−1,1) . 4 uN 2N
Ricordiamo che, per un polinomio di grado al più N , la norma discreta · N e quella continua · L2 (−1,1) sono equivalenti (si veda la (4.49)). Pertanto π2 . 12 Usando invece la disuguaglianza inversa per i polinomi algebrici: Re(λN ) > μ
∃ C > 0 : ∀uN ∈ PN ,
uN L2 (−1,1) ≤ C N 2 uN L2 (−1,1)
(5.36)
e ancora una volta la (4.49), si trova Re(λN ) < C μ N 4 . In realtà, se N > 1/μ, si può provare che i moduli degli autovalori del problema di diffusione-trasporto (5.35) si comportano come quelli del problema di pura diffusione, ovvero C1 N −1 ≤ |λN | ≤ C2 N −2 . Per le dimostrazioni e per maggiori dettagli si veda [CHQZ06, Sezione 4.3.3].
5.8 Metodi di stabilizzazione Il metodo di Galerkin introdotto nelle sezioni precedenti fornisce un’approssimazione centrata del termine di trasporto poiché sceglie le funzioni test v h nello stesso spazio in cui cerca la soluzione u h . Un modo possibile per decentrare, o dissimmetrizzare tale approssimazione, consiste nello scegliere le funzioni test v h in uno spazio diverso da quello a cui appartiene u h : si ottiene così un metodo detto di Petrov-Galerkin, per il quale non vale più l’analisi basata sul Lemma di Céa. Analizzeremo più nel dettaglio questo approccio nella Sez. 5.8.2. In questa sezione ci occuperemo invece di un altro metodo, detto degli elementi finiti stabilizzati. Peraltro, come vedremo, gli schemi così prodotti si possono reinterpretare come particolari metodi di Petrov-Galerkin. L’idea è quella di sostituire il problema: trovare uh ∈ Vh : a(uh , vh ) = F (vh ) ∀vh ∈ Vh ,
(5.37)
◦r
che è l’approssimazione di Galerkin di (5.15), con V h = X h , con il seguente problema detto di Galerkin generalizzato: trovare uh ∈ Vh : ah (uh , vh ) = Fh (vh ) ∀vh ∈ Vh ,
(5.38)
in cui ah (uh , vh ) = a(uh , vh ) + bh (uh , vh ) e Fh (vh ) = F (vh ) + Gh (vh ). I termini aggiuntivi b h (uh , vh ) e Gh (vh ) hanno lo scopo di eliminare (o quanto meno di ridurre) le oscillazioni numeriche prodotte dal metodo di Galerkin e sono pertanto denominati termini di stabilizzazione. Essi dipendono parametricamente da h.
160
5 Equazioni di diffusione-trasporto-reazione
Osservazione 5.2 Si vuole far notare che il termine “stabilizzazione” è in realtà improprio. Il metodo di Galerkin è infatti già stabile, nel senso della continuità della soluzione rispetto ai dati del problema (si veda quanto dimostrato, ad esempio, nella Sez. 5.1 per il problema (5.1)). Stabilizzazione va intesa, in questo caso, nel senso di ridurre (idealmente di eliminare) le oscillazioni presenti nella soluzione numerica quando Pe > 1. • Vediamo ora vari modi con cui scegliere i termini di stabilizzazione.
5.8.1 Diffusione artificiale e schemi decentrati agli elementi finiti Basandoci su quanto visto per le differenze finite e riferendoci, per semplicità, al caso monodimensionale, applichiamo il metodo di Galerkin al problema (5.13) sostituendo al coefficiente di viscosità μ un coefficiente μ h = μ(1+φ(Pe)). In tal modo si aggiunge di fatto al termine originale di viscosità μ una viscosità artificiale pari a μφ(Pe), dipendente dal passo di discretizzazione h attraverso il numero di Péclet locale Pe. Si ottiene dunque la seguente approssimazione di (5.15): ◦
◦
trovare uh ∈ Vh :
ah (uh , vh ) = F (vh ) ∀vh ∈ Vh ,
(5.39)
◦r
essendo Vh = X h , con r ≥ 1, e ◦
◦
◦
ah (uh , vh ) = a(uh , vh ) + bh (uh , vh ).
(5.40)
Il termine aggiuntivo dato da 1 ◦ bh (uh , vh ) = μφ(Pe) uh vh dx, ◦
(5.41)
0
è il termine di stabilizzazione. Essendo ◦
◦
◦
ah (uh , uh ) ≥ μh | uh |2H1 (Ω) e μh ≥ μ, possiamo affermare che il problema (5.40) è “più coercivo” (ovvero ha una costante di coercività più grande) del problema discreto ottenuto con il metodo di Galerkin standard, che ritroviamo prendendo a h = a in (5.39). Il seguente risultato fornisce una stima a priori dell’errore commesso approssi◦ mando la soluzione del problema (5.15) con uh .
5.8 Metodi di stabilizzazione
161
Teorema 5.1 L’errore fra la soluzione del problema (5.15) e quella del problema approssimato (5.39) si può maggiorare come segue, nell’ipotesi che u ∈ Hr+1 (Ω): ◦
◦
u − uh H1 (Ω) ≤ C
(5.42)
φ(Pe) hr ◦ ◦ u Hr+1 (Ω) + u H1 (Ω) , μ(1 + φ(Pe)) 1 + φ(Pe)
essendo C un’opportuna costante positiva indipendente da h e da μ. Dimostrazione. Ci possiamo avvalere del Lemma di Strang, già illustrato nella Sez. 4.4.1, grazie al quale otteniamo M ◦ ◦ ◦ 1+ u −wh H1 (Ω) inf u − uh H1 (Ω) ≤ wh ∈Vh μh 2 (5.43) |a(wh , vh ) − ah (wh , vh )| 1 . + sup μh vh ∈Vh ,vh =0 vh H1 (Ω) ◦
◦
Scegliamo wh = Phr u, ovvero la proiezione ortogonale di u su Vh , rispetto al 1 prodotto scalare indotto dalla forma bilineare u v dx, ∀u, v ∈ H10 (Ω), cioè 0 ◦ Phr u∈
1 Vh :
◦
◦
(Phr u − u) vh dx = 0,
∀vh ∈ Vh .
0
Si può dimostrare che (si veda [QV94, Cap. 3]) ◦
◦
(Phr u) L2 (Ω) ≤ (u) L2 (Ω)
e
◦
◦
◦
Phr u − u H1 (Ω) ≤ Chr u Hr+1 (Ω) ,
essendo C una costante indipendente da h. Possiamo così maggiorare il primo adden◦ do del termine di destra nella (5.43) con la quantità (C/μ h )hr u Hr+1 (Ω) . Ora, grazie alla (5.40), possiamo maggiorare il secondo addendo del termine di destra della (5.43) nel seguente modo: 1 |a(wh , vh ) − ah (wh , vh )| μh vh H1 (Ω)
1 μ 1 φ(Pe) wh vh dx. μh vh H1 (Ω)
≤
0
Usando la disuguaglianza di Cauchy-Schwarz, ed osservando che vh L2 (Ω) ≤ vh H1 (Ω)
e che
◦
◦
◦
(Phr u) L2 (Ω) ≤ Phr u H1 (Ω) ≤ u H1 (Ω) ,
162
5 Equazioni di diffusione-trasporto-reazione
otteniamo
◦ ◦ a(Phr u, vh ) − ah (Phr u, vh ) 1 φ(Pe) ◦ u H1 (Ω) . sup ≤ μh vh ∈Vh ,vh =0 vh H1 (Ω) 1 + φ(Pe)
La disuguaglianza (5.42) è pertanto dimostrata.
Corollario 5.1 Per μ fissato e h tendente a 0, si ha ◦ ◦ ◦ ◦ u − uh H1 (Ω) ≤ C1 hr u Hr+1 (Ω) + φ(Pe) u H1 (Ω) , dove C1 è una costante positiva, indipendente da h, mentre, per h fissato e μ che tende a 0, si ha ◦ ◦ ◦ ◦ u − uh H1 (Ω) ≤ C2 hr−1 u Hr+1 (Ω) + u H1 (Ω) , dove C2 è una costante positiva indipendente da h e da μ. Dimostrazione. Basta osservare che, nel caso dell’upwind (φ U (Pe) = Pe) b μ(1 + φ(Pe)) = μ + h, 2 mentre φ(Pe) h = 1 + φ(Pe) h + 2μ/b e ricordare che, nel caso dello schema di Scharfetter-Gummel, φ SG (Pe) = O(h2 ) per μ fissato e h → 0, mentre φSG φU per h fissato e μ tendente a 0. In particolare, per μ fissato, il metodo stabilizzato genera un errore lineare rispetto ad h (indipendentemente dal grado r) se si usa la viscosità upwind, mentre con viscosità artificiale di tipo Scharfetter e Gummel la convergenza diviene quadratica se r ≥ 2.
5.8.2 Il metodo di Petrov-Galerkin Un modo equivalente di scrivere il problema di Galerkin generalizzato (5.39) con viscosità numerica è formularlo come un metodo di Petrov-Galerkin, nel quale lo spazio delle funzioni test è diverso da quello in cui si cerca la soluzione. Precisamente, l’approssimazione assume la forma seguente: ◦
trovare uh ∈ Vh :
◦
a(uh , vh ) = F (vh )
∀vh ∈ Wh ,
(5.44)
5.8 Metodi di stabilizzazione
163
1
ψi
Bi 0.5
ϕi 0
x0 . . .
xi−1 xi
xi+1 . . . xN
x0 . . .
xi−1 xi
xi+1 . . . xN
-0.5
-1 -3
-2
-1
0
1
2
3
Figura 5.8. Esempio di funzione bolla Bi e di una funzione di base ψi dello spazio Wh
dove Wh = Vh , mentre la forma bilineare a(·, ·) è la stessa del problema di partenza. Si può verificare che, nel caso di elementi finiti lineari, ovvero per r = 1, il problema (5.39)-(5.41) equivale al problema (5.44) in cui Wh è lo spazio generato dalle funzioni ψi (x) = ϕi (x) + Bi α (si veda la Fig. 5.8, a destra), dove le Biα = α Bi (x) sono le cosiddette funzioni a bolla, con ⎧ x−xi−1 ⎪ g 1 − , xi−1 ≤ x ≤ xi , ⎪ h ⎪ ⎨ ( x−x ) i Bi (x) = ⎪ −g h , xi ≤ x ≤ xi+1 , ⎪ ⎪ ⎩ 0 altrimenti, e g(ξ) = 3ξ(1 − ξ), con 0 ≤ ξ ≤ 1 (si veda la Fig. 5.8, a sinistra) [ZT00]. Nel caso delle differenze finite upwind si ha α = 1, mentre nel caso dello schema di Scharfetter e Gummel si ha α = coth(Pe) − 1/Pe. Si noti che le funzioni test si dissimmetrizzano (rispetto alle usuali funzioni di base lineari a tratti) sotto l’azione del campo convettivo.
5.8.3 Il metodo della diffusione artificiale e della streamline-diffusion nel caso bidimensionale Il metodo della viscosità artificiale upwind si può generalizzare al caso in cui si consideri un problema bidimensionale del tipo (5.1). In tal caso basterà aggiungere alla forma bilineare (5.3) un termine di tipo Qh ∇uh · ∇vh dΩ per un opportuno Q > 0, Ω
corrispondente ad aggiungere il termine di diffusione artificiale −QhΔu al problema di partenza (5.1). In tal modo si introduce una diffusione addizionale, non solo nella direzione del campo b, come è giusto che sia se l’obiettivo è quello di stabilizzare le oscillazioni generate dal metodo di Galerkin, ma anche in quella ad esso ortogonale il che, invece, non è affatto necessario. Se, ad esempio, considerassimo il problema −μΔu +
∂u =f ∂x
in Ω,
u=0
su ∂Ω,
164
5 Equazioni di diffusione-trasporto-reazione
in cui il campo di trasporto è dato dal vettore b = [1, 0] T , il termine di diffusione artificiale che vorremmo aggiungere sarebbe −Qh
∂ 2u ∂x2
e non −QhΔu = −Qh
∂2u ∂2u + 2 ∂x2 ∂y
.
Analogamente, per il problema −μΔu +
∂u =f ∂y
in Ω,
u=0
su ∂Ω,
il termine di diffusione artificiale sarebbe −Qh
∂ 2u . ∂y 2
In generale, il termine corretto di stabilizzazione da aggiungere è ∂u b −Qhdiv [(b · ∇u) b] = −Qhdiv ∂b con Q = |b|−1 . Nel problema di Galerkin esso dà luogo al seguente termine: ∂uh ∂vh bh (uh , vh ) = Qh(b · ∇uh , b · ∇vh ) = Qh , . ∂b ∂b Il problema discreto diventa quindi trovare uh ∈ Vh : ah (uh , vh ) = (f, vh ) ∀vh ∈ Vh , dove ah (uh , vh ) = a(uh , vh ) + bh (uh , vh ). In sostanza, stiamo aggiungendo un termine proporzionale alla derivata seconda nella direzione del campo b (in inglese streamline). Si noti che, in questo caso, il coefficiente di viscosità artificiale è un tensore. Infatti il termine di stabilizzazione bh (·, ·) può essere pensato come la forma bilineare associata all’operatore −div(μ a ∇u) con [μa ]ij = Qhbi bj , essendo bi la i-esima componente di b. Anche per questo metodo, però, l’accuratezza è solamente O(h). Metodi di stabilizzazione più accurati sono descritti nelle prossime sezioni.
5.8 Metodi di stabilizzazione
165
5.8.4 Consistenza ed errore di troncamento per i metodi di Galerkin e di Galerkin generalizzato Per il problema di Galerkin generalizzato (5.37) definiamo errore di troncamento la differenza tra il primo ed il secondo membro quando si sostituisca la soluzione esatta u a quella approssimata u h , ovvero, per ogni v h ∈ Vh , τh (u; vh ) = ah (u, vh ) − Fh (vh ).
(5.45)
Esso è un funzionale della variabile v h . Possiamo anche “liberarci” della dipendenza da v h introducendo la quantità τh (u) =
|τh (u; vh )| . vh ∈Vh ,vh =0 vh V sup
(5.46)
Coerentemente con le definizioni date nella Sez. 1.2, diremo che il metodo di Galerkin generalizzato in esame è consistente se lim τh (u) = 0. h→0
Diremo inoltre che è fortemente consistente se l’errore di troncamento (5.46) risulta nullo per ogni valore di h. Il metodo standard di Galerkin, ad esempio, è fortemente consistente, come visto nel Cap. 3, in quanto, ∀v h ∈ Vh , si ha τh (u; vh ) = a(u, vh ) − F (vh ) = 0. Il metodo di Galerkin generalizzato, invece, è in generale solo consistente, come discende dal Lemma di Strang, purché a h − a e Fh − F “tendano a zero” quando h tende a zero. Per quanto riguarda i metodi di diffusione artificiale di tipo upwind e streamlinediffusion si ha: τh (u; vh ) =
ah (u, vh ) − F (vh )
ah (u, vh ) − a(u, vh ) =
=
Qh(∇u, ∇vh ) (Upwind), ∂u ∂vh Qh( ∂b , ∂b )
(Streamline).
Pertanto sono metodi consistenti, ma non fortemente consistenti.
5.8.5 Parte simmetrica e antisimmetrica di un operatore Diremo che un operatore L : V → V , V essendo lo spazio duale di V , è simmetrico se risulta V <
Lu, v >V = V < u, Lv >V
∀u, v ∈ V.
Viceversa, diremo che un operatore è antisimmetrico quando V <
Lu, v >V = − V < u, Lv >V
∀u, v ∈ V.
166
5 Equazioni di diffusione-trasporto-reazione
Possiamo sempre scrivere un operatore come somma di una parte simmetrica L S e di una parte antisimmetrica L SS : Lu = LS u + LSS u. Consideriamo, ad esempio, il seguente operatore di diffusione-trasporto-reazione Lu = −μΔu + div(bu) + σu,
x ∈ Ω ⊂ Rd , d ≥ 2.
(5.47)
Poiché div(bu) =
1 2 div(bu)
+ 12 div(bu)
=
1 2 div(bu)
+ 12 udiv(b) + 12 b · ∇u,
possiamo scomporlo nel modo seguente 1 1 div(b) u + [div(bu) + b · ∇u] . Lu = −μΔu + σ + 2 2 ./ 0 ./ 0 LSS u
LS u ∗
Si noti che il coefficiente di reazione è diventato σ = σ + 12 div(b). Verifichiamo che le due parti in cui è stato diviso l’operatore sono rispettivamente simmetrica e antisimmetrica se, ad esempio, V = H 01 (Ω). In effetti, integrando due volte per parti, si ottiene = μ(∇u, ∇v) + (σ ∗ u, v) V < LS u, v >V
V <
LSS u, v >V
=
−μ
=
V
V
< u, Δv >V +(u, σ ∗ v)
< u, LS v >V , ∀u, v ∈ V,
1 1 (div(bu), v) + (b · ∇u, v) 2 2 1 1 = − (bu, ∇v) + (∇u, bv) 2 2 1 1 = − (u, b · ∇v) − (u, div(bv)) 2 2 = − V < u, LSS v >V , ∀u, v ∈ V =
Osservazione 5.3 Ricordiamo che ogni matrice A si può scomporre nella somma A = AS + ASS , dove
1 (A + AT ) 2 è una matrice simmetrica, detta parte simmetrica di A e 1 ASS = (A − AT ) 2 è una matrice antisimmetrica, detta parte antisimmetrica di A. AS =
•
5.8 Metodi di stabilizzazione
167
5.8.6 Metodi fortemente consistenti (GLS, SUPG, DW) Consideriamo un problema di diffusione-trasporto-reazione che scriviamo nella forma astratta Lu = f definito in Ω, la cui soluzione sia nulla su ∂Ω. Consideriamo la corrispondente formulazione debole data da trovare u ∈ V = H10 (Ω) :
a(u, v) = (f, v) ∀v ∈ V ,
essendo a(·, ·) la forma bilineare associata ad L. Un metodo stabilizzato e fortemente consistente si può ottenere aggiungendo al problema di Galerkin un ulteriore termine, ovvero considerando il problema seguente: trovare uh ∈ Vh :
a(uh , vh ) + Lh (uh , f ; vh ) = (f, vh ) ∀vh ∈ Vh ,
(5.48)
per un’opportuna forma L h , purché si faccia l’ipotesi che Lh (u, f ; vh ) = 0 ∀vh ∈ Vh .
(5.49)
Osserviamo che la forma L h tiene conto di entrambi i contributi, dipendendo sia dalla soluzione approssimata u h che dal termine forzante f . Una scelta possibile che verifichi la (5.49) è la seguente: (ρ)
Lh (uh , f ; vh ) =Lh (uh , f ; vh ) =
(ρ)
δ(Luh − f , SK (vh ))L2 (K) ,
K∈Th
dove si è usata la notazione (u, v) L2 (K) = assegnare e si è posto (ρ)
SK (vh ) =
uv dK, ρ e δ sono parametri da K
hK [LSS vh + ρLS vh ], |b|
essendo b il campo di moto, L S e LSS rispettivamente la parte simmetrica e antisimmetrica dell’operatore L considerato e h K il diametro del generico elemento K. Per verificare la consistenza di (5.48), poniamo: (ρ)
ah (uh , vh ) = a(uh , vv ) + Lh (uh , f ; vh ). Allora (ρ)
τh (u; vh ) = ah (u, vh ) − (f, vh ) = a(u, vh ) + Lh (u, f ; vh ) − (f, vh ) (ρ)
= Lh (u, f ; vh ) = 0, essendo Lu − f = 0. Vediamone ora alcuni casi particolari associati a diverse scelte per il parametro ρ:
168
5 Equazioni di diffusione-trasporto-reazione
- se ρ = 1 si ottiene il metodo detto Galerkin Least-Squares (GLS) nel quale: (1)
SK (vh ) =
hK Lvh . |b|
Se prendiamo v h= uh si vede che, su ogni triangolo, è stato aggiunto un termine (Luh )2 dK;
proporzionale a K
- se ρ = 0 si ottiene il metodo denominato Streamline Upwind Petrov-Galerkin (SUPG) in cui: hK (0) SK (vh ) = LSS vh ; |b| - se ρ = −1 si ottiene il metodo detto di Douglas-Wang (DW) nel quale: (−1)
SK
(vh ) =
hK (LSS − LS )vh . |b|
Notiamo, tra l’altro, che nel caso in cui non vi sia assorbimento (σ ∗ = 0) e si usino elementi finiti P1 , i tre metodi precedenti sono tutti coincidenti, in quanto −Δu h |K = 0 ∀K ∈ Th . Limitiamoci ora ai due casi più classici, GLS (ρ = 1) e SUPG (ρ = 0). Definiamo la “norma ρ” : 1 √ (ρ) v(ρ) = {μ∇v2L2 (Ω) + γv2L2 (Ω) + δ (LSS + ρLS )v, SK (v) L2 (K) } 2 , K∈Th
dove γ è una costante positiva tale che − 12 divb+σ ≥ γ > 0; si ha dunque la seguente disuguaglianza (di stabilità): ∃α ∗ , dipendente da γ, tale che M f L2 (Ω) , (5.50) α∗ essendo M la costante di continuità associata alla forma bilineare a(·, ·). Infine vale la seguente stima dell’errore: uh (ρ) ≤
u − uh (ρ) ≤ Chr+1/2 |u|Hr+1 (Ω)
(5.51)
per cui l’ordine di accuratezza del metodo cresce all’aumentare del grado r dei polinomi usati, come succede nel metodo standard di Galerkin. Le dimostrazioni di (5.50) e (5.51) verranno fornite nella Sez. 5.8.7. Di fondamentale importanza pratica è poi la scelta del parametro δ, detto parametro di stabilizzazione, che misura quanta viscosità artificiale si sta introducendo. A questo proposito si riportano in Tabella 5.1 gli intervalli dei valori ammissibili per tale parametro in funzione dello schema stabilizzato scelto. In tale tabella C 0 è la costante della seguente disuguaglianza inversa h2K |Δvh |2 dK ≤ C0 ∇vh 2L2 (Ω) ∀vh ∈ Xhr . (5.52) K∈Th
K
Per un’analisi più approfondita di questi metodi e per le dimostrazioni dei casi qui menzionati rinviamo a [QV94], Cap. 8, ed a [RST96]. Segnaliamo anche [Fun97] relativamente al caso di un’approssimazione con elementi spettrali.
5.8 Metodi di stabilizzazione
169
SUPG 0 < δ < 1/C0 GLS 0<δ DW 0 < δ < 1/(2C0 ) Tabella 5.1. Valori ammissibili per il parametro di stabilizzazione δ
5.8.7 Analisi del metodo GLS In questa sezione vogliamo dimostrare le proprietà di stabilità (5.50) e convergenza (5.51) nel caso del metodo GLS (dunque per ρ = 1). Supponiamo che l’operatore differenziale L abbia la forma (5.47), con μ > 0 e σ ≥ 0 costanti, essendo assegnate ancora condizioni al bordo di Dirichlet omogenee. La forma bilineare a(·, ·) : V × V → R associata all’operatore L è dunque a(u, v) = μ ∇u · ∇v dΩ + div(bu) v dΩ + σu v dΩ, Ω
Ω
Ω
Per semplicità supponiamo nel seguito che esistano due essendo V = costanti γ0 e γ1 tali che H10 (Ω).
0 < γ0 ≤ γ(x) =
1 div(b(x)) + σ ≤ γ1 2
∀ x ∈ Ω.
(5.53)
Seguendo quanto fatto nella Sez. 5.8.5, possiamo scrivere la parte simmetrica e antisimmetrica associate a L, rispettivamente, come 1 LS u = −μΔu + γu, LSS u = div(bu) + b · ∇u . 2 Riscriviamo inoltre la formulazione stabilizzata (5.48) scomponendo L h (uh , f ; vh ) in due termini, uno contenente u h , l’altro f : trovare uh ∈ Vh :
(1)
(1)
ah (uh , vh ) = fh (vh )
con (1) ah (uh , vh )
= a(uh , vh ) +
K∈Th
e (1)
fh (vh ) = (f, vh ) +
K∈Th
∀vh ∈ Vh ,
(5.54)
hK Lvh δ Luh , |b| K
(5.55)
hK Lvh δ f, . |b| K
(5.56)
Osserviamo che la proprietà di consistenza forte, utilizzando queste nuove notazioni, si esprime attraverso l’uguaglianza (1)
(1)
ah (u, vh ) = fh (vh ) ∀vh ∈ Vh . Possiamo a questo punto dimostrare il seguente risultato preliminare.
(5.57)
170
5 Equazioni di diffusione-trasporto-reazione (1)
Lemma 5.1 Per ogni δ > 0, la forma bilineare a h (·, ·) definita in (5.55) soddisfa la seguente relazione: √ (1) ah (vh , vh ) = μ||∇vh ||2L2 (Ω) + || γ vh ||2L2 (Ω) hK Lvh , Lvh + δ ∀ vh ∈ Vh . |b| K
(5.58)
K∈Th
Il risultato precedente segue dalla definizione (5.55) (scelto u h = vh ) e dall’ipotesi (5.53). Nel caso in esame la norma · (1) , che qui indicheremo per convenienza con il simbolo · GLS , diventa hK √ Lvh , Lvh vh 2GLS = μ||∇vh ||2L2 (Ω) + || γ vh ||2L2 (Ω) + δ . (5.59) |b| K K∈Th
Possiamo dimostrare il seguente risultato di stabilità. Lemma 5.2 Sia u h la soluzione fornita dallo schema GLS. Allora esiste una costante C > 0, indipendente da h, tale che uh GLS ≤ C f L2 (Ω) . Dimostrazione. Scegliamo v h = uh in (5.54). Sfruttando il Lemma 5.1 e la definizione (5.59), possiamo innanzitutto scrivere che hK (1) (1) 2 uh GLS = ah (uh , uh ) = fh (uh ) = (f, uh ) + Luh δ f, . (5.60) |b| K K∈Th
Nel seguito useremo spesso la seguente disuguaglianza di Young: 1 2 b 4ε la quale discende dalla disuguaglianza elementare 2 √ 1 ε a − √ b ≥ 0. 2 ε ∀a, b ∈ R,
ab ≤ εa2 +
∀ε > 0,
(5.61)
Maggioriamo separatamente i due termini di destra della (5.60), utilizzando opportunamente le disuguaglianze di Cauchy-Schwarz e di Young. Otteniamo così 1 1 √ 1 √ 1 1 1 (f, uh ) = √ f, γ uh ≤ 1 √ f 1 γ uh L2 (Ω) 2 γ γ L (Ω) 1 1 12 1 √ 1 1 2 ≤ γ uh L2 (Ω) + 1 √ f 1 , 4 γ L2 (Ω)
5.8 Metodi di stabilizzazione
K∈Th
hK Luh δ f, |b| K
"
171
!
hK Luh |b| K∈Th K " " 1 1 1 1 1 hK 1 hK 1 1 f1 Luh 1 ≤ δ 1 δ 1 |b| |b| L2 (K) L2 (K) K∈Th hK 1 hK f, f Luh , Luh ≤ δ + δ . |b| 4 |b| K K =
δ
hK f, |b|
"
δ
K∈Th
K∈Th
Sommando le due precedenti maggiorazioni e sfruttando ancora la definizione (5.59), abbiamo 1 1 12 hK 1 1 1 uh 2GLS ≤ 1 √ f 1 2 + δ + uh 2GLS , f, f γ L (Ω) |b| 4 K K∈Th
ovvero, ricordando che h K ≤ h, uh 2GLS
1 hK 4 1 1 1 12 f, f + δ 1√ f1 2 3 γ |b| L (Ω) K K∈Th h 4 1 2 +δ f L2 (Ω) , ≤ max x∈Ω 3 γ |b| ≤
che fornisce il risultato di stabilità cercato pur di porre C=
4 3
max x∈Ω
1 γ
+δ
h 1/2 . |b|
(5.62)
Osserviamo che il risultato precedente è valido con la sola restrizione che il parametro di stabilizzazione δ sia positivo. Peraltro tale parametro potrebbe anche variare su ogni elemento K. In tal caso avremmo δ K invece di δ nelle (5.55) e (5.56), mentre la costante δ in (5.62) avrebbe il significato di max δK . K∈Th
Procediamo ora all’analisi di convergenza del metodo GLS.
172
5 Equazioni di diffusione-trasporto-reazione
Teorema 5.2 Supponiamo innanzitutto che lo spazio V h soddisfi la seguente proprietà d’approssimazione locale: per ogni v ∈ V ∩H r+1 (Ω), esiste una funzione vˆh ∈ Vh tale che v − vˆh L2 (K) + hK |v − vˆh |H1 (K) + h2K |v − vˆh |H2 (K) ≤ Chr+1 K |v|Hr+1 (K) (5.63) per ogni K ∈ Th . Supponiamo inoltre che per il numero di Péclet locale valga la seguente disuguaglianza PeK (x) =
|b(x)| hK >1 2μ
∀x ∈ K.
(5.64)
Infine supponiamo che valga la disuguaglianza inversa (5.52) e che il parametro di stabilizzazione soddisfi la relazione 0 < δ ≤ 2C 0−1 . Allora per l’errore associato allo schema GLS vale la seguente stima uh − uGLS ≤ Chr+1/2 |u|Hr+1 (Ω) ,
(5.65)
a patto che u ∈ H r+1 (Ω). Dimostrazione. Innanzitutto riscriviamo l’errore eh = uh − u = σh − η,
(5.66)
con σh = uh − u ˆh , η = u − uˆh , dove u ˆ h ∈ Vh è una funzione che dipende da u e che soddisfa la proprietà (5.63). Se, ad esempio, V h = Xhr ∩ H01 (Ω), possiamo scegliere u ˆh = Πhr (u), ovvero l’interpolata ad elementi finiti di u. Incominciamo a stimare la norma σ h GLS . Sfruttando la consistenza forte dello schema GLS data dalla (5.57), grazie alla (5.54) otteniamo (1)
(1)
(1)
||σh ||2GLS = ah (σh , σh ) = ah (uh − u + η, σh ) = ah (η, σh ). Ora dalla definizione (5.55) segue che: (1) ah (η, σh ) = μ ∇η · ∇σh dΩ − η b · ∇σh dΩ + σ η σh dΩ Ω
Ω
Ω
hK Lσh δ Lη, = μ(∇η, ∇σh ) − (η, Lσh )K + 2(γ η, σh ) + - ./ 0 ./ 0 |b| K K∈Th K∈Th (I) (III) ./ 0 (II) hK Lσh + (η, −μΔσh )K + δ Lη, . |b| K K∈Th K∈Th ./ 0 ./ 0 (IV)
(V)
Maggioriamo ora separatamente i termini (I)-(V). Utilizzando opportunamente le disuguaglianze di Cauchy-Schwarz e di Young, otteniamo:
5.8 Metodi di stabilizzazione
173
μ ||∇σh ||2L2 (Ω) + μ∇η2L2 (Ω) , 4 " " |b| δ hK Lσh − (η, Lσh )K = − η, δ hK |b| K K∈Th K∈Th |b| 1 hK Lσh , Lσh δ + η, η , 4 |b| δ hK K K
(I) = μ(∇η, ∇σh ) ≤ (II) = ≤
K∈Th
K∈Th
√ √ 1 √ √ (III) = 2(γ η, σh ) = 2( γ η, γ σh ) ≤ γ σh 2L2 (Ω) + 2 γ η2L2 (Ω) . 2 Per il termine (IV), grazie ancora alle disuguaglianze di Cauchy-Schwarz e di Young e in virtù dell’ipotesi (5.64) e della disuguaglianza inversa (5.52), otteniamo: (IV)
=
(η, −μΔσh )K
K∈Th
≤ ≤ ≤
h |b| 1 K Δσh , Δσh δ μ2 + η, η 4 |b| δ hK K K K∈Th K∈Th |b| 1 h2K (Δσh , Δσh )K + η, η δμ 8 δ hK K K∈Th K∈Th |b| δ C0 μ ∇σh 2L2 (Ω) + η, η . 8 δ hK K K∈Th
Il termine (V) può infine essere maggiorato ancora grazie alle due disuguaglianze di Cauchy-Schwarz e Young: hK (V) = δ Lη, Lσh |b| K K∈Th hK 1 hK Lσh , Lσh Lη, Lη . ≤ δ + δ 4 |b| |b| K K K∈Th
K∈Th
Grazie a queste maggiorazioni e sfruttando ancora la definizione (5.59) di norma GLS, otteniamo la seguente stima 1 σh 2GLS 4 δC μ hK 1 √ 0 γ σh 2L2 (Ω) + Lσh , Lσh ∇σh 2L2 (Ω) + + δ 4 |b| 8 K K∈Th |b| hK √ Lη, Lη + μ ∇η2L2 (Ω) + 2 η, η + 2 γ η2L2 (Ω) + δ δ hK |b| K K K∈Th K∈Th ./ 0 (1)
σh 2GLS = ah (η, σh ) ≤
1 ≤ σh 2GLS + E(η), 2
E(η)
174
5 Equazioni di diffusione-trasporto-reazione
avendo sfruttato, nell’ultimo passaggio, l’ipotesi 0 < δ ≤ 2C 0−1 fatta sul parametro di stabilizzazione δ. Possiamo quindi, per il momento, affermare che σh 2GLS ≤ 2 E(η). Stimiamo ora il termine E(η), maggiorando separatamente ciascuno dei suoi addendi. A tal fine utilizzeremo essenzialmente la proprietà d’approssimazione locale (5.63) e la richiesta fatta in (5.64) sul numero di Péclet locale Pe K . Osserviamo inoltre che le costanti C, introdotte nel seguito, non dipendono né da h né da Pe K , ma possono dipendere da altre quantità, come la costante γ 1 in (5.53), la costante di reazione σ, la norma ||b||L∞ (Ω) , il parametro di stabilizzazione δ. Abbiamo quindi: μ ∇η2L2 (Ω)
≤ C μ h2r |u|2Hr+1 (Ω)
||b||L∞ (Ω) h 2r 2 h |u|Hr+1 (Ω) ≤ C h2r+1 |u|2Hr+1 (Ω) ; 2 (5.67) |b| ||b||L∞ (Ω) 1 2(r+1) 2 2 η, η ≤ C h |u|Hr+1 (K) δ hK δ hK K K ≤ C
K∈Th
K∈Th
≤ Ch √ 2 γ η2L2 (Ω) ≤ 2 γ1 η2L2 (Ω) ≤ C h2(r+1) |u|2Hr+1 (Ω) , 2r+1
|u|2Hr+1 (Ω) ;
(5.68)
avendo sfruttato, per il controllo del terzo addendo, l’ipotesi (5.53). La maggiorazione del quarto addendo di E(η) risulta un po’ più laboriosa: esplicitando intanto il termine Lη, abbiamo " 12 1 hK 1 1 hK Lη, Lη Lη 1 δ = δ1 |b| |b| K L2 (K) K∈Th K∈Th " " " 1 hK hK hK 1 12 1 Δη + div(bη) + σ η1 2 = δ1−μ |b| |b| |b| L (K) K∈Th " " " 1 h 1 12 12 1 hK hK 1 1 1 1 1 1 12 K . ≤C δ 1μ +1 + 1σ Δη 1 2 div(bη)1 2 η1 2 |b| |b| |b| L (K) L (K) L (K) K∈Th (5.69) Ora, con conti analoghi a quelli seguiti per ottenere le stime (5.67) e (5.68), è facile dimostrare che il secondo e il terzo addendo del termine di destra della (5.69) sono maggiorabili con un termine della forma C h 2r+1 |u|2Hr+1 (Ω) , per un’opportuna scelta della costante C. Per il primo addendo invece si ha " 12 1 h2 μ hK 1 1 δ 1μ ≤ δ K Δη2L2 (K) Δη 1 2 |b| 2 L (K) K∈Th
≤ C δ ||b||L∞ (Ω)
K∈Th
K∈Th
h3K Δη2L2 (K) ≤ C h2r+1 |u|2Hr+1 (Ω) ,
5.8 Metodi di stabilizzazione
175
avendo ancora sfruttato le condizioni (5.63) e (5.64). Quest’ultima maggiorazione ci permette di concludere che E(η) ≤ C h2r+1 |u|2Hr+1 (Ω) , ovvero che σh GLS ≤ C hr+1/2 |u|Hr+1 (Ω) .
(5.70)
Ritornando alla (5.66), per ottenere la stima desiderata per la norma u h − uGLS , dovremmo ancora stimare η GLS . Questo porta nuovamente alla stima di tre contributi come in (5.67), (5.68) e (5.69), rispettivamente, ovvero alla stima ηGLS ≤ C hr+1/2 |u|Hr+1 (Ω) . Combinando questo risultato con la (5.70), ne segue la stima desiderata (5.65).
5.8.8 Stabilizzazione tramite funzioni a bolla Al fine di ottenere una soluzione numerica stabile si può anche utilizzare un sottospazio più ricco dello spazio V h standard, in alternativa all’arricchimento della forma bilineare a(·, ·) proposto dal metodo di Galerkin generalizzato, come illustrato nelle precedenti sezioni. L’idea è quella di scegliere sia la soluzione approssimata che la funzione test nello spazio arricchito, ovvero di rimanere nell’ambito di un metodo classico alla Galerkin. Facendo riferimento al problema standard di diffusione-trasporto-reazione della forma Lu = f , definito su Ω, completato con condizioni al bordo di Dirichlet omogenee, introduciamo lo spazio finito dimensionale Vhb = Vh ⊕ B, dove Vh = Xhr ∩ H01 (Ω) e B è lo spazio finito dimensionale delle cosiddette funzioni a bolla, ovvero B = {vB ∈ H01 (Ω) : vB |K = cK bK , bK |∂K = 0, e cK ∈ R}. Su ogni elemento K viene quindi aggiunto il termine correttivo b K per il quale sono possibili scelte differenti. Volendo lavorare solamente sulla griglia T h di partenza associata allo spazio Vh , una scelta standard porta a definire b K come bK = λ1 λ2 λ3 dove le λi , per i = 1, . . . , 3, sono le coordinate baricentriche, ovvero polinomi lineari, definiti su K, ciascuno dei quali si annulla su uno dei lati del triangolo e assume il valore 1 in corrispondenza del vertice opposto a tale lato. La funzione b K coincide in questo caso con la cosiddetta bolla cubica che vale 0 sul bordo di K e assume valori positivi al suo interno (si veda la Fig. 5.10 (a sinistra)). La costante c risulta essere così il solo grado di libertà associato al triangolo K (coinciderà, ad esempio, con il massimo valore assunto da b K su K o con il valore da essa assunto nel baricentro). Esse si possono ottenere per trasformazione delle coordinate baricentriche definite sul + λi = FK (λ +i ) (si veda la Fig. 5.9). triangolo di riferimento K,
176
5 Equazioni di diffusione-trasporto-reazione y
2
1
ˆ 1 = x, λ ˆ λ2 = 1 − (x + y), ˆ3 = y λ
ˆ K x 3
Figura 5.9. Coordinate baricentriche sul triangolo di riferimento
Osservazione 5.4 Allo scopo di introdurre sul dominio Ω una sottogriglia di calcolo (ottenuta come raffinamento opportuno della mesh T h ), si possono adottare definizioni più complesse per la funzione bolla b K . Ad esempio, la si può scegliere coincidente con una funzione lineare a pezzi definita sempre sull’elemento K e che assume ancora valore 0 sul bordo del triangolo (come la funzione di base degli elementi finiti lineari, associata ad un qualche punto interno a K) (si veda la Fig. 5.10 (a destra)) [EG04]. • Possiamo a questo punto introdurre l’approssimazione di Galerkin sullo spazio V hb del problema in esame, che assumerà la seguente forma: trovare ubh ∈ Vhb :
a(uh + ub , vhb ) = (f, vhb ) ∀vhb ∈ Vhb ,
(5.71)
essendo a(·, ·) la forma bilineare associata all’operatore differenziale L. Ci proponiamo di riscrivere la (5.71) come uno schema di Galerkin stabilizzato in V h , eliminando la funzione u b . Per il momento possiamo solo dire che, in ogni elemento K, ub K = cb,K bK , per una opportuna costante (incognita) c b,K , essendo ub ∈ B.
Figura 5.10. Un esempio di bolla cubica (a sinistra) e lineare (a destra)
5.8 Metodi di stabilizzazione
177
Scomponiamo sia u bh sia vhb come somma di una funzione di V h e di una di B, ovvero ubh = uh + ub ,
vhb = vh + vb
Scegliamo dapprima come funzione test v hb in (5.71) quella identificata da v h = 0 e vb ∈ B tale che in K, bK vb = 0 altrove. Abbiamo quindi a(uh + ub , vb ) = aK (uh + cb,K bK , bK ), avendo indicato con a K (·, ·) la restrizione della forma bilineare a(·, ·) all’elemento K. La (5.71) può dunque essere riscritta come aK (uh , bK ) + cb,K aK (bK , bK ) = (f, bK )K .
(5.72)
Sfruttando il fatto che b K si annulla sul bordo di K, possiamo integrare per parti il primo termine della (5.72), ottenendo a K (uh , bK ) = (Luh , bK )K , ovvero ricavare il valore incognito della costante c b,K , dato da cb,K =
(f − Luh , bK )K . aK (bK , bK )
Scegliamo ora come funzione test v hb in (5.71) quella identificata da una qualsiasi vh ∈ Vh , e vb = 0, ottenendo così a(uh , vh ) + cb,K aK (bK , vh ) = (f, vh ). (5.73) K∈Th
Riscriviamo opportunamente il termine a K (bK , vh ). Integrando per parti e sfruttando le definizioni di parte simmetrica e antisimmetrica dell’operatore differenziale L (si veda la Sez. 5.8.5), abbiamo
aK (bK , vh ) =
μ∇bK · ∇vh dK +
b · ∇bK vh dK +
σ bK vh dK
=
K K − μ bK Δvh dK + μ bK ∇vh · n dγ − bK ∇vh · b dK
+
K ∂K K b · n vh bK dγ + σ bK vh dK = (bK , (LS − LSS )vh )K ,
K
∂K
K
avendo sfruttato inoltre il fatto che la funzione a bolla b K si annulla sul bordo dell’elemento K ed inoltre che div(b) = 0. In maniera del tutto analoga possiamo riscrivere il denominatore della costante c b,K nel modo seguente aK (bK , bK ) = (LS bK , bK )K .
178
5 Equazioni di diffusione-trasporto-reazione
Tornando alla (5.73), abbiamo dunque a(uh , vh ) + aB (uh , f ; vh ) = (f, vh ) dove aB (uh , f ; vh ) =
∀ vh ∈ Vh ,
(Luh − f, bK )K (LSS vh − LS vh , bK )K . (LS bK , bK )K
K∈Th
Quello che abbiamo trovato è dunque uno schema di Galerkin stabilizzato, caso che si può porre nella forma (5.48), fortemente consistente. Nel caso in cui b sia costante, possiamo identificarlo con una sorta di metodo di Douglas-Wang generalizzato. Scegliendo opportunamente la bolla b K e seguendo una procedura analoga a quella sopra descritta è possibile definire anche dei metodi SUPG e GLS generalizzati [BFHR97].
5.9 Alcuni test numerici Mostriamo ora delle soluzioni numeriche ottenute con il metodo degli elementi finiti per il seguente problema di diffusione-trasporto bidimensionale: −μΔu + b · ∇u = 1 in Ω = (0, 1) × (0, 1), (5.74) u = 0 su ∂Ω, dove b = (1, 1)T . Osserviamo che la soluzione è caratterizzata da uno strato limite in corrispondenza dei lati x = 1 e y = 1. Sono stati considerati due diversi valori per la viscosità: μ = 10−3 e μ = 10−5 . Confrontiamo le soluzioni ottenute rispettivamente con il metodo standard di Galerkin e con il metodo GLS per entrambi i problemi, facendo due scelte differenti per il passo di discretizzazione h, scelto uniforme e pari a 1/20 e 1/80, rispettivamente. Le combinazioni incrociate dei 2 valori di μ ed h
Figura 5.11. Approssimazione del problema (5.74) per μ = 10−3 , h = 1/80, con il metodo di Galerkin standard (a sinistra) e GLS (a destra). Il numero di Péclet locale corrispondente è Pe = 8.84
5.10 Un esempio di adattività goal-oriented
179
4 1.6
3
1.4 1.2
2
1
1
0.8
0
0
0.6
0
0.4 0.2
−1 0.5 0
0.2
0.4
0.6
0.8
1
1
0 0
0.5 0.2
0.4
0.6
0.8
1
1
Figura 5.12. Approssimazione del problema (5.74) per μ = 10−3 , h = 1/20, con il metodo di Galerkin standard (a sinistra) e GLS (a destra). Il numero di Péclet locale corrispondente è Pe = 35.35
Figura 5.13. Approssimazione del problema (5.74) per μ = 10−5 , h = 1/80, con il metodo di Galerkin standard (a sinistra) e GLS (a destra). Il numero di Péclet locale corrispondente è Pe = 883.88
danno luogo a 4 valori distinti per il numero di Péclet locale Pe. Come si può osservare percorrendo le Fig. 5.11-5.14 (si faccia attenzione alle diverse scale verticali), per numeri di Péclet crescenti la soluzione fornita dal metodo di Galerkin standard manifesta oscillazioni sempre più marcate che arrivano a dominare completamente la soluzione numerica (si veda la Fig. 5.14). Il metodo GLS è invece in grado di formire una soluzione numerica accettabile anche per valori estremamente elevati di Pe (pur in presenza di un over-shoot in corrispondenza del punto (1, 1)).
5.10 Un esempio di adattività goal-oriented Come anticipato nell’Osservazione 3.7, l’analisi a posteriori della Sez. 3.5.4 per il controllo di un opportuno funzionale dell’errore può essere estesa a problemi differenziali di varia natura previa un’opportuna ridefinizione del residuo locale (3.82) e del salto
180
5 Equazioni di diffusione-trasporto-reazione
120 1.6
100
1.4
80
1.2
60
1
40 0.8
20
0.6
0 0
−40 0
0
0.4
−20
0.2
0.5 0.2
0.4
0.6
0.8
1
0 0
0.5 0.2
1
0.4
0.6
0.8
1
1
Figura 5.14. Approssimazione del problema (5.74) per μ = 10−5 , h = 1/20, con il metodo di Galerkin standard (a sinistra) e GLS (a destra). Il numero di Péclet locale corrispondente è Pe = 3535.5
generalizzato (3.78). L’adattazione di griglia risulta infatti particolarmente utile in presenza di problemi di diffusione-trasporto, a trasporto dominante, quando un’accurata disposizione dei triangoli della mesh in corrispondenza, ad esempio, degli eventuali strati limite (interni o di bordo) può ridurre sensibilmente il costo computazionale. Consideriamo il problema (5.1) con μ = 10 −3 , b = (y, −x)T , σ ed f identicamente nulli, e Ω coincidente con il dominio a forma di L descritto dalla relazione (0, 4)2 \(0, 2)2 (riportato in Fig. 5.15). Supponiamo di assegnare una condizione di Neumann omogenea sui lati {x = 4} e {y = 0}, una condizione di Dirichlet non omogenea (u = 1) su {x = 0} e una condizione di Dirichlet omogenea sulle restanti parti del bordo. La soluzione u di (5.1) risulta così caratterizzata da due strati limite interni di forma circolare. Al fine di validare la sensibilità della griglia adattata rispetto alla scelta fatta per il funzionale J, consideriamo le due seguenti scelte: J(v) = J1 (v) =
b · n v ds,
con
Γ1 = {x = 4} ∪ {y = 0},
Γ1
per il controllo del flusso normale uscente attraverso i lati {x = 4} e {y = 0}, e J(v) = J2 (v) =
b · n v ds,
con
Γ2 = {x = 4},
Γ2
nel caso in cui si sia interessati a controllare ancora il flusso ma attraverso il solo lato {x = 4}. Partendo da una comune griglia iniziale quasi uniforme di 1024 elementi, mostriamo in Fig. 5.15 le griglie (anisotrope) ottenute per la scelta J = J 1 (a sinistra) e J = J2 (a destra), rispettivamente alla quarta e alla seconda iterazione del procedimento adattivo. Come si può osservare, mentre entrambi gli strati limite sono responsabili del flusso attraverso Γ 1 , con conseguente infittimento della griglia in corrispondenza dei due strati limite, il solo strato limite superiore è “riconosciuto”
5.11 Esercizi 4
4
3.5
3.5
3
3
2.5
2.5
2
2
1.5
1.5
1
1
0.5
0.5
0
0
0.5
1
1.5
2
2.5
3
3.5
4
0
0
0.5
1
1.5
2
2.5
3
3.5
181
4
Figura 5.15. Quarta griglia adattata per il funzionale J1 (a sinistra); seconda griglia adattata per il funzionale J2 (a destra)
come portatore di informazioni al flusso lungo Γ 2 . Si noti infine la natura fortemente anisotropa delle mesh in figura, ovvero non solo l’infittimento bensì anche la corretta orientazione dei triangoli della griglia in modo da seguire le caratteristiche direzionali (gli strati limite) della soluzione (per ulteriori dettagli si rimanda a [FMP04]).
5.11 Esercizi 1. Si scomponga nelle sue parti simmetrica e non simmetrica l’operatore di diffusionetrasporto-reazione monodimensionale Lu = −μu + bu + σu. 2. Si scomponga nelle sue parti simmetrica e antisimmetrica l’operatore di diffusionetrasporto scritto in forma non di divergenza Lu = −μΔu + b · ∇u. 3. Si dimostri che gli elementi finiti lineari, quadratici e cubici conducono sull’intervallo di riferimento [0, 1] nel caso monodimensionale alle seguenti matrici condensate, ottenute tramite la tecnica del mass-lumping:
182
5 Equazioni di diffusione-trasporto-reazione
r=1 r=2 r=3
+ = 1 diag(1 1), ML = M 2 + = 1 diag(1 4 1), ML = M 6 ⎧ 1 ⎪ ⎨ ML = diag(1 3 3 1), 8 ⎪ ⎩ M + = 1 diag(128 648 648 128)= diag 8 , 81 , 81 , 8 . 1552 97 194 194 97
4. Si consideri il problema: −u (x) + bu (x) = 1, 0 < x < 1, u(0) = α, u(1) = β, dove > 0 e α, β, b ∈ R sono dati. Si trovi la sua formulazione ad elementi finiti con viscosità artificiale upwind. Si discutano le proprietà di stabilità e di convergenza e le si confrontino con quella della formulazione Galerkin-elementi finiti lineari. 5. Si consideri il problema: −u (x) + u (x) = 1, 0 < x < 1, u(0) = 0, u (1) = 1, con > 0 dato. Se ne scriva la formulazione debole e la sua approssimazione di tipo Galerkin con elementi finiti. Si verifichi che lo schema è stabile e si giustifichi tale risultato. 6. Si consideri il problema: ⎧ −div(μ∇u) + div(βu) + σu = f in Ω, ⎪ ⎪ ⎪ ⎨ −γ · n + μ∇u · n = 0 su ΓN , ⎪ ⎪ ⎪ ⎩ u=0 su ΓD , dove Ω è un aperto di R 2 di frontiera Γ = Γ D ∪ΓN , ΓD ∩ΓN = ∅, n è la normale uscente a Γ , μ = μ(x) > μ0 > 0, σ = σ(x) > 0, f = f (x) sono funzioni date, β = β(x), γ = γ(x) sono funzioni vettoriali assegnate. Lo si approssimi con il metodo di Galerkin-elementi finiti lineari. Si dica sotto quali ipotesi sui coefficienti μ, σ e β il metodo risulta inaccurato e si propongano nei vari casi gli opportuni rimedi. 7. Si consideri il problema di diffusione-trasporto monodimensionale −(μu − ψ u) = 1, 0 < x < 1, (5.75) u(0) = u(1) = 0, dove μ è una costante positiva e ψ una funzione assegnata.
5.11 Esercizi
183
a) Si studino esistenza ed unicità della soluzione debole del problema (5.75) introducendo opportune ipotesi sulla funzione ψ e se ne proponga un’approssimazione numerica agli elementi finiti stabile. b) Si consideri il cambio di variabile u = ρe ψ/μ , essendo ρ una funzione incognita ausiliaria. Si studino esistenza ed unicità della soluzione debole del problema (5.75) nella nuova incognita ρ e se ne fornisca l’approssimazione numerica con il metodo degli elementi finiti. c) Si confrontino i due approcci seguiti in (a) e (b), sia dal punto di vista astratto che da quello numerico. 8. Si consideri il problema di diffusione-trasporto-reazione: ⎧ −Δu + div(bu) + u = 0 in Ω ⊂ R2 , ⎪ ⎪ ⎪ ⎪ ⎨ u=ϕ su ΓD , ⎪ ⎪ ⎪ ⎪ ⎩ ∂u = 0 su ΓN , ∂n dove Ω è un aperto limitato, ∂Ω = Γ D ∪ ΓN , ΓD = ∅. Si provino esistenza ed unicità della soluzione facendo opportune ipotesi di regolarità sui dati bT = (b1 (x), b2 (x)) (x ∈ Ω) e ϕ = ϕ(x) (x ∈ ΓD ). Nel caso in cui |b| 1, si approssimi lo stesso problema con il metodo di diffusione artificiale-elementi finiti e con il metodo SUPG-elementi finiti, discutendone vantaggi e svantaggi rispetto al metodo di Galerkin-elementi finiti. 9. Si consideri il problema ⎧ 2 ⎪ ∂2u ∂2u ∂2u ∂ 2u ∂u ⎪ ⎪ − +β 2 +γ +δ 2 +η = f in Ω, ⎨ ∂xi ∂xj ∂x1 ∂x1 ∂x2 ∂x2 ∂x1 i,j=1 ⎪ ⎪ ⎪ ⎩ u=0 su ∂Ω, dove β, γ, δ, η sono coefficienti assegnati e f è una funzione assegnata di x = (x1 , x2 ) ∈ Ω. a) Si trovino le condizioni sui dati che assicurano l’esistenza e l’unicità di una soluzione debole. b) Si indichi un’approssimazione con il metodo di Galerkin-elementi finiti e se ne analizzi la convergenza. c) Sotto quali condizioni sui dati il problema di Galerkin è simmetrico? In questo caso, si indichino metodi opportuni per la risoluzione del problema algebrico.
6 Equazioni paraboliche
In questo capitolo consideriamo equazioni della forma ∂u + Lu = f, ∂t
x ∈ Ω, t > 0,
(6.1)
dove Ω è un dominio di R d , d = 1, 2, 3, f = f (x, t) è una funzione assegnata, L = L(x) è un generico operatore ellittico agente sull’incognita u = u(x, t); sotto queste ipotesi la (6.1) è un’equazione parabolica. In molti casi si è interessati a risolverla solo per un intervallo temporale finito, diciamo per 0 < t < T . In tal caso la regione QT = Ω × (0, T ) è detta cilindro nello spazio R d × R+ (si veda la Fig. 6.1). Nel caso in cui T = +∞, Q = {(x, t) : x ∈ Ω, t > 0} sarà un cilindro infinito. L’equazione (6.1) va completata assegnando una condizione iniziale u(x, 0) = u0 (x)
x ∈ Ω,
(6.2)
unitamente a condizioni al contorno, che possono assumere la forma seguente
t
x1
x2
T Ω
∂Ω
Figura 6.1. Il cilindro QT = Ω × (0, T ), Ω ⊂ R2
186
6 Equazioni paraboliche
⎧ ⎪ ⎨ u(x, t) = ϕ(x, t), ⎪ ⎩ ∂u(x, t) = ψ(x, t), ∂n
x ∈ ΓD e t > 0, (6.3)
x ∈ ΓN e t > 0, ◦
◦
dove u0 , ϕ e ψ sono funzioni assegnate e Γ D ∪ ΓN = ∂Ω, Γ D ∩ Γ N = ∅. Con ovvio significato ΓD è detta frontiera di Dirichlet e Γ N frontiera di Neumann. Nel caso monodimensionale, il problema: ⎧ ∂u ∂2u ⎪ ⎪ − ν = f, 0 < x < L, t > 0, ⎪ ⎪ ∂x2 ⎪ ⎨ ∂t (6.4) u(x, 0) = u0 (x), 0 < x < L, ⎪ ⎪ ⎪ ⎪ ⎪ ⎩ u(0, t) = u(L, t) = 0, t > 0, descrive ad esempio l’evoluzione della temperatura u(x, t) nel punto x ed al tempo t di una barra metallica di lunghezza L che occupa l’intervallo [0, L], la cui conducibilità termica è ν e i cui estremi sono tenuti ad una temperatura costante di zero gradi. La funzione u 0 descrive la temperatura iniziale, mentre f rappresenta la produzione calorica (per unità di lunghezza) fornita alla barra. Per tale ragione la (6.4) è chiamata equazione del calore. Per un caso particolare, si veda l’Esempio 1.5 del Cap. 1.
6.1 Formulazione debole e sua approssimazione Per risolvere numericamente il problema (6.1)-(6.3) ripartiremo da quanto fatto per la trattazione dei problemi ellittici. Procediamo in modo formale, moltiplicando l’equazione differenziale per ogni t > 0 per una funzione test v = v(x) ed integrando su Ω. Poniamo V = H 1ΓD (Ω) e per ogni t > 0 cerchiamo u(t) ∈ V : Ω
∂u(t) v dΩ + a(u(t), v) = F (v) ∂t
∀v ∈ V,
(6.5)
con u(0) = u0 , dove a(·, ·) e F (·) sono la forma bilineare e il funzionale associati rispettivamente all’operatore ellittico L e al termine noto f , e dove si è supposto per semplicità ϕ = 0 e ψ = 0. La modifica di (6.5) nel caso in cui ϕ = 0 e ψ = 0 è lasciata al lettore. Una condizione sufficiente per l’esistenza e unicità della soluzione per il problema (6.5) è che valgano le seguenti ipotesi: la forma bilineare a(·, ·) è continua e debolmente coerciva, ovvero ∃λ≥0, ∃α > 0 :
a(v, v) + λv2L2 (Ω) ≥ αv2V ∀v ∈ V ,
ritrovando per λ = 0 la definizione standard di coercività; inoltre, chiediamo u 0 ∈ L2 (Ω) e f ∈ L2 (Q). Allora il problema (6.5) ammette un’unica soluzione u ∈
6.1 Formulazione debole e sua approssimazione
187
L2 (R+ ; V ) ∩ C 0 (R+ ; L2 (Ω)), e ∂u/∂t ∈ L2 (R+ ; V ), essendo V il duale di V (ricordiamo che V = H−1 (Ω) se V = H10 (Ω)). Abbiamo definito: L (R ; W ) = {v : R → W : t → v(t) 2
+
+
+∞ è misurabile e v(t)2W < +∞}, 0
mentre C 0 (R+ ; W ) = {v : R+ → W : ∀t ≥ 0 v(t)W ∈ C 0 (R+ )}, essendo W uno spazio di Hilbert con norma · W . Valgono inoltre delle stime a priori della soluzione u, che verranno fornite nella prossima sezione. Consideriamo ora l’approssimazione di Galerkin del problema (6.5): per ogni t > 0, trovare u h (t) ∈ Vh t.c. ∂uh (t) vh dΩ + a(uh (t), vh ) = F (vh ) ∀vh ∈ Vh (6.6) ∂t Ω
con uh (0) = u0h , dove Vh ⊂ V è un opportuno spazio a dimensione finita e u 0h è una conveniente approssimazione di u 0 nello spazio Vh . Tale problema è detto semidiscretizzazione di (6.5), in quanto rappresenta una discretizzazione nelle sole variabili spaziali. Per fornire un’interpretazione algebrica di (6.6) procediamo come segue. Introducendo una base {ϕj } per Vh (come fatto nei capitoli precedenti), basta che la (6.6) sia verificata per le funzioni della base affinché risulti soddisfatta da tutte le funzioni del sottospazio. Inoltre, poiché per ogni t > 0 anche la soluzione del problema di Galerkin appartiene al sottospazio, avremo uh (x, t) =
Nh
uj (t)ϕj (x),
j=1
.
dove i coefficienti {u j (t)} rappresentano le incognite del problema (6.6). Indicando con uj (t) la derivata della funzione u j (t) rispetto al tempo, la (6.6) diviene: ⎛ ⎞ Nh Nh u j(t)ϕj ϕi dΩ + a ⎝ uj (t)ϕj , ϕi ⎠ = F (ϕi ), i = 1, 2, . . . , Nh
.
Ω j=1
j=1
ossia Nh
.u (t) ϕ ϕ dΩ +u (t) a(ϕ , ϕ ) = F (ϕ ), Nh
j
j=1
j
Ω
-
i
./ mij
j
0
j=1
-
j
./
aij
i
0
i
- ./ 0 fi (t)
i = 1, 2, . . . , Nh .
(6.7)
188
6 Equazioni paraboliche
Definendo il vettore delle incognite u = [u 1 (t), u2 (t), . . . , uNh (t)]T , la matrice di massa M = [mij ], la matrice di rigidezza A = [a ij ] ed il vettore dei termini noti f = [f1 (t), f2 (t), . . . , fNh (t)]T , il sistema (6.7) può essere riscritto in forma matriciale
.
Mu(t) + Au(t) = f (t). Per risolverlo si può usare, ad esempio, il θ-metodo, che discretizza la derivata temporale con un semplice rapporto incrementale e sostituisce gli altri termini con una combinazione lineare, dipendente dal parametro reale θ (0 ≤ θ ≤ 1), del valore al tempo tk e di quello al tempo t k+1 : M
uk+1 − uk + A[θuk+1 + (1 − θ)uk ] = θf k+1 + (1 − θ)f k . Δt
(6.8)
Come d’abitudine, il parametro Δt = t k+1 − tk , k = 0, 1, ..., indica il passo di discretizzazione temporale (qui supposto costante), mentre il sopraindice k sta a significare che la quantità in questione è riferita al tempo t k . Vediamo alcuni casi particolari della (6.8). - Per θ = 0 si ottiene il metodo di Eulero in avanti (o Eulero esplicito): M
uk+1 − uk + Auk = f k Δt
che è accurato al primo ordine rispetto a Δt; - per θ = 1 si ha il metodo di Eulero all’indietro (o Eulero implicito): M
uk+1 − uk + Auk+1 = f k+1 Δt
che è anch’esso del prim’ordine rispetto a Δt; - per θ = 1/2 si ha il metodo di Crank-Nicolson (o dei trapezi): M
) 1 ( k+1 ) uk+1 − uk 1 ( + A uk+1 + uk = f + fk Δt 2 2
che è accurato al second’ordine rispetto a Δt. (Più precisamente, θ = 1/2 è l’unico valore per cui si ottiene un metodo del second’ordine). Consideriamo i due casi estremi θ = 0 e θ = 1. Per entrambi si ottiene un sistema M , nel secondo caso di equazioni lineari: se θ = 0 il sistema da risolvere ha matrice Δt M ha matrice Δt +A. Osserviamo che la matrice M è invertibile, essendo definita positiva (si veda l’Esercizio 1). Nel caso θ = 0 se si rende diagonale la matrice M in realtà si disaccoppiano le equazioni del sistema. Questa operazione viene fatta eseguendo il cosiddetto lumping della matrice di massa (si veda la Sez. 5.5). Per contro lo schema esplicito non è incondizionatamente stabile (si veda la Sez. 6.4) e, nel caso in cui V h sia un sottospazio di elementi finiti, si ha una condizione di stabilità del tipo
6.2 Stime a priori
189
1 0.8 0.6
1
0.4 0.2 0
0.5
−0.2 −0.4 −0.6
−1 −1.5
1
0
−0.8
0.5
0.5 −1
−0.5
0
0.5
1
1.5
0
0
−0.5 −0.5
−1
Figura 6.2. Soluzione dell’equazione del calore per il problema dell’Esempio 6.1
Δt ≤ ch2 ,
c > 0,
la quale non permette una scelta arbitraria di Δt rispetto ad h. Nel caso θ > 0, il sistema avrà la forma Ku k+1 = g, dove g è il termine noto M e K = Δt + θA. Tale matrice è però invariante nel tempo (essendo L, e quindi A, indipendente dal tempo); se la reticolazione spaziale non cambia, può essere quindi fattorizzata una volta per tutte all’inizio del processo. Dato che M è simmetrica, se A è simmetrica anche la matrice K associata al sistema sarà simmetrica. Può essere quindi usata, ad esempio, la fattorizzazione di Cholesky, K=H H T con H triangolare inferiore. Ad ogni passo temporale andranno quindi risolti due sistemi triangolari in Nh incognite Hy = g, HT uk+1 = y, che richiedono ciascuno N h2 /2 operazioni (si veda l’Appendice B ed anche [QSS00, Cap. 3]). Esempio 6.1 Supponiamo di risolvere l’equazione del calore ∂u − 0.1Δu = 0 sul dominio ∂t Ω ⊂ R2 di Fig. 6.2, a sinistra (che è l’unione di due cerchi di raggio 0.5 e centro (−0.5, 0) e (0.5, 0), rispettivamente). Assegnamo condizioni di Dirichlet su tutto il contorno prendendo u(x, t) = 1 per i punti in ∂Ω per cui x1 ≥ 0 e u(x, t) = 0 se x1 < 0. La condizione iniziale è u(x, 0) = 1 per x1 ≥ 0 e nulla altrove. In Fig. 6.2 viene riportata la soluzione ottenuta al tempo t = 1. Sono stati usati elementi finiti lineari in spazio ed il metodo di Eulero implicito in tempo con Δt = 0.01. Come si vede la discontinuità iniziale è stata regolarizzata, compatibilmente con le condizioni al contorno.
6.2 Stime a priori Consideriamo il problema (6.5); dato che le equazioni corrispondenti devono valere per ogni v ∈ V , sarà lecito porre v = u(t) (essendo t fissato), soluzione del problema
190
6 Equazioni paraboliche
stesso:
Ω
∂u(t) u(t) dΩ + a(u(t), u(t)) = F (u(t)) ∂t
∀t > 0.
(6.9)
Considerando i singoli termini, si ha: Ω
∂u(t) 1 ∂ u(t) dΩ = ∂t 2 ∂t
|u(t)|2 dΩ; Ω
per la coercività della forma bilineare: a(u(t), u(t)) ≥ αu(t)2V ; per le disuguaglianze di Cauchy-Schwarz e di Young: F (u(t)) = (f (t), u(t)) ≤ f (t)L2 (Ω) u(t)L2 (Ω) ≤
1 1 f (t)2L2 (Ω) + u(t)2L2 (Ω) . 2 2
Supponiamo per ora f =0. Utilizzando allora le prime due relazioni e il fatto che F (v)=0, si ottiene ∂ u(t)2L2 (Ω) + 2αu(t)2V ≤ 0 ∂t
∀t > 0.
Dato che quest’ultima equazione vale per ogni t > 0 possiamo integrarla rispetto al tempo sull’intervallo (0, t), ottenendo u(t)2L2 (Ω)
t + 2α u(s)2V ds ≤ u0 2L2 (Ω)
∀t > 0;
0
in particolare si ha u(t)2L2 (Ω) < u0 2L2 (Ω)
∀t > 0.
Quest’ultima relazione assicura che l’energia cinetica del sistema si riduce nel tempo. Questo è logico e plausibile per un’equazione parabolica del tipo (6.1) la quale rappresenta un sistema dissipativo, essendo l’operatore L ellittico. Nel caso si abbia un termine di sorgente f quanto detto non sarà più vero. Ci si aspetta tuttavia una disuguaglianza analoga che tenga conto del termine di sorgente. In effetti, dalle tre relazioni sui singoli addendi e dalla (6.9) si ottiene 1 ∂ 1 1 |u(t)|2 dΩ + αu(t)2V ≤ f (t)2L2 (Ω) + u(t)2L2 (Ω) ∀t > 0, 2 ∂t Ω 2 2 da cui ∂ u(t)2L2 (Ω) + 2αu(t)2V ≤ f (t)2L2 (Ω) + u(t)2L2 (Ω) ∂t
∀t > 0.
6.2 Stime a priori
191
Integrando in tempo fra 0 e t si ottiene u(t)2L2 (Ω)
+
t 2α u(s)2V ds 0
≤
t
u0 2L2 (Ω)
+
u(s)2L2 (Ω) ds.
+
0
t
(6.10)
t f (s)2L2 (Ω) ds
0
Per “rimuovere” il termine 0 u(s)2L2 (Ω) ds a secondo membro (termine che dipende dalla storia passata del sistema evolutivo) utilizziamo il seguente risultato: Lemma 6.1 (di Gronwall) Sia A ∈ L 1 (t0 , T ) una funzione non negativa, g e ϕ delle funzioni continue su [t 0 , T ]. Se ϕ è tale che
t
A(τ )ϕ(τ )dτ
∀t ∈ [to , T ],
(6.11)
⎞ ⎛ t ϕ(t) ≤ g(t)exp ⎝ A(τ )dτ ⎠
∀t ∈ [to , T ].
(6.12)
ϕ(t) ≤ g(t) + t0
allora, se g è non-decrescente,
t0
La funzione
g(t) = u0 2L2 (Ω)
t
+ 0
f (s)2L2 (Ω) ds
è ovviamente non decrescente. Applicando allora il Lemma di Gronwall a (6.10), con A(τ ) = 1 e g(t) definita come sopra, si trova la seguente stima a priori: u(t)2L2 (Ω)
t + 2α u(s)2V ds ⎡0 ≤ et ⎣u0 2L2 (Ω) +
t
⎤ f (s)2L2 (Ω) ds⎦
∀t > 0.
0
Questo in particolare assicura che u appartiene allo spazio L2 (R+ ; V ) ∩ C0 (R+ ; L2 (Ω)).
(6.13)
Abbiamo visto che possiamo formulare il problema di Galerkin (6.6) per il problema (6.5) e che esso, sotto opportune ipotesi, ammette soluzione unica. Analogamente a quanto fatto per il problema (6.5) possiamo dimostrare la seguente stima a priori (di stabilità) per la soluzione del problema (6.6):
192
6 Equazioni paraboliche
uh (t)2L2 (Ω)
t + 2α uh (s)2V ds ⎡0 ≤ et ⎣u0h 2L2 (Ω) +
t
⎤ f (s)2L2 (Ω) ds⎦
(6.14) ∀t > 0.
0
6.3 Analisi di convergenza del problema semi-discreto Consideriamo il problema (6.5) e la sua approssimazione (6.6). Vogliamo dimostrare la convergenza di u h a u in norme opportune. Per l’ipotesi di coercività possiamo scrivere: αu − uh 2H1 (Ω)
≤ =
a(u − uh , u − uh ) a(u − uh , u − vh ) + a(u − uh , vh − uh ) ∀vh ∈ Vh .
Sottraendo l’equazione (6.6) dall’equazione (6.5) e ponendo w h = vh − uh si ha ∂(u − uh ) , wh + a(u − uh , wh ) = 0 ∂t e quindi αu −
uh 2H1 (Ω)
≤ a(u − uh , u − vh ) −
∂(u − uh ) , wh . ∂t
(6.15)
Analizziamo separatamente i due termini a secondo membro: - usando la continuità della forma a(·, ·) e la disuguaglianza di Young si ottiene a(u − uh , u − vh ) ≤ M u − uh H1 (Ω) u − vh H1 (Ω) ≤
α M2 u − uh 2H1 (Ω) + u − vh 2H1 (Ω) ; 2 2α
- scrivendo wh nella forma wh = (vh − u) + (u − uh ) si ottiene ∂(u − uh ) ∂(u − uh ) 1 d − , wh = , u − vh − u − uh 2L2 (Ω) . (6.16) ∂t ∂t 2 dt Sostituendo questi due risultati nella (6.15) otteniamo 1 d α u − uh 2L2 (Ω) + u − uh 2H1 (Ω) 2 dt 2 M2 ∂(u − uh ) ≤ u − vh 2H1 (Ω) + ( , u − vh ). 2α ∂t Moltiplicando per 2 ambo i membri ed integrando in tempo tra 0 e t:
6.3 Analisi di convergenza del problema semi-discreto
(u −
uh )(t)2L2 (Ω)
M2 α
+
t
193
t + α (u − uh )(s)2H1 (Ω) ds ≤ (u − uh )(0)2L2 (Ω) 0
t
u(s) − vh 2H1 (Ω) ds + 2 0
0
∂ (u − uh )(s), u(s) − vh ∂t
(6.17)
ds.
Integriamo per parti l’ultimo termine rispetto alla variabile temporale. Utilizzando la disuguaglianza di Young si ottiene: t 0
∂ (u − uh )(s), u(s) − vh ∂t
t ∂ ds = − (u − uh )(s), (u(s) − vh ) ds ∂t 0
+((u − uh )(t), (u − vh )(t)) − ((u − uh )(0), (u − vh )(0))
1 ≤ 4
t
t (u −
uh )(s)2L2 (Ω)
ds +
0
0
∂(u(s) − vh ) 2 1 L2 (Ω) ds + (u − uh )(t)2L2 (Ω) ∂t 4
+(u − vh )(t)2L2 (Ω) + (u − uh )(0)L2 (Ω) (u − vh )(0)L2 (Ω) .
Dalla (6.17) otteniamo pertanto t 1 2 (u − uh )(t)L2 (Ω) + α (u − uh )(s)2H1 (Ω) ds 2 ≤
2
M α
0
t
0
t
u(s) − vh 2H1 (Ω) ds + 2
0
∂(u(s) − vh ) 2 L2 (Ω) ds ∂t
(6.18)
+2(u − vh )(t)2L2 (Ω) + (u − uh )(0)2L2 (Ω) 1 +2(u − uh )(0)L2 (Ω) (u − vh )(0)L2 (Ω) + 2
t (u − uh )(s)2L2 (Ω) ds. 0
Supponiamo ora che V h sia lo spazio degli elementi finiti di grado r, più precisamente Vh = {vh ∈ Xhr : vh |ΓD = 0}, e scegliamo, ad ogni t, v h = Πhr u(t), l’interpolante di u(t) in Vh (si veda la (3.18)). Grazie alla (3.56) abbiamo, nell’ipotesi che u sia sufficientemente regolare, hu − Πhr uH1 (Ω) + u − Πhr uL2 (Ω) ≤ C2 hr+1 |u|Hr+1 (Ω) . Pertanto i vari addendi del termine di destra della disuguaglianza (6.18) si maggiorano come segue:
194
6 Equazioni paraboliche
t
t
E1
M2 = α
E2
t 1 t 1 1 ∂(u − vh ) 12 ∂u 2 2r (s)1 2 =2 1 ds ≤ C2 h ds, (s) r ∂t ∂t L (Ω) H (Ω)
E3
= 2(u − vh )(t)2L2 (Ω) ≤ C3 h2r |u|2Hr (Ω) ,
E4
= (u − uh )(0)2L2 (Ω) + 2(u − uh )(0)L2 (Ω) (u − vh )(0)L2 (Ω)
u(s) −
vh 2H1 (Ω)
ds ≤ C1 h
|u(s)|2Hr+1 (Ω) ds,
2r
0
0
0
0
≤ C4 h2r |u(0)|2Hr (Ω) . Di conseguenza E1 + E2 + E3 + E4 ≤ Ch2r N (u), ∂u . In questo modo si ottiene dove N (u) è una funzione opportuna dipendente da u e ∂t la disuguaglianza: t 1 2 (u − uh )(t)L2 (Ω) + α (u − uh )(s)2H1 (Ω) ds 2 1 ≤ Ch2r N (u) + 2
0
t
(u − uh )(s)2L2 (Ω) 0
e, infine, applicando il Lemma di Gronwall, otteniamo la stima a priori dell’errore: t 2 u − uh 2H1 (Ω) ≤ Ch2r N (u) et . ∀t > 0, (u − uh )(t)L2 (Ω) + 2α 0
Abbiamo dunque dimostrato che u h converge a u con ordine r rispetto ad h nella norma dello spazio (6.13).
6.4 Analisi di stabilità del θ-metodo Analizziamo ora la stabilità del problema totalmente discretizzato. Applicando il θ-metodo al problema di Galerkin (6.6) si ottiene ! ( ) uk+1 − ukh h , vh + a θuk+1 + (1 − θ)ukh , vh h Δt = θF k+1 (vh ) + (1 − θ)F k (vh )
(6.19)
∀vh ∈ Vh ,
per ogni k ≥ 0, con u 0h = u0 h ; F k indica che il funzionale è valutato al tempo t k . Ci limiteremo al caso in cui F = 0 ed inizieremo a considerare il caso in cui θ = 1 (metodo di Eulero implicito), ovvero
6.4 Analisi di stabilità del θ-metodo
− ukh uk+1 h , vh Δt
!
( ) + a uk+1 h , vh = 0
195
∀vh ∈ Vh .
Scelto vh = uk+1 h , si ottiene
( k+1 k+1 ) k+1 = (ukh , uk+1 (uk+1 h , uh ) + Δt a uh , uh h ).
Sfruttando ora le seguenti disuguaglianze k+1 k+1 2 a(uk+1 h , uh ) ≥ αuh V ,
(ukh , uk+1 h )≤
1 k 2 1 u 2 + uk+1 2L2 (Ω) , 2 h L (Ω) 2 h
derivanti la prima dalla coercività della forma bilineare a(·, ·) e la seconda dalle disuguaglianze di Cauchy-Schwarz e di Young, otteniamo k+1 2 2 k 2 uk+1 h L2 (Ω) + 2αΔtuh V ≤ uh L2 (Ω) .
(6.20)
Sommando sull’indice k da 0 a n − 1 deduciamo che unh 2L2 (Ω) + 2αΔt
n−1
2 2 uk+1 h V ≤ uh0 L2 (Ω) .
k=0
Nel caso in cui f = 0, utilizzando una versione discreta del Lemma di Gronwall [QV94] si può dimostrare in maniera analoga che ! n n unh 2L2 (Ω) +2αΔt ukh 2V ≤ C(tn ) u0h 2L2 (Ω) + Δtf k 2L2 (Ω) . (6.21) k=1
k=1
t Questa relazione è molto simile alla (6.14), pur di sostituire gli integrali 0 · ds con una formula di integrazione numerica composita con passo Δt. k+1 Infine, osservando che u k+1 h V ≥ uh L2 (Ω) , si deduce dalla (6.20) che, per ogni Δt > 0 fissato, lim ukh L2 (Ω) = 0,
k→∞
ovvero il metodo di Eulero all’indietro è assolutamente stabile senza che si debba fare alcuna ipotesi limitativa sul passo Δt. Prima di analizzare il caso generale in cui θ è un parametro arbitrario compreso tra 0 e 1, introduciamo la seguente definizione. Diremo che il numero λ è un autovalore della forma bilineare a(·, ·) : V × V → R e che w ∈ V ne è l’autofunzione associata se risulta a(w, v) = λ(w, v)
∀v ∈ V.
Se la forma bilineare a(·, ·) è simmetrica e coerciva essa ha infiniti autovalori reali positivi i quali formano una successione non limitata; inoltre le sue autofunzioni formano una base dello spazio V .
196
6 Equazioni paraboliche
Nel discreto gli autovalori e le autofunzioni di a(·, ·) possono essere approssimate cercando le coppie λ h ∈ R e wh ∈ Vh legate dalla relazione a(wh , vh ) = λh (wh , vh ) ∀vh ∈ Vh .
(6.22)
Dal punto di vista algebrico il problema (6.22) si formula nel modo seguente: Aw = λh Mw, in cui A è la matrice di rigidezza e M la matrice di massa. Trattasi pertanto di un problema generalizzato agli autovalori. Tali autovalori sono tutti positivi ed in numero pari ad N h (essendo, al solito, N h la dimensione del sottospazio V h ); se ordinati in modo crescente si ha λNh → ∞
per Nh → ∞.
Inoltre le corrispondenti autofunzioni formano una base per il sottospazio V h e possono essere scelte in modo da essere ortonormali rispetto al prodotto scalare di L 2 (Ω). Ciò significa che, indicando con w hi l’autofunzione corrispondente all’autovalore λ i , si ha (whi , whj ) = δij , ∀i, j = 1, . . . , Nh . Pertanto ogni v h ∈ Vh può essere rappresentato nel modo seguente Nh vh (x) = vj whj (x) j=1
e, grazie all’ortonormalità delle autofunzioni, vh 2L2 (Ω) =
Nh
vj2 .
(6.23)
j=1
Consideriamo ora θ ∈ [0, 1] arbitrario e limitiamoci al caso in cui la forma bilineare a(·, ·) sia simmetrica (in realtà il risultato finale di stabilità vale in generale, ma la dimostrazione che segue non sarebbe applicabile, in quanto le autofunzioni non formerebbero necessariamente una base). Siano {w hi } le autofunzioni (ortonormali) di a(·, ·). Poiché ukh ∈ Vh , possiamo scrivere ukh (x) =
Nh
ukj whj (x).
j=1
Osserviamo che in questo sviluppo gli u kj non rappresentano i valori nodali di u kh . Se ora nella (6.19) poniamo F = 0 e prendiamo v h = whi , troviamo: Nh Nh 1 j k i + [uk+1 − u ] w , w [θuk+1 + (1 − θ)ukj ]a(whj , whi ) = 0, j h j h Δt j=1 j j=1
per ogni i = 1, . . . , Nh . Per ogni coppia i, j = 1, . . . , N h si ha
6.4 Analisi di stabilità del θ-metodo
197
a(whj , whi ) = λj (whj , whi ) = λj δij = λi , e quindi, per ogni i = 1, . . . , N h , uk+1 − uki i + [θuk+1 + (1 − θ)uki ]λi = 0. i Δt Risolvendo ora rispetto a u k+1 si trova: i = uki uk+1 i
1 − (1 − θ)λi Δt . 1 + θλi Δt
Ricordando la (6.23) possiamo concludere che affinché il metodo sia assolutamente stabile deve essere soddisfatta la disuguaglianza 1 − (1 − θ)λi Δt 1 + θλi Δt < 1, ovvero: −1 − θλi Δt < 1 − (1 − θ)λi Δt < 1 + θλi Δt. Pertanto, −
2 − θ < θ − 1 < θ. λi Δt
La seconda disuguaglianza è sempre verificata, mentre la prima si può riscrivere come: 2θ − 1 > −
2 . λi Δt
Se θ ≥ 1/2, il primo membro è non negativo, mentre il secondo membro è negativo, per cui la disuguaglianza risulta verificata per ogni Δt. Se invece θ < 1/2, la disuguaglianza è soddisfatta e dunque il metodo è stabile solo se Δt <
2 . (1 − 2θ)λi
Poiché tale relazione deve valere per tutti gli autovalori λ i della forma bilineare, basterà chiedere che valga per il massimo di essi, che abbiamo supposto essere λ Nh . In definitiva si ha: - se θ ≥ 1/2, il θ-metodo è incondizionatamente stabile, ovvero è stabile per ogni Δt; 2 - se θ < 1/2, il θ-metodo è stabile solo per Δt ≤ . (1 − 2θ)λNh
198
6 Equazioni paraboliche
Grazie alla definizione di autovalore (6.22) e alla proprietà di continuità di a(·, ·), si deduce λNh =
a(wNh , wNh ) M wNh 2V ≤ ≤ M (1 + C 2 h−2 ). wNh 2L2 (Ω) wNh 2L2 (Ω)
La costante C > 0 che appare nell’ultimo passaggio deriva dalla seguente disuguaglianza inversa ∇vh L2 (Ω) ≤ Ch−1 vh L2 (Ω)
∀vh ∈ Vh ,
per la cui dimostrazione si rinvia a [QV94, Cap. 3]. Pertanto, per h sufficientemente piccolo, λ Nh ≤ Ch−2 . In realtà si può mostrare che λNh è effettivamente dell’ordine di h −2 , ovvero λNh = λmax ch−2 . Tenendo conto di questo fatto si ottiene che per θ < 1/2 il metodo è assolutamente stabile solo se Δt ≤ C(θ)h2 , (6.24) dove C(θ) indica una costante positiva dipendente da θ. Quest’ultima relazione implica che, per θ < 1/2, Δt non può essere scelto arbitrariamente ma è limitato dalla scelta di h.
6.5 Analisi di convergenza del θ-metodo Per confronto fra la soluzione del problema totalmente discretizzato (6.19) e quella del problema semidiscreto, utilizzando opportunamente il risultato di stabilità (6.21), nonché l’errore di troncamento della discretizzazione in tempo, si può dimostrare il seguente teorema Teorema 6.1 Nell’ipotesi che u 0 , f e la soluzione esatta siano sufficientemente regolari, vale la seguente stima a priori dell’errore: u(tn ) − unh 2L2 (Ω) + 2αΔt
n
u(tk ) − ukh 2V ≤ C(u0 , f, u)(Δtp(θ) + h2r ),
k=1
dove p(θ) = 2 se θ = 1/2, p(1/2) = 4 e C è una costante che dipende opportunamente dai suoi argomenti.
6.5 Analisi di convergenza del θ-metodo
199
Dimostrazione. Per semplicità, ci limiteremo a considerare il metodo di Eulero all’indietro (corrispondente a θ = 1): 1 k+1 k+1 (u − ukh , vh ) + a(uk+1 , vh ) h , vh ) = (f Δt h
∀vh ∈ Vh .
(6.25)
Rimandiamo il lettore a [QV94], Sez. 11.3.1, per la dimostrazione nel caso generale. Supponiamo inoltre, per semplicità, che a(·, ·) sia simmetrica, e definiamo l’operatore di proiezione ortogonale: r r Π1,h : V → Vh : ∀w ∈ V, a(Π1,h w − w, vh ) = 0
∀vh ∈ Vh .
(6.26)
Utilizzando i risultati visti nel Cap. 3, si può facilmente dimostrare che esiste una costante C > 0 t.c., ∀w ∈ V ∩ H r+1 (Ω), r r w − wH1 (Ω) + h−1 Π1,h w − wL2 (Ω) ≤ Chr |w|Hr+1 (Ω) . Π1,h
(6.27)
Osserviamo che r r u(tk )L2 (Ω) + Π1,h u(tk ) − ukh L2 (Ω) . (6.28) u(tk ) − ukh L2 (Ω) ≤ u(tk ) − Π1,h
Il primo termine può essere stimato ricorrendo alla (6.27). Per analizzare il secondo r termine, posto ε kh = ukh − Π1,h u(tk ), otteniamo 1 k+1 k+1 (ε − εkh , vh ) + a(εk+1 , vh ) h , vh ) = (δ Δt h
∀vh ∈ Vh ,
(6.29)
avendo posto, ∀v h ∈ Vh , (δ k+1 , vh ) = (f k+1 , vh )−
1 (Π r (u(tk+1 )−u(tk )), vh )−a(u(tk+1 ), vh ), (6.30) Δt 1,h
r . La ed avendo sfruttato sull’ultimo addendo l’ortogonalità (6.26) dell’operatore Π 1,h k successione {εh , k = 0, 1 . . .} soddisfa il problema (6.29) che è del tutto simile a (6.25) (pur di prendere δ k+1 al posto di f k+1 ). Adattando la stima di stabilità (6.21), si ottiene, per ogni n ≥ 1, ! n n n 2 k 2 n 0 2 k 2 εh L2 (Ω) + 2αΔt εh V ≤ C(t ) εh L2 (Ω) + Δtδ L2 (Ω) . (6.31) k=1
k=1
La norma associata all’istante iniziale può essere facilmente stimata; se, ad esempio, u0h è l’interpolato ad elementi finiti di u 0 , Πhr u0 , utilizzando opportunamente le stime (3.56) e (6.27) otteniamo: ε0h L2 (Ω)
= ≤
r u0h − Π1,h u0 L2 (Ω)
r Πhr u0 − u0 L2 (Ω) + u0 − Π1,h u0 L2 (Ω) ≤ C hr |u0 |Hr (Ω) . (6.32) Concentriamoci ora sulla stima della norma δ k L2 (Ω) . Osserviamo che, grazie alla (6.5),
200
6 Equazioni paraboliche
(f
k+1
, vh ) − a(u(t
k+1
), vh ) =
∂u(tk+1 ) , vh . ∂t
Questo ci permette di riscrivere la (6.30) come 1 ∂u(tk+1 ) k+1 (δ , vh − (Π r (u(tk+1 ) − u(tk )), vh ) , vh ) = ∂t Δt 1,h u(tk+1 ) − u(tk ) ∂u(tk+1 ) u(tk+1 ) − u(tk ) r − , vh + , vh . = I − Π1,h ∂t Δt Δt (6.33) Usando la formula di Taylor con resto in forma integrale, otteniamo ∂u(tk+1 ) u(tk+1 ) − u(tk ) 1 − = ∂t Δt Δt
tk+1
(s − tk ) tk
∂2u (s) ds, ∂t2
(6.34)
fatte le opportune richieste di regolarità sulla funzione u rispetto alla variabile temporale. Usando ora il teorema fondamentale del calcolo integrale e sfruttando la r commutatività tra l’operatore di proiezione Π 1,h e la derivata temporale, otteniamo:
t ( ∂u ) r (s) ds. u(tk+1 ) − u(tk ) = I − Π1,h ∂t k+1
I−
r Π1,h
(6.35)
tk
Scelto ora vh = δ k+1 in (6.33), grazie alle relazioni (6.34) e (6.35), possiamo dedurre la seguente maggiorazione: δ k+1 L2 (Ω) 1 1 1 t 1 1 1 t ∂u 2 1 1 1 1 k ∂ u r (s) ds1 2 I − Π1,h ≤1 (s − t ) 2 (s) ds1 2 +1 Δt ∂t Δt ∂t L (Ω) L (Ω) k+1
k+1
tk
tk
tk+1
tk+1
tk
tk
≤
1 ∂2u 1 1 1 1 ds + 1 2 (s)1 2 ∂t Δt L (Ω)
1 ∂u 1 1 1 r (s)1 2 ds. 1 I − Π1,h ∂t L (Ω)
(6.36) Ritornando alla stima di stabilità (6.31) e sfruttando la (6.32) e la stima (6.36) con gli indici opportunamente scalati, si ha εnh 2L2 (Ω)
tk 1 2 2 n 1 1∂ u 1 2r 2 ≤ C(t ) h |u0 |Hr (Ω) + Δt ds 1 2 (s)1 2 ∂t L (Ω) n
k=1
+
1 Δt2
k t
tk−1
tk−1
2 1 ∂u 1 1 1 r (s)1 2 , ds 1 I − Π1,h ∂t L (Ω)
6.6 Il caso dell’approssimazione spettrale G-NI
201
ovvero, utilizzando la disuguaglianza di Cauchy-Schwarz e la stima (6.27) per l’oper ratore di proiezione Π 1,h , εnh 2L2 (Ω)
≤
k t 1 2 n 1 1 ∂ u 12 C(tn ) h2r |u0 |2Hr (Ω) + Δt Δt ds 1 2 (s)1 2 ∂t L (Ω)
k=1
+
≤
1 Δt2
tk tk−1
tk−1
∂u hr (s) r ds ∂t H (Ω)
2
k n t 1 2 1 1 ∂ u 12 C(tn ) h2r |u0 |2Hr (Ω) + Δt2 ds 1 2 (s)1 2 ∂t L (Ω)
k=1
+
tk−1
tk n 1 2r ∂u 2 h Δt ds. (s) r Δt ∂t H (Ω) k=1
tk−1
Questo permette di maggiorare il secondo termine in (6.28) nel seguente modo 1 ∂2u 1 1 1 n 2 ∗ n εh L (Ω) ≤ C (t ) hr |u0 |Hr (Ω) + Δt 1 2 1 ∂t L2 (0,tn ;L2 (Ω)) 1 1 r 1 ∂u 1 . + h 1 1 2 ∂t L (0,tn ;Hr (Ω)) Combinando tale risultato con la stima (6.27) per la maggiorazione del primo termine in (6.28), otteniamo, per ogni n ≥ 0, 1 ∂u 1 1 3 n ) hr |u0 |Hr (Ω) + 1 u(tn ) − unh L2 (Ω) ≤ C(t 1 1 2 ∂t L (0,tn ;Hr (Ω)) 1 ∂2u 1 1 1 . + |u(tn )|Hr (Ω) + Δt 1 2 1 2 n 2 ∂t L (0,t ;L (Ω))
6.6 Il caso dell’approssimazione spettrale G-NI Consideriamo ora un’approssimazione spaziale basata sul metodo spettrale G-NI discusso nelle Sez. 4.3 e 4.4. Il θ-metodo applicato alla discretizzazione spaziale G-NI del problema di Dirichlet omogeneo (6.4), definito sull’intervallo spaziale −1 < x < 1, si formula come segue: per ogni k ≥ 0, trovare u kN ∈ VN = {vN ∈ QN : vN (−1) = vN (1) = 0} t.c. k+1 uN − ukN , vN + aN (θuk+1 + (1 − θ)ukN , vN ) N Δt N = θ (f k+1 , vN )N + (1 − θ) (f k , vN )N
∀vN ∈ VN ,
202
6 Equazioni paraboliche
con u0N = u0,N ∈ VN . Ricordiamo che (·, ·) N denota il prodotto scalare discreto ottenuto usando la formula di integrazione numerica di Gauss-Legendre-Lobatto (GLL), mentre aN (·, ·) è l’approssimazione della forma bilineare a(·, ·) ottenuta sostituendo gli integrali esatti con la suddetta formula di integrazione numerica. Si può dimostrare che il θ−metodo è anche in questo caso incondizionatamente assolutamente stabile se θ ≥ 12 , mentre per θ < 12 si ha la assoluta stabilità se Δt ≤ C(θ)N −4 .
(6.37)
In effetti, la dimostrazione si può fare ripetendo le stesse tappe percorse in precedenza nel caso dell’approssimazione agli elementi finiti. In particolare, definiamo j ) della forma bilineare a N (·, ·), per ogni le coppie autovalore-autofunzione (λ j , wN j = 1, . . . , N − 1, attraverso la relazione j j j wN ∈ VN : aN (wN , vN ) = λj (wN , vN )
Pertanto λj =
j j aN (wN , wN ) j 2 wN N
∀vN ∈ VN .
.
Usando la continuità della forma bilineare a N (·, ·), troviamo λj ≤
j 2 H1 (−1,1) M wN j 2 wN N
.
Ricordiamo ora la seguente disuguaglianza inversa per polinomi algebrici ([CHQZ06]): 2 L2 (−1,1) ≤ CI vN 2L2 (−1,1) ∃ CI > 0 : vN
Allora λj ≤
j 2 L2 (−1,1) CI2 M N 4 wN j 2 wN N
∀vN ∈ QN .
.
Ricordando la proprietà di equivalenza (4.49), concludiamo che λj ≤ 3CI2 M N 4
∀j = 1, . . . , N − 1.
Si ha inoltre la seguente stima di convergenza: t ∂u n −r 3 |u0 |Hr (Ω) + (s) C(t ) N ds ∂t Hr (Ω) n
u(tn ) − unN L2 (Ω)
≤
+
|u(tn )|Hr (Ω)
0
tn1 2 1 1∂ u 1 + Δt 1 2 (s)1 ds . ∂t L2 (Ω) 0
Per la dimostrazione si veda [CHQZ06], Cap. 7.
6.7 Esercizi
203
6.7 Esercizi 1. Si verifichi che la matrice di massa M introdotta nella (6.7) è definita positiva. 2. Si dimostri la condizione di stabilità (6.37) nel caso dell’approssimazione pseudospettrale dell’equazione (6.4) (sostituendo l’intervallo (0, 1) con (−1, 1)). [Soluzione: si proceda in modo analogo a quanto fatto nella Sez. 6.4 per la soluzione ad elementi finiti e si invochino le proprietà riportate nei Lemmi 4.2 e 4.3.] 3. Si consideri il problema: ⎧ ∂u ∂ ∂u ⎪ ⎪ − α − βu = 0 in QT = (0, 1) × (0, ∞), ⎪ ⎪ ∂t ∂x ∂x ⎪ ⎪ ⎪ ⎪ per x ∈ (0, 1), t = 0, ⎨ u = u0 ⎪ u=η ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎩ α ∂u + γu = 0 ∂x
per x = 0, t > 0, per x = 1, t > 0,
dove α = α(x), u0 = u0 (x) sono funzioni assegnate e β, γ, η ∈ R (con β positivo). a) Si provino esistenza ed unicità della soluzione debole al variare di γ, fornendo opportune limitazioni sui coefficienti ed opportune ipotesi di regolarità sulle funzioni α e u 0 . b) Si faccia la semidiscretizzazione spaziale del problema con il metodo di Galerkin-elementi finiti, e se ne faccia l’analisi di stabilità e di convergenza. c) Nel caso in cui γ = 0, si approssimi lo stesso problema con il metodo di Eulero esplicito in tempo e se ne faccia l’analisi di stabilità. 4. Si consideri il problema seguente: trovare u(x, t), 0 ≤ x ≤ 1, t ≥ 0, tale che ⎧ ∂u ∂v ⎪ ⎪ + = 0, 0 < x < 1, t > 0, ⎪ ⎪ ∂t ∂x ⎪ ⎪ ⎪ ⎪ ∂u ⎨ − γ(x)u = 0, 0 < x < 1, t > 0, v + α(x) ∂x ⎪ ⎪ ⎪ v(1, t) = β(t), u(0, t) = 0, t > 0, ⎪ ⎪ ⎪ ⎪ ⎪ ⎩ 0 < x < 1, u(x, 0) = u0 (x), dove α, γ, β, u0 sono funzioni assegnate. a) Se ne faccia una approssimazione basata su elementi finiti di grado due nella x ed il metodo di Eulero implicito nel tempo e se ne provi la stabilità. b) Come si comporterà l’errore in funzione dei parametri h e Δt? c) Si indichi un modo per fornire una approssimazione per v a partire da quella di u e se ne indichi l’errore di approssimazione.
204
6 Equazioni paraboliche
5. Si consideri il seguente problema ai valori iniziali e al contorno (di diffusionetrasporto-reazione): trovare u : (0, 1) × (0, T ) → R tale che: ⎧ ⎪ ⎪ ∂u − ∂ α ∂u + ∂ (βu) + γu = 0, 0 < x < 1, 0 < t < T, ⎪ ⎪ ∂t ∂x ∂x ∂x ⎪ ⎪ ⎪ ⎪ ⎨ u=0 per x = 0, 0 < t < T, ⎪ ∂u ⎪ ⎪ ⎪ + δu = 0 α ⎪ ⎪ ∂x ⎪ ⎪ ⎩ u(x, 0) = u0 (x),
per x = 1, 0 < t < T, 0 < x < 1, t = 0,
ove α = α(x), β = β(x), γ = γ(x), δ = δ(x), u 0 = u0 (x), x ∈ [0, 1] sono funzioni assegnate. a) Se ne scriva la formulazione debole. b) Nelle ipotesi in cui a. ∃β0 , α0 , α1 > 0 : ∀x ∈ (0, 1) α1 ≥ α(x) ≥ α0 ; β(x) ≤ β0 ; b. 12 β (x) + γ(x) ≥ 0 ∀x ∈ (0, 1), si forniscano eventuali ulteriori ipotesi sui dati affinché il problema sia ben posto. Si dia inoltre una stima a priori della soluzione. Si tratti lo stesso problema con u = g per x = 0 e 0 < t < T . c) Si consideri una semidiscretizzazione basata sul metodo degli elementi finiti lineari e se ne provi la stabilità. d) Infine, si fornisca una discretizzazione globale in cui la derivata temporale è approssimata con lo schema di Eulero implicito e se ne provi la stabilità. 6. Considerata l’equazione parabolica del calore ⎧ ∂u ∂ 2 u ⎪ ⎪ − 2 = 0, −1 < x < 1, t > 0, ⎨ ∂t ∂x ⎪ −1 < x < 1, u(x, 0) = u0 (x), ⎪ ⎩ u(−1, t) = u(1, t) = 0, t > 0, la si approssimi con il metodo pseudo-spettrale in spazio e con il metodo di Eulero implicito in tempo e se ne faccia l’analisi di stabilità. 7. Si consideri il seguente problema ai valori iniziali e al contorno del quart’ordine: trovare u : Ω × (0, T ) → R tale che: ⎧ ∂u ⎪ ⎪ − div(μ∇u) + Δ2 u + σu = 0 in Ω × (0, T ), ⎪ ⎪ ⎪ ⎨ ∂t in Ω, u(x, 0) = u0 ⎪ ⎪ ⎪ ⎪ ⎪ ⎩ ∂u = u = 0 su ΣT = ∂Ω × (0, T ), ∂n
6.7 Esercizi
205
dove Ω ⊂ R2 è un aperto limitato con bordo ∂Ω regolare, Δ 2 = ΔΔ è l’operatore biarmonico, μ(x), σ(x) e u 0 (x) sono funzioni note definite in Ω. È noto che: |Δu|2 dΩ u2H2 (Ω) ,
∀ u ∈ H20 (Ω)
Ω
ove H20 (Ω) = {u ∈ H2 (Ω) : u = ∂u/∂n = 0 su ∂Ω}. a) Se ne scriva la formulazione debole e si verifichi che la soluzione esiste ed è unica, sotto opportune condizioni sulla regolarità dei dati. b) Si consideri una semidiscretizzazione basata sul metodo degli elementi finiti triangolari e si indichi il minimo grado che tali elementi devono avere per risolvere adeguatamente il problema dato. (Osserviamo che, se T h è una triangolazione di Ω e vh|K è un polinomio per ogni K ∈ T h , allora vh ∈ H2 (Ω) se e solo se vh ∈ C 1 (Ω).)
7 Differenze finite per equazioni iperboliche
In questo capitolo ci occuperemo di problemi evolutivi di tipo iperbolico. Per la loro derivazione e per un’analisi approfondita si veda, ad esempio, [Sal04], Cap. 4. Noi ci limiteremo a considerarne l’approssimazione numerica con il metodo delle differenze finite, storicamente il primo ad essere utilizzato per questo tipo di equazioni. Per introdurre in modo semplice i concetti di base della teoria, buona parte della nostra presentazione riguarderà problemi dipendenti da una sola variabile spaziale.
7.1 Un problema di trasporto scalare Consideriamo il seguente problema iperbolico scalare ⎧ ⎨ ∂u + a ∂u = 0, t > 0, x ∈ R, ∂t ∂x ⎩ u(x, 0) = u0 (x), x ∈ R,
(7.1)
dove a ∈ R \ {0}. La soluzione di tale problema è un’onda viaggiante con velocità a data da u(x, t) = u0 (x − at), t ≥ 0. Consideriamo le curve x(t) nel piano (x, t), soluzioni delle seguenti equazioni differenziali ordinarie ⎧ ⎨ dx = a, t > 0, dt ⎩ x(0) = x0 , al variare di x0 ∈ R. Tali curve sono dette linee caratteristiche (o spesso semplicemente caratteristiche) e lungo di esse la soluzione rimane costante in quanto du ∂u ∂u dx = + = 0. dt ∂t ∂x dt
208
7 Differenze finite per equazioni iperboliche
Nel caso del problema più generale ⎧ ⎨ ∂u + a ∂u + a u = f, t > 0, x ∈ R, 0 ∂t ∂x ⎩ x ∈ R, u(x, 0) = u0 (x),
(7.2)
dove a, a0 , f sono funzioni assegnate delle variabili (x, t), le linee caratteristiche x(t) sono le soluzioni del problema di Cauchy ⎧ ⎨ dx = a(x, t), t > 0, dt ⎩ x(0) = x0 . In tal caso, le soluzioni di (7.2) soddisfano la seguente relazione d u(x(t), t) = f (x(t), t) − a0 (x(t), t)u(x(t), t). dt È quindi possibile ricavare la soluzione u risolvendo un’equazione differenziale ordinaria su ogni curva caratteristica (questo approccio porta al cosiddetto metodo delle caratteristiche). Consideriamo ora il problema (7.1) in un intervallo limitato. Ad esempio supponiamo x ∈ [0, 1] e a > 0. Poiché u è costante sulle caratteristiche, dalla Fig. 7.1 si deduce che il valore della soluzione nel punto P coincide con il valore di u 0 nel piede P0 della caratteristica uscente da P. La caratteristica uscente dal punto Q, invece, interseca la retta x = 0 per t > 0. Il punto x = 0 è, quindi, di inflow ed in esso è necessario assegnare il valore di u. Si noti che se fosse a < 0, il punto di inflow sarebbe x = 1. Facendo riferimento al problema (7.1) è opportuno osservare che se u 0 fosse una funzione discontinua nel punto x 0 , allora tale discontinuità si propagherebbe lungo la caratteristica uscente da x0 (questo processo può essere formalizzato rigorosamente dal punto di vista matematico, introducendo il concetto di soluzione debole per i problemi iperbolici). Per regolarizzare le discontinuità si potrebbe approssimare il dato iniziale u 0 con una successione di funzioni regolari u ε0 (x), ε > 0. Questo procedimento è efficace, però,
Q
t t¯
P P0
0
x 1
Figura 7.1. Esempi di linee caratteristiche (delle rette in questo caso) uscenti dai punti P e Q
7.1 Un problema di trasporto scalare
209
solo se il problema iperbolico è lineare. Le soluzioni di problemi iperbolici non lineari, possono infatti sviluppare discontinuità anche per dati iniziali regolari (come si vedrà nel Cap. 9). In questo caso, la strategia (cui si ispirano anche i metodi numerici) è quella di regolarizzare l’equazione differenziale stessa piuttosto che il dato iniziale. In tale prospettiva, si può considerare la seguente equazione parabolica di diffusione e trasporto: ∂uε ∂uε ∂ 2 uε +a = ε 2 , t > 0, x ∈ R, ∂t ∂x ∂x per piccoli valori di ε > 0. Essa è la regolarizzata parabolica dell’equazione (7.1). Se si pone u ε (x, 0) = u0 (x), si può dimostrare che lim uε (x, t) = u0 (x − at), t > 0, x ∈ R.
ε→0+
7.1.1 Una stima a priori Ritorniamo ora a considerare il problema di trasporto-reazione (7.2) su un intervallo limitato ⎧ ∂u ∂u ⎪ +a + a0 u = f, t > 0, x ∈ (α, β), ⎪ ⎪ ⎨ ∂t ∂x (7.3) x ∈ [α, β], u(x, 0) = u0 (x), ⎪ ⎪ ⎪ ⎩ u(α, t) = ϕ(t), t > 0, dove a(x), f (x, t) e ϕ(t) sono funzioni assegnate; si è fatta l’ipotesi che a(x) > 0, così che x = α è il punto di inflow (ove imporre la condizione al contorno), mentre x = β è quello di outflow. Moltiplicando la prima equazione di (7.3) per u, integrando rispetto a x e usando la formula di integrazione per parti, per ogni t > 0 si ottiene 1 d 2 dt
β
β u dx + 2
α
1 1 1 (a0 − ax )u2 dx + (au2 )(β) − (au2 )(α) = 2 2 2
α
β f u dx. α
Supponendo a0 − 12 ax ≥ μ0 ≥ 0
∀x ∈ [α, β],
si trova: 1 d 1 u(t)2L2 (α,β) + μ0 u(t)2L2 (α,β) + (au2 )(β) ≤ 2 dt 2 Se f e ϕ sono identicamente nulle, allora
β α
1 f u dx + a(α)ϕ2 (t). 2
210
7 Differenze finite per equazioni iperboliche
u(t)L2 (α,β) ≤ u0 L2 (α,β)
∀t > 0.
Nel caso generale, se supponiamo μ 0 > 0, grazie alle disuguaglianze di CauchySchwarz e di Young si ha β f u dx ≤ f L2 (α,β) uL2 (α,β) ≤ α
μ0 1 u2L2 (α,β) + f 2L2 (α,β) . 2 2μ0
Dunque, integrando rispetto al tempo, si perviene alla seguente stima a priori t u(t)2L2 (α,β)
μ0
+
u(s)2L2 (α,β)
t ds + a(β) u2 (β, s) ds
0
0
t t 1 2 2 f 2L2 (α,β) ds. u0 L2 (α,β) + a(α) ϕ (s) ds + μ0
≤
0
0
Essa mostra come la soluzione del problema si possa maggiorare in funzione dei dati del problema stesso. Una stima alternativa che non richiede la differenziabilità di a(x) ma usa l’ipotesi che a0 ≤ a(x) ≤ a1 per due opportune costanti positive a 0 e a1 può essere ottenuta moltiplicando l’equazione per a −1 , a−1
∂u ∂u + = a−1 f. ∂t ∂x
Moltiplicando ora per u e integrando tra α e β si ottiene, dopo semplici passaggi, 1 d 2 dt
β a
−1
1 (x)u (x, t) dx + u2 (β, t) = 2
β
2
α
1 a−1 (x)f (x, t)u(x, t)dx + ϕ2 (t). 2
α
Se f = 0 si ottiene immediatamente t u(t)2a
t u (β, s)ds = 2
+
u0 2a
0
dove
ϕ2 (s)ds, t > 0,
+ 0
⎛ β ⎞ 12 ua = ⎝ a−1 (x)v 2 (x)dx⎠ α
è una norma equivalente a quella di L 2 (α, β). Se invece f = 0 si può procedere come segue: t u(t)2a
t u (β, s) ds ≤ 2
+ 0
u0 2a
t ϕ (s) ds +
+ 0
t f 2a
2
0
ds +
u(s)2a ds 0
7.2 Sistemi di equazioni iperboliche lineari
211
avendo usato la disuguaglianza di Cauchy-Schwarz. Applicando ora il Lemma di Gronwall si ottiene, per ogni t > 0, ⎞ ⎛ t t t u(t)2a + u2 (β, s) ds ≤ et ⎝u0 2a + ϕ2 (s)ds + f 2a ds⎠ . (7.4) 0
0
0
7.2 Sistemi di equazioni iperboliche lineari Consideriamo un sistema lineare della forma ∂u ∂u +A = 0, ∂t ∂x u(0, x) = u0 (x), x ∈ R,
t > 0, x ∈ R,
(7.5)
dove u : [0, ∞) × R → Rp , A : R → Rp×p è una matrice assegnata, e u 0 : R → Rp è il dato iniziale. Consideriamo dapprima il caso in cui i coefficienti di A siano costanti (ovvero indipendenti sia da x sia da t). Il sistema (7.5) è detto iperbolico se A è diagonalizzabile ed ha autovalori reali. In tal caso esiste T : R → R p×p non singolare tale che A = TΛT−1 , essendo Λ = diag(λ1 , ..., λp ), con λi ∈ R per i = 1, . . . , p, la matrice diagonale degli autovalori di A mentre T = (ω 1 , ω 2 , . . . , ω p ) è la matrice i cui vettori colonna sono gli autovettori destri di A, cioè Aω k = λk ω k , k = 1, . . . , p. Tramite questa trasformazione di similitudine, è possibile riscrivere il sistema (7.5) nella forma ∂w ∂w +Λ = 0, (7.6) ∂t ∂x dove w = T−1 u sono dette variabili caratteristiche. In questo modo, si ottengono p equazioni indipendenti della forma ∂wk ∂wk + λk = 0, k = 1, . . . , p, ∂t ∂x del tutto analoghe a quella del problema (7.1) (pur di supporre a 0 e f nulle). La soluzione wk è dunque costante lungo ogni curva caratteristica, soluzione del problema di Cauchy ⎧ ⎨ dx = λ , t > 0, k dt (7.7) ⎩ x(0) = x0 .
212
7 Differenze finite per equazioni iperboliche
Essendo i λk costanti, le curve caratteristiche sono le rette x(t) = x 0 + λk t e le soluzioni sono nella forma w k (x, t) = ψk (x − λk t), dove ψk è una funzione di una sola variabile. Il suo valore è determinato dalle condizioni iniziali e dalle eventuali condizioni al bordo. Nel caso del problema (7.5), si ha che ψ k (x) = wk (x, 0), quindi, la soluzione u = Tw sarà della forma u(x, t) =
p
wk (x − λk t, 0)ω k .
k=1
Come si vede, essa è composta da p onde viaggianti non interagenti. Poiché in un sistema strettamente iperbolico p linee caratteristiche distinte passano per ogni punto del piano (x, t), per ogni t e x fissati, u(x, t) dipenderà solo dal dato iniziale nei punti x − λk t, per k = 1, . . . , p. Per questa ragione, l’insieme dei p punti che formano i piedi delle caratteristiche uscenti dal punto (x, t), cioè D(x, t)={x ∈ R | x = x − λk t , k = 1, ..., p},
(7.8)
viene chiamato dominio di dipendenza della soluzione u nel punto (x, t). Nel caso si consideri un intervallo limitato (α, β) anzichè l’intera retta reale, il segno di λk , k = 1, . . . , p, individua il punto di inflow per ognuna delle variabili caratteristiche. La funzione ψ k nel caso di un problema posto su intervallo limitato sarà determinata non solo dalle condizioni iniziali, ma anche dalle condizioni al bordo fornite all’inflow di ciascuna variabile caratteristica. Dato un punto (x, t) con x ∈ (α, β) e t > 0, se x − λk t ∈ (α, β) allora wk (x, t) è determinato dalla condizione iniziale, in particolare si ha w k (x, t) = wk (x − λk t, 0). Se invece x − λk t ∈ / (α, β) allora il valore di wk (x, t) dipenderà dalla condizione al bordo (si veda la Fig. 7.2): ⎧ x−α ⎪ ⎪ ), ⎨ se λk > 0 , wk (x, t) = wk (α, λk x−β ⎪ ⎪ ⎩ se λk < 0 , wk (x, t) = wk (β, ). λk Conseguentemente, il numero di autovalori positivi determina il numero di condizioni al bordo da assegnare in x = α, mentre in x = β andranno assegnate tante condizioni quanti sono gli autovalori negativi. Nel caso in cui i coefficienti della matrice A in (7.5) siano funzioni di x e t, indichiamo rispettivamente con ⎡
⎤ lT1 ⎢ . ⎥ L = ⎣ .. ⎦
e
R = [r1 . . . rp ] ,
lTp le matrici degli autovettori sinistri e destri di A, i cui elementi soddisfano le relazioni: Ark = λk rk ,
lTk A = λk lTk ,
7.2 Sistemi di equazioni iperboliche lineari t
t
(x1,t1)
t= (x1 − α)/ λ k
(x1 ,t 1)
(x2,t 2)
t=(x1 − β)/ λ k
(x2,t 2)
x
x 0
213
α x− λ t k 2 2
β
0
α
x− 2 λkt 2 β
Figura 7.2. Il valore di wk in un punto del piano (x, t) dipende o dalla condizione al bordo o dalla condizione iniziale, a seconda del valore di x − λk t. A sinistra e a destra viene rispettivamente riportato il caso di λk positivo o negativo
ovvero: AR = RΛ,
LA = ΛL.
Senza perdita di generalità possiamo supporre che LR = I. Supponiamo ora che esista una funzione vettoriale w soddisfacente le relazioni ∂w = R−1 , ∂u
ovvero
∂uk = rk , ∂w
k = 1, . . . , p.
Procedendo come fatto in precedenza, otteniamo R−1
∂u ∂u + ΛR−1 =0 ∂t ∂x
e dunque di nuovo il sistema diagonale (7.6). Introducendo di nuovo le curve caratteristiche (7.7) (ora non saranno più delle rette in quanto gli autovalori λ k variano al variare di x e t), avremo ancora che w è costante lungo le curve caratteristiche. Le componenti di w si chiameranno pertanto di nuovo variabili caratteristiche. Essendo R−1 = L (grazie alla relazione di normalizzazione) otteniamo ∂wk · rm = lk · rm = δkm , ∂u
k, m = 1, . . . , p.
Le funzioni wk , k = 1, . . . , p sono dette invarianti di Riemann del sistema iperbolico.
7.2.1 L’equazione delle onde Consideriamo la seguente equazione iperbolica del secondo ordine 2 ∂2u 2∂ u − γ = f, ∂t2 ∂x2
t > 0, x ∈ (α, β).
Siano u(x, 0) = u0 (x)
e
∂u (x, 0) = v0 (x) ∂t
x ∈ (α, β),
(7.9)
214
7 Differenze finite per equazioni iperboliche
i dati iniziali e supponiamo, inoltre, che u sia identicamente nulla al bordo u(α, t) = 0 e u(β, t) = 0, t > 0.
(7.10)
In questo caso, u può rappresentare lo spostamento verticale di una corda elastica vibrante di lunghezza pari a β −α, fissata agli estremi, e γ è un coefficiente dipendente dalla massa specifica della corda e dalla sua tensione. La corda è sottoposta ad una densità di forza verticale f . Le funzioni u 0 (x) e v0 (x) descrivono, rispettivamente, lo spostamento iniziale e la velocità iniziale della corda. 2 2 Come già notato nel Cap. 1, se si sostituisce ∂∂tu2 con t2 , ∂∂xu2 con x2 e f con k (costante), l’equazione delle onde diventa t2 − γ 2 x2 = k che rappresenta un’iperbole nel piano (x, t). ∂u Indichiamo per semplicità di notazioni con u t la derivata ∂u ∂t , ux la derivata ∂x e usiamo notazioni analoghe per le derivate seconde. Supponiamo ora che f sia nulla. Dall’equazione (7.9) si può dedurre che in questo caso l’energia cinetica del sistema si conserva, cioè (si veda l’Esercizio 1)
ut (t)2L2 (α,β) + γ 2 ux (t)2L2 (α,β) = v0 2L2 (α,β) + γ 2 u0x 2L2 (α,β) .
(7.11)
Con il cambio di variabili ω1 =ux , ω2 =ut , l’equazione delle onde (7.9) si trasforma nel seguente sistema del prim’ordine ∂ω ∂ω +A = f, ∂t ∂x dove
ω=
ω1 ω2
, A=
t > 0, x ∈ (α, β),
0 −γ 2
−1 0
,
f=
(7.12)
0 f
,
e le condizioni iniziali sono date da ω 1 (x, 0) = u0 (x) e ω2 (x, 0) = v0 (x). Poiché gli autovalori di A sono i due numeri reali distinti ±γ (le velocità di propagazione dell’onda), il sistema (7.12) è iperbolico. Si noti che, anche in questo caso, a dati iniziali regolari corrispondono soluzioni regolari, mentre discontinuità nei dati iniziali si propagheranno lungo le linee dx caratteristiche = ±γ. dt
7.3 Il metodo delle differenze finite
215
7.3 Il metodo delle differenze finite Considereremo ora per semplicità il caso del problema (7.1), con f = 0. Per risolverlo numericamente si possono utilizzare discretizzazioni spazio-temporali basate sul metodo delle differenze finite. In tal caso il semipiano {t > 0} viene discretizzato scegliendo un passo temporale Δt, un passo di discretizzazione spaziale h e definendo i punti di griglia (xj , tn ) nel seguente modo j ∈ Z,
xj =jh,
tn =nΔt,
n ∈ N.
Sia λ=Δt/h, e definiamo xj+1/2 =xj + h/2. Cerchiamo soluzioni discrete u nj che approssimano u(x j , tn ) per ogni j e n. I problemi ai valori iniziali iperbolici, sono spesso discretizzati in tempo con metodi espliciti. Questo, naturalmente, impone delle restrizioni sui valori di λ, restrizioni che i metodi impliciti di solito non hanno. Consideriamo, ad esempio, il problema (7.1). Un qualsiasi metodo esplicito alle differenze finite può essere scritto nella forma n n un+1 = unj − λ(Hj+1/2 − Hj−1/2 ), j
(7.13)
dove Hj+1/2 = H(uj , uj+1 ); la funzione H(·, ·) è detta flusso numerico. Lo schema numerico (7.13) nasce, essenzialmente, dalla seguente considerazione. Supponiamo che a sia costante e scriviamo l’equazione (7.1) in forma conservativa. Si ha ∂u ∂(au) + = 0, ∂t ∂x dove au è il flusso associato all’equazione (7.1). Integrando in spazio si ottiene
xj+1/2
xj−1/2
∂u x dx + [au]xj+1/2 = 0, j−1/2 ∂t
j∈Z
ovvero x
1
j+ 2 (au)(xj+ 12 ) − (au)(xj− 12 ) ∂ −1 Uj + = 0, dove Uj = h u(x) dx. ∂t h xj− 1
2
La (7.13) può ora interpretarsi come un’approssimazione in cui si discretizzi la derivata temporale con la differenza finita di Eulero in avanti, U j sia sostituita da uj e Hj+1/2 sia una opportuna approssimazione di (au)(x j+ 12 ).
216
7 Differenze finite per equazioni iperboliche
7.3.1 Discretizzazione dell’equazione scalare Nell’ambito dei metodi espliciti, i metodi numerici si differenziano a seconda di come viene scelto il flusso numerico H. In particolare, citiamo i metodi seguenti: - Eulero in avanti/centrato (EA/C) un+1 = unj − j
λ a(unj+1 − unj−1 ), 2
(7.14)
1 a(uj+1 + uj ). 2
(7.15)
che è della forma (7.13) con Hj+1/2 = - Lax-Friedrichs (LF) = un+1 j
1 n λ (u + unj−1 ) − a(unj+1 − unj−1 ), 2 j+1 2
(7.16)
anch’esso della forma (7.13) con Hj+1/2 =
1 [a(uj+1 + uj ) − λ−1 (uj+1 − uj )]. 2
(7.17)
- Lax-Wendroff (LW) un+1 = unj − j
λ λ2 a(unj+1 − unj−1 ) + a2 (unj+1 − 2unj + unj−1 ), 2 2
(7.18)
che si può riscrivere nella forma (7.13) pur di prendere Hj+1/2 =
1 [a(uj+1 + uj ) − λa2 (uj+1 − uj )]. 2
(7.19)
- Upwind (o Eulero in avanti/ decentrato) (U) un+1 = unj − j
λ λ a(unj+1 − unj−1 ) + |a|(unj+1 − 2unj + unj−1 ), 2 2
(7.20)
corrispondente alla forma (7.13) pur di definire nel modo seguente il flusso numerico: 1 Hj+1/2 = [a(uj+1 + uj ) − |a|(uj+1 − uj )]. (7.21) 2 Il metodo LF rappresenta una modifica del metodo EA/C consistente nel sostituire il valore nodale u nj in (7.14) con la media dei valori nodali precedente u nj−1 e successivo unj+1 . Il metodo LW si può derivare applicando dapprima lo sviluppo di Taylor rispetto alla variabile temporale: un+1 = un + (∂t u)n Δt + (∂tt u)n
Δt2 + O(Δt3 ), 2
7.3 Il metodo delle differenze finite
217
ove (∂t u)n indica la derivata parziale di u al tempo t n . Indi, usando l’equazione (7.1), si sostituisce ∂t u con −a∂x u, e ∂tt u con a2 ∂xx u. Trascurando il resto O(Δt 3 ) ed approssimando le derivate spaziali con differenze finite centrate, si perviene alla (7.18). Infine il metodo U si ottiene discretizzando il termine convettivo a∂ x u dell’equazione con la differenza finita upwind, come visto nel Cap. 5, Sez. 5.6. Tutti gli schemi precedentemente introdotti sono espliciti. Un esempio di metodo implicito è il seguente: - Eulero all’indietro/centrato (EI/C) un+1 + j
λ n+1 n a(un+1 j+1 − uj−1 ) = uj . 2
(7.22)
Naturalmente, anche gli schemi impliciti si possono scrivere in una forma generale simile alla (7.13) in cui H n sia sostituito da H n+1 . Nel caso specifico, il flusso numerico sarà ancora definito dalla (7.15). Il vantaggio della formulazione (7.13) è che essa può essere estesa facilmente al caso di problemi iperbolici più generali. Esamineremo, in particolare, il caso dei sistemi lineari nel Cap. 7.3.2. L’estensione al caso di equazioni iperboliche non lineari verrà invece considerato nella Sez. 9.2. Infine, indichiamo i seguenti schemi per l’approssimazione dell’equazione delle onde (7.9), sempre nel caso f = 0: - Leap-Frog [leap]un+1 − 2unj + un−1 = (γλ)2 (unj+1 − 2unj + unj−1 ). j j
(7.23)
- Newmark − 2unj + un−1 = un+1 j j
) (γλ)2 ( n−1 wj + 2wjn + wjn+1 , 4
(7.24)
dove wjn = unj+1 − 2unj + unj−1 .
7.3.2 Discretizzazione di sistemi iperbolici lineari Consideriamo il sistema lineare (7.5). Generalizzando la (7.13), uno schema numerico di approssimazione alle differenze finite può essere scritto nella forma un+1 = unj − λ(Hnj+1/2 − Hnj−1/2 ), j dove unj è il vettore approssimante u(x j , tn ) e Hj+1/2 è, ora, il flusso numerico vettoriale. La sua espressione formale si può derivare facilmente, generalizzando il caso scalare e sostituendo, a, a 2 , |a| rispettivamente con A, A 2 , |A|, nelle (7.15), (7.17), (7.19), (7.21), essendo |A|=T|Λ|T−1 ,
218
7 Differenze finite per equazioni iperboliche
dove |Λ|=diag(|λ1 |, ..., |λp |) e T è la matrice degli autovettori di A. Ad esempio, trasformando il sistema (7.5) in p equazioni di trasporto indipendenti e approssimando ognuna di esse con uno schema upwind per equazioni scalari, si ottiene il seguente schema numerico upwind per il sistema di partenza: un+1 = unj − j
λ λ A(unj+1 − unj−1 ) + |A|(unj+1 − 2unj + unj−1 ). 2 2
Il flusso numerico di tale schema è Hj+ 12 =
1 [A(uj+1 + uj ) − |A|(uj+1 − uj )]. 2
Il metodo di Lax-Wendroff diventa 1 1 un+1 = unj − λA(unj+1 − unj−1 ) + λ2 A2 (unj+1 − 2unj + unj−1 ) j 2 2 ed il suo flusso numerico è Hj+ 12 =
1 [A(uj+1 − uj ) − λA2 (uj+1 − uj )]. 2
7.3.3 Trattamento del bordo Nel caso si voglia discretizzare l’equazione iperbolica (7.3) su un intervallo limitato, si dovrà ovviamente utilizzare il nodo di inflow x = α per imporre le condizioni al bordo, ovvero u n+1 = φ(tn+1 ), mentre in tutti gli altri nodi x j , 1 ≤ j ≤ m 0 (compreso quello di outflow x m = β) si scriverà lo schema alle differenze finite. Va tuttavia osservato che gli schemi che fanno uso di una discretizzazione centrata della derivata spaziale richiedono un particolare trattamento in x m . In effetti essi richiederebbero l’uso del valore u m+1 , che non è disponibile essendo relativo al punto di coordinate β + h che giace al di fuori dell’intervallo di integrazione. Il problema può essere risolto in vari modi. Una possibilità è utilizzare unicamente per l’ultimo nodo una discretizzazione decentrata di tipo “upwind”, che non richiede la conoscenza del dato in xm+1 . Lo svantaggio è quello di usare uno schema numerico diverso e, in generale, meno accurato, per il solo nodo di bordo. Alternativamente, il valore un+1 può essere ottenuto tramite estrapolazione dai valori disponibili nei nodi interni. m Per esempio, una estrapolazione lungo le linee caratteristiche applicata ad uno schema per cui λa ≤ 1 fornisce u n+1 = unm−1 λa + unm (1 − λa). m Un’ultima possibilità consiste nell’applicare anche al nodo di outflow x m lo schema alle differenze finite centrate ed utilizzare, ove compaia u nm+1 , una sua approssimazione basata sulla estrapolazione costante (u nm+1 = unm ), o lineare (u nm+1 = 2unm − unm−1 ). La questione diviene più problematica nel caso dei sistemi iperbolici, ove si deve ricorrere al concetto di equazioni di compatibilità. Per approfondire questi aspetti ed analizzare le possibili instabilità derivanti dal trattamento numerico al bordo, il lettore può riferirsi a Strickwerda [Str89] e [QV94, Cap. 14].
7.4 Analisi dei metodi alle differenze finite
219
7.4 Analisi dei metodi alle differenze finite Analizziamo le proprietà di consistenza, stabilità e dissipazione dei metodi alle differenze finite precedentemente introdotti.
7.4.1 Consistenza e convergenza Per un dato schema numerico, l’errore di troncamento locale è l’errore che si genera pretendendo che la soluzione esatta verifichi lo schema numerico stesso. Ad esempio, nel caso dello schema (7.14), indicata con u la soluzione del problema esatto (7.1), possiamo definire l’errore di troncamento nel punto (x j , tn ) come segue τjn =
u(xj+1 , tn ) − u(xj−1 , tn ) u(xj , tn+1 ) − u(xj , tn ) +a . Δt 2h
Se l’errore di troncamento τ (Δt, h)=max|τjn | j,n
tende a zero quando Δt e h tendono a zero, indipendentemente, allora lo schema numerico si dirà consistente. Si dirà inoltre che uno schema numerico è accurato all’ordine p in tempo e all’ordine q in spazio (per opportuni interi p e q), se per una soluzione sufficientemente regolare del problema esatto, si ha τ (Δt, h) = O(Δtp + hq ). Utilizzando gli sviluppi di Taylor in modo opportuno, si può allora vedere che l’errore di troncamento dei metodi precedentemente introdotti si comporta come segue: -
Eulero in avanti o all’indietro/centrato: O(Δt + h 2 ); Upwind: O(Δt + h) ; h2 Lax-Friedrichs : O( Δt + Δt + h2 ) ; 2 Lax-Wendroff : O(Δt + h2 + h2 Δt).
Diremo infine che uno schema è convergente (nella norma del massimo) se lim (max|u(xj , tn ) − unj |) = 0.
Δt,h→0
j,n
7.4.2 Stabilità Diremo che un metodo numerico per un problema iperbolico (lineare o non lineare) è stabile se per ogni tempo T esistono una costante C T > 0 (eventualmente dipendente da T ) e un δ0 > 0 tali che un Δ ≤ CT u0 Δ , (7.25)
220
7 Differenze finite per equazioni iperboliche
per ogni n tale che nΔt ≤ T , per ogni Δt, h tali che 0 < Δt ≤ δ 0 , 0 < h ≤ δ0 e per ogni dato iniziale u 0 . Si noti che CT non deve dipendere da Δt e h. Spesso la stabilità richiede una condizione che lega il passo temporale a quello spaziale. La · Δ rappresenta una norma discreta opportuna, ad esempio ⎛ vΔ,p = ⎝h
∞
⎞ p1 |vj |p ⎠
per p = 1, 2, vΔ,∞ =sup|vj |.
(7.26)
j
j=−∞
Si noti come vΔ,p rappresenti un’approssimazione della norma L p (R), per p = 1, 2 o +∞. Lo schema implicito di Eulero all’indietro/centrato (7.22) è stabile nella norma · Δ,2 per una qualunque scelta dei parametri Δt e h (si veda l’Esercizio 2). Nel caso in cui si abbia un Δ ≤ un−1 Δ , n ≥ 1,
(7.27)
(il che implica che la (7.25) sia verificata con C T = 1) lo schema è detto fortemente stabile rispetto alla norma · Δ . Osservazione 7.1 Molto spesso nel contesto di problemi iperbolici si cercano soluzioni per tempi lunghi (cioè per T 1). In questi casi è normalmente richiesta la forte stabilità dello schema, in quanto essa garantisce che la soluzione numerica sia limitata per ogni valore di T . • Come vedremo, condizione necessaria affinché uno schema numerico esplicito della forma (7.13) sia stabile, è che il passo di discretizzazione temporale e quello spaziale siano legati tra loro dalla seguente relazione: |aλ| ≤ 1, ovvero Δt ≤
h |a|
(7.28)
che viene detta condizione CFL (da Courant, Friedrichs e Lewy) ed il numero aλ viene comunemente chiamato numero di CFL. Esso è un numero adimensionale (essendo a una velocità). L’interpretazione geometrica della condizione di stabilità CFL è la seguente. In uno schema alle differenze finite, il valore di u n+1 dipende, in generale, dai valori di j un nei tre punti xj+i , i = −1, 0, 1. Allora la soluzione u n+1 dipenderà solo dai dati j iniziali nei punti xj+i , per i = −(n + 1), ..., (n + 1) (si veda la Fig. 7.3). Il cosiddetto dominio di dipendenza numerico D Δt (xj , tn ) di unj verificherà, quindi DΔt (xj , tn ) ⊂ {x ∈ R : |x − xj | ≤ nh = Conseguentemente, per ogni punto fissato (x, t) si ha
tn }. λ
7.4 Analisi dei metodi alle differenze finite
(¯ x, t¯)
t¯ (¯ x, t¯)
t¯ r1 t¯ − Δt
x ¯ − Δx
r1
r2 x ¯
221
x ¯ + Δx
x ¯ − Δx
r2
x ¯
x ¯ + Δx
Figura 7.3. Interpretazione geometrica della condizione CFL per un sistema con p = 2, dove ¯ − λi (t − t¯) i = 1, 2. La condizione CFL è soddisfatta nel caso di sinistra, è violata nel ri = x caso di destra
t }. λ In particolare, prendendo il limite per Δt → 0, e fissando λ, il dominio di dipendenza numerico diventa DΔt (x, t) ⊂ {x ∈ R : |x − x| ≤
t }. λ La condizione (7.28) è allora equivalente all’inclusione D0 (x, t) = {x ∈ R : |x − x| ≤
D(x, t) ⊂ D0 (x, t),
(7.29)
dove D(x, t) è il dominio di dipendenza definito nella (7.8). Si noti che nel caso scalare, p = 1 e λ1 = a. Osservazione 7.2 La condizione CFL stabilisce, in particolare, che non esistono schemi alle differenze finite espliciti, incondizionatamente stabili e consistenti per problemi ai valori iniziali iperbolici. Infatti, se fosse violata la condizione CFL, esisterebbe almeno un punto x ∗ nel dominio di dipendenza non appartenente al dominio di dipendenza numerico. Cambiando il dato iniziale in x ∗ muterà allora solo la soluzione esatta e non quella numerica. Questo implica una non-convergenza del metodo e quindi anche la sua instabilità dato che, per un metodo consistente il Teorema di equivalenza di Lax-Richtmyer afferma che la stabilità è condizione necessaria e sufficiente per la convergenza di un metodo consistente. • Osservazione 7.3 Nel caso in cui a = a(x, t) non sia più costante nella (7.1), la condizione CFL diventa: h Δt ≤ , sup |a(x, t)| x∈R, t>0
e se anche il passo di discretizzazione spaziale viene fatto variare si ha Δt ≤ min k
hk sup
|a(x, t)|
,
x∈(xk ,xk+1 ), t>0
essendo hk = xk+1 − xk .
•
222
7 Differenze finite per equazioni iperboliche
Facendo riferimento al sistema iperbolico (7.5), la condizione di stabilità CFL, del tutto analoga alla (7.28), sarà Δt λk h ≤ 1, k = 1, . . . , p, dove {λk , k = 1 . . . , p} sono gli autovalori di A. Equivalentemente, Δt ≤ maxhk |λk | . Anche questa condizione può scriversi nella forma (7.29), nel senso che ogni retta x = x − λk (t − t), k = 1, . . . , p, deve intersecare la retta temporale t = t − Δt in punti x(k) appartenenti al dominio di dipendenza numerico. Teorema 7.1 Se la condizione CFL (7.28) è soddisfatta, gli schemi upwind, di Lax-Friedrichs e Lax-Wendroff sono fortemente stabili nella norma · Δ,1 . Dimostrazione. Per dimostrare la stabilità dello schema upwind (7.20) lo riscriviamo nella forma seguente (avendo supposto a > 0) un+1 = unj − λa(unj − unj−1 ). j Allora un+1 Δ,1 ≤ h
|(1 − λa)unj | + h
j
|λaunj−1 |.
j
Nell’ipotesi (7.28) entrambi i valori λa e 1 − λa sono non negativi. Pertanto: un+1 Δ,1 ≤ h(1 − λa) |unj | + hλa |unj−1 | = un Δ,1 . j
j
Dunque la disuguaglianza (7.25) è valida con C T = 1. Lo schema è dunque fortemente stabile rispetto alla norma · Δ = · Δ,1 . Per lo schema di Lax-Friedrichs, sempre nell’ipotesi (7.28), dalla (7.16) discende = un+1 j
1 1 (1 − λa)unj+1 + (1 + λa)unj−1 , 2 2
dunque un+1 Δ,1
≤ ≤
⎤ ⎡ 1 ⎣ (1 + λa)unj−1 ⎦ (1 − λa)unj+1 + h 2 j j 1 1 (1 − λa)un Δ,1 + (1 + λa)un Δ,1 = un Δ,1 . 2 2
Per lo schema di Lax-Wendroff la dimostrazione è analoga (si veda ad esempio [QV94, Cap. 14] o [Str89]).
7.4 Analisi dei metodi alle differenze finite
223
Si può infine verificare che, se la condizione CFL è verificata, lo schema upwind soddisfa un Δ,∞ ≤ u0 Δ,∞ ∀n ≥ 0, (7.30) ovvero è fortemente stabile nella norma · Δ,∞ . La relazione (7.30) è detta principio di massimo discreto (si veda l’Esercizio 4). Teorema 7.2 Lo schema di Eulero all’indietro è fortemente stabile nella norma || · ||Δ,2 , senza alcuna restrizione su Δt. Quello di Eulero in avanti, invece, non è mai fortemente stabile. Tuttavia esso è stabile con costante C T = eT /2 pur di assumere che Δt soddisfi la seguente condizione (più restrittiva della condizione CFL) 2 h Δt ≤ . (7.31) a Dimostrazione. Osserviamo che (B − A)B =
1 2 (B − A2 + (B − A)2 ) ∀A, B ∈ R. 2
(7.32)
Infatti: (B − A)B = (B − A)2 + (B − A)A =
1 ((B − A)2 + (B − A)(B + A)). 2
si trova Moltiplicando la (7.22) per u n+1 j n+1 n+1 )2 + (un+1 − unj )2 = (unj )2 − λa(un+1 . (un+1 j j j+1 − uj−1 )uj
Osservando che
n+1 n+1 (un+1 =0 j+1 − uj−1 )uj
j∈Z
(essendo una somma telescopica), si ottiene subito che ||u n+1 ||2Δ,2 ≤ ||un ||2Δ,2 , che è il risultato cercato. Moltiplichiamo ora la (7.14) per u nj . Osservando che (B − A)A =
1 2 (B − A2 − (B − A)2 ) ∀A, B ∈ R, 2
troviamo )2 = (unj )2 + (un+1 − unj )2 − λa(unj+1 − unj−1 )unj . (un+1 j j D’altro canto dalla (7.14) otteniamo che un+1 − unj = − j
λa n (u − unj−1 ) 2 j+1
(7.33)
224
7 Differenze finite per equazioni iperboliche
e dunque (un+1 )2 j
=
(unj )2
+
λa 2
2 (unj+1 − unj−1 )2 − λa(unj+1 − unj−1 )unj .
Sommando ora su j ed osservando che l’ultimo addendo dà luogo ad una somma telescopica (e pertanto non fornisce alcun contributo) si ottiene, dopo aver moltiplicato per h, un+1 2Δ,2
=
un 2Δ,2
+
λa 2
2 h (unj+1 − unj−1 )2 , j∈Z
da cui si evince che per nessun valore di Δt il metodo è fortemente stabile. Tuttavia, essendo (unj+1 − unj−1 )2 ≤ 2 (unj+1 )2 + (unj−1 )2 , troviamo che, sotto l’ipotesi (7.31), un+1 2Δ,2 ≤ (1 + λ2 a2 )un 2Δ,2 ≤ (1 + Δt)un 2Δ,2 . Procedendo ricorsivamente si trova un 2Δ,2 ≤ (1 + Δt)n u0 2Δ,2 ≤ eT u0 2Δ,2 , dove si è utilizzata la disuguaglianza (1 + Δt)n ≤ enΔt ≤ eT
∀n t.c. tn ≤ T.
Si conclude che un Δ,2 ≤ eT /2 u0 Δ,2 ,
che è il risultato di stabilità cercato.
7.4.3 Analisi di Von Neumann e coefficienti di amplificazione La stabilità di una schema nella norma || · || Δ,2 si può studiare anche con l’analisi di Von Neumann. A tal fine, facciamo l’ipotesi che la funzione u 0 (x) sia 2π-periodica e dunque si possa scrivere in serie di Fourier come segue u0 (x) =
∞ k=−∞
dove
αk eikx ,
(7.34)
7.4 Analisi dei metodi alle differenze finite
225
2π u0 (x) e−ikx dx
1 αk = 2π
0
è il k-esimo coefficiente di Fourier. Pertanto, u0j
∞
= u0 (xj ) =
αk eikjh ,
j = 0, ±1, ±2, · · ·
k=−∞
Si può verificare che applicando uno qualunque degli schemi alle differenze visti nella Sez. 7.3.1 si perviene alla seguente relazione ∞
unj =
αk eikjh γkn , j = 0, ±1, ±2, . . . ,
n ≥ 1.
(7.35)
k=−∞
Il numero γ k ∈ C è detto coefficiente d’amplificazione della k-esima frequenza (o armonica), e caratterizza lo schema in esame. Ad esempio, nel caso di Eulero in avanti centrato (EA/C) si trova u1j
aΔt ikh (e − e−ikh ) αk eikjh 1 − 2h k=−∞ ∞ aΔt ikjh i sin(kh) . 1− αk e = h =
∞
k=−∞
Pertanto, γk = 1 −
aΔt i sin(kh). h
Poiché, nel caso EA/C |γk | =
1+
2 2 12 aΔt sin(kh) , h
esistono valori di k per i quali |γ k | > 1. Pertanto per nessun valore di Δt e h lo schema è fortemente stabile. Procedendo in modo analogo per gli altri schemi si trovano i coefficienti riportati nella Tabella 7.1. Vedremo ora come l’analisi di Von Neumann può applicarsi per studiare la stabilità di uno schema numerico rispetto alla norma · Δ,2 e per accertarne le caratteristiche di dissipazione e di dispersione.
226
7 Differenze finite per equazioni iperboliche Schema γk Eulero in avanti/Centrato 1 − iaλ sin(kh) Eulero all’indietro/Centrato (1 + iaλ sin(kh))−1 Upwind 1 − |a|λ(1 − e−ikh ) Lax-Friedrichs cos kh − iaλ sin(kh) Lax-Wendroff 1 − iaλ sin(kh) − a2 λ2 (1 − cos(kh))
Tabella 7.1. Coefficiente d’amplificazione per i differenti schemi numerici presentati nella Sez. 7.3.1. Si ricorda che λ = Δt/h
Dimostriamo a tal fine il seguente risultato: Teorema 7.3 Se esiste un numero β ≥ 0, e un intero positivo m tale per cui, 1 per scelte opportune di Δt e h, si abbia |γ k | ≤ (1 + βΔt) m per ogni k, allora lo schema è stabile rispetto alla norma · Δ,2 con costante di stabilità C T = eβT /m . In particolare, se si può prendere β = 0 (e quindi |γ k | ≤ 1 ∀k) allora lo schema è fortemente stabile rispetto alla stessa norma.
Dimostrazione. Supporremo che il problema (7.1) sia posto sull’intervallo [0, 2π]. In tale intervallo, consideriamo N + 1 nodi equidistanziati, xj = jh
j = 0, . . . , N, con h =
2π , N
(con N un intero positivo pari) in cui soddisfare lo schema numerico (7.13), e un dato iniziale con uno sviluppo di Fourier −1
N 2
u0 (x) =
αk eikx .
(7.36)
k=− N 2
Si noti che u0 è una funzione periodica di periodicità 2π. Si avrà, grazie alla (7.35), −1
N 2
u0j
= u0 (xj ) =
−1
N 2
αk e
ikjh
k=− N 2
,
unj
=
αk γkn eikjh .
k=− N 2
Osserviamo che un 2Δ,2
=h
N −1 j=0
−1
N 2
k,m=− N 2
αk αm (γk γ m )n ei(k−m)jh .
7.4 Analisi dei metodi alle differenze finite
227
Essendo h
N −1
ei(k−m)jh = 2πδkm ,
−
j=0
N N ≤ k, m ≤ − 1, 2 2
(si veda, per esempio, [QSS00]) si trova −1
N 2
un 2Δ,2
= 2π
|αk |2 |γk |2n .
k=− N 2
Grazie all’ipotesi abbiamo un 2Δ,2
≤ (1 + βΔt)
2n m
−1
N 2
2π
2n
|αk |2 = (1 + βΔt) m u0 2Δ,2 , ∀n ≥ 0.
k=− N 2
Poiché 1 + βΔt ≤ eβΔt , si deduce che un Δ,2 ≤ e
βΔtn m
βT
u0 Δ,2 = e m u0 Δ,2 ∀n : nΔt ≤ T.
Ciò prova il Teorema.
Osservazione 7.4 Nel caso si richieda la stabilità forte, la condizione |γ k | ≤ 1 indicata nel Teorema 7.3 è anche necessaria. • Nel caso dello schema upwind (7.20), essendo |γk |2 = [1 − |a|λ(1 − cos kh)]2 + a2 λ2 sin2 kh, si ottiene ∀k, |γk | ≤ 1 se Δt ≤
h , |a|
(7.37)
cioè si trova che la condizione CFL garantisce la stabilità forte in norma || · || Δ,2 . Procedendo in modo analogo, si può verificare che anche per lo schema di LaxFriedrichs vale la (7.37). Lo schema di Eulero all’indietro centrato è invece incondizionatamente fortemente stabile nella norma · Δ,2 , essendo |γk | ≤ 1, per ogni k e per ogni possibile scelta di Δt e h, come già ottenuto per altra via nel Teorema 7.2. Nel caso del metodo di Eulero in avanti centrato si ha |γk |2 = 1 +
a2 Δt2 a2 Δt2 sin2 (kh) ≤ 1 + , 2 h h2
Se β > 0 è una costante tale che
k ∈ Z.
228
7 Differenze finite per equazioni iperboliche 1.2
Δt = 2 Δ t* Δt = 0.98 Δ t*
1
0.8
u0
2
0.6
0.4
0.2
0
1/3
2/3
1
x
0 0
0.5
1
1.5
2
2.5
Figura 7.4. La figura a destra mostra l’andamento di u Δ,2 , dove u è la soluzione dell’equazione (7.39) (con a = a0 = 1) ottenuta con il metodo EA/C, per due valori di Δt, uno inferiore e l’altro superiore al valore critico Δt∗ . A sinistra, il dato iniziale utilizzato n
Δt ≤ β
n
h2 a2
(7.38)
allora |γk | ≤ (1 + βΔt)1/2 . Pertanto applicando il Teorema 7.3 (con m = 2) si deduce che il metodo EA/C è stabile, seppure con una condizione più restrittiva della condizione CFL, come già dimostrato per altra via nel Teorema 7.2. Si può trovare una condizione di stabilità forte per il metodo di Eulero in avanti centrato nel caso si consideri l’equazione di trasporto e reazione ∂u ∂u +a + a0 u = 0, ∂t ∂x
(7.39)
con a0 > 0. In tal caso si ha infatti |γk |2 = 1 − 2a0 Δt + Δt2 a20 + λ2 sin2 (kh) ≤ 1 − 2a0 Δt + Δt2 a20 +
aΔt h
2
e quindi lo schema risulta essere fortemente stabile sotto la condizione Δt <
2a0 . a20 + h−2 a2
(7.40)
Esempio 7.1 Al fine di verificare numericamente la condizione di stabilità (7.40), abbiamo considerato l’equazione (7.39) nell’intervallo (0, 1) con condizioni al bordo periodiche. Si è scelto a = a0 = 1 e il dato iniziale u0 = 2 nell’intervallo (1/3, 2/3) e 0 altrove. Essendo il dato iniziale un’onda quadra, il suo sviluppo di Fourier presenta tutti i coefficienti αk non nulli. In Fig. 7.4 a destra si riporta un Δ,2 nell’intervallo di tempo (0, 2.5) per due valori di Δt, uno superiore e l’altro inferiore al valore critico Δt∗ = 2/(1 + h−2 ), fornito dalla (7.40). Si noti che per Δt < Δt+ la norma è decrescente, mentre, in caso contrario, dopo una decrescita iniziale essa cresce in modo esponenziale. La Fig. 7.5 mostra invece il risultato per a0 = 0 ottenuto con EA/C utilizzando lo stesso dato iniziale. Nella figura a sinistra si mostra l’andamento di un Δ,2 per diversi valori di h e utilizzando Δt = 10h2 , cioè variando il passo temporale seguendo la restrizione fornita dalla disuguaglianza (7.38), prendendo β = 0. Si può notare come la norma della soluzione rimanga limitata per valori di h decrescenti. A destra nella
7.4 Analisi dei metodi alle differenze finite 150
150
h=0.01 h=0.02 h=5x10−3 −3 h=2.5x10
100
100
50
50
0
229
0
0.5
1
1.5
0
h=0.01 h=0.02 h=5x10−3 −3 h=2.5x10
0
0.5
1
1.5
Figura 7.5. Andamento di un Δ,2 dove un è la soluzione ottenuta con il metodo EA/C, nel caso a0 = 0 e per diversi valori di h. A sinistra il caso in cui Δt soddisfa la condizione di stabilità (7.38). A destra i risultati ottenuti mantenendo il numero di CFL costante e pari a 0.1, violando la condizione (7.38)
stessa figura si illustra il risultato ottenuto per gli stessi valori di h prendendo come condizione Δt = 0.1h, che corrisponde a un numero di CFL costante e pari a 0.1. In questo caso la norma discreta della soluzione numerica “esplode” al decrescere di h, come atteso.
7.4.4 Dissipazione e dispersione L’analisi dei coefficienti di amplificazione, oltre a consentirci di indagare la stabilità di uno schema numerico, è utile anche a studiarne le proprietà di dissipazione e dispersione. Per capire di cosa si tratti, consideriamo la soluzione esatta del problema (7.1); per essa abbiamo la seguente relazione u(x, tn ) = u0 (x − anΔt), n ≥ 0, x ∈ R, essendo tn = nΔt. In particolare, utilizzando la (7.34) otteniamo u(xj , tn ) =
∞
αk eikjh (gk )n con gk = e−iakΔt .
(7.41)
k=−∞
Confrontando la (7.41) con la (7.35) si può notare come il coefficiente di amplificazione γk (generato dallo specifico schema numerico) sia il corrispondente di gk . Osserviamo che |g k | = 1, ∀k, mentre deve essere |γ k | ≤ 1 al fine di garantire la stabilità forte dello schema. Pertanto, γ k è un coefficiente dissipativo. Più piccolo sarà |γk |, maggiore sarà la riduzione dell’ampiezza α k , e, di conseguenza, maggiore sarà la dissipazione dello schema numerico. k| Il rapporto a (k) = |γ |gk | è chiamato errore di amplificazione (o di dissipazione) della k-esima armonica associato allo schema numerico (e nel nostro caso esso coincide con il coefficiente d’amplificazione).
230
7 Differenze finite per equazioni iperboliche
Poniamo ora φk = kh. Essendo kΔt = λφk si ottiene gk = e−iaλφk .
(7.42)
Il numero reale φ k , qui espresso in radianti, è detto angolo di fase relativo alla k-esima armonica. Riscrivendo γk nel modo seguente ω −i λφk −iωΔt = |γk |e k , γk = |γk |e e confrontando tale relazione con (7.42), possiamo dedurre che il rapporto ωk rappresenta la velocità di propagazione della soluzione numerica, relativamente alla k-esima armonica. Il rapporto d (k) =
ωh ω = ka φk a
tra tale velocità e la velocità di propagazione a della soluzione esatta è detto errore di dispersione d relativamente alla k-esima armonica. L’errore di amplificazione (o dissipazione) e quello di dispersione per gli schemi numerici fin qui analizzati variano in funzione dell’angolo di fase φ k e del numero di CFL aλ, come riportato nella Fig. 7.6. Per ragioni di simmetria si è considerato l’intervallo 0 ≤ φk ≤ π e si sono usati i gradi al posto dei radianti per indicare φ k in ascissa. Si noti come lo schema di Eulero in avanti/centrato presenti, per tutti i CFL considerati, una curva del fattore di amplificazione con valori eccedenti l’unità, in accordo con il fatto che tale schema non è mai fortemente stabile. Esempio 7.2 Nella Fig. 7.7 si confrontano i risultati numerici ottenuti risolvendo l’equazione (7.1) con a = 1 e dato iniziale u0 costituito da un pacchetto di due onde sinusoidali di eguale lunghezza d’onda l centrate nell’origine (x = 0). Nelle immagini a sinistra l = 10h, mentre a 2π 2π destra abbiamo l = 4h. Essendo k = , si ha φk = h. l l e dunque i valori dell’angolo di fase del pacchetto d’onde sono a sinistra φk = π/10 ed a destra φk = π/4. La soluzione numerica è stata calcolata per il valore 0.75 del numero di CFL, utilizzando i diversi schemi (stabili) precedentemente illustrati. Si può notare come l’effetto dissipativo sia molto forte alle alte frequenze (φk = π/4) ed in particolare per i metodi del prim’ordine (upwind, Eulero all’indietro/centrato e Lax-Friedrichs). Per poter apprezzare gli effetti di dispersione, la soluzione per φk = π/4 dopo 8 passi temporali è riportata in Fig. 7.8. Si può notare come il metodo di Lax-Wendroff sia il meno dissipativo. Inoltre, osservando attentamente la posizione delle creste d’onda numeriche rispetto a quelle della soluzione esatta, si può verificare che il metodo di Lax-Friedrichs presenta un errore di dispersione positivo, infatti l’onda numerica risulta anticipare quella esatta. Anche il metodo upwind è poco dispersivo per un numero di CFL pari a 0.75, mentre è evidente la dispersione dei metodi di Lax-Friedrichs e di Eulero all’indietro (anche dopo solo 8 passi temporali!). Inoltre, mentre la soluzione ottenuta con il metodo di Eulero all’indietro è in ritardo rispetto alla soluzione esatta.
7.4 Analisi dei metodi alle differenze finite Fattore di amplificazione Eulero esplicito
Fattore di amplificazione Eulero implicito 1
0.8
0.8 a
1.2
1
εa
1.2
ε
0.6 0.4
0.6 0.4
0.2 0 0
231
0.2 20
40
60
80
100
120
140
160
0 0
180
20
Fattore di dispersione Eulero esplicito
40
60
80
100
120
140
160
180
160
180
140
160
180
140
160
180
Fattore di dispersione Eulero implicito
0.6
0.6 ε
φ
1 0.8
εφ
1 0.8
0.4
0.4
0.2
0.2
0 0
0 20
40
60
80
κΔx
100
120
140
160
180
0
20
Fattore di amplificazione Lax−Friedrichs
60
80
κΔx
100
120
140
Fattore di amplificazione Upwind 1
0.8
0.8 a
1.2
1
εa
1.2
ε
0.6 0.4
0.6 0.4
0.2 0 0
40
0.2 20
40
60
80
100
120
140
160
0 0
180
20
Fattore di dispersione Lax−Friedrichs
40
60
80
100
120
Fattore di dispersione Upwind
5 1 φ
ε
εφ
4 3
0.5 2 1 0
0 20
40
60
80
κΔx
100
120
140
160
180
160
180
0
20
40
60
80
κΔx
100
120
Fattore di amplificazione Lax−Wendroff 1.2 1
εa
0.8 0.6 0.4 0.2 0 0
20
40
60
80
100
120
140
Fattore di dispersione Lax−Wendroff
CFL CFL CFL CFL
εφ
1
0.5
0 0
20
40
60
80
κΔx
100
120
140
160
= = = =
0.25 0.50 0.75 1.00
180
Figura 7.6. Errori di amplificazione e dispersione per differenti schemi numerici in funzione dell’angolo di fase φk = kh e per diversi valori del numero di CFL
232
7 Differenze finite per equazioni iperboliche Lax−Wendroff CFL= 0.75, φ =π/10,t= 1.0
Lax−Wendroff CFL= 0.75, φk=π/4,t= 1.0 1
0.5
0.5
0
0
u
u
k
1
−0.5
−0.5
−1 −1
−1 −0.5
0
0.5
1 x
1.5
2
2.5
3
−1
−0.5
1
0.5
0.5
0
0
u
u
k
−0.5
0
0.5
1 x
1.5
2
2.5
3
−1
−0.5
2.5
3
0
0.5
1
1.5
2
2.5
3
2.5
3
2.5
3
Upwind CFL= 0.75, φk=π/4,t= 1.0
k
1
0.5
0.5
0
0
u
u
2
x
Upwind CFL= 0.75, φ =π/10,t= 1.0
−0.5
−0.5
−1
−1 −0.5
0
0.5
1 x
1.5
2
2.5
3
−1
−0.5
0
0.5
1
1.5
2
x
Backward Euler CFL= 0.75, φ =π/10,t= 1.0
Backward Euler CFL= 0.75, φk=π/4,t= 1.0
k
1
1
0.5
0.5
0
0
u
u
1.5
−1 −0.5
1
−0.5
−0.5
−1 −1
1
−0.5
−1
−1
0.5
Lax−Friedrichs CFL= 0.75, φk=π/4,t= 1.0
1
−1
0
x
Lax−Friedrichs CFL= 0.75, φ =π/10,t= 1.0
−1 −0.5
0
0.5
1 x
1.5
2
2.5
3
−1
−0.5
0
0.5
1
1.5
2
x
Figura 7.7. Soluzione numerica del trasporto convettivo di un pacchetto d’onde sinusoidali di diversa lunghezza d’onda (l = 10h a sinistra, l = 4h a destra) ottenuta con differenti schemi numerici (la dicitura ‘Backward Euler’ sta per ‘Eulero all’indietro’). In linea continua la soluzione numerica per t = 1, in linea tratteggiata la soluzione esatta allo stesso istante temporale
7.5 Equazioni equivalenti Lax−Wendroff CFL= 0.75, φ x=π/4
Lax−Friedrichs CFL= 0.75, φ =π/4 k
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
u
u
k
0
−0.2
−0.2
−0.4
−0.4
−0.6
−0.6
−0.8
−0.8
−1
−1 −0.5
0
0.5
1
1.5
−0.5
0
x
0.5
1
1.5
x
Upwind CFL= 0.75, φ =π/4
Backward Euler CFL= 0.75, φ =π/4
k
k
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
u
u
233
0
−0.2
−0.2
−0.4
−0.4
−0.6
−0.6
−0.8
−0.8
−1
−1 −0.5
0
0.5
1
1.5
x
−0.5
0
0.5
1
1.5
x
Figura 7.8. Soluzione numerica del trasporto convettivo di un pacchetto d’onde sinusoidali. In linea continua è riportata la soluzione dopo 8 passi temporali. In linea tratteggiata la corrispondente soluzione esatta (la dicitura ‘Backward Euler’ sta per ‘Eulero all’indietro’)
7.5 Equazioni equivalenti Ad ogni schema numerico possiamo associare una famiglia di equazioni differenziali, dette equazioni equivalenti.
7.5.1 Il caso dello schema upwind Concentriamoci dapprima sullo schema upwind. Supponiamo esista una funzione regolare v(x, t) che soddisfi l’equazione alle differenze (7.20) in ogni punto (x, t) ∈ R × R+ (e non solo nei nodi di griglia (x j , tn )!). Possiamo allora scrivere (nel caso in cui a > 0) v(x, t + Δt) − v(x, t) v(x, t) − v(x − h, t) +a = 0. Δt h
(7.43)
234
7 Differenze finite per equazioni iperboliche
Usando gli sviluppi di Taylor rispetto a x e rispetto a t relativamente al punto (x, t) possiamo scrivere, nell’ipotesi che v sia di classe C 4 rispetto a x e a t, v(x, t + Δt) − v(x, t) Δt Δt2 = vt + vtt + vttt + O(Δt3 ), Δt 2 6 a
v(x, t) − v(x − h, t) ah ah2 = avx − vxx + vxxx + O(h3 ), h 2 6
dove le derivate a secondo membro sono tutte valutate nel punto (x, t). Grazie alla (7.43) deduciamo che, in ogni punto (x, t), la funzione v soddisfa la relazione vt + avx = RU + O(Δt3 + h3 ),
(7.44)
con
1 1 (ah vxx − Δt vtt ) − (ah2 vxxx + Δt2 vttt ). 2 6 Derivando formalmente tale equazione rispetto a t, troviamo: RU =
vtt + avxt = RtU + O(Δt3 + h3 ). Derivandola invece rispetto a x, abbiamo: vxt + avxx = RxU + O(Δt3 + h3 ).
(7.45)
vtt = a2 vxx + RtU − aRxU + O(Δt3 + h3 )
(7.46)
Pertanto, il che ci consente di ottenere dalla (7.44) 1 Δt U (Rt − aRxU )+ O(Δt3 + h3 ), (7.47) vt + avx = μvxx − (ah2 vxxx + Δt2 vttt )− 6 2 con
1 ah(1 − (aλ)). (7.48) 2 Ricordiamo che λ = Δt/h. Derivando ora formalmente la (7.46) rispetto a t, quindi la (7.45) rispetto a x, troviamo: μ=
vttt
=
U U a2 vxxt + Rtt − aRxt + O(Δt3 + h3 )
=
U U U + Rtt − aRxt + O(Δt3 + h3 ). −a3 vxxx + a2 Rxx
(7.49)
Abbiamo inoltre che RtU = RxU
1 Δt ah2 Δt2 ah vxxt − vttt − vxxxt − vtttt , 2 2 6 6
1 Δt ah2 Δt2 vttx − vxxxx − vtttx . = ah vxxx − 2 2 6 6
(7.50)
7.5 Equazioni equivalenti
Usando le relazioni (7.49) e (7.50) nella (7.47) otteniamo: a2 Δt2 ah2 3aΔt 1− vxxx vt + avx = μvxx − − 2 6 h 2h Δt Δt vttt − ah vxxt − aΔt vttx + -4 ./ 0 (A)
+
Δt (Δt2 vtttt − aΔt2 vtttx + ah2 vxxxt − a2 h2 vxxxx ) 12
−
a2 Δt2 U Δt2 U Δt2 U Rxx − Rtt + a R + O(Δt3 + h3 ). 6 6 6 xt
235
(7.51)
Interessiamoci ora delle derivate terze di v contenute nel termine (A). Grazie alla (7.49), alla (7.45) e alla (7.46), troviamo, rispettivamente: vttt = −a3 vxxx + r1 , vxxt = −a vxxx + r2 , vttx = a2 vxxx + r3 , essendo r1 , r2 ed r3 termini che contengono derivate di v di ordine non inferiore al quarto, nonché infinitesimi di ordine O(Δt 3 + h3 ). (Si osservi che dalla definizione di RU discende che le sue derivate di ordine due si esprimono attraverso derivate di v di ordine non inferiore al quarto.) Raccogliendo i coefficienti che moltiplicano v xxx , deduciamo pertanto dalla (7.51) che: vt + avx = μvxx + νvxxx + R4 (v) + O(Δt3 + h3 ),
(7.52)
essendo
ah2 (1 − 3aλ + 2(aλ)2 ), (7.53) 6 ed avendo indicato con R 4 (v) l’insieme dei termini contenenti le derivate di v di ordine non inferiore al quarto. Possiamo concludere che la funzione v soddisfa l’equazione ν=−
vt + avx = 0
(7.54)
se si trascurano i termini contenenti derivate di ordine superiore al primo, l’equazione vt + avx = μvxx
(7.55)
se si trascurano i termini contenenti derivate di ordine superiore al secondo, e l’equazione vt + avx = μvxx + νvxxx (7.56) se si trascurano le derivate di ordine superiore al terzo, essendo μ e ν definiti in (7.48) e (7.53). Le (7.54), (7.55) e (7.56) si chiamano equazioni equivalenti (al primo, secondo e terz’ordine, rispettivamente) relative allo schema upwind.
236
7 Differenze finite per equazioni iperboliche
7.5.2 Il caso dei metodi di Lax-Friedrichs e Lax-Wendroff Procedendo in modo analogo si possono derivare le equazioni equivalenti di un qualunque schema numerico. Ad esempio, nel caso dello schema di Lax-Friedrichs, indicata con v un’ipotetica funzione che verifichi l’equazione (7.16) in ogni punto (x, t), osservato che ) 1( h2 v(x + h, t) + v(x − h, t) = v + vxx + O(h4 ), 2 2 ) h3 1( v(x + h, t) − v(x − h, t) = h vx + vxxx + O(h4 ), 2 6 otteniamo vt + avx = RLF + O
h4 Δt
+ Δt3 ,
(7.57)
questa volta essendo RLF =
h2 a h2 λ2 (vxx − λ2 vtt ) − (vxxx + vttt ). 2Δt 6 a
Procedendo come fatto in precedenza, calcoli tediosi consentono di dedurre dalla (7.57) le equazioni equivalenti (7.54)-(7.56), in questo caso essendo μ=
h2 ah2 (1 − (aλ)2 ), ν = (1 − (aλ)2 ). 2Δt 3
Nel caso dello schema di Lax-Wendroff le equazioni equivalenti sono caratterizzate dai seguenti parametri: μ = 0,
ν=
ah2 ((aλ)2 − 1). 6
7.5.3 Sul significato dei coefficienti nelle equazioni equivalenti In generale, nelle equazioni equivalenti, il termine μv xx rappresenta una dissipazione, mentre νvxxx una dispersione. Ce ne possiamo rendere conto in modo euristico esaminando la soluzione del problema vt + avx = μvxx + νvxxx , x ∈ R, t > 0, (7.58) k ∈ Z. v(x, 0) = eikx , Applicando la trasformata di Fourier si trova, se μ = ν = 0, v(x, t) = eik(x−at) , mentre per μ e ν numeri reali arbitrari (con μ > 0) si ha
7.5 Equazioni equivalenti 2
v(x, t) = e−μk t eik[x−(a+νk
2
)t]
237
.
Confrontando queste due relazioni si vede che il modulo della soluzione viene abbattuto tanto maggiormente quanto più μ è grande. Tale effetto è tanto più rilevante quanto più la frequenza k è grande (fenomeno già rilevato, con argomentazioni in parte differenti, nella precedente sezione). Il termine μvxx nella (7.58) ha pertanto un effetto dissipativo sulla soluzione. Confrontando ancora fra loro le due espressioni precedenti, si vede che la presenza del termine ν modifica la velocità di propagazione della soluzione, aumentandola nel caso ν > 0, diminuendola se ν < 0. Anche in questo caso l’effetto è più rilevante ad alte frequenze. Quindi, il termine di derivata terza νv xxx introduce un effetto dispersivo. In generale, nell’equazione equivalente, derivate spaziali di ordine pari rappresentano termini diffusivi, mentre derivate di ordine dispari rappresentano termini dispersivi. Per gli schemi del prim’ordine (come l’upwind) l’effetto dispersivo è spesso poco visibile, in quanto mascherato da quello dissipativo. Prendendo Δt e h dello stesso ordine, dalla (7.55) e (7.56) si evince che ν << μ per h → 0, essendo ν = O(h 2 ) e μ = O(h). In particolare, se il numero di CFL vale 12 l’equazione equivalente al terzo ordine del metodo upwind presenta dispersione nulla, in accordo con i risultati numerici visti nella sezione precedente. L’effetto dispersivo è invece evidente per lo schema di Lax-Friedrichs, così come per lo schema di Lax-Wendroff che, essendo del second’ordine, non presenta un termine dissipativo del tipo μv xx . Tuttavia, essendo stabile, non può non essere dissipativo, ed in effetti l’equazione equivalente del quart’ordine per lo schema di Lax-Wendroff è vt + avx =
ah2 ah3 [(aλ)2 − 1]vxxx − aλ[1 − (aλ)2 ]vxxxx , 6 6
dove l’ultimo termine è dissipativo se |aλ| < 1, come si può facilmente verificare applicando la trasformata di Fourier. Si ritrova dunque, anche per il metodo di LaxWendroff, la condizione CFL.
7.5.4 Equazioni equivalenti e analisi dell’errore La tecnica utilizzata per ottenere le equazioni equivalenti presenta una stretta analogia con la cosiddetta analisi all’indietro che si incontra nella risoluzione numerica di sistemi lineari, dove la soluzione calcolata (non esatta) viene interpretata come soluzione esatta di un sistema lineare perturbato (si veda [QSS00, Cap. 3]). In effetti, il sistema perturbato gioca un ruolo analogo a quello dell’equazione equivalente. Osserviamo inoltre che l’analisi dell’errore di una schema numerico si può dedurre dalla conoscenza dell’equazione equivalente ad esso associata. In effetti, indicando genericamente con r = μv xx + νvxxx il termine a destra della equazione equivalente, per confronto con la (7.1) otteniamo l’equazione dell’errore et + aex = r,
238
7 Differenze finite per equazioni iperboliche
dove e = v − u. Moltiplicando tale equazione per e e integrando in spazio e in tempo (fra 0 e t) otteniamo ⎛ ⎞ " t e(t)L2 (R) ≤ C(t) ⎝e(0)L2 (R) + r(s)2L2 (R) ds⎠ , t > 0 0
avendo usato la stima a priori (7.4). Possiamo supporre e(0) = 0 ed osservare quindi che e(t)L2 (R) tende a zero (per h e Δt tendenti a zero) all’ordine 1 per lo schema upwind o di Lax-Friedrichs, e all’ordine 2 per Lax-Wendroff (avendo supposto v regolare quanto basta).
7.6 Esercizi 1. Si verifichi che la soluzione del problema (7.9)-(7.10) (con f = 0) soddisfa l’identità (7.11). [Soluzione: Moltiplicando la (7.9) per u t ed integrando in spazio si ottiene β
β utt ut dx−
0= α
1 γ uxx ut dx = 2
β
α
β [(ut ) ]t dx+
2
γ 2 ux uxt dx−[γ 2 ux ut ]βα .
2
α
α
(7.59) Essendo β
1 utt ut dx = 2
α
β
β [(ut ) ]t dx e 2
α
1 γ ux uxt dx = 2
β γ 2 [(ux )2 ]t dx,
2
α
α
integrando in tempo la (7.59), si ha β
β u2t (t)
dx +
α
β γ 2 u2x (t)
dx −
α
β v02
α
dx −
u20x dx = 0.
(7.60)
α
Da quest’ultima relazione segue subito (7.11).] 2. Verificare che la soluzione fornita dallo schema (7.22) di Eulero all’indietro/centrato è incondizionatamente stabile; più precisamente uΔ,2 ≤ u0 Δ,2
∀Δt, h.
[Soluzione: Si noti che − unj )un+1 ≥ (un+1 j j
) 1 ( n+1 2 |uj | − |unj |2 2
∀j, n.
7.6 Esercizi
239
∞
n+1 n+1 Si noti inoltre che j=−∞ (un+1 = 0. j+1 − uj−1 )uj n+1 Allora, moltiplicando la (7.22) per u j e sommando sull’indice j si trova
|un+1 |2 ≤ j
j
|un |2
∀n ≥ 0,
j
da cui segue il risultato.] 3. Si dimostri la (7.30) [Soluzione: Osserviamo che lo schema upwind si può riscrivere nella forma (nel caso in cui a > 0) un+1 = (1 − aλ)unj + aλunj−1 . j Nell’ipotesi (7.28) entrambi i coefficienti aλ e 1 − aλ sono non negativi, pertanto min(unj , unj−1 ) ≤ un+1 ≤ max(unj , unj−1 ). j Allora inf {u0l } ≤ unj ≤ sup{u0l } ∀j ∈ Z, ∀n ≥ 0,
l∈Z
l∈Z
da cui segue la (7.30).] 4. Si studi l’accuratezza dello schema di Lax-Friedrichs (7.16) per la soluzione del problema (7.1). 5. Si studi l’accuratezza dello schema di Lax-Wendroff (7.18) per la soluzione del problema (7.1).
8 Elementi finiti e metodi spettrali per equazioni iperboliche
In questo capitolo illustreremo come applicare il metodo degli elementi finiti per la discretizzazione spaziale e/o temporale di equazioni iperboliche scalari. Tratteremo sia il caso di elementi continui sia quello di elementi discontinui. Consideriamo il problema di trasporto (7.3) e per semplicità poniamo (α, β) = (0, 1), ϕ = 0 e supponiamo che a sia una costante positiva ed a 0 sia una costante non negativa. Procediamo con una discretizzazione spaziale con elementi finiti continui. Cerchiamo pertanto una semidiscretizzazione della seguente forma: ∀t > 0, trovare u h = uh (t) ∈ Vh t.c. ∂uh ∂uh , vh + a , vh + a0 (uh , vh ) = (f, vh ) ∀vh ∈ Vh , (8.1) ∂t ∂x essendo u0h l’approssimazione del dato iniziale. Come d’abitudine, indicheremo poi con unh , n ≥ 0, l’approssimazione al tempo t n = nΔt. Abbiamo posto Vh = {vh ∈ Xhr : vh (0) = 0},
r ≥ 1.
Lo spazio Xhr è definito come in (3.12), pur di sostituire (a, b) con (0, 1).
8.1 Discretizzazione temporale Per la discretizzazione temporale del problema (8.1) si possono usare schemi alle differenze finite come quelli introdotti nel capitolo precedente.
8.1.1 Gli schemi di Eulero in avanti e all’indietro Nel caso si utilizzi lo schema di Eulero in avanti il problema discreto diventa: ∀n ≥ 0, trovare u n+1 ∈ Vh tale che h n ) 1 ( n+1 ∂uh uh − unh , vh + a , vh + a0 (unh , vh ) = (f n , vh ) ∀vh ∈ Vh , (8.2) Δt ∂x
242
8 Elementi finiti e metodi spettrali per equazioni iperboliche
1 dove (u, v) = 0 u(x)v(x)dx ∀u, v ∈ L2 (0, 1). Nel caso del metodo di Eulero all’indietro, anziché (8.2) avremo n+1 ) ( ) ( ) ∂uh 1 ( n+1 uh − unh , vh + a , vh + a0 un+1 , vh = f n+1 , vh ∀vh ∈ Vh . h Δt ∂x (8.3) Teorema 8.1 Lo schema di Eulero all’indietro è fortemente stabile senza alcuna restrizione su Δt. Quello di Eulero in avanti, invece, lo è solo per a 0 > 0, pur di supporre che 2a0 Δt ≤ (8.4) (aCh−1 + a0 )2 per una opportuna costante C = C(r). Dimostrazione. Scegliendo v h = unh in (8.2), si ottiene (nel caso in cui f = 0) n ) ( n+1 ∂uh n , uh + Δta0 unh 2L2 (0,1) = 0. uh − unh , unh + Δta ∂x Per il primo addendo usiamo l’identità (v − w, w) =
1 v2L2 (0,1) − w2L2 (0,1) − v − w2L2 (0,1) ∀v, w ∈ L2 (0, 1), (8.5) 2
che generalizza la (7.33). Per il secondo addendo integrando per parti ed utilizzando le condizioni al bordo si trova n ∂uh n 1 , uh = (unh (1))2 . ∂x 2 Si ottiene quindi un+1 2L2 (0,1) + aΔt(unh (1))2 + 2a0 Δtunh 2L2 (0,1) h = unh 2L2 (0,1) + un+1 − unh 2L2 (0,1) . h
(8.6)
Cerchiamo ora una stima per il termine u n+1 − unh 2L2 (0,1) . A tale scopo, ponendo h n+1 n nella (8.2) vh = uh − uh , otteniamo n ( ) ∂u − unh 2L2 (0,1) ≤ Δta ∂xh , un+1 − unh + Δta0 unh , un+1 − unh un+1 h h h ∂un ≤ Δt a ∂xh L2 (0,1) + a0 unh L2 (0,1) un+1 − unh L2 (0,1) . h Utilizzando ora la disuguaglianza inversa (5.34) (particolarizzata all’intervallo (α, β), otteniamo
8.1 Discretizzazione temporale
(
243
)
un+1 − unh L2 (0,1) ≤ Δt aCI h−1 + a0 unh L2 (0,1) . h In definitiva, (8.6) diviene un+1 2L2 (0,1) + aΔt(unh (1))2 h +Δt 2a0 − Δt(aCI h−1 + a0 )2 unh 2L2 (0,1) ≤ unh 2L2 (0,1) .
(8.7)
Se la (8.4) è soddisfatta, allora u n+1 L2 (0,1) ≤ unh L2 (0,1) e si ha dunque una h 2 stabilità forte in norma L (0, 1). Nel caso in cui a0 = 0 la condizione di stabilità ricavata perde di significato. Tuttavia se supponiamo che Kh2 Δt ≤ 2 2 , a CI per una qualche costante K > 0, allora si può applicare il Lemma di Gronwall (nella sua forma discreta) alla (8.7) e si trova che il metodo è stabile con una costante di stabilità che in questo caso dipende dal tempo finale T . Precisamente, unh L2 (0,1) ≤ exp (Ktn )u0h L2 (0,1) ≤ exp (KT )u0h L2 (0,1) . . Usando Nel caso del metodo di Eulero all’indietro (8.3), scegliamo v h = un+1 h ora la relazione 1 (v − w, v) = v2L2 (0,1) − w2L2 (0,1) + v − w2L2 (0,1) ∀v, w ∈ L2 (0, 1) (8.8) 2 che generalizza la (7.32), si trova, (1 + 2a0 Δt)un+1 2L2 (0,1) + aΔt(un+1 (1))2 ≤ unh 2L2 (0,1) . h h
(8.9)
Pertanto si ha stabilità forte in L 2 (0, 1), incondizionata (ovvero per ogni Δt) e per ogni a0 ≥ 0.
8.1.2 Gli schemi upwind, di Lax-Friedrichs e Lax-Wendroff La generalizzazione al caso degli elementi finiti degli schemi alle differenze finite di Lax-Friedrichs (LF), di Lax-Wendroff (LW) e upwind (U) si può fare in diversi modi. Iniziamo con l’osservare che le (7.16), (7.18) e (7.20) si possono riscrivere nella seguente forma comune: un+1 − unj unj+1 − unj−1 unj+1 − 2unj + unj−1 j = 0, +a −μ Δt 2h h2 dove μ è il coefficiente di viscosità numerica dato da
(8.10)
244
8 Elementi finiti e metodi spettrali per equazioni iperboliche
⎧ 2 ⎪ ⎨ h /2Δt (LF), μ = a2 Δt/2 (LW), ⎪ ⎩ ah/2 (U).
(8.11)
La (8.10) suggerisce la seguente versione agli elementi finiti: ∈ Vh tale che ∀n ≥ 0, trovare u n+1 h n ) 1 ( n+1 ∂uh n u , vh + a0 (unh , vh ) − uh , vh + a Δt h ∂x n ∂un ∂uh ∂vh , − μγ h (1)vh (1) = (f n , vh ) ∀vh ∈ Vh , +μ ∂x ∂x ∂x
(8.12)
dove γ = 1, 0 a seconda che si voglia o meno tener conto del contributo di bordo nell’integrazione per parti effettuata nel termine di viscosità numerica. Per l’analisi di stabilità, nel caso γ = 0, a 0 = 0, a > 0, si ponga vh = un+1 − unh , h in modo da ottenere, grazie alla disuguaglianza (3.39): un+1 − unh L2 (0,1) ≤ Δt(a + μCI h−1 ) h
∂unh L2 (0,1) . ∂x
Posto ora vh = unh si ottiene, grazie alla (8.5): un+1 2L2 (0,1) h
∂unh 2 2 ∂x L (0,1) ∂un ≤ Δt2 (a + μCI h−1 )2 h 2L2 (0,1) . ∂x
−
unh 2L2 (0,1) + aΔt(unh (1))2 + 2Δtμ
=
un+1 − unh 2L2 (0,1) h
Una condizione sufficiente per la stabilità forte è pertanto: Δt ≤
2μ . (a + μCI h−1 )2
Ad esempio, nel caso del metodo upwind si trova 2 1 h . Δt ≤ a 1 + CI /2 √ Essendo CI ≤ 2 3, per elementi finiti lineari si può richiedere 2 aΔt 1 √ ≤ . h 1+ 3 L’analisi di stabilità appena sviluppata è basata sul metodo dell’energia e, in questo caso, conduce a risultati non ottimali. Una migliore indicazione si può ottenere ricorrendo all’analisi di Von Neumann. A tale fine osserviamo che la (8.12) con f = 0, nel caso di elementi finiti lineari e spaziatura h costante, si può riscrivere, per ogni nodo interno xj , nel modo seguente:
8.1 Discretizzazione temporale
1 n+1 λa n a0 (uj+1 + 4un+1 (uj+1 − unj−1 ) + (unj+1 + 4unj + unj−1 ) + un+1 j j−1 ) + 6 2 6 unj+1 − 2unj + unj−1 1 −μΔt = (unj+1 + 4unj + unj−1 ). 2 h 6
245
(8.13)
Confrontando tale relazione con la (8.10), si può notare come la differenza risieda solo nel termine che proviene dalla derivata temporale e dal termine di ordine zero, ed è dovuto alla presenza della matrice di massa nel caso degli elementi finiti. D’altra parte si è già visto nella Sez. 5.5 che si può applicare la tecnica del mass-lumping per approssimare la matrice di massa con una matrice diagonale. Così facendo lo schema (8.13) si riduce effettivamente a (8.10) (si veda l’Esercizio 1). Osservazione 8.1 Si noti che le relazioni fornite si riferiscono ai nodi interni. Il modo di trattare le condizioni di bordo con il metodo agli elementi finiti dà in generale luogo a relazioni diverse da quelle che si ottengono con il metodo alle differenze finite. • Queste considerazioni ci permettono di estendere tutti gli schemi visti nella Sez. 7.3.1 a schemi analoghi, generati da discretizzazioni in spazio con elementi finiti lineari continui. A tale scopo, basterà infatti sostituire il termine u n+1 − unj con j 1 n+1 n [(u − unj−1 ) + 4(un+1 − unj ) + (un+1 j j+1 − uj+1 )]. 6 j−1 Così facendo, lo schema generale (7.13) viene sostituito da 1 n+1 1 n+1 n+1 n∗ n∗ (u +4un+1 +un+1 +un+1 j j−1 ) = (uj−1 +4uj j−1 )−λ(Hj+1/2 −Hj−1/2 ), (8.14) 6 j−1 6 dove n∗ Hj+1/2 =
⎧ n ⎨ Hj+1/2
per un avanzamento temporale esplicito,
⎩ H n+1 j+1/2
per un avanzamento temporale implicito.
Si noti che in questo caso, anche se si adotta un flusso numerico corrispondente ad un avanzamento temporale esplicito, lo schema risultante dà luogo ad un sistema non più diagonale (in effetti diventa un sistema tridiagonale) a causa della presenza del termine di massa. Potrebbe quindi sembrare che l’uso di uno schema esplicito agli elementi finiti sia non conveniente rispetto ad uno schema analogo alle differenze finite. Tuttavia, tali schemi hanno delle caratteristiche interessanti. In particolare, consideriamone i coefficienti d’amplificazione e di dispersione, utilizzando l’analisi di Von Neumann illustrata nella Sez. 7.4.3. A tale scopo supponiamo che l’equazione differenziale sia definita su tutto R, o, alternativamente, consideriamo un intervallo limitato, ma imponiamo condizioni al contorno periodiche, in modo da poter assumere che la relazione (8.14) sia valida per tutti i valori dell’indice j. Semplici calcoli ci portano a scrivere la seguente relazione tra il coefficiente d’amplificazione γk di uno schema alle differenze finite (vedi Tabella 7.1) e il coefficiente d’amplificazione γ kFEM del corrispondente schema ad elementi finiti:
246
8 Elementi finiti e metodi spettrali per equazioni iperboliche
γkFEM =
3γk − 1 + cos (φk ) , 2 + cos (φk )
(8.15)
dove con φk si è ancora indicato l’angolo di fase relativo alla k-esima armonica (si veda la Sez. 7.4.3). Possiamo quindi calcolare gli errori di amplificazione e di dispersione, che sono stati riportati in Fig. 8.1. Confrontandoli con gli analoghi errori relativi alle differenze finite (riportati in Fig. 7.6) si possono fare le seguenti osservazioni. Lo schema di Eulero in avanti è ancora incondizionatamente instabile (nel senso della stabilità forte). Lo schema upwind (FEM) è fortemente stabile se il numero di CFL è inferiore a 13 (dunque un risultato meno restrittivo di quanto trovato con il metodo dell’energia), mentre il metodo di Lax-Friedrichs (FEM) non soddisfa mai la condizione γkF EM ≤ 1 (in questo caso in accordo con il risultato che si troverebbe utilizzando il metodo dell’energia). Più in generale, si può affermare che nel caso di schemi con trattamento temporale esplicito la versione “agli elementi finiti” richiede condizioni di stabilità più restrittive di quella alle differenze finite. In particolare per lo schema Lax-Wendroff ad elementi finiti, che indicheremo con LW (FEM), il numero di CFL deve essere ora inferiore a √1 , anziché a 1 come nel caso delle differenze finite. Tuttavia, lo schema LW (FEM) 3 (per i valori di CFL per cui è stabile), risulta essere leggermente meno diffusivo e dispersivo dell’equivalente schema alle differenze finite per un ampio spettro di valori dell’angolo di fase φ k = kh. Lo schema di Eulero implicito resta incondizionatamente stabile anche nella versione FEM (coerentemente con quanto ottenuto usando il metodo dell’energia nella Sez. 8.1.1). Esempio 8.1 Le precedenti conclusioni sono state verificate sperimentalmente nell’esempio che segue. Abbiamo ripetuto il caso della Fig. 7.7 a destra, dove ora abbiamo considerato un valore di CFL pari a 0.5. Le soluzioni numeriche ottenute con il metodo di Lax-Wendroff classico (LW) e con LW (FEM) per t = 2 sono riportate in Fig. 8.2. Si può notare come lo schema LW (FEM) fornisca una soluzione più accurata e soprattutto più in fase con la soluzione esatta. Questo dato è confermato dal valore della norma · Δ,2 dell’errore nei due casi. Si ha infatti, indicando con u la soluzione esatta e con uLW e uLW (F EM ) quella ottenuta con i due schemi numerici, uLW − uΔ,2 = 0.78, uLW (F EM ) − uΔ,2 = 0.49. Altri test sono stati eseguiti utilizzando condizioni al contorno non periodiche ed hanno evidenziato come i risultati di stabilità rimangano validi.
8.2 Gli schemi Taylor-Galerkin Illustriamo ora una classe di schemi agli elementi finiti che prendono il nome di schemi “Taylor-Galerkin”. Essi sono derivati in maniera analoga a quella usata per derivare lo schema di Lax-Wendroff, ed infatti vedremo che la versione LW (FEM) fa parte di tale classe.
8.2 Gli schemi Taylor-Galerkin Fattore di Amplificazione Eulero Esplicito (FEM)
Fattore di Amplificazione Eulero Implicito (FEM) 1
0.8
0.8 a
1.2
1
εa
1.2
ε
0.6 0.4
0.6 0.4
0.2 0 0
247
0.2 20
40
60
80
100
120
140
160
0 0
180
Fattore di Dispersione per Eulero Esplicito (FEM)
20
40
60
80
100
120
140
160
180
Fattore di Dispersione per Eulero Implicito (FEM)
0.6
0.6 ε
φ
1 0.8
εφ
1 0.8
0.4
0.4
0.2
0.2
0 0
0 20
40
60
80
κΔx
100
120
140
160
180
0
20
Fattore di amplificazione Lax−Friedrichs (FEM)
80
κΔx
100
120
140
160
180
0.8
0.8
160
180
160
180
a
1
εa
1.2
1
ε
0.6 0.4
0.6 0.4
0.2
0.2 20
40
60
80
100
120
140
160
0 0
180
20
Fattore di dispersione Lax−Friedrichs (FEM)
40
60
80
100
120
140
Fattore di dispersione Upwind (FEM) 4
6
3.5
5
3 φ
ε
εφ
4
2.5
3
2
2
1.5
1 0
60
Fattore di amplificazione Upwind (FEM)
1.2
0 0
40
1 20
40
60
80
κΔx
100
120
140
160
180
0
20
40
60
80
κΔx
100
120
140
Fattore di amplificazione Lax−Wendroff (FEM) 1.2 1
εa
0.8 0.6 0.4 0.2 0 0
20
40
60
80
100
120
140
160
180
Fattore di dispersione Lax−Wendroff (FEM) 2
CFL CFL CFL CFL
εφ
1.5 1
0.5 0 0
20
40
60
80
κΔx
100
120
140
160
= = = =
0.25 0.50 0.75 1.00
180
Figura 8.1. Errori di amplificazione e dispersione per differenti schemi numerici agli elementi finiti ottenuti dallo schema generale (8.14)
248
8 Elementi finiti e metodi spettrali per equazioni iperboliche
1 0.8
LW LW(FEM) Esatta
0.6 0.4
u
0.2 0 −0.2 −0.4 −0.6 −0.8 −1 0.5
1
1.5
2
2.5
3
x
Figura 8.2. Confronto della soluzione ottenuta con lo schema Lax-Wendroff alle differenze finite (LW) e la versione agli elementi finiti (LW (FEM)) (φ k = π/4, t = 2)
Per semplicità ci riferiremo al problema (7.1). Il metodo Taylor-Galerkin consiste nel fare prima una discretizzazione in tempo partendo dalla formula di Taylor troncata al prim’ordine: u(x, tn+1 ) = u(x, tn ) + Δt
∂u (x, tn ) + ∂t
tn+1
(s − tn )
tn
∂2u (x, s) ds. ∂t2
(8.16)
Usando ora l’equazione (7.1) si possono eseguire le seguenti sostituzioni: ∂u ∂u = −a ∂t ∂x e 2 ∂ 2u ∂u ∂ ∂u ∂ 2∂ u (−a ) = −a = a = . ∂t2 ∂t ∂x ∂x ∂t ∂x2
Quindi la (8.16) diventa u(x, t
n+1
∂u ) = u(x, t ) − aΔt (x, tn ) + a2 ∂x
tn+1
n
tn
(s − tn )
∂2u (x, s) ds. (8.17) ∂x2
Approssimiamo l’integrale nel modo seguente
tn+1
(s−tn ) tn
∂2u Δt2 ∂ 2 u ∂2u n n+1 θ (x, s) ds ≈ (x, t ) + (1 − θ) (x, t ) , (8.18) ∂x2 2 ∂x2 ∂x2
dove θ ∈ [0, 1] è un parametro, e indichiamo con u n+1 (x) ≈ u(x, tn+1 ) la corrispondente soluzione approssimata dell’equazione (8.17). Si hanno due situazioni notevoli. Nel caso θ = 1, lo schema semi-discretizzato risultante è esplicito in tempo e si scrive un+1 = un − aΔt
a2 Δt2 ∂ 2 un ∂un + . ∂x 2 ∂x2
8.2 Gli schemi Taylor-Galerkin
249
La sua discretizzazione in spazio (tramite differenze finite o elementi finiti) fornisce gli schemi LW e LW (FEM) precedentemente esaminati. Se invece si prende θ = 23 , l’errore di approssimazione in (8.18) diventa O(Δt 4 ) (supponendo che u abbia la regolarità richiesta). Di fatto tale scelta corrisponde ad appros2 simare ∂∂xu2 tra tn e tn+1 con la sua interpolante lineare. Lo schema semidiscretizzato risultante si scrive a2 Δt2 ∂ 2 a2 Δt2 ∂ 2 un ∂un n+1 n 1− + u = u − aΔt (8.19) 6 ∂x2 ∂x 3 ∂x2 e l’errore di troncamento dello schema semi-discretizzato in tempo (8.19) è O(Δt 3 ). A questo punto una discretizzazione in spazio usando il metodo agli elementi finiti conduce al seguente schema Taylor-Galerkin (TG): per n = 0, 1, . . . trovare u n+1 ∈ Vh tale per cui h n a2 Δt2 ∂unh ∂vh ∂uh n+1 n , vh − , A(uh , vh ) = (uh , vh ) − aΔt ∂x 3 ∂x ∂x a2 Δt2 ∂unh (1)vh (1) ∀vh ∈ Vh +γ (8.20) 3 ∂x dove ) a2 Δt2 ( A(un+1 , vh ) = un+1 , vh + h h 6
∂un+1 ∂vh h , ∂x ∂x
−γ
a2 Δt2 ∂un+1 h (1)vh (1), 6 ∂x
e γ = 1, 0 a seconda che si voglia o meno tenere conto del contributo di bordo nell’integrazione per parti del termine di derivata seconda. Questo schema dà luogo ad un sistema lineare la cui matrice è M+
a2 (Δt)2 A, 6
essendo M la matrice di massa e A la matrice di rigidezza (stiffness), che tiene eventualmente conto anche del contributo di bordo. Nel caso di elementi finiti lineari, l’analisi di Von Neumann porta al seguente fattore di amplificazione per lo schema (8.20): γk =
2 + cos(kh) − 2a2 λ2 (1 − cos(kh)) + 3iaλ sin(kh) . 2 + cos(kh) + a2 λ2 (1 − cos(kh))
(8.21)
Si può mostrare che lo schema è fortemente stabile in norma · Δ,2 sotto la condizione CFL aΔt h ≤ 1. Ha quindi una condizione di stabilità meno restrittiva dello schema Lax-Wendroff (FEM). La Fig. 8.3 mostra l’andamento dell’errore di amplificazione e dispersione per lo schema (8.20), in funzione dell’angolo di fase, analogamente a quanto visto per altri schemi nella Sez. 7.4.4. Nel caso di elementi finiti lineari l’errore di troncamento dello schema TG risulta essere O(Δt3 ) + O(h2 ) + O(h2 Δt).
250
8 Elementi finiti e metodi spettrali per equazioni iperboliche Fattore di Amplificazione Taylor−Galerkin 1.2 1
εa
0.8 0.6 CFL= CFL= CFL= CFL=
0.4 0.2 0 0
20
40
60
80
0.25 0.50 0.75 1.00 100
120
140
160
180
160
180
Fattore di dispersione Taylor−Galerkin
εφ
1
0.5
CFL= CFL= CFL= CFL=
0 0
20
40
60
80
κΔx
0.25 0.50 0.75 1.00 100
120
140
Figura 8.3. Errore di amplificazione (sopra) e dispersione (sotto) dello schema Taylor-Galerkin (8.20), in funzione dell’angolo di fase φk = kh e per diversi valori del numero di CFL
Esempio 8.2 Per confrontare l’accuratezza degli schemi presentati nelle ultime due sezioni abbiamo considerato il problema 8 < ∂u + ∂u = 0, ∂t ∂x : u(x, 0) = u0 (x),
t > 0, x ∈ (0, 0.5), x ∈ (0, 0.5),
con condizioni al contorno periodiche, u(0, t) = u(0.5, t), per t > 0. Il dato iniziale è u0 (x) = 2 cos(4πx)+sin(20πx), ed è illustrato in Fig. 8.4. Esso sovrappone due armoniche, una a bassa frequenza e l’altra ad alta frequenza. Si sono considerati gli schemi Taylor-Galerkin, Lax-Wendroff (FEM), Lax-Wendroff ed upwind. La Fig. 8.5 mostra l’errore in norma discreta u − uh Δ,2 ottenuto al tempo t = 1 per differenti valori di Δt ed a numero di CFL fissato ed eguale a 0.55. Si può notare la migliore convergenza dello schema Taylor-Galerkin, mentre le due versioni dello schema LaxWendroff mostrano lo stesso ordine di convergenza, ma con un errore inferiore per la versione ad elementi finiti rispetto a quella alle differenze finite. Lo schema upwind è meno accurato sia Soluzione iniziale 3
2
u(x,0)
1
0
−1
−2
−3
0
0.1
0.2
0.3
0.4
0.5
x
Figura 8.4. Condizione iniziale u0 per la simulazione di Fig. 8.5
8.2 Gli schemi Taylor-Galerkin
251
CFL=0.55
0
10
−1
10
−2
||u−uh||Δ 2 per t=1
10
−3
10
−4
10
LW LW(FEM) TG Upwind
−5
10
−6
10
−4
−3
10
10 Δt
Figura 8.5. Errore u − uh Δ,2 per t = 1 al variare di Δt a CFL fissato. Confronto tra diversi schemi numerici 1.5
1.5
uex ufd2 ufd4 ucp4
1 0.5
0.5
0
0
−0.5
−0.5
−1
−1
−1.5 0
0.5
1 xpi
uex ugal ucp6
1
1.5
2
−1.5 0
0.5
1 xpi
1.5
2
Figura 8.6. Approssimazione della soluzione di un problema di propagazione di onde con diversi metodi alle differenze finite (di ordine 2, 4), compatte (di ordine 4 e 6) e con il metodo spettrale di Fourier (da [CHQZ06])
in termini assoluti che in relazione all’ordine di convergenza. Inoltre, si può verificare che a CFL fissato l’errore dello schema upwind è O(Δt), quello di entrambi le varianti dello schema Lax-Wendroff O(Δt2 ), mentre quello dello schema Taylor-Galerkin è O(Δt3 ).
Nelle Figure 8.6 e 8.7 riportiamo le approssimazioni numeriche ed i relativi errori nella norma del massimo dell’equazione delle onde ∂u ∂u (x, t) − (x, t) = 0 ∂t ∂x ( ) con u(x, 0) = sin π cos(x) e condizioni al bordo periodiche. Tali approssimazioni sono ottenute con differenze finite di ordine 2 e 4 (ufd2, ufd4), differenze finite compatte di ordine 4 e 6 (ucp4, ucp6) e con il metodo spettrale ( di Fourier)(ugal). Per confronto si riporta anche la soluzione esatta u(x, t) = sin π cos(x + t) (uex).
252
8 Elementi finiti e metodi spettrali per equazioni iperboliche 2
10
0
10
−2
10
−4
10
−6
10
ugal ufd2 ufd4 ucp4 ucp6
−8
10
−10
10
−12
10
−14
10
0
10
1
10
10
2
10
3
N
Figura 8.7. Andamento dell’errore nella norma del massimo per i diversi metodi numerici riportati in Fig. 8.6 (da [CHQZ06])
8.3 Il caso multidimensionale Passiamo ora al caso multidimensionale e consideriamo il seguente problema iperbolico di trasporto-reazione del primo ordine, lineare, scalare, nel dominio Ω ⊂ R d con d = 2, 3 ⎧ ∂u ⎪ + a · ∇u + a0 u = f, t > 0, x ∈ Ω, ⎪ ⎪ ⎪ ∂t ⎪ ⎨ (8.22) u = ϕ, t > 0, x ∈ ∂Ω in , ⎪ ⎪ ⎪ ⎪ ⎪ ⎩ x ∈ Ω, u|t=0 = u0 , dove a = a(x), a0 = a0 (x, t) (eventualmente nullo), f = f (x, t), ϕ = ϕ(x, t) e u0 = u0 (x) sono funzioni assegnate e la frontiera di inflow ∂Ω in è definita come segue ∂Ω in ={x ∈ ∂Ω : a(x) · n(x) < 0}, essendo n la normale esterna a ∂Ω. Per semplicità, abbiamo supposto che a non dipenda da t; in questo modo la frontiera di inflow ∂Ω in non cambia al variare del tempo. Per ottenere un’approssimazione semi-discreta del problema (8.22), analoga a quella (8.1) nel caso monodimensionale definiamo gli spazi Vh = Xhr ,
Vhin ={vh ∈ Vh : vh|∂Ω in = 0},
dove r è un intero e X hr è stato introdotto in (3.12). Indichiamo con u 0,h e ϕh due opportune approssimazioni agli elementi finiti di u 0 e ϕ, e consideriamo il problema: per ogni t > 0 trovare u h (t) ∈ Vh tale che
8.3 Il caso multidimensionale
⎧ ⎪ ∂uh (t) ⎪ ⎪ v dΩ + a · ∇u (t)v dΩ + a0 (t)uh (t)vh dΩ ⎪ h h h ⎪ ∂t ⎪ Ω ⎪ ⎨ Ω Ω in ⎪ = f (t)vh dΩ ∀ vh ∈ Vh , ⎪ ⎪ ⎪ ⎪ ⎪ Ω ⎪ ⎩ uh (t) = ϕh (t) su ∂Ω in ,
253
(8.23)
con uh (0) = u0,h ∈ Vh . Per ottenere una stima di stabilità, assumiamo per semplicità che ϕ, e quindi ϕ h , sia identicamente nulla. In questo caso u h (t) ∈ Vhin , e prendendo, per ogni t, v h = uh (t), si ottiene la seguente disuguaglianza t uh (t)2L2 (Ω)
t μ0 uh (τ )2L2 (Ω)
+ 0
t
≤ u0,h 2L2 (Ω) + 0
dτ +
a · n u2h (τ ) dγ dτ 0 ∂Ω\∂Ω in
(8.24)
1 f (τ )2L2 (Ω) dτ , μ0
dove si è supposto che, per t > 0 per ogni x in Ω, 1 (8.25) 0 < μ0 ≤ a0 (x, t) − diva(x). 2 Nel caso in cui non sia verificata questa ipotesi (ad esempio se a è un campo costante e a0 = 0), allora utilizzando il Lemma di Gronwall si ottiene t uh (t)2L2 (Ω) + ⎛
0
≤ ⎝u0,h 2L2 (Ω) +
∂Ω\∂Ω in
t
a · n u2h (τ )dγ dτ ⎞
f (τ )2L2 (Ω) dτ ⎠ exp
0
t
(8.26) [1 + 2μ∗ (τ )] dτ,
0
∗
dove μ (t)=max|μ(x, t)|. ¯ Ω
Nel problema (8.23) la condizione al contorno è stata imposta in modo forte (si parla in tal caso anche di trattamento essenziale delle condizioni al bordo), in contrapposisione al trattamento debole delle condizioni al contorno che conduce, invece, al seguente problema discreto: per ogni t > 0 trovare u h (t) ∈ Vh tale che ∂uh (t) vh dΩ + a · ∇uh (t)vh dΩ ∂t Ω Ω 1 + a0 (t)uh (t)vh dΩ − a · n uh (t)vh dγ (8.27) 2 in Ω ∂Ω 1 = f (t)vh dΩ − a · n ϕh (t)vh dγ ∀ vh ∈ Vh , 2 Ω
∂Ω in
254
8 Elementi finiti e metodi spettrali per equazioni iperboliche
con uh (0) = u0,h . Si noti che ora le funzioni test non si annullano più su ∂Ω in e quindi vengono trattate alla stessa stregua delle funzioni di base. I due termini supplementari introdotti nella (8.27) (e che notiamo essere coincidenti se u h = ϕh ) consentono alla soluzione numerica di soddisfare la condizione al contorno richiesta. Prendendo v h = uh (t), dalla (8.27), nell’ipotesi (8.25), si trova anziché la (8.24), la seguente disuguaglianza uh (t)2L2 (Ω)
t
t
+ 0
μ0 uh (τ )2L2 (Ω)
a · n u2h (τ ) dγ dτ 0 ∂Ω\∂Ω in t
t ≤ u0,h 2L2 (Ω) +
dτ +
|a · n|ϕ2h (τ )dγ dτ + 0 ∂Ω in
0
(8.28)
1 f (τ )2L2 (Ω) dτ. μ0
In assenza dell’ipotesi (8.25), la disuguaglianza (8.28) si modificherebbe in modo analogo a quanto visto in precedenza, grazie al Lemma di Gronwall.
8.3.1 Condizioni al bordo e condizioni di compatibilità Gli schemi ad elementi finiti permettono diversi tipi di trattamento delle condizioni al bordo per il problema (8.22). Assumiamo per semplicità a 0 = 0, dato che il termine d’ordine zero non gioca alcun ruolo nel trattamento delle condizioni al bordo. Abbiamo visto che un primo modo di trattare il dato al bordo è quello detto essenziale o forte, che consiste nel trovare soluzioni u h che soddisfino la condizione uh |∂Ω in = φh . Un’altra possibilità è invece il trattamento debole che deriva dalla integrazione per parti del termine di trasporto nella prima equazione in (8.23), dove ora si consideri vh ∈ Vh (cioè non si richieda più che la funzione test si annulli sul bordo di inflow). Si ottiene ∂uh (t) div(auh (t))vh dΩ + uh (t)a · n dΓ = f (t)vh dΩ. vh dΩ − ∂t Ω ∂Ω
Ω
Ω
La condizione al bordo viene imposta sostituendo φ h a uh nella parte di bordo di inflow, ottenendo ∂uh (t) vh dΩ − div(auh (t))vh dΩ + uh a · n dΓ ∂t Ω ∂Ω\∂Ω in Ω (8.29) = f (t)vh dΩ − φh (t)a · n dΓ. Ω
∂Ω in
Chiaramente, la soluzione u h così trovata soddisfa la condizione al bordo solo in modo approssimato. Un’ulteriore possibilità consiste nel controintegrare per parti la (8.29) e quindi trovare uh ∈ Vh tale che, per ogni v h ∈ Vh ,
8.3 Il caso multidimensionale
∂uh (t) vh dΩ + ∂t Ω = f (t)vh dΩ.
255
a · ∇uh (t)vh dΩ +
Ω
∂Ω in
vh (φh (t) − uh (t))a · n dΓ (8.30)
Ω
Osserviamo che le formulazioni (8.29) e (8.30) sono equivalenti: cambia solo il modo in cui vengono messi in evidenza i termini di bordo. In particolare, l’integrale di bordo nella formulazione (8.30) può essere interpretato come un termine di penalizzazione con cui valutiamo quanto u h differisce dal dato ϕ h sul bordo. Osserviamo infine che, in entrambe le formulazioni (8.29) e (8.30), non viene fatta alcuna richiesta sul comportamento della soluzione discreta u h al bordo. Osservazione 8.2 Nel caso in cui il problema (8.22) sia completato da una condizione al bordo del tipo a·n u = ψ, si potrebbe utilizzare ancora un’imposizione debole delle condizioni al bordo mediante l’aggiunta di un opportuno termine di penalizzazione che, in tale caso, assumerebbe la forma (ψh − a · n uh (t))vh dΓ, Ω in
essendo ψh un’opportuna approssimazione agli elementi finiti del dato ψ.
•
In alternativa all’imposizione forte e debole delle condizioni al bordo, ovvero alle formulazioni (8.23) e (8.30), si potrebbe adottare un approccio alla Petrov-Galerkin imponendo in modo forte la condizione u h (t) = ϕh (t) sul bordo di inflow ∂Ω in e chiedendo v h = 0 su quello di outflow ∂Ω out . La formulazione discreta a cui si perverrebbe in questo caso risulta essere la seguente. Poniamo V hout ={vh ∈ Vh : vh|∂Ω out = 0}. Allora: per ogni t > 0, trovare u h (t) ∈ Vh = Xhr tale che ⎧ ⎪ ∂uh (t) ⎪ ⎪ vh dΩ + (a · ∇uh (t)) vh dΩ + a0 (t) uh (t) vh dΩ ⎪ ⎪ ∂t ⎪ Ω ⎪ ⎨ Ω Ω ⎪ = f (t) vh dΩ ∀vh ∈ Vhout , ⎪ ⎪ ⎪ ⎪ ⎪ Ω ⎪ ⎩ uh (t) = ϕh (t) su ∂Ω in . Ricordiamo che per una formulazione alla Petrov-Galerkin l’analisi di buona positura standard basata sul Lemma di Lax-Milgram non risulta più valida, come già visto nel caso di un’approssimazione di tipo spettrale. Se invece la condizione di inflow venisse imposta in modo debole avremmo la seguente formulazione: per ogni t > 0, trovare u h (t) ∈ Vh = Xhr tale che, per ogni v h ∈ Vhout ,
256
8 Elementi finiti e metodi spettrali per equazioni iperboliche
∂uh (t) vh dΩ − div(a vh ) uh (t) dΩ + a0 (t) uh (t) vh dΩ ∂t Ω Ω Ω = f (t) vh dΩ − a · n ϕh (t) vh dΓ. ∂Ω in
Ω
Per ulteriori dettagli, il lettore può consultare [QV94, Cap. 14].
8.3.2 Discretizzazione temporale Per la discretizzazione temporale, a titolo di esempio limitiamoci allo schema (8.23). Lo schema di Eulero all’indietro dà luogo al problema seguente: ∀n ≥ 0 trovare unh ∈ Vh t.c. 1 Δt
(un+1 − unh )vh dΩ + h
Ω
Ω
f
=
a · ∇un+1 vh dΩ + h
n+1
vh dΩ ∀vh ∈
an+1 un+1 vh dΩ 0 h Ω
Vhin ,
Ω
con u0h = u0,h , essendo u0,h ∈ Vh un’opportuna approssimazione del dato iniziale u0 in Vh . Si è posto Vhin = {vh ∈ Vh : vh |in Ω = 0}, e si è indicato con ϕ h una opportuna approssimazione del dato al bordo φ. Limitiamoci al caso omogeneo, in cui f = 0 e ϕ h = 0 (in tal caso unh ∈ Vhin per tutti gli n ≥ 0). Posto vh = un+1 ed usando l’identità (8.8) e la (8.25), si ottiene, per h ogni n ≥ 0: 1 1 n+1 2 uh L2 (Ω) − unh 2L2 (Ω) + a · n(un+1 )2 dΩ h 2Δt 2 ∂Ω\∂Ω in 2L2 (Ω) ≤ 0. +μ0 un+1 h Per ogni m ≥ 1, sommando su n da 0 a m − 1 si ottiene 2 um h L2 (Ω) + 2Δt μ0
m n=0
unh 2L2 (Ω) +
1 2
m n=0
!
∂Ω\∂Ω in
a·
n(unh )2
dΩ
≤ u0h 2L2 (Ω) . In particolare, essendo a · n ≥ 0 su ∂Ω \ ∂Ω in si conclude che 0 um h L2 (Ω) ≤ uh L2 (Ω) ∀m ≥ 0.
Vediamo ora che tipo di stabilità si può ottenere per il problema (8.23) nel caso di discretizzazione in tempo con il metodo di Eulero in avanti . Supponiamo nuovamente
8.3 Il caso multidimensionale
257
f = 0 e ϕ = 0 e che sia soddisfatta la condizione (8.25). Si suppone inoltre che aL∞ (Ω) < ∞ e che, per ogni t > 0, a 0 L∞ (Ω) < ∞. Si ha 1 Δt
(un+1 −unh )vh h
dΩ +
Ω
a·∇unh vh
Ω
Ponendo vh =
unh
dΩ +
an0 unh vh dΩ = 0 ∀vh ∈ Vh . (8.31) Ω
si ottiene
1 n+1 (u − unh , unh ) + (a∇unh , unh ) + (an0 unh , unh ) = 0. Δt h Sfruttando l’identità (8.5) ed integrando per parti il termine convettivo, si ottiene 1 n+1 2 n 2 uh L2 (Ω) − unh 2L2 (Ω) − un+1 − u 2 h L (Ω) + h 2Δt 1 a · n(unh )2 dΩ + (− div(a) + an0 , (unh )2 ) = 0, 2 in ∂Ω\∂Ω e dunque, dopo alcuni passaggi un+1 2L2 (Ω) h
+ 2Δt ≤
a · n(unh )2 dΩ + 2Δtμ0 unh 2L2 (Ω)
∂Ω\∂Ω in n 2 uh L2 (Ω) + un+1 h
− unh 2L2 (Ω) .
(8.32)
− unh 2L2 (Ω) . A tale scopo poniamo v h = Occorre ora controllare il termine u n+1 h un+1 − unh in (8.31). Si ottiene h un+1 − unh 2L2 (Ω) = −Δt(a∇unh , un+1 − unh ) − Δt(an0 unh , un+1 − unh ) h h h − unh )| + Δtan0 L∞ (Ω) |(unh , un+1 − unh )| ≤ ΔtaL∞ (Ω) |(∇unh , un+1 h h − unh L2 (Ω) ≤ ΔtaL∞ (Ω) ∇unh L2 (Ω) un+1 h +Δtan0 L∞ (Ω) unh L2 (Ω) un+1 − unh L2 (Ω) . h Utilizzando la disuguaglianza inversa (3.39), si ottiene − unh 2L2 (Ω) un+1 h
≤ Δt(CI h−1 aL∞ (Ω) +an0 L∞ (Ω) )unh L2 (Ω) un+1 − unh L2 (Ω) , h
e quindi ) ( − unh L2 (Ω) ≤ Δt CI h−1 aL∞ (Ω) + an0 L∞ (Ω) unh L2 (Ω) . un+1 h Utilizzando tale risultato nella relazione (8.32), si ha
258
8 Elementi finiti e metodi spettrali per equazioni iperboliche
un+1 2L2 (Ω) + 2Δt h
∂Ω\∂Ω in
a · n(unh )2 dΩ
)2 n 2 ( uh L2 (Ω) +Δt 2μ0 − Δt CI h−1 aL∞ (Ω) + an0 L∞ (Ω) ≤ unh 2L2 (Ω) . L’integrale su ∂Ω \ ∂Ω in è positivo per le ipotesi fatte sulle condizioni al contorno, quindi, se 2μ0 Δt ≤ ( (8.33) )2 −1 CI h aL∞ (Ω) + an0 L∞ (Ω) si ha un+1 L2 (Ω) ≤ unh L2 (Ω) , ovvero lo schema è fortemente stabile. Si ha quindi h una stabilità condizionata. Osservazione 8.3 Si osservi che nel caso in cui a sia costante e a 0 = 0 si ha che μ0 = 0 e la condizione di stabilità (8.33) non può essere soddisfatta da nessun Δt positivo. Il risultato (8.33) non è dunque in contraddizione con quanto già precedentemente trovato per lo schema di Eulero in avanti. •
8.4 Elementi finiti discontinui Un approccio alternativo a quello adottato sino ad ora è basato sull’utilizzo di elementi finiti discontinui. Il metodo che ne deriva è noto con il nome di metodo di Galerkin discontinuo (con acronimo DG, Discontinuous Galerkin, in inglese). Questa scelta è motivata dal fatto che, come abbiamo già osservato, le soluzioni di problemi iperbolici (anche lineari) possono presentare delle discontinuità. Lo spazio degli elementi finiti è, in questo caso: Wh = Yhr = {vh ∈ L2 (Ω) | vh|K ∈ Pr , ∀ K ∈ Th }, ovvero lo spazio delle funzioni polinomiali a tratti di grado minore o uguale a r, con r ≥ 0, non necessariamente continue sui bordi degli elementi.
8.4.1 Il caso unidimensionale Nel caso del problema monodimensionale (7.3), il problema di Galerkin discontinuo assume la forma seguente: ∀t > 0, trovare una funzione u h = uh (t) ∈ Wh tale che β α
xi+1 m−1 ∂uh ∂uh − + vh dx + + a0 uh vh dx + a(xi )(u+ a h − Uh )(xi )vh (xi ) ∂t ∂x i=0
β
xi
f vh dx
=
∀vh ∈ Wh ,
α
(8.34)
8.4 Elementi finiti discontinui
ove si è supposto che a(x) sia una funzione continua. Abbiamo posto − uh (xi ), i = 1, . . . , m − 1, − Uh (xi ) = ϕh (x0 ),
259
(8.35)
dove {xi , i = 0, · · · , m} sono i nodi, x0 = α, xm = β, vh+ (xi ) denota il limite destro di vh in xi , vh− (xi ) il limite sinistro. Per semplicità di notazione la dipendenza di uh e f da t è stata sottointesa. Deriviamo ora una stima di stabilità per la soluzione u h della formulazione (8.34), supponendo, per semplicità, che il termine forzante f sia identicamente nullo. Scelta dunque vh = uh in (8.34), abbiamo (posto Ω = (α, β)): 1 d uh 2L2 (Ω) 2 dt
+ +
m−1
x i+1
a ∂ ( ) 2 uh + a0 u2h dx 2 ∂x i=0 x i − + a(xi )(u+ h − Uh )(xi )uh (xi ) = 0.
Ora, integrando per parti il termine convettivo, abbiamo: xi+1 m−1 1 d ∂ a 2 2 uh L2 (Ω) + uh dx a0 − 2 dt ∂x 2 i=0 m−1
xi
a a + − + 2 2 + (xi+1 ) (u− (x (x )) + ) (u (x )) − a(x ) U (x ) u (x ) = 0. i+1 i i i i i h h h h 2 2 i=0 (8.36) Isolando il contributo associato al nodo x 0 e sfruttando la definizione (8.35), possiamo riscrivere la seconda sommatoria dell’equazione precedente come m−1 i=0
=
+
a a + − + 2 2 (xi+1 ) (u− h (xi+1 )) + (xi ) (uh (xi )) − a(xi ) Uh (xi ) uh (xi ) 2 2
a a + − 2 2 (x0 ) (u+ h (x0 )) − a(x0 ) ϕh (x0 ) uh (x0 ) + (xm ) (uh (xm )) 2 2 m−1 i=1
a + + 2 2 (xi ) (u− − a(xi ) u− h (xi )) + (uh (xi )) h (xi ) uh (xi ) 2
=
a + 2 (x0 ) (u+ h (x0 )) − a(x0 ) ϕh (x0 ) uh (α) 2
+
m−1 a 2 a 2 (xm ) (u− (xi ) uh (xi ) , (x )) + m h 2 2 i=1
(8.37) − avendo indicato con uh (xi ) = u+ (x ) − u (x ) il salto della funzione u h in i i h h corrispondenza del nodo x i . Supponiamo ora, per semplicità, che
260
8 Elementi finiti e metodi spettrali per equazioni iperboliche
a0 −
∂ a ≥ γ ≥ 0. ∂x 2
(8.38)
Tornando alla (8.36) ed utilizzando la relazione (8.37) e le disuguaglianze di CauchySchwarz e di Young, abbiamo m−1 a 2 1 d a 2 uh 2L2 (Ω) + γuh 2L2 (Ω) + (xi ) uh (xi ) + (x0 ) (u+ h (x0 )) 2 dt 2 2 i=1
+
a a a + 2 2 (xm ) (u− (x0 ) ϕ2h (x0 ) + (x0 ) (u+ h (xm )) = a(x0 ) ϕh (x0 ) uh (x0 ) ≤ h (x0 )) , 2 2 2
ovvero, integrando anche rispetto al tempo, ∀t > 0, t uh (t)2L2 (Ω)
uh (t)2L2 (Ω)
+ 2γ
dt +
m−1
t a(xi )
i=1
0
0
2 0 2 + a(xm ) (u− h (xm )) ≤ uh L2 (Ω) + a(x0 )
2 uh (xi , t) dt (8.39)
t ϕ2h (x0 , t) dt. 0
Tale stima rappresenta dunque il risultato di stabilità desiderato. Osserviamo che, nel caso in cui venga rimossa la richiesta di avere un termine forzante identicamente nullo, si può replicare l’analisi precedente servendosi opportunamente del lemma di Gronwall per trattare il contributo di f . Ciò condurrebbe ad una stima analoga alla (8.39), tuttavia stavolta il termine di destra della disuguaglianza diventerebbe t t et u0h 2L2 (Ω) + a(x0 ) ϕ2h (x0 , t) dt + (f (τ ))2 dτ . 0
(8.40)
0
Nel caso poi in cui la costante γ nella disuguaglianza (8.38) sia strettamente positiva, si potrebbe evitare l’uso del lemma di Gronwall, pervenendo ad una stima come la (8.39) in cui a primo membro 2 γ viene sostituito da γ, mentre il secondo membro assume la forma (8.40) senza tuttavia la presenza dell’esponenziale e t . Per quanto riguarda gli aspetti algoritmici, si osservi che, per via della discontinuità delle funzioni test, la (8.34) si può riscrivere in modo equivalente come segue, ∀i = 0, . . . , m − 1, x i+1
xi
∂uh ∂uh − + +a + a0 uh vh dx + a(u+ h − Uh )(xi )vh (xi ) ∂t ∂x (8.41)
β f vh dx
=
∀vh ∈ Pr (Ii ),
α
essendo Ii = [xi , xi+1 ]. Un’analoga rappresentazione vale per la (8.46), per ogni K ∈ Th . In altri termini, l’approssimazione con elementi finiti discontinui dà luogo a
8.4 Elementi finiti discontinui ϕ0
xi
ϕ0
xi+1
xi+1/2
ϕ1
xi
ϕ0
xi+1 xi
r=0
r=1
ϕ1
261 ϕ2
xi+1/2
xi+1
r=2
Figura 8.8. Le basi di Lagrange per r = 0, r = 1 e r = 2
relazioni “indipendenti” elemento per elemento; l’unico punto di collegamento fra un − elemento e i suoi vicini è espresso dal termine di salto (u + h − Uh ) (o [uh ]) che può anche essere interpretato come l’attribuzione del dato al bordo sulla frontiera di inflow dell’elemento in esame. Abbiamo dunque un insieme di problemi di dimensione ridotta da risolvere in ogni elemento, precisamente r+1 equazioni per ogni intervallino [x i , xi+1 ], (r+1)(r+2)/2 per ogni triangolo K. Scriviamole nella forma compatta: Mh u˙ h (t) + Lh uh (t) = fh (t)
∀t > 0,
uh (0) = u0,h ,
(8.42)
essendo Mh la matrice di massa, Lh la matrice associata alla forma bilineare e alla relazione di salto, fh il termine noto: x i+1
x i+1
ϕp ϕq dx,
(Mh )pq = xi
(aϕq,x + a0 ϕq ) ϕp dx + (aϕq ϕp )(xi ),
(Lh )pq = xi
x i+1
f ϕp dx + aUh− (xi )ϕp (xi ),
(fh )p =
q, p = 0, . . . , r
xi
essendo ovviamente {ϕ q , q = 0, . . . , r} una base per P r (Ii ) e uh (t) i coefficienti di uh (x, t)|[xi ,xi+1 ] nello sviluppo rispetto alla base {ϕ q }. Se si prende la base di Lagrange si avranno, ad esempio, le funzioni indicate in Fig. 8.8 (per il caso r = 0, r = 1 e r = 2) e i valori di {uh (t)} sono i valori assunti da u h (t) nei nodi (xi+1/2 per r = 0, xi e xi+1 per r = 1, xi , xi+1/2 e xi+1 per r = 2). Si osservi che tutte le funzioni precedenti sono identicamente nulle al di fuori dell’intervallo [x i , xi+1 ]. Si noti che nel caso di elementi finiti discontinui è perfettamente lecito usare polinomi ∂uh di grado r = 0, in tal caso il termine di trasporto a fornirà contributo nullo su ∂x ciascun elemento. Può essere interessante, al fine di diagonalizzare la matrice di massa, utilizzare come base per P r (Ii ) i polinomi di Legendre ϕ q (x) = Lq (2(x − xj )/hj ), essendo hj = xj+1 − xj e {Lq , q = 0, 1, . . .} i polinomi ortogonali di Legendre definiti sull’intervallo [−1, 1], che abbiamo introdotto nella Sez. 4.2.2. In tal modo si ottiene hj infatti (Mh )pq = δpq . Ovviamente in tal caso i valori incogniti {u h (t)} non si 2p + 1
262
8 Elementi finiti e metodi spettrali per equazioni iperboliche 1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
−0.2
−0.2
Soluzione calcolata Soluzione esatta
−0.4
−0.4
−0.6
−0.6
−0.8
−0.8
−1 −5
−4
−3
−2
−1
0
1
2
3
4
5
−1 −5
Soluzione calcolata Soluzione esatta
−4
−3
−2
−1
0
1
2
3
4
5
Figura 8.9. Soluzione al tempo t = 1 del problema (8.43) con φk = π/2, h = 0.25, ottenuta con elementi finiti lineari continui (a sinistra) e discontinui (a destra) e discretizzazione temporale di Eulero all’indietro
potranno più interpretare come valori nodali di u h (t), ma piuttosto come i coefficienti di Legendre dello sviluppo di u h (t) rispetto alla nuova base. La diagonalizzazione della matrice di massa risulta particolarmente interessante quando si usino schemi di avanzamento in tempo espliciti (quali ad esempio gli schemi di Runge-Kutta del secondo e terzo ordine, che verranno introdotti nel Cap. 9). In tal caso, infatti, su ogni intervallino (o triangolo in due dimensioni) avremo un problema completamente esplicito da risolvere. A titolo di esempio, nel seguito vengono presentati dei risultati numerici ottenuti per il problema ∂u ∂u + = 0, x ∈ (−5, 5), t > 0, (8.43) ∂t ∂x u(−5, t) = 0, t > 0, con la condizione iniziale seguente sin(πx) u(x, 0) = u(x, 0) = 0
per x ∈ (−2, 2), altrimenti.
(8.44)
Il problema è stato discretizzato utilizzando elementi finiti lineari in spazio, sia continui che discontinui. Per la discretizzazione temporale è stato utilizzato lo schema di Eulero all’indietro in entrambi i casi. È stato scelto h = 0.25 ed un passo temporale Δt = h; per tale valore di h il numero di fase associato all’onda sinusoidale è φk = π/2. In Fig. 8.9 è riportata la soluzione numerica al tempo t = 1 insieme alla relativa soluzione esatta. Si può notare la forte diffusione numerica dello schema che tuttavia presenta delle piccole oscillazioni nella parte posteriore nel caso di elementi continui. Si può altresì osservare che la soluzione numerica ottenuta con elementi discontinui presenta effettivamente delle discontinuità mentre non ha più l’andamento oscillante nella parte posteriore.
8.4 Elementi finiti discontinui 1.4
1.4
1.2
1.2
1
1
0.8
0.8
0.6
0.6
0.4
0.4
0.2
0.2
0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
1.4
0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.06
0.07
0.08
0.09
0.9
263
1
0.55
0.5
1.2
0.45
1 0.4
0.35
0.8
0.3
0.6 0.25
0.2
0.4
0.15
0.2 0.1
0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0.05 0.01
0.02
0.03
0.04
0.05
0.1
0.11
Figura 8.10. Soluzione del problema (8.45) per t = 0.5 con h = 0.025 ottenuta con elementi finiti lineari continui e trattamento forte (in alto a sinistra) e debole (in alto a destra) della condizione di Dirichlet, mentre nel caso (in basso a sinistra) si sono utilizzati elementi discontinui in spazio. Infine, in (in basso a destra) si mostra l’andamento di |uh (0) − u(0)| in funzione di h per t = 0.1, nel caso di trattamento debole della condizione di Dirichlet
Consideriamo ora il seguente problema ⎧ ∂u ∂u ⎪ ⎨ + = 0 x ∈ (0, 1), t > 0, ∂t ∂x u(0, t) = 1 t > 0, ⎪ ⎩ u(x, 0) = 0 x ∈ [0, 1].
(8.45)
che rappresenta il trasporto di una discontinuità entrante nel dominio. Abbiamo considerato elementi finiti lineari continui, con trattamento sia forte sia debole della condizione al contorno, ed elementi finiti lineari discontinui. Anche questa volta è stato utilizzato il metodo di Eulero all’indietro per la discretizzazione temporale. Il passo della griglia è h = 0.025 ed è stato scelto Δt = h. I risultati al tempo t = 0.5 sono rappresentati in Fig. 8.10. Si può notare come il dato di Dirichlet sia ben rappresentato anche dagli schemi con trattamento debole al bordo. A tal proposito, per il caso di elementi finiti continui con trattamento debole al bordo, abbiamo calcolato l’andamento di |u h (0) − u(0)| per t = 0.1 per vari valori di h, a Δt costante. Si può notare una riduzione di tipo lineare rispetto ad h.
264
8 Elementi finiti e metodi spettrali per equazioni iperboliche
8.4.2 Il caso multidimensionale Nel caso multidimensionale avremmo invece il seguente problema: per ogni t > 0 trovare uh (t) ∈ Wh tale che ⎤ ⎡ ∂ ⎣aK (uh , vh ) − uh vh dΩ + a · nK [uh ]vh+ dγ ⎦ = (8.46) ∂t K∈Th Ω ∂K in f vh dΩ ∀vh ∈ Wh , Ω con uh (0) = u0,h , dove nK indica la normale esterna a ∂K, e ∂K in ={x ∈ ∂K : a(x) · nK (x) < 0}. La forma bilineare a K è definita nel modo seguente: aK (u, v)=
(
) a · ∇u v + a0 u v dx
K
mentre [uh (x)]=
− u+ h (x) − uh (x),
x∈ / ∂Ω in ,
u+ h (x) − ϕh (x),
x ∈ ∂Ω in .
,
con u± h (x)= lim± uh (x + sa), s→0
x ∈ ∂K.
La stima di stabilità che si ottiene per il problema (8.46) è: ⎛ ⎞ t ⎝μ0 uh (τ )2L2 (Ω) + |a · nK | [uh (τ )]2 ⎠ dτ uh (t)2L2 (Ω) + 0
≤
⎡
C ⎣u0,h 2L2 (Ω) +
t
K∈Th
∂K in
f (τ )2L2 (Ω) + |ϕh |2a,∂Ω in
⎤ dτ ⎦ ,
0
per ogni t > 0, avendo introdotto, per ogni sottoinsieme Γ di ∂Ω di misura non nulla, la seminorma: ⎛ ⎞1/2 |v|a,Γ = ⎝ |a · n|v 2 dγ ⎠ . Γ
Una stima analoga si trova nel caso monodimensionale pur di sostituire (α, β) ad Ω, |a| a |a · nk | e |ϕh |a,∂Ω in con |a|ϕ2h (α).
8.4 Elementi finiti discontinui
265
Per quanto riguarda l’analisi della convergenza, si può dimostrare che, utilizzando elementi finiti continui, ⎛ max u(t) − uh (t)L2 (Ω) + ⎝
T
t∈[0,T ]
≤ Chr u0 Hr+1 (Ω) .
⎞1/2 |u(t) − uh (t)|2a,∂Ω dt⎠
0
Usando elementi finiti discontinui, invece, la stima a priori dell’errore diventa ⎛ max u(t) − uh (t)L2 (Ω) + ⎝
t∈[0,T ]
T
⎞ 12
|a · nK | [u(t) − uh (t)]2 dt⎠
0 K∈Th ∂K in
≤ Chr+1/2 u0 Hr+1 (Ω) .
In entrambi i casi si è supposto che ϕ = 0, f = 0 e u 0 ∈ Hr+1 (Ω). Per le dimostrazioni rinviamo a [QV94, Cap. 14] ed a [Joh87] ed alle referenze ivi citate. Altre formulazioni sono possibili, basate su varie forme di stabilizzazione. Consideriamo il problema (8.22) nella forma conservativa, in cui l’equazione di trasporto è sostituita da ∂u (8.47) + div(au) + a0 u = f, t > 0, x ∈ Ω. ∂t Posto ora ( ) aK (uh , vh ) = − uh (a · ∇vh ) + a0 uh vh dx, K
consideriamo la seguente approssimazione: per ogni t > 0, trovare u h (t) ∈ Wh tale che ∂ uh vh dΩ + aK (uh , vh ) + {a uh }vh dγ ∂t in K∈T e ⊂ ∂Ω h e Ω + ce (γ) uh vh dγ = f vh dΩ − (a · n) ϕ vh dγ ∀vh ∈ Wh . e⊂∂Ω e
Ω
e⊂∂Ω in e
(8.48) Le notazioni sono le seguenti: con e si denota un qualunque lato degli elementi della triangolazione T h condiviso da due triangoli, diciamo K 1 e K 2 . Per ogni funzione scalare ψ, regolare a pezzi sulla triangolazione, con ψ i = ψ Ki , si sono definiti le medie e i salti su e come segue {ψ} =
1 1 (ψ + ψ 2 ), 2
ψ = ψ 1 n1 + ψ 2 n2 ,
(8.49)
essendo ni la normale esterna all’elemento K i . Se invece σ è una funzione vettoriale, allora
266
8 Elementi finiti e metodi spettrali per equazioni iperboliche
1 1 (σ + σ 2 ), σ = σ 1 · n1 + σ 2 · n2 , 2 su e. Si noti che il salto ψ di una funzione scalare ψ attraverso e è un vettore parallelo alla normale a e, mentre il salto σ di una funzione vettoriale σ è una quantità scalare. Queste definizioni non dipendono dall’ordinamento degli elementi. Se e è un lato appartenente alla frontiera ∂Ω, allora {σ} =
ψ = ψ n,
{σ} = σ.
Le quantità {ψ} e σ non sono invece richieste sui lati di frontiera. Per quanto riguarda c e (γ), si tratta di una funzione non negativa che, tipicamente, verrà scelta come costante su ogni lato. Scegliendo, ad esempio, c e = |a · n|/2 su ogni lato interno, c e = −a · n/2 su ∂Ω in , ce = a · n/2 su ∂Ω out , la formulazione (8.48) si riduce alla formulazione upwind standard:
∂ uh vh dΩ + aK (uh , vh ) + {a uh }up vh dγ ∂t in K∈T e ⊂ ∂Ω h e Ω = f vh dΩ − (a · n) ϕ vh dγ ∀vh ∈ Wh . Ω
(8.50)
e⊂∂Ω in e
Ora {a uh }up denota il valore upwind di a u h , ovvero coincide con a u 1h se a · n1 > 0, con a u2h se a · n1 < 0, ed infine con a{u h } se a · n1 = 0. Infine, se a è costante (o a divergenza nulla), div(au h ) = a · ∇uh e (8.50) coincide con (8.46). La formulazione (8.48) è detta di Galerkin discontinuo con stabilizzazione di salto. Essa è stabile se ce ≥ θ0 |a · ne | per ogni lato interno e, ed inoltre convergente con ordine ottimale. In effetti, nel caso del problema stazionario si dimostra che u − uh 2L2 (Ω) +
√ ce u − uh 2L2 (e) ≤ C h2r+1 u2Hr+1 (Ω) . e∈Th
Per la dimostrazione e per altre formulazioni con stabilizzazione di salto, anche per problemi di diffusione e trasporto, rinviamo il lettore a [BMS04].
8.5 Elementi finiti spazio-temporali Un approccio alternativo a quello discusso nelle sezioni precedenti è di utilizzare una discretizzazione agli elementi finiti anche per la variabile temporale, oltre che per quella spaziale. A tale scopo, iniziamo con il caso monodimensionale e indichiamo con In = (tn−1 , tn ) l’intervallo temporale n-esimo e con S n = Ω × In , per n = 1, . . . , N , la corrispondente striscia spazio-temporale (in inglese, slab), si veda la Fig. 8.11 che si riferisce al caso in cui Ω = (0, 1). Pertanto Sn risulta decomposto in rettangoli K × I n , con K ∈ Th . Se Ω fosse un dominio bidimensionale S n risulterebbe decomposto in prismi retti con base K.
8.5 Elementi finiti spazio-temporali
267
t
tn Sn
tn−1
1 x
0
Figura 8.11. Discretizzazione spazio-temporale agli elementi finiti (k)
Per ogni k ≥ 1 e r ≥ 1, sia Wr lo spazio delle funzioni v(x, t), definite su Ω × I, con restrizione v |Sn continua per ogni n = 1, . . . , N , di grado r a tratti in x e (k) di grado k in t. Dunque, v |Sn ∈ Wrn dove (k) ={v : v(x, t) = Wrn
k
tj ϕj (x), ϕj ∈ Xhr }.
j=0 (k)
Si noti che le funzioni di W r sono in generale discontinue tra S n−1 e Sn . Per questo motivo useremo le seguenti notazioni [wn ]=wn+ − wn− ,
wn± = lim w(tn + s). s→0±
Passiamo ora al caso bidimensionale. Il metodo di discretizzazione per il problema (8.22) basato su elementi finiti continui di grado r in spazio ed elementi finiti discontinui di grado k in tempo, è il seguente: (k)
trovare U ∈ Wr tale che ∀n = 1, 2, . . . , N ⎧ ∂U ⎪ + ⎨ )=0 + a · ∇U + a0 U − f, V dt + ([Un−1 ], Vn−1 ∂t I ⎪ ⎩ n U = ϕh su ∂Ωin × In , dove si è posto U 0− = U0 , (ϕ, ψ) =
ϕψ dΩ e Ω
(k),in (k) Wrn = {v ∈ Wrn : v|∂Ωin ×In = 0}.
(k),in
∀V ∈ Wrn
,
268
8 Elementi finiti e metodi spettrali per equazioni iperboliche
Supponiamo che ∃γ > 0 : ∀n = 1, 2, . . . , N
γΔtn ≤ Δtn+1 ≤ γ −1 Δtn ,
avendo indicato con Δt n = tn − tn−1 l’n−simo passo temporale (non necessariamente costante rispetto a n). In tal caso, esiste una costante C = C(γ) tale che la soluzione U corrispondente al caso f = 0 soddisfa la seguente stima di stabilità: UN 2L2 (Ω) + 2μ0
N
Δtn Un 2L2 (Ω) +
n=1
N −1
[Un ]2L2 (Ω) ≤ U0 2L2 (Ω) ,
n=0
dove μ0 è la costante introdotta nella (8.25).
8.6 Approssimazione con metodi spettrali In questa sezione faremo un breve cenno all’approssimazione di problemi iperbolici con metodi spettrali. Ci limiteremo per semplicità al caso di problemi monodimensionali. Tratteremo dapprima l’approssimazione G-NI in un singolo intervallo, poi passeremo al metodo applicato ad una decomposizione in sotto-intervalli in cui si usino polinomi discontinui quando si passi da un intervallo ai suoi vicini. Ciò fornisce una generalizzazione degli elementi finiti discontinui, nel caso in cui si considerino polinomi di grado “elevato” in ogni elemento, e gli integrali su ogni elemento siano approssimati con la formula di integrazione numerica GLL (4.17).
8.6.1 Il metodo G-NI in un singolo intervallo Consideriamo l’analogo monodimensionale del problema iperbolico di trasportoreazione del primo ordine (8.22): ⎧ ∂u ∂u ⎪ ⎪ ⎪ ∂t + a ∂x + a0 u = f, −1 < x < 1, t > 0 ⎪ ⎨ (8.51) u(−1, t) = ϕ(t), t > 0, ⎪ ⎪ ⎪ ⎪ ⎩ −1 < x < 1. u(x, 0) = u0 (x), Se volessimo approssimare in spazio con un metodo spettrale di collocazione, un’imposizione forte delle condizioni al contorno risulta l’approccio più naturale. Indicati con {x0 = −1, x1 , . . . , xN = 1} i nodi GLL introdotti nella Sez. 4.2.3, l’approssimazione semi-discreta (in spazio) del problema (8.51) con un metodo di collocazione è data da: per ogni t > 0, trovare u N (t) ∈ QN tale che ⎧ ∂uN ∂uN ⎪ ⎪ + a + a (xj , t) = f (xj , t), j = 1, . . . , N, u 0 N ⎪ ⎪ ∂t ∂x ⎨ (8.52) uN (−1, t) = ϕ(t), ⎪ ⎪ ⎪ ⎪ ⎩ j = 0, . . . , N. uN (xj , 0) = u0 (xj ),
8.6 Approssimazione con metodi spettrali
269
Servendosi opportunamente del prodotto scalare discreto GLL definito in (4.23), l’approssimazione G-NI del problema (8.51), diventa: per ogni t > 0, trovare u N (t) ∈ QN tale che ⎧ ∂u ) ) ( ( ∂uN N ⎪ ⎪ , v , v + a + a0 uN , vN N = f, vN N ∀vN ∈ Q− N N ⎪ N, ⎪ ∂t ∂x N N ⎨ uN (−1, t) = ϕ(t), ⎪ ⎪ ⎪ ⎪ ⎩ uN (x, 0) = u0,N , (8.53) = {v ∈ Q : v (−1) = 0}. Dunque, dove u0,N ∈ QN , ed avendo posto Q − N N N N all’inflow, la soluzione u N soddisfa la condizione imposta, per ogni tempo t > 0, mentre le funzioni test si annullano. Le soluzioni dei problemi (8.52) e (8.53) in realtà coincidono se u 0,N in (8.53) è GLL scelto come l’interpolato Π N u0 . Per dimostrarlo, è sufficiente scegliere in (8.53) vN coincidente con il polinomio caratteristico ψ j associato al nodo GLL x j , per ogni j = 1, . . . , N . Deriviamo ora una stima di stabilità per la formulazione (8.53) nella norma (4.48) indotta dal prodotto scalare discreto (4.23). Scegliamo, per semplicità, un dato all’inflow omogeneo, ovvero ϕ(t) = 0, per ogni t, ed a e a 0 costanti. Scelto dunque vN = uN , abbiamo 1 ∂ a uN 2N + 2 ∂t 2
1 −1
) ( ∂u2N dx + a0 uN 2N = f, uN N . ∂x
Riscrivendo opportunamente il termine convettivo, integrando rispetto al tempo ed utilizzando la disuguaglianza di Young, abbiamo t uN (t)2N
+ a
(
)2 uN (1, τ ) dτ + 2 a0
0
t
= u0,N 2N + 2
t uN (τ )2N dτ 0
(
) f (τ ), uN (τ ) N dτ
0
t
≤
u0,N 2N
uN (τ )2N
+ a0 0
1 dτ + a0
t f (τ )2N dτ, 0
ovvero t uN (t)2N
+a 0
≤ u0,N 2N
1 + a0
(
)2 uN (1, τ ) dτ + a0
uN (τ )2N dτ 0
t f (τ )2N dτ. 0
t (8.54)
270
8 Elementi finiti e metodi spettrali per equazioni iperboliche
Ora, per la norma u 0,N 2N vale la maggiorazione u0,N 2N ≤ u0,N 2L∞ (−1,1)
N
αi = 2 u0,N 2L∞ (−1,1) ,
i=0
e maggiorazione analoga vale per f (τ ) 2N supposta f una funzione continua. Dunque, tornando alla (8.54) ed utilizzando sulle norme a primo membro la disuguaglianza (4.49), si ha t uN (t)2L2 (−1,1)
a
+
(
)2 uN (1, τ ) dτ + a0
0
≤
t uN (τ )2L2 (−1,1) dτ 0
2 u0,N 2L∞ (−1,1) +
2 a0
t f (τ )2L2 (−1,1) dτ. 0
La reinterpretazione del metodo G-NI come metodo di collocazione risulta meno immediata nel caso in cui il campo convettivo a non sia costante e si parta da una formulazione conservativa dell’equazione differenziale in (8.51), ovvero il secondo termine sia sostituito da ∂(au)/∂x. In tal caso si può ancora mostrare che l’approssimazione G-NI equivale all’approssimazione di collocazione in cui il termine convettivo ( GLL ) sia approssimato da ∂ ΠN (auN ) /∂x. Anche nel caso di un’approssimazione G-NI si può ricorrere ad un’imposizione debole delle condizioni al bordo. Tale approccio risulta più flessibile rispetto a quello sopra considerato e più adatto in vista di un’applicazione del metodo spettrale a problemi multidimensionali o a sistemi di equazioni. Come visto nella sezione precedente, punto di partenza per l’imposizione debole delle condizioni al bordo è un’opportuna integrazione per parti del termine di trasporto. Riferendoci al problema monodimensionale (8.51), si ha infatti (se a è costante): 1 −1
∂u v dx a ∂x
1 =−
au
1 ∂v dx + a u v −1 ∂x
au
∂v dx + a u(1, t) v(1) − a ϕ(t) v(−1). ∂x
−1 1
=− −1
In virtù di tale uguaglianza, è immediato formulare l’approssimazione G-NI con imposizione debole delle condizioni al bordo per il problema (8.51): per ogni t > 0, trovare u N (t) ∈ QN tale che ∂u ) ( ∂vN N , vN − a uN , + a0 uN , vN N ∂t ∂x N N (8.55) ) ( + a uN (1, t) vN (1) = f, vN N + a ϕ(t) vN (−1) ∀vN ∈ QN ,
8.6 Approssimazione con metodi spettrali
271
con uN (x, 0) = u0,N (x). Osserviamo che sia la soluzione u N che la funzione test v N sono libere al bordo. Una formulazione equivalente alla (8.55) si ottiene, in analogia a quanto visto nella Sez. 8.3.1, contro-integrando opportunamente per parti il termine convettivo: per ogni t > 0, trovare u N (t) ∈ QN tale che ∂u ∂u ) ( N N , vN , vN + a + a0 uN , vN N ∂t ∂x N N (8.56) ) ( ) ( + a uN (−1, t) − ϕ(t) vN (−1) = f, vN N ∀vN ∈ QN . È ora possibile reinterpretare tale formulazione debole come un opportuno metodo di collocazione. A tal fine è sufficiente scegliere in (8.56) la funzione test v N coincidente con i polinomi caratteristici (4.11) associati ai nodi GLL. Considerando dapprima i nodi interni e di outflow, ovvero scelta v N = ψi , con i = 1, . . . , N , abbiamo: ∂u ∂uN N + a + a0 uN (xi , t) = f (xi , t), (8.57) ∂t ∂x avendo già semplificato il peso α i comune a tutti i termini dell’uguaglianza. D’altro canto, scelta vN = ψ0 , otteniamo, in corrispondenza del nodo di inflow, la relazione ∂u ∂uN N + a + a0 uN (−1, t) ∂t ∂x (8.58) ) 1 ( + a uN (−1, t) − ϕ(t) = f (−1, t), α0 essendo α0 = 2/(N 2 + N ) il peso GLL associato al nodo −1. Dalle equazioni (8.57) e (8.58) segue dunque che una riscrittura in termini di collocazione è possibile in corrispondenza di tutti i nodi GLL tranne che per quello di inflow, per il quale invece si trova la relazione ( ) ∂uN ∂uN a uN (−1, t) − ϕ(t) = α0 f − −a − a0 uN (−1, t), (8.59) ∂t ∂x ovvero la condizione al bordo del problema differenziale (8.52) a meno del residuo associato all’approssimazione u N . Tale condizione è dunque soddisfatta esattamente solo al limite, per N −→ ∞. In accordo con quanto notato precedentemente, la formulazione (8.56) si complicherebbe inevitabilmente nel caso, ad esempio, di un campo convettivo a non costante. Infatti, non si potrebbe concludere direttamente che ∂u ∂vN N − a uN , , vN = a − a uN (1, t) vN (1) + a ϕ(t) vN (−1), ∂x N ∂x N ∂vN non identifica più necessariamente poiché, in questo caso, il prodotto a u N ∂x un polinomio di grado 2N − 1. Si rende dunque necessario passare attraverso l’oGLL peratore d’interpolazione Π N , introdotto nella Sez. 4.2.3, prima di effettuare la contro-integrazione per parti. Limitandoci al termine di trasporto si ha dunque:
272
8 Elementi finiti e metodi spettrali per equazioni iperboliche
( ) ∂vN ( ) ∂vN ∂vN GLL GLL a uN , a uN , = − ΠN = − ΠN ∂x N ∂x N ∂x ( ∂Π GLL(a u ) ) 1 N N , vN − a uN vN −1 . = ∂x La formulazione debole (8.56) dunque diventa: per ogni t > 0, trovare u N (t) ∈ QN tale che ∂u ( ∂Π GLL (a u ) ) N N N , vN , vN + a0 uN , vN N + ∂t ∂x N (8.60) ) ( ) ( + a(−1) uN (−1, t) − ϕ(t) vN (−1) = f, vN N ∀vN ∈ QN , −
a uN ,
con uN (x, 0) = u0,N (x). Anche la reinterpretazione, in termini di collocazione, della formulazione (8.56), rappresentata dalle relazioni (8.57) e (8.59), andrà debitamente GLL modificata con l’introduzione dell’operatore d’interpolazione Π N . Precisamente otteniamo ( ) ∂u GLL ∂ΠN a uN N + + a0 uN (xi , t) = f (xi , t), ∂t ∂x per i = 1, . . . , N , e ( ) GLL ) ( ∂ΠN a uN ∂uN − − a0 uN (−1, t), a(−1) uN (−1, t) − ϕ(t) = α0 f − ∂t ∂x in corrispondenza del nodo di inflow x = −1.
8.6.2 Il metodo DG-SEM-NI Come anticipato, in questa sezione introdurremo un’approssimazione basata su una partizione in sotto-intervalli, in ognuno dei quali si usi il metodo G-NI. I polinomi saranno inoltre discontinui tra un intervallo e l’altro. Questo spiega l’acronimo DG (discontinuous Galerkin), SEM (spectral element method), NI (numerical integration). Estendiamo la definizione del problema (8.51) al generico intervallo (α, β) su cui introduciamo una partizione in M sottointervalli Ω m = (xm−1 , xm ) con m = 1, . . . , M . Sia WN,M = {v ∈ L2 (α, β) : v ∈ QN , ∀m = 1, . . . , M } Ωm
lo spazio dei polinomi definiti a pezzi di grado N (≥ 1) su ogni sotto-intervallo. Osserviamo che la continuità non è necessariamente garantita in corrispondena dei punti {xi }. Possiamo così formulare la seguente approssimazione del problema (8.51): per ogni t > 0, trovare u N,M (t) ∈ WN,M tale che M ∂uN,M m=1
∂t
, vN,M
N,Ωm
∂u ) ( N,M , vN,M + a + a0 uN,M , vN,M N,Ω m ∂x N,Ωm
M ) ( ) ( − + (x f, vN,M N,Ωm + a(xm−1 ) u+ − U ) v (x ) = m−1 m−1 N,M N,M N,M m=1
(8.61)
8.6 Approssimazione con metodi spettrali
273
per ogni vN,M ∈ WN,M , essendo − UN,M (xi )
=
u− N,M (xi ), i = 1, . . . , M − 1, ϕ(x0 ),
per i = 0,
(8.62)
e dove (·, ·)N,Ωm denota l’approssimazione tramite la formula GLL (4.23) del prodotto scalare L2 ristretto all’elemento Ω m . Data la natura discontinua della formulazione, possiamo ricondurre l’equazione (8.61) ad ognuno degli M sotto-intervalli, scegliendo la funzione test vN,M tale che vN,M [α,β]\Ωm = 0. Così facendo otteniamo infatti ∂u
∂u ) ( N,M , vN,M + a + a0 uN,M , vN,M N,Ωm ∂t ∂x N,Ωm N,Ωm ) ) ( + ( − + + a(xm−1 ) uN,M − UN,M (xm−1 ) vN,M (xm−1 ) = f, vN,M N,Ω , N,M
, vN,M
m
− con m = 1, . . . , M , e dove la quantità U N,M (xi ) risulta definita ancora secondo la (8.62). Osserviamo che, per m = 1, il termine ( ) + a(x0 ) u+ N,M − ϕ (x0 ) vN,M (x0 )
fornisce l’imposizione in forma debole della condizione al bordo di inflow. D’altra canto il termine ) ( − + a(xm−1 ) u+ N,M − UN,M (xm−1 ) vN,M (xm−1 ), per m = 2, . . . , M , può essere interpretato come un termine di penalizzazione che fornisce un’imposizione debole della continuità della soluzione u N,M in corrispondenza dei nodi interni x i , i = 1, . . . , M − 1. Tali termini sarebbero ovviamente assenti se si utilizzassero elementi finiti continui. Vogliamo ora interpretare la formulazione (8.61) come un opportuno metodo di collocazione. A tal fine, introduciamo, su ciascun sotto-intervallo Ω m , gli N + 1 nodi (m) (m) GLL xj , con j = 0, . . . , N , indicando con α j i corrispondenti pesi. Identifichiamo ora la funzione test v N,M in (8.61) con il polinomio caratteristico di Lagrange (m) (m) ψj ∈ PN (Ωm ) associato al nodo xj ed esteso a zero fuori dal dominio Ω m . Data la presenza del termine di salto, avremo una riscrittura non univoca per l’equazione (m) (8.61). Incominciamo a considerare i polinomi caratteristici associati ai nodi x j , con j = 1, . . . , N − 1, e m = 1, . . . , M . In tal caso non avremo contributo alcuno del termine di penalizzazione: ∂uN,M (m) (m) ∂uN,M (m) (m) (m) (m) (xj ) + a(xj ) (xj ) + a0 (xj ) uN,M (xj ) = f (xj ), ∂t ∂x Per questa scelta di nodi ritroviamo così esattamente la collocazione del problema (m) differenziale (8.51). Nel caso invece in cui la funzione ψ j sia associata ad un nodo della partizione {xi }, ovvero j = 0, con m = 1, . . . , M abbiamo
274
8 Elementi finiti e metodi spettrali per equazioni iperboliche
∂u
∂uN,M (m) (m) (m) (x0 ) + a0 (x0 ) uN,M (x0 ) ∂t ∂x ) (m) (m) ( + (m) (m) − + a(x0 ) uN,M − UN,M (x0 ) = α0 f (x0 ), (8.63) (1) − ricordando che U N,M (x0 ) = ϕ(x0 ). Implicitamente abbiamo adottato la convenzione che il sotto-intervallo Ω m non includa x m , in quanto la natura discontinua del metodo adottato ci porterebbe a processare ogni nodo x i , con i = 1, . . . , M − 1, due volte. L’equazione (8.63) può essere riscritta come (m)
α0
∂u
N,M
∂t
+a
N,M
(m)
(m)
(x0 ) + a(x0 )
) (m) ∂uN,M a(x0 ) ( + (m) − + a0 uN,M − f (x0 ) = − (m) uN,M − UN,M (x0 ). ∂x α (m)
0
Osserviamo che mentre il termine di sinistra rappresenta il residuo dell’equazione in (m) corrispondenza del nodo x 0 , quello di destra coincide con il residuo dell’imposizio(m) ne debole della continuità di u N,M in x0 .
8.7 Trattamento numerico delle condizioni al bordo per sistemi iperbolici Abbiamo visto diverse strategie per imporre le condizioni al bordo di inflow per l’equazione di trasporto scalare. Quando si considerano sistemi iperbolici, il trattamento numerico delle condizioni al bordo richiede un po’ più di attenzione. Illustreremo questo problema su un sistema lineare a coefficienti costanti in una dimensione, ⎧ ⎪ ⎨ ∂u + A ∂u = 0, −1 < x < 1, t > 0, ∂t ∂x (8.64) ⎪ ⎩ u(x, 0) = u (x), −1 < x < 1, 0 completato con opportune condizioni al bordo, preso da [CHQZ07]. Scegliamo, nel seguito, il caso di un sistema costituito da due equazioni iperboliche, identificando in (8.64) u con il vettore (u, v) T e A con la matrice −1/2 −1 A= , −1 −1/2 i cui autovalori sono −3/2 e 1/2. Fatta la scelta u(x, 0) = sin(2x) + cos(2x),
v(x, 0) = sin(2x) − cos(2x)
per le condizioni iniziali e u(−1, t) = sin(−2 + 3t) + cos(−2 − t) = ϕ(t), v(1, t) = sin(2 + 3t) + cos(2 − t) = ψ(t)
(8.65)
8.7 Trattamento numerico delle condizioni al bordo per sistemi iperbolici
275
per le condizioni al bordo, otteniamo un problema (8.64) ben posto. Consideriamo ora la matrice degli autovettori (destri) 1/2 1/2 W = , 1/2 −1/2 la cui inversa risulta essere
W
−1
=
Sfruttando la relazione
1
1
1
−1
Λ=W
−1
AW =
.
−3/2
0
0
1/2
,
possiamo riscrivere l’equazione differenziale in (8.64) in termini delle variabili caratteristiche u+v z1 −1 z=W u= , (8.66) = z2 u−v come ∂z ∂z +Λ = 0. (8.67) ∂t ∂x La variabile caratteristica z 1 si propaga verso sinistra con velocità 3/2, mentre z 2 si propaga verso destra con velocità 1/2. Questo suggerisce di assegnare una condizione per z1 in x = 1 e una per z 2 in corrispondenza di x = −1. Teoricamente possiamo ricostruire i valori al bordo di z 1 e z2 utilizzando le condizioni al bordo per u e v. Dalla relazione (8.66), si ha infatti 1/2 1/2 z1 1/2 (z1 + z2 ) , u = Wz = = z2 1/2 −1/2 1/2 (z1 − z2 ) ovvero, sfruttando i valori al bordo (8.65) assegnati per u e v, 1 1 (z1 + z2 )(−1, t) = ϕ(t), (z1 − z2 )(1, t) = ψ(t). (8.68) 2 2 Il sistema (8.67) risulta dunque solo apparentemente disaccoppiato in quanto, in realtà, le variabili z1 e z2 vengono accoppiate dalle condizioni al bordo (8.68). Si delinea dunque il problema di come trattare, da un punto di vista numerico, le condizioni al contorno per il problema (8.64). Può risultare infatti già difficoltosa la discretizzazione del corrispondente problema scalare ⎧ ∂z ∂z ⎪ ⎪ +a = 0, −1 < x < 1, t > 0, ⎪ ⎪ ∂t ∂x ⎨ (8.69) z(−1, t) = φ(t), t > 0, ⎪ ⎪ ⎪ ⎪ ⎩ z(x, 0) = z0 (x), −1 < x < 1,
276
8 Elementi finiti e metodi spettrali per equazioni iperboliche
scelta a > 0 costante, se non si utilizza uno schema di discretizzazione appropriato. Illustreremo il procedimento per un metodo di approssimazione spettrale. In effetti per metodi ad alta accuratezza è ancora più fondamentale che per un metodo agli elementi finiti o alle differenze finite trattare correttamente le condizioni al bordo, in quanto errori al bordo verrebbero propagati all’interno con velocità infinita. Introdotta la partizione x0 = −1 < x1 < . . . < xN −1 < xN = 1 dell’intervallo [−1, 1], se si decide di utilizzare, ad esempio, uno schema a differenze finite si incontrano problemi essenzialmente nel derivare il valore di z in corrispondenza del nodo x N . Infatti, se da un lato lo schema upwind ci fornisce un’approssimazione per tale valore ma è affetto da una stabilità condizionata, d’altro canto uno schema con ordine di convergenza più elevato, come quello a differenze finite centrate, non è in grado di fornirci tale approssimazione a meno di introdurre un nodo supplementare fuori dall’intervallo di definizione (−1, 1). Al contrario, una discretizzazione spettrale non comporta alcun problema al bordo. Per esempio, lo schema di collocazione corrispondente al problema (8.69) può essere scritto anche sul bordo di outflow: n ∀n ≥ 0, trovare zN ∈ QN tale che ⎧ n+1 n n ⎪ ⎨ zN (xi ) − zN (xi ) + a ∂zN (xi ) = 0, i = 1, . . . , N, Δt ∂x ⎪ ⎩ n+1 zN (x0 ) = φ(tn+1 ). Ad ogni nodo, sia esso interno o di bordo, risulta associata un’equazione. Possiamo dunque affermare di essere in presenza di un problema che ammette soluzione univoca. L’univocità della soluzione risulta invece problematica passando al sistema (8.64). In tal caso infatti, mentre ad ogni nodo interno x i , con i = 1, . . . , N − 1, son associate due incognite e due equazioni, in corrispondenza dei nodi di bordo x 0 e xN abbiamo ancora due incognite ma una sola equazione. Dovranno essere dunque fornite condizioni aggiuntive per tali punti: in generale, andranno aggiunte in corrispondenza dell’estremo x = −1 tante condizioni quanti sono gli autovalori positivi, mentre per x = 1 andranno fornite tante condizioni addizionali quanti sono gli autovalori negativi. Cerchiamo una soluzione a tale problema ispirandoci al metodo di Galerkin spettrale. Supponiamo di applicare al sistema (8.64) un metodo di collocazione: vogliamo dunque trovare u N = (uN,1 , uN,2 )T ∈ (QN )2 tale che ∂uN ∂uN (xi ) + A (xi ) = 0, ∂t ∂x
i = 1, . . . , N − 1,
(8.70)
e con uN,1 (x0 , t) = ϕ(t),
uN,2(xN , t) = ψ(t).
(8.71)
L’idea più semplice per ricavare le due equazioni mancanti per u N,1 e uN,2 in corrispondenza di x N e x0 , rispettivamente, è quella di sfruttare l’equazione vettoriale (8.70) assieme ai valori noti ϕ(t) e ψ(t) in (8.71). La soluzione calcolata in tal modo
8.7 Trattamento numerico delle condizioni al bordo per sistemi iperbolici
277
risulta tuttavia fortemente instabile. Cerchiamo dunque un approccio alternativo. L’idea è quella di aggiungere alle 2(N − 1) relazioni di collocazione (8.70) e alle condizioni al bordo “fisiche” (8.71), le equazioni delle caratteristiche uscenti in corrispondenza dei punti x 0 e xN . Più nel dettaglio, la caratteristica uscente dal dominio nel punto x 0 = −1 è quella associata all’autovalore negativo della matrice A, e ha equazione 3 ∂z1 ∂z1 (x0 ) − (x0 ) = 0, ∂t 2 ∂x
(8.72)
mentre quella associata al punto x N = 1 è individuata dall’autovalore positivo 1/2 ed è data da ∂z2 1 ∂z2 (xN ) + (xN ) = 0. (8.73) ∂t 2 ∂x La scelta della caratteristica uscente è motivata dal fatto che questa è portatrice di informazioni dall’interno del dominio al corrispondente punto di outflow, punto in cui ha senso dunque imporre l’equazione differenziale. Le equazioni (8.72) e (8.73) ci permettono di avere un sistema chiuso di 2N + 2 equazioni nelle 2N + 2 incognite u N,1 (xi , t) = uN (xi , t), uN,2 (xi , t) = vN (xi , t), con i = 0, . . . , N . Per completezza, possiamo riscrivere le equazioni caratteristiche (8.72) e (8.73) in termini delle incognite u N e vN , come ∂(uN + vN ) 3 ∂(uN + vN ) (x0 ) − (x0 ) = 0 ∂t 2 ∂x e
∂(uN − vN ) 1 ∂(uN − vN ) (xN ) + (xN ) = 0, ∂t 2 ∂x rispettivamente, ovvero in termini matriciali come
∂uN ∂uN (x0 ) + A (x0 ) = 0, ∂t ∂x ∂u ∂u N N −1 (xN ) + A (xN ) = 0. W22 ∂t ∂x
−1 −1 W12 W11 −1 W21
(8.74)
Tali equazioni aggiuntive sono dette di compatibilità: esse rappresentano una combinazione lineare delle equazioni differenziali del problema in corrispondenza dei punti di bordo con coefficienti dati dalle componenti della matrice W −1 . Osservazione 8.4 Come osservato in precedenza i metodi spettrali (di collocazione, di Galerkin, o G-NI) rappresentano un “buon terreno” su cui testare possibili soluzioni a problemi numerici quali appunto l’assegnazione di condizioni supplementari per sistemi iperbolici. Questo è dovuto alla natura globale di tali metodi che propagano immediatamente e su tutto il dominio ogni possibile perturbazione numerica che venga introdotta al bordo. •
278
8 Elementi finiti e metodi spettrali per equazioni iperboliche
8.7.1 Trattamento debole delle condizioni al bordo Vogliamo generalizzare ora l’approccio basato sulle equazioni di compatibilità passando da relazioni puntuali, quali appunto le (8.74), a relazioni integrali, in linea con un’approssimazione numerica di tipo, ad esempio, elementi finiti o G-NI. Consideriamo di nuovo il sistema a coefficienti costanti (8.64) e le notazioni usate nella Sez. 8.7. Sia A una matrice reale, simmetrica e non singolare di ordine d, Λ la matrice diagonale reale degli autovalori di A e W la matrice quadrata le cui colonne sono gli autovettori (destri) di A. Supponiamo che W sia ortogonale il che ci garantisce che Λ = W T AW . Le variabili caratteristiche, definite come z = W T u, soddisfano il sistema diagonale (8.67). Introduciamo lo splitting Λ = diag(Λ + , Λ− ) della matrice degli autovalori raggruppando, rispettivamente, gli autovalori positivi (Λ+ ) e quelli negativi (Λ − ). Tali sottomatrici risultano entrambe diagonali, Λ + definita positiva di ordine p, Λ − definita negativa di ordine n = d − p. Analogamente possiamo riscrivere z come z = (z + , z− )T , avendo indicato con z + (z− , rispettivamente) le variabili caratteristiche costanti lungo le caratteristiche con pendenza positiva (negativa), ovvero che si muovono verso destra (sinistra). In corrispondenza dell’estremo di destra x = 1, z + è associato alle variabili caratteristiche uscenti mentre z− a quelle entranti. Chiaramente i ruoli si scambiano in corrispondenza dell’estremo di sinistra x = −1. Un caso semplice si presenta se assegnamo i valori delle caratteristiche entranti in corrispondenza di entrambi gli estremi del dominio, ovvero p condizioni in x = −1 ed n condizioni in corrispondenza di x = 1. In questo caso (8.67) rappresenta, a tutti gli effetti, un sistema disaccoppiato. Solitamente, tuttavia, vengono assegnate, in corrispondenza di entrambi i punti di bordo, combinazioni lineari Bu = g delle variabili fisiche, ovvero, rileggendole in termini delle variabili z, combinazioni lineari Cz = g delle variabili caratteristiche, con C = BW . Nessuna delle caratteristiche uscenti verrà, in linea di massima, individuata da queste combinazioni in quanto i valori risultanti saranno in generale incompatibili con quelli propagati dal sistema iperbolico all’interno del dominio. Al contrario, le condizioni al bordo dovrebbero permettere di determinare le variabili caratteristiche entranti in funzione di quelle uscenti e dei dati. Per la precisione, supponiamo che siano assegnate le condizioni al bordo BL u(−1, t) = gL (t),
BR u(1, t) = gR (t),
t > 0,
(8.75)
dove gL e gR sono vettori assegnati e B L , BR opportune matrici. Concentriamoci sull’estremo di sinistra, x = −1. Poiché, in corrispondenza di tale punto, si hanno p caratteristiche entranti, B L avrà dimensione p × d. Ponendo C L = BL W ed utilizzando lo splitting z = (z + , z− )T introdotto per z ed il corrispondente splitting W = (W + , W − )T per la matrice degli autovettori, si ha CL z(−1, t) = CL+ z+ (−1, t) + CL− z− (−1, t) = gL (t), dove CL+ = BL W + è una matrice p × p mentre C L− = BL W − ha dimensione p × n. Facciamo la richiesta che la matrice C L+ sia non singolare. La caratteristica entrante in corrispondenza dell’estremo x = −1 risulta dunque esser data da
8.7 Trattamento numerico delle condizioni al bordo per sistemi iperbolici
z+ (−1, t) = SL z− (−1, t) + zL (t),
279
(8.76)
essendo SL = −(CL+ )−1 CL− una matrice p × n e zL (t) = (CL+ )−1 gL (t). In maniera del tutto analoga possiamo assegnare, in corrispondenza dell’estremo di destra x = 1, la variabile caratteristica entrante come z− (1, t) = SR z+ (1, t) + zR (t),
(8.77)
essendo SR una matrice n × p. Le matrici SL ed SR sono dette matrici di riflessione. Il sistema iperbolico (8.64) verrà dunque completato dalle condizioni al bordo (8.75) o, equivalentemente, dalle condizioni (8.76)-(8.77), oltre che, ovviamente, da un’opportuna condizione iniziale u(x, 0) = u 0 (x), per −1 ≤ x ≤ 1. Cerchiamo di capire a quali vantaggi può portare una tale scelta per le condizioni al bordo. Partiamo dalla formulazione debole del problema (8.64), integrando per parti il termine contenente la derivata spaziale: 1
∂u dx − v ∂t T
−1
1 −1
1 ∂v T Au dx + vT Au −1 = 0, ∂x
per ogni t > 0, essendo v una funzione test arbitraria, differenziabile. Vorremmo 1 cercare di riscrivere il termine di bordo vT Au −1 con una formulazione equivalente alla forma (8.75). Introducendo la variabile caratteristica W T v = y = (y+ , y− )T associata alla funzione test v, avremo vT Au = yT Λz = (y+ )T Λ+ z+ + (y− )T Λ− z− . Utilizzando le relazioni (8.76)-(8.77), ne segue dunque che 1
∂u dx − v ∂t T
−1
1 −1
∂v T Au dx ∂x
−
(y+ )T (−1, t)Λ+ SL z− (−1, t) − (y− )T (−1, t)Λ− z− (−1, t)
+
(y+ )T (1, t)Λ+ z+ (1, t) + (y− )T (1, t)Λ− SR z+ (1, t)
=
(y+ )T (−1, t)Λ+ zL (t) − (y− )T (1, t)Λ− zR (t).
(8.78)
Osserviamo che nel termine noto di tale formulazione intervengono le condizioni al bordo (8.76)-(8.77), che vengono così incorporate dal sistema senza che vi sia bisogno di pretendere nulla sul comportamento al bordo delle funzioni u e v. Inoltre, integrando ancora per parti, è possibile ottenere una formulazione equivalente alla (8.78) in cui le condizioni al bordo vengono imposte in modo debole:
280
8 Elementi finiti e metodi spettrali per equazioni iperboliche
1
∂u dx + v ∂t
1 vT A
T
−1
−1
∂u dx ∂x
( ) + (y+ )T (−1, t)Λ+ z+ (−1, t) − SL z− (−1, t)
(8.79)
( ) − (y− )T (1, t)Λ− z− (1, t) − SR z+ (1, t) = (y+ )T (−1, t)Λ+ zL (t) − (y− )T (1, t)Λ− zR (t). Infine ricordiamo che solitamente sulle matrici di riflessione S L e SR viene fatta l’ipotesi di dissipazione SL SR < 1, (8.80) che è sufficiente a garantire la stabilità dello schema precedente rispetto alla norma L2 . La norma di matrice in (8.80) va intesa come la norma euclidea di una matrice rettangolare, ovvero la radice quadrata del massimo autovalore di S T S. La formulazione (8.78) (o (8.79)) si presta ad essere approssimata con una delle tecniche “alla Galerkin” viste sino ad ora: con il metodo di Galerkin-elementi finiti, con il metodo di Galerkin spettrale, con il metodo spettrale con integrazione numerica Gaussiana in un singolo dominio (G-NI) o in versione spectral element, nel caso di elementi spettrali continui (SEM-NI) o discontinui (DG-SEM-NI).
8.8 Esercizi 1. Verificare che la discretizzazione con elementi finiti lineari continui (8.13) coincide con quella alle differenze finite (7.22) nel caso in cui si renda diagonale la matrice di massa con la tecnica del mass-lumping. [Soluzione: si usi la proprietà (5.26) di partizione dell’unità come fatto nella Sez. 5.5.] 2. Si dimostrino le disuguaglianze di stabilità fornite nella Sez. (8.4) per la semidiscretizzazione basata su elementi finiti discontinui. 3. Si verifichi la relazione (8.13). 4. Si discretizzi con il metodo degli elementi spettrali continui, SEM-NI, e discontinui, DG-SEM-NI, il sistema (8.78).
9 Cenni a problemi iperbolici non lineari
In questo capitolo introduciamo alcuni esempi di problemi iperbolici non lineari. Accenneremo ad alcune proprietà caratteristiche di tali problemi, la più rilevante essendo quella di poter ammettere soluzioni discontinue anche nel caso di dati continui. L’approssimazione numerica di questi problemi è un compito tutt’altro che facile, che affronteremo solo in parte in queste note. Ci limiteremo semplicemente ad accennare a come si possono applicare gli schemi alle differenze finite e agli elementi finiti discontinui nel caso di equazioni monodimensionali.
9.1 Equazioni scalari Consideriamo la seguente equazione: ∂ ∂u + F (u) = 0, t > 0, x ∈ R, ∂t ∂x
(9.1)
dove F è una funzione non lineare di u. Essa è detta flusso di u in quanto su ogni intervallo (α, β) di R è verificata la seguente relazione d β u(x, t)dx = F (u(t, α)) − F (u(t, β)). dt α Per tale ragione la (9.1) esprime una legge di conservazione. Un esempio classico è costituito dall’equazione di Burgers, già considerata nell’esempio 1.3, in cui F (u) = u2 /2. Tale equazione in forma non conservativa si può scrivere (fintanto che la soluzione rimane regolare): ∂u ∂u +u = 0. ∂t ∂x
(9.2)
L’equazione delle linee caratteristiche per la (9.2) è x (t) = u, ma poiché u è costante sulle caratteristiche, si ottiene x (t) = costante, cioè le caratteristiche sono delle rette. Esse sono definite nel piano (x, t) dalla mappa t → (x + tu 0 (x), t), e la soluzione è definita implicitamente da u(x + tu 0 (x)) = u0 (x), ∀t < tc , essendo tc un
282
9 Cenni a problemi iperbolici non lineari
valore critico del tempo in cui per la prima √ volta tali caratteristiche si intersecano. Ad esempio, se u0 = (1 + x2 )−1 , tc = 8/ 27. In effetti, se u0 (x) è negativa in qualche punto, posto tc = −
1 min u0 (x)
per t > tc non può esistere alcuna soluzione classica (ovvero di classe C 1 ), in quanto ∂u (x, t) = −∞ lim inf x∈R ∂x t→t− c Consideriamo la Fig. 9.1: si nota come per t = t c la soluzione presenti una discontinuità. t
t2 tc t1 0
x
Figura 9.1. Sviluppo della singolarità
Per ovviare a questa perdita di unicità si introduce il concetto di soluzione debole per le equazioni iperboliche: diciamo che u è una soluzione debole di (9.1) se soddisfa la relazione differenziale (9.1) in tutti i punti x ∈ R ad eccezione di quelli in cui è discontinua. In questi ultimi non si pretende più che valga la (9.1) (non avrebbe alcun senso derivare una funzione discontinua), ma si esige che sia verificata la seguente condizione di Rankine-Hugoniot: F (ur ) − F (ul ) = σ(ur − ul ),
(9.3)
ove ur e ul indicano, rispettivamente, il limite destro e sinistro di u nel punto di discontinuità, e σ è la velocità di propagazione della discontinuità. La condizione (9.3) esprime dunque il fatto che il salto dei flussi è proporzionale al salto della soluzione. Le soluzioni deboli non sono necessariamente uniche: tra di esse quella fisicamente corretta è la cosiddetta soluzione entropica. Come vedremo alla fine di questa sezione, nel caso dell’equazione di Burgers la soluzione entropica si ottiene come limite, per ε → 0, della soluzione u ε (x, t) dell’equazione avente un termine di perturbazione viscoso:
9.1 Equazioni scalari
283
∂uε ∂ ∂ 2 uε + F (uε ) = ε 2 , t > 0 , x ∈ R, ∂t ∂x ∂x con uε (x, 0) = u0 (x). In generale, possiamo dire che: -
se F (u) è differenziabile, una discontinuità che si propaga con velocità σ data dalla (9.3), soddisfa la condizione di entropia se: F (ul ) ≥ σ ≥ F (ur );
-
se F (u) non è differenziabile, una discontinuità che si propaga con velocità σ data dalla (9.3) soddisfa la condizione di entropia se: F (u) − F (ul ) F (u) − F (ur ) ≥σ≥ , u − ul u − ur per ogni u compresa tra u l e ur .
Esempio 9.1 Consideriamo l’equazione di Burgers con la condizione iniziale seguente j ul , x < 0, u0 (x) = ur , x > 0, dove ur ed ul sono due costanti. Se ul > ur , allora esiste una sola soluzione debole (che è anche entropica): j ul , x < σt, (9.4) u(x, t) = ur , x > σt, dove σ = (ul + ur )/2 è la velocità di propagazione della discontinuità (detta anche shock). In questo caso le caratteristiche “entrano” nello shock (si veda la Fig. 9.2). Nel caso ul < ur ci sono infinite soluzioni deboli: una ha ancora la forma (9.4), ma in questo caso le caratteristiche escono dalla discontinuità (si veda la Fig. 9.3). Tale soluzione è instabile, ovvero piccole perturbazioni sui dati cambiano in modo sostanziale la soluzione stessa. Un’altra soluzione debole è: 8 > < uxl se x < ul t, se ul t ≤ x ≤ ur t, u(x, t) = > : t ur se x > ur t. t x = σt ul ur
σt
x
0
Figura 9.2. Soluzione entropica per l’equazione di Burgers
x
284
9 Cenni a problemi iperbolici non lineari t
x = σt
ur ul
σt
x
0
x
Figura 9.3. Soluzione non entropica per l’equazione di Burgers t
x = σt
ur ul
tul
tur
x
0
x
Figura 9.4. Onda di rarefazione
Tale soluzione, che descrive un’onda di rarefazione, a differenza della precedente, è entropica (si veda la Fig. 9.4).
Introduciamo ora il concetto di funzione entropia e flusso entropico. Si dice che un problema iperbolico (9.1) possiede una funzione entropia se esistono una funzione strettamente convessa η = η(u) ed una funzione Ψ = Ψ (u) tali che Ψ (u) = η (u)F (u),
(9.5)
dove l’apice indica la derivata rispetto all’argomento u. La funzione η è detta entropia e Ψ è detta flusso d’entropia. Si ricorda che una funzione η si dice convessa se per ogni u e w distinti e θ ∈ (0, 1) si ha η(u + θ(w − u)) < (1 − θ)η(u) + θη(w). Se η possiede derivata seconda continua, ciò è equivalente a richiedere che η > 0. Osservazione 9.1 Quella qui presentata è una definizione “matematica” di entropia. Nel caso in cui (9.1) governi un fenomeno fisico, è spesso possibile definire una “entropia termodinamica”. Essa risulta anche essere effettivamente una entropia del problema differenziale nel senso precedentemente descritto. •
9.1 Equazioni scalari
285
La forma quasi-lineare di (9.1) è data da ∂u ∂u + F (u) = 0. ∂t ∂x
(9.6)
Se u è sufficientemente regolare, moltiplicando (9.6) per η (u) si verifica facilmente che η soddisfa una legge di conservazione del tipo ∂η ∂Ψ (u) + (u) = 0. ∂t ∂x
(9.7)
Per una equazione scalare è in genere possibile trovare diverse coppie di funzioni η e Ψ che soddisfino le condizioni date. Le manipolazioni illustrate per derivare (9.7) sono valide solo se u è regolare, in particolare se non vi sono discontinuità nella soluzione. Si possono però trovare le condizioni che la variabile entropia deve soddisfare in corrispondenza di una discontinuità nella soluzione di (9.1) quando tale equazione rappresenti il limite per → 0 + della seguente equazione modificata (detta equazione di viscosità) ∂2u ∂u ∂F + (u) = 2 . ∂t ∂x ∂x
(9.8)
La soluzione di (9.8) è regolare per ogni > 0, ed effettuando le stesse manipolazioni usate precedentemente si può scrivere 2 ∂η ∂Ψ ∂2u ∂ ∂u ∂u (u) + (u) = η (u) 2 = η (u) − η (u) . ∂t ∂x ∂x ∂x ∂x ∂x Integrando ora su un generico intervallo [x 1 , x2 ] × [t1 , t2 ] si ottiene t2 ∂Ψ (u) ∂u ∂η (u) + dxdt = η (u(x2 , t)) (x2 , t) ∂t ∂x ∂x x1 t1 t1 2 t2 x2 ∂u ∂u − η (u(x1 , t)) (x1 , t) dt − η (u) dxdt = R1 () + R2 (), ∂x ∂x t1 x1 t2
x2
dove abbiamo posto R1 () =
∂u ∂u (x2 , t) − η (u(x1 , t)) (x1 , t) dt, ∂x ∂x t1 2 t2 x2 ∂u R2 () = − η (u) dxdt . ∂x t1 x1 t2
η (u(x2 , t))
Abbiamo lim R1 () = 0,
→0+
mentre se la soluzione per → 0 + del problema modificato presenta una discontinuità lungo una curva nel piano (x, t) si ha che
286
9 Cenni a problemi iperbolici non lineari
lim R2 () = 0,
→0+
( )2 dato che l’integrale contenente il termine ∂u è, in generale, non limitato. ∂x D’altra parte R2 () ≤ 0 per ogni > 0, essendo ∂ 2 η/∂u2 > 0, dunque la soluzione debole al limite per → 0 + soddisfa t2 x2 ∂Ψ ∂η (u) + (u) dxdt ≤ 0 ∀x1 , x2 , t1 , t2 . (9.9) ∂t ∂x t1 x1 In altre parole
∂η ∂Ψ (u) + (u) ≤ 0, ∂t ∂x
t > 0,
x∈R
in senso debole. Vi è ovviamente una relazione tra quanto appena visto e la nozione di soluzione entropica. Se l’equazione differenziale ammette una funzione entropia η, allora una soluzione debole è una soluzione entropica se e solo se η soddisfa (9.9). In altre parole, le soluzioni entropiche sono soluzioni limite del problema modificato (9.8) per → 0+ .
9.2 Approssimazione alle differenze finite Ritorniamo a considerare l’equazione iperbolica non lineare (9.1), con la condizione iniziale: u(x, 0) = u0 (x), x ∈ R . Indichiamo con a(u) = F (u) la velocità caratteristica. Anche per questo problema possiamo usare uno schema esplicito alle differenze finite della forma seguente: n n un+1 = unj − λ(Hj+1/2 − Hj−1/2 ), j
(9.10)
n dove Hj+1/2 =H(unj , unj+1 ) e H(·, ·) è il flusso numerico. L’interpretazione funzionale del flusso numerico è la seguente:
n Hj+1/2
1 Δt
tn+1
tn
F (u(xj+1/2 , t))dt,
n ovvero Hj+1/2 approssima il flusso medio attraverso x j+1/2 nell’intervallo di tempo n n+1 [t , t ]. Per avere consistenza, il flusso numerico deve verificare:
H(u, u) = F (u),
(9.11)
nel caso in cui u sia una costante. Lax e Wendroff hanno dimostrato che, sotto l’ipotesi (9.11), le funzioni u tali che
9.2 Approssimazione alle differenze finite
u(tn , xj ) =
287
lim unj ,
Δt,h→0
sono soluzioni deboli del problema di partenza. Sfortunatamente, però, non è assicurato che le soluzioni ottenute in questa maniera soddisfino la condizione d’entropia (ovvero non è detto che le soluzioni deboli siano anche soluzioni entropiche). Al fine di “recuperare” le soluzioni entropiche, gli schemi numerici devono introdurre un’adeguata diffusione numerica, come suggerito dall’analisi della Sez. 9.1. Riscriviamo a tal fine (9.10) nella forma un+1 = G(unj−1 , unj , unj+1 ) j
(9.12)
e introduciamo alcune definizioni. -
Lo schema numerico (9.12) è detto monotono se G è una funzione monotona crescente in ognuno dei suoi argomenti. Lo schema numerico (9.12) è detto limitato se esiste C > 0 tale che sup j,n |unj | ≤ C. Lo schema numerico (9.12) è detto stabile se le soluzioni alle differenze finite u n e vn , ottenute a partire da due dati iniziali differenti u 0 e v0 , verificano: un − vn Δ ≤ CT u0 − v0 Δ , per ogni n ≥ 0 t.c. nΔt ≤ T e per ogni Δt e h sufficientemente piccoli. La costante CT > 0 è indipendente da Δt e h, e · Δ è una opportuna norma discreta, come quelle introdotte in (7.26). Si noti che per problemi lineari questa definizione è equivalente alla (7.25). Si parlerà di stabilità forte quando si può prendere CT = 1 per ogni T > 0.
Ad esempio, ponendo, per semplicità F j = F (uj ), lo schema di Lax-Friedrichs corrisponde a prendere 1 1 Fj+1 + Fj − (uj+1 − uj ) Hj+1/2 = 2 λ nella (9.10). Si dimostra che questo metodo è consistente, stabile e monotono purché valga la seguente condizione (analoga alla condizione CFL già vista nel caso lineare): n Δt F (uj ) ≤ 1 ∀j ∈ Z ∀n ∈ N. h
(9.13)
N.N. Kuznetsov ha dimostrato che schemi monotoni del tipo (9.12) sono limitati, stabili, convergenti alla soluzione entropica ed hanno un’accuratezza al massimo del primo ordine sia rispetto al tempo che allo spazio, ovvero max |unj − u(xj , tn )| ≤ C(Δt + h). j,n
288
9 Cenni a problemi iperbolici non lineari
Essi sono in genere troppo dissipativi e non generano soluzioni accurate a meno che non si usino griglie molto raffinate. Schemi di ordine più elevato (i cosiddetti high order shock capturing schemes) sono stati sviluppati usando tecniche che permettono di calibrare la dissipazione numerica in funzione della regolarità locale della soluzione, al fine di risolvere correttamente le discontinuità (assicurando la convergenza a soluzioni entropiche ed evitando oscillazioni spurie) utilizzando globalmente una dissipazione numerica minima. Questa problematica è complessa e non può essere affrontata con eccessivo desiderio di sintesi. Per approfondimenti rinviamo ai testi [LeV02b], [GR96] e [Hir88].
9.3 Approssimazione con elementi finiti discontinui Per la discretizzazione del problema (9.1) consideriamo ora l’approssimazione spaziale basata su elementi finiti discontinui. Usando le stesse notazioni introdotte nella Sez. 8.4, cerchiamo per ogni t > 0 u h (t) ∈ Wh tale che si abbia ∀j = 0, . . . , m − 1 e ∀vh ∈ Pr (Ij ) Ij
∂uh vh dx− ∂t
F (uh )
Ij
∂vh dx+Hj+1 (uh )vh− (xj+1 )−Hj (uh )vh+ (xj ) = 0, (9.14) ∂x
essendo Ij = [xj , xj+1 ]. Il dato iniziale u 0h è fornito dalle relazioni u0h vh dx = u0 vh dx, j = 0, . . . , m − 1. Ij
Ij
La funzione H j denota ora il flusso numerico non lineare nel nodo x j e dipende dai valori di u h in xj , ovvero + Hj (uh (t)) = H(u− h (xj , t), uh (xj , t)).
(9.15)
u− h (x0 , t)
Se j = 0 si dovrà porre = φ(t), che è il dato al bordo nell’estremo di sinistra (ammesso naturalmente che questo sia il punto di inflow). Osserviamo che esistono varie possibilità di scelta per la funzione H. Vogliamo tuttavia che tali scelte diano luogo in (9.14) a schemi che siano perturbazioni di schemi monotoni. Questi ultimi, infatti, come già accennato nella sezione precedente, pur essendo solo del primo ordine, sono stabili e convergono alla soluzione entropica. Precisamente, pretendiamo che (9.14) sia uno schema monotono quando r = 0. In tal (j) caso detto uh il valore costante di u h su Ij , la (9.14) diventa: ∂ (j) (j) (j+1) (j−1) (j) u (t) + H(uh (t), uh (t)) − H(uh (t), uh (t)) = 0, (9.16) ∂t h xj+1 0,(j) con dato iniziale u h = h−1 u0 dx nell’intervallo Ij , j = 0, . . . , m − 1, j xj avendo indicato con h j = xj+1 − xj l’ampiezza di Ij . Affinché lo schema (9.16) sia monotono, il flusso H deve essere monotono, il che equivale a dire che H(v, w) è: hj
9.3 Approssimazione con elementi finiti discontinui
-
289
una funzione Lipschitziana dei suoi due argomenti; una funzione non decrescente in v e non crescente in w. Simbolicamente, H(↑, ↓); consistente con il flusso F , ovvero H(u, u) = F (u), per ogni costante u. Alcuni celebri esempi di flusso monotono sono i seguenti: 1. Flusso di Godunov H(v, w) =
⎧ ⎨
min F (u) se v ≤ w,
v≤u≤w
⎩ max F (u) se v > w; w≤u≤v
2. Flusso di Engquist-Osher v H(v, w) =
w
max(F (u), 0)du + 0
min(F (u), 0)du + F (0);
0
3. Flusso di Lax-Friedrichs H(v, w) =
1 [F (v) + F (w) − δ(w − v)], 2
δ=
max
|F (u)|.
inf x u0 (x)≤u≤supx u0 (x)
Il flusso di Godunov è quello che dà luogo alla minor quantità di dissipazione numerica, quello di Lax-Friedrichs è il meno costoso. Tuttavia l’esperienza numerica suggerisce che se il grado r aumenta, la scelta del flusso H non ha conseguenze significative sulla qualità dell’approssimazione. Nel caso lineare, in cui F (u) = au, tutti i flussi precedenti coincidono e sono uguali al “flusso upwind”: H(v, w) = a
v + w |a| − (w − v). 2 2
(9.17)
In tal caso osserviamo che lo schema (9.14) coincide esattamente con quello introdotto in (8.41) allorché a > 0. Infatti, posto a 0 = 0 e f = 0 in (8.41) e integrando per parti si ottiene, per ogni j = 1, . . . , m − 1: Ij
∂uh vh dx − ∂t
(auh )
∂vh dx ∂x
Ij +(auh )− (xj+1 )vh− (xj+1 )
−
(auh )− (xj )vh+ (xj )
(9.18) = 0,
ovvero la (9.14), tenendo conto che nel caso in esame au h = F (uh ) e ∀j = 1, . . . , m − 1 (auh )− (xj ) = a
+ u− a h (xj ) + uh (xj ) − (u+ (xj ) − u− h (xj )) = Hj (uh ). 2 2 h
La verifica nel caso j = 0 è ovvia.
290
9 Cenni a problemi iperbolici non lineari
− In tal caso, indicato con [u h ]j = u+ h (xj ) − uh (xj ), si ha il seguente risultato di stabilità
uh (t)2L2 (α,β) + θ(uh (t)) ≤ u0h 2L2 (α,β) avendo posto t m−1 [uh (t)]2j dt. θ(uh (t)) = |a| 0
j=1
Si noti come anche i salti siano controllati dal dato iniziale. L’analisi di convergenza fornisce il seguente risultato (nell’ipotesi che u 0 ∈ Hr+1 (α, β)) u(t) − uh (t)L2 (α,β) ≤ C|u0 |Hr+1 (α,β) hr+1/2 ,
(9.19)
dunque un ordine di convergenza (= r + 1/2) più grande di quello (= r) che si avrebbe usando elementi finiti continui. Nel caso non lineare e per r = 0, definendo la seminorma m−1 |v|T V (α,β) = |vj+1 − vj |, v ∈ Wh , j=0
e prendendo il flusso numerico di Engquist-Osher nella (9.16), si ha il seguente risultato (dovuto a Kuznestov): √ u(t) − uh (t)L1 (α,β) ≤ u0 − u0h L1 (α,β) + C|u0 |T V (α,β) th. Inoltre, |uh (t)|T V (α,β) ≤ |u0h |T V (α,β) ≤ |u0 |T V (α,β) . Per la discretizzazione temporale, scriviamo dapprima lo schema (9.14) nella forma algebrica ⎧ ⎨ M d u (t) = L (u (t), t), t ∈ (0, T ), h h h h dt ⎩ uh (0) = u0h , essendo uh (t) il vettore contenente i gradi di libertà, L h è il vettore risultante della discretizzazione del termine − ∂F ∂x e Mh la matrice di massa. Mh è una matrice diagonale a blocchi in cui il j-esimo blocco diagonale è la matrice di massa relativa all’elemento Ij (come già osservato quest’ultima è diagonale se si ricorre ad una base di polinomi di Legendre). Per la discretizzazione temporale oltre agli schemi di Eulero precedentemente considerati possiamo ricorrere al seguente metodo di Runge-Kutta del 2 o ordine: ⎧ M (u∗ − unh ) = ΔtLh (unh , tn ), ⎪ ⎪ ⎪ h h ⎨ ∗ ∗ n+1 ), Mh (u∗∗ h − uh ) = ΔtLh (uh , t ⎪ ⎪ ⎪ ⎩ n+1 uh = 12 (unh + u∗∗ h ).
9.3 Approssimazione con elementi finiti discontinui
−1
291
r=0
10
−2
r=1
10
−3
10
r=2 −4
10
r=3 −5
10
−6
10
−3
−2
10
h
10
Figura 9.5. Errore u − uh L2 (0,1) ottenuto risolvendo un problema di trasporto lineare con dato iniziale regolare usando elementi finiti discontinui di grado r rispettivamente pari a 0, 1, 2 e 3. L’errore è stato calcolato a t = 0.01. Lo schema di avanzamento in tempo è quello di Runge-Kutta del terz’ordine con Δt = 5 × 10−4
Nel caso del problema lineare (F (u) = au), usando r = 1 questo schema è stabile nella norma · L2 (α,β) (per ogni t > 0) purché sia soddisfatta la condizione Δt ≤
1 h , 3 |a|
come dimostrato da Cockburn e Shu. Per r arbitrario, l’evidenza numerica mostra che bisogna utilizzare uno schema di ordine 2r + 1. In tal caso si ha stabilità sotto la condizione (di cui non esiste una dimostrazione rigorosa) Δt ≤
1 h . 2r + 1 |a|
Riportiamo allora lo schema di Runge-Kutta del 3 o ordine, da usare preferibilmente quando r = 1: ⎧ Mh (u∗h − unh ) = ΔtLh (unh , tn ), ⎪ ⎪ ⎪ ⎨ 3 n 1 ∗ 1 ∗ n+1 ), Mh (u∗∗ (9.20) h − ( 4 uh + 4 uh )) = 4 ΔtLh (uh , t ⎪ ⎪ ⎪ ⎩ 2 ∗∗ n+1/2 − ( 13 unh + 23 u∗∗ ). Mh (un+1 h )) = 3 ΔtLh (uh , t h Esempio 9.2 Consideriamo ancora il problema dell’Esempio 8.2, che risolviamo con il metodo degli elementi finiti discontinui, utilizzando lo schema di Runge-Kutta del terz’ordine per l’avanzamento temporale. L’obiettivo è di verificare sperimentalmente la (9.19). A tal scopo abbiamo usato un passo temporale molto piccolo, Δt = 5 × 10−4 , e 5 valori decrescenti del passo h ottenuti dividendo ripetutamente per 2 il valore iniziale h = 12.5 × 10−3 . Si è confrontato l’errore in norma L2 (0, 1) al tempo t = 0.01 per elementi di grado r pari a 0, 1, 2 e 3. Il risultato è riportato in scala logaritmica in Fig. 9.5. Esso è in buon accordo con la (9.19). In effetti, per r = 1 in questo caso particolare la convergenza è più rapida di quanto predetto dalla
292
9 Cenni a problemi iperbolici non lineari
teoria: i dati numerici forniscono un ordine di convergenza molto vicino a 2. Nel caso di r > 1 non sono stati riportati i risultati per i valori più piccoli di h in quanto per tali valori (e per il Δt scelto) il problema è numericamente instabile. Esempio 9.3 Consideriamo lo stesso problema di trasporto lineare dell’esempio precedente, usando ora come dato iniziale l’onda quadra illustrata a sinistra nella Fig. 9.6. Essendo il dato iniziale discontinuo l’utilizzo di elementi di grado elevato non migliora l’ordine di convergenza, che risulta essere, per tutti i valori di r considerati, molto vicino al valore teorico di 1/2. In Fig. 9.7 si mostrano le oscillazioni nella vicinanza della discontinuità della soluzione caso r = 2, responsabili del degrado della convergenza, mentre la soluzione per r = 0 non mostra alcuna oscillazione.
Nel caso del problema non lineare utilizzando lo schema di Runge-Kutta con r = 0 sotto la condizione (9.13) si ottiene |unh |T V (α,β) ≤ |u0 |T V (α,β) , 0.5 2
1.5
r=0
u
0.1 1
r=1 r=2 r=3
0.5
0 0
0.1
0.2
0.3
0.4
0.5 x
0.6
0.7
0.8
0.9
1
0.01
−3
−2
10
10
Figura 9.6. Errore u − uh L2 (0,1) ottenuto risolvendo un problema di trasporto lineare con dato iniziale illustrato nella figura a sinistra. Si sono usati elementi finiti discontinui di grado r rispettivamente pari a 0, 1, 2 e 3. L’errore è stato calcolato a t = 0.01. Lo schema di avanzamento in tempo è quello di Runge-Kutta del terz’ordine con Δt = 5 × 10−4 2.5
2.5
2
2
1.5
1.5
1
1
0.5
0.5
0
0
−0.5 0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
−0.5 0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Figura 9.7. Soluzione a t = 0.01 e h = 3.125 × 10−3 per il caso test di Fig. 9.6. A sinistra il caso r = 3: si noti la presenza di oscillazioni nelle vicinanze delle discontinuità, mentre altrove la soluzione è accurata. A destra si mostra la soluzione ottenuta usando la stessa discretizzazione spaziale e temporale per r = 0
9.3 Approssimazione con elementi finiti discontinui
293
1.2 1 0.8 0.6 0.4 0.2 0 −0.2 0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Figura 9.8. Soluzione iniziale u0 per il primo caso test del problema di Burgers
ovvero la stabilità forte nella norma | · | T V (α,β) . Quando non si faccia ricorso a schemi monotoni, è molto più difficile ottenere la stabilità forte. In questo caso ci si può limitare a garantire che la variazione totale delle medie locali sia uniformemente limitata. Rinviamo a Cockburn [Coc98] il lettore interessato a sviluppare questa problematica. Esempio 9.4 Questo esempio vuole illustrare una caratteristica tipica dei problemi non-lineari, cioè come si possano sviluppare discontinuità nella soluzione anche a partire da un dato iniziale regolare. A tal scopo consideriamo l’equazione di Burgers (9.2) nell’intervallo (0, 1), con dato iniziale 8 5 , < 1, 0 ≤ x ≤ 12 5 3 5 7 54(2x − 6 ) − 27(2x − 56 )2 + 1, 12 < x < 12 , u0 (x) = : 7 0, 12 ≤ x ≤ 1. Si può verificare facilmente che u0 , illustrata in Fig. 9.8, è di classe C 1 (0, 1). Si è quindi considerata la soluzione numerica ottenuta con il metodo Galerkin discontinuo, utilizzando lo schema di Runge-Kutta del terz’ordine con un passo temporale Δt = 10−3 e h = 0.01, per r = 0, r = 1 e r = 2. La Fig. 9.9 mostra la soluzione a t = 0.5 ottenuta con i tali schemi. Si può notare come si sia sviluppata una discontinuità che lo schema numerico risolve senza oscillazioni nel caso r = 0, mentre per ordini più elevati si hanno delle oscillazioni nelle vicinanze della discontinuità.
Per eliminare le oscillazioni nelle vicinanze della discontinuità della soluzione si può usare la tecnica dei limitatori di flusso (flux limiters), la cui descrizione esula dagli scopi di questo libro. Rimandiamo al proposito il lettore alla bibliografia già citata. Ci limitiamo a dire che lo schema di Runge-Kutta del terz’ordine (9.20) si modifica come segue ⎧ ( ) u∗h = Λh unh + ΔtM−1 Lh (unh , tn ) , ⎪ h ⎪ ⎪ ⎨ (3 n 1 ∗ 1 ) −1 ∗ n+1 ) , u∗∗ h = Λh 4 uh + 4 uh + 4 ΔtMh Lh (uh , t ⎪ ⎪ ⎪ n+1 ( ) ⎩ −1 2 ∗∗ n+1/2 ) , uh = Λh 13 unh + 23 u∗∗ h + 3 ΔtMh Lh (uh , t essendo Λh il limitatore di flusso, che è funzione anche delle variazioni della soluzione calcolata, cioè della differenza di valori tra due nodi adiacenti. Esso è pari all’operatore identità laddove la soluzione è regolare, mentre limita le variazioni se queste
294
9 Cenni a problemi iperbolici non lineari 1.4 1.2 1
uh
0.8 0.6 0.4 0.2 0 x −0.2 0
0.1
0.2
0.3
0.4
0.5
0.1
0.2
0.3
0.4
0.5
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0.6
0.7
0.8
0.9
1
0.6
0.7
0.8
0.9
1
1.4 1.2 1
uh
0.8 0.6 0.4 0.2 0 −0.2 0
x
1.4 1.2 1
uh
0.8 0.6 0.4 0.2 0 −0.2 0
x
Figura 9.9. Soluzione a t = 0.5 per il primo caso test del problema di Burgers. Confronto tra la soluzione numerica per r = 0 (in alto a sinistra), r = 1 (in alto a destra) e r = 2 (in basso). Per il caso r = 0 la soluzione discreta, costante a tratti, è stata evidenziata collegando con una linea punteggiata i valori in corrispondenza al punto medio di ogni elemento
provocano l’insorgenza di oscillazioni “ad alta frequenza” nella soluzione numerica. Chiaramente Λh va costruito in modo opportuno, in particolare deve mantenere le proprietà di consistenza e conservazione dello schema e scostarsi il meno possibile dall’operatore identità per non far degradare l’accuratezza. A titolo esemplificativo riportiamo in Fig. 9.10 il risultato ottenuto con elementi finiti discontinui lineari (r = 1) per lo stesso caso test di Fig. 9.9 applicando la tecnica dei limitatori di flusso. La soluzione numerica ottenuta risulta più regolare, anche se leggermente più diffusiva di quella di Fig. 9.9.
Esempio 9.5 Consideriamo ora un secondo problema, dove il dato iniziale è quello di Fig. 9.11, ottenuto riflettendo specularmente rispetto alla retta x = 0.5 il dato del caso test precedente.
9.3 Approssimazione con elementi finiti discontinui
295
1.4 1.2 1
uh
0.8 0.6 0.4 0.2 0 x −0.2 0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Figura 9.10. Soluzione a t = 0.5 per il primo caso test del problema di Burgers. Soluzione ottenuta per r = 1 applicando la tecnica dei limitatori di flusso per regolarizzare la soluzione numerica nelle vicinanze della discontinuità 1.2 1 0.8
u0
0.6 0.4 0.2 0 −0.2 0
0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9
1
1
1
0.8
0.8
0.6
0.6
0.4
0.4
u
u
Figura 9.11. Soluzione iniziale u0 per il secondo caso test del problema di Burgers
0.2
0.2
0
0
−0.2 0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
−0.2 0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Figura 9.12. Soluzione a t = 0.5 per il secondo caso test del problema di Burgers. Confronto tra la soluzione ottenuta per r = 1 (a sinistra) e quella per r = 2 (a destra). Nel riquadro è illustrato un ingrandimento della soluzione numerica che permette di apprezzare qualitativamente la migliore accuratezza ottenuta per r = 2
Mantenendo invariati tutti gli altri parametri della simulazione numerica esaminiamo di nuovo la soluzione a t = 0.5. Essa è illustrata in Fig. 9.12. In questo caso la soluzione rimane continua, in quanto per questa condizione iniziale, le linee caratteristiche (che nel caso della equazione di Burgers sono delle rette nel piano (x, t) di pendenza pari a arctan u−1 ) non si incrociano
296
9 Cenni a problemi iperbolici non lineari
mai. L’ingrandimento permette di apprezzare in modo qualitativo la migliore accuratezza della soluzione ottenuta per r = 2 rispetto a quella ottenuta per r = 1.
9.4 Sistemi iperbolici non-lineari Accenniamo infine al caso dei sistemi di equazioni iperboliche non lineari. Un esempio classico è fornito dalle equazioni di Eulero. Esse si ottengono dalle seguenti equazioni di Navier-Stokes (per fluidi comprimibili) in R d , d = 1, 2, 3, ⎧ d ⎪ ∂ρ ∂(ρuj ) ⎪ ⎪ + = 0, ⎪ ⎪ ⎪ ∂t j=1 ∂xj ⎪ ⎪ ⎪ ⎪ d ⎨ ∂(ρu ) ∂(ρui uj + δij p) ∂τij i + = 0, i = 1, . . . , d − (9.21) ⎪ ∂t ∂xj ∂xj ⎪ j=1 ⎪ ⎪ d ⎪ d ⎪ ⎪ ⎪ ∂ρe + ∂(ρhuj ) − ∂( i=1 ui τij + qj ) = 0. ⎪ ⎪ ⎩ ∂t ∂xj ∂xj j=1 Le variabili hanno il seguente significato: u = [u 1 , . . . , ud ]T è il vettore velocità, ρ la densità, p la pressione, ee i + 12 |u|2 l’energia totale per unità di massa, pari alla somma dell’energia interna e i e dell’energia cinetica del fluido, h = e + p/ρ l’entalpia totale per unità di massa, q il flusso termico e ∂uj ∂ui τij = μ − 23 δij divu + ∂xi ∂xj il tensore degli sforzi (essendo μ la viscosità molecolare del fluido). Le equazioni del sistema precedente descrivono, rispettivamente, la conservazione della massa, del momento e dell’energia. Per completare il sistema è necessario assegnare una legge che leghi e alle variabili ρ, p, u, del tipo e = Φ(ρ, p, u). Tale legge viene normalmente derivata dalle equazioni di stato del fluido in esame. In particolare le equazioni di stato del gas ideale p = ρRT,
ei = Cv T,
dove R = Cp − Cv è la costante del gas e T la temperatura, fornisce e=
1 p + |u|2 , ρ(γ − 1) 2
dove γ = Cp /Cv è il rapporto tra i calori specifici a pressione ed a volume costante, rispettivamente. Il flusso termico q viene usualmente legato al gradiente di temperatura tramite la legge di Fick:
9.4 Sistemi iperbolici non-lineari
q = −κ∇T = −
297
κ 1 ∇(e − |u|2 ), Cv 2
essendo κ la conducibilità termica del fluido in esame. Se μ = 0 e κ = 0, si ottengono le equazioni di Eulero per fluidi non viscosi. Il lettore interessato può trovarle in testi specializzati di fluidodinamica oppure nella teoria dei sistemi iperbolici non lineari, quali per esempio [Hir88] o [GR96]. Tali equazioni possono essere scritte in forma compatta nel seguente modo ∂w + divF (w) = 0, ∂t
(9.22)
essendo w = (ρ, ρu, ρe)T il vettore delle cosiddette variabili conservate. La matrice dei flussi F (w), funzione non lineare di w, si può ottenere dalle (9.21). Ad esempio, se d = 2, abbiamo ⎡ ⎤ ρu1 ρu2 ⎢ρu21 + p ρu1 u2 ⎥ ⎥ F (w) = ⎢ ⎣ ρu1 u2 ρu22 + p⎦ . ρhu1 ρhu2 La (9.22) è detta forma conservativa delle equazioni di Eulero. Infatti integrandola su una qualsiasi regione Ω ⊂ R d ed usando il teorema di Gauss si ottiene: d dt
w dΩ +
Ω
F (w) · n dΓ = 0. ∂Ω
Ciò si interpreta dicendo che la variazione nel tempo di w in Ω è bilanciata dalla variazione dei flussi attraverso la frontiera di Ω. La (9.22) è pertanto una legge di conservazione. Le equazioni di Navier-Stokes possono essere scritte anch’esse in forma conservativa come segue ∂w + divF (w) = divG(w), ∂t dove G(w) sono i cosiddetti flussi viscosi. Sempre nel caso d = 2 essi sono dati da ⎡ ⎤ 0 0 ⎢ ⎥ τ11 τ12 ⎥ G(w) = ⎢ ⎣ ⎦ τ21 τ22 ρhu1 + u · τ1 + q1 ρhu2 + u · τ2 + q2 dove τ1 = (τ11 , τ21 )T e τ2 = (τ12 , τ22 )T . Riscriviamo ora il sistema (9.22) nella forma ∂w ∂Fi (w) ∂w + = 0. ∂t ∂w ∂xi i=1 d
(9.23)
298
9 Cenni a problemi iperbolici non lineari
Essa è un caso particolare di problema della forma seguente ∂w ∂w + Ai (w) = 0, ∂t ∂xi i=1 d
(9.24)
d detta forma quasi-lineare. Se la matrice A α (w) = i=1 αi Ai (w) è diagonalizzabile per tutti i valori reali di {α 1 , . . . , αd } ed i suoi autovalori sono reali e distinti, allora il sistema (9.24) è strettamente iperbolico. Esempio 9.6 Un semplice esempio di problema strettamente iperbolico è fornito dal cosiddetto sistema p: 8 ∂u ∂v > < − =0 ∂t ∂x ∂ ∂u > : + p(v) = 0 . ∂t ∂x Se p (v) < 0, i due autovalori della matrice jacobiana « „ 0 −1 A(w) = 0 p (v) sono λ1 (v) = −
p p −p (v) < 0 < λ2 (v) = + −p (v) .
Esempio 9.7 Per il sistema di Eulero monodimensionale (ovvero con d = 1) si ha: w = T (ρ, ρu, e)T e F (w) = (ρu, ρu2 + p, u(e r + p)) . Gli autovalori della matrice A1 (w) del p sistema sono u − c, u, u + c dove c = γ è la velocità del suono. Essendo u, c ∈ R, gli ρ autovalori sono reali e distinti e quindi il sistema di Eulero monodimensionale è strettamente iperbolico.
Si possono estendere al caso dei sistemi le considerazioni fatte sulle discontinuità della soluzione nel caso scalare, introducendo anche qui il concetto di soluzione debole. In particolare, anche in questo caso, si ha un’unica soluzione debole entropica. La condizione di entropia può essere estesa nel caso di sistemi, usando per esempio quella proposta da Lax. Osserviamo che nel caso del sistema monodimensionale (9.22) le condizioni di salto di Rankine-Hugoniot si scrivono nella forma F (w+ ) − F (w− ) = σ(w+ − w− ), essendo w± i due stati costanti che rappresentano i valori delle incognite attraverso la discontinuità e σ rappresenta ancora la velocità con cui si propaga la discontinuità. Usando il teorema fondamentale del calcolo, tale relazione si scrive nella forma 1 σ(w+ − w− ) = DF (θw+ + (1 − θ)w− ) · (w+ − w− )dθ 0
=
A(w− , w+ ) · (w+ − w− ),
(9.25)
9.4 Sistemi iperbolici non-lineari
299
dove la matrice
1
A(w− , w+ ) =
DF (θw+ + (1 − θ)w− ) dθ
0
rappresenta il valor medio dello Jacobiano di F (indicato con DF ) lungo il segmento che congiunge w − con w+ . La relazione (9.25) mostra che, in ogni punto di salto, la differenza tra gli stati destro e sinistro w + − w− è un autovettore della matrice A(w− , w+ ), mentre la velocità del salto σ coincide con il corrispondente autovalore λ = λ(w− , w+ ). Chiamando λi (w) l’i−esimo autovalore della matrice A(w) = DF (w), la condizione di ammissibilità di Lax richiede che λi (w+ ) ≤ σ ≤ λi (w− ) ∀i. Intuitivamente, ciò significa che per uno shock della i−esima famiglia, la velocità a cui esso viaggia deve essere maggiore della velocità λ i (w+ ) delle onde immediatamente di fronte allo shock e minore della velocità λ i (w− ) delle onde dietro lo shock. Nel caso di sistemi iperbolici di m equazioni (m > 1), l’entropia η e il flusso associato Ψ sono ancora delle funzioni scalari e la relazione (9.5) diventa ∇Ψ (u) =
dF (u) · ∇η(u), du
(9.26)
che rappresenta un sistema di m equazioni e 2 incognite (η e Ψ ). Se m > 2 tale sistema può non avere soluzioni. Osservazione 9.2 Nel caso delle equazioni di Eulero, la funzione entropia esiste anche nel caso m = 3. •
10 Le equazioni di Navier-Stokes
Le equazioni di Navier-Stokes per descrivere il moto di un fluido con densità ρ costante in un dominio Ω ⊂ R d (con d = 2, 3) si scrivono nella seguente forma ⎧ ⎨ ∂u − div ν (∇u + ∇uT ) + (u · ∇)u + ∇p = f , x ∈ Ω, t > 0, ∂t (10.1) ⎩ divu = 0, x ∈ Ω, t > 0, essendo u la velocità del fluido, p la pressione divisa per la densità (che in questo capitolo chiameremo semplicemente “pressione”), ν = μρ la viscosità cinematica, μ la viscosità dinamica e f è un termine forzante per unità di massa che si suppone appartenere a L2 (R+ ; [L2 (Ω)]d ). La prima equazione del sistema è l’equazione di bilancio della quantità di moto, la seconda è l’equazione di conservazione della massa, detta anche equazione di continuità. Il termine (u·∇)u descrive il processo di trasporto convettivo, mentre −div ν(∇u + ∇uT ) descrive il processo di diffusione molecolare. Il sistema (10.1) può essere ottenuto dalle analoghe equazioni per fluidi comprimibili introdotte nel Cap. 9 supponendo ρ costante, utilizzando l’equazione di continuità (che ora è divenuta semplicemente divu = 0) per semplificare i vari termini e quindi dividendo le equazioni per ρ. Si noti come, a differenza del caso comprimibile, non appaia in (10.2) una equazione per l’energia. Infatti, anche se in principio è possibile scrivere una equazione per l’energia anche per i fluidi incomprimibili, essa può essere completamente risolta una volta calcolato il campo di velocità tramite il sistema (10.1). Nel caso in cui ν è costante, applicando l’equazione di continuità, otteniamo div ν(∇u + ∇uT ) = ν (Δu + ∇divu) = νΔu, e il sistema (10.1) si può scrivere nella forma più compatta ⎧ ⎨ ∂u − νΔu + (u · ∇)u + ∇p = f , x ∈ Ω, t > 0, ∂t ⎩ divu = 0, x ∈ Ω, t > 0, che è quella che considereremo nel resto del capitolo.
(10.2)
302
10 Le equazioni di Navier-Stokes
Le equazioni (10.2) sono spesso chiamate equazioni di Navier-Stokes incomprimibili. Più in generale, sono detti fluidi incomprimibili quelli che soddisfano la condizione di incomprimibilità divu = 0. Il moto di fluidi a densità costante soddisfa necessariamente tale condizione, tuttavia si possono avere flussi incomprimibili a densità variabile (per esempio i cosiddetti flussi stratificati), che sono governati da un diverso sistema di equazioni, dove la densità ρ appare esplicitamente. Non si affronta qui l’argomento, che può essere approfondito su qualunque buon testo di fluidodinamica. Affinché il problema (10.2) sia ben posto è necessario assegnare delle condizioni iniziali u(x, 0) = u0 (x) ∀x ∈ Ω, (10.3) unitamente a delle condizioni al contorno, per esempio, ∀t > 0, ⎧ u(x, t) = ϕ(x, t) ∀x ∈ ΓD , ⎪ ⎪ ⎨ ∂u ⎪ ⎪ ⎩ ν − pn (x, t) = ψ(x, t) ∀x ∈ ΓN , ∂n
(10.4)
dove u0 , ϕ e ψ sono funzioni vettoriali assegnate, mentre Γ D e ΓN sono porzioni ◦
◦
della frontiera ∂Ω di Ω tali che Γ D ∪ ΓN = ∂Ω, ΓD ∩ ΓN = ∅ e n è il versore normale uscente a ∂Ω. Nel caso si utilizzino le equazioni nella forma (10.1), la seconda equazione in (10.4) deve essere sostituita da ) 1 ( T ν ∇u + ∇u · n − pn (x, t) = ψ(x, t) ∀x ∈ ΓN . 2 Se indichiamo con u i , i = 1, . . . , d le componenti del vettore u rispetto ad un sistema di riferimento cartesiano e con f i quelle del vettore f, il sistema (10.2) può essere riscritto in funzione delle singole componenti come ⎧ d ⎪ ⎪ ∂ui ∂ui ∂p ⎪ ⎪ − νΔu + uj + = fi , i = 1, . . . , d, i ⎪ ⎨ ∂t ∂x ∂x j i j=1 d ⎪ ∂uj ⎪ ⎪ ⎪ = 0. ⎪ ⎩ ∂xj j=1
Nel caso bidimensionale, le equazioni di Navier-Stokes con le condizioni al contorno indicate danno luogo a problemi ben posti in senso classico, ovvero hanno soluzioni dotate di derivate continue, e non sviluppano singolarità in tempo se il dato iniziale è regolare. Le cose cambiano nel caso tridimensionale, in cui esistenza ed unicità di soluzioni in senso classico sono state dimostrate solo per tempi piccoli. Nella sezione seguente introdurremo la formulazione debole del problema di Navier-Stokes: in questo caso è possibile dimostrare un risultato di esistenza globale (per ogni intervallo temporale). Resta tuttavia aperto il problema dell’unicità (legato peraltro al problema della regolarità), indubbiamente il problema centrale della teoria delle equazioni di Navier-Stokes.
10.1 Formulazione debole delle equazioni di Navier-Stokes
303
Osservazione 10.1 Abbiamo scritto le equazioni di Navier-Stokes in termini delle cosiddette variabili primitive u e p. Altre variabili possono tuttavia essere utilizzate. Per esempio nel caso bidimensionale si adottano spesso la vorticità ω e la funzione corrente ψ, che sono legate alla velocità dalle relazioni ⎡ ⎤ ∂ψ ⎢ ∂x2 ⎥ ∂u2 ∂u1 ⎥. ω = rotu = − , u=⎢ ⎣ ∂ψ ⎦ ∂x1 ∂x2 − ∂x1 Le diverse formulazioni sono equivalenti dal punto di vista matematico, pur dando origine a metodi di approssimazione fra loro differenti. Per ulteriori dettagli si veda ad esempio [Qua93]. •
10.1 Formulazione debole delle equazioni di Navier-Stokes Al fine di ottenere una formulazione debole del problema (10.2)-(10.4), procediamo formalmente e moltiplichiamo la prima delle (10.2) per una funzione test v, appartenente ad un opportuno spazio V che poi specificheremo, ed integriamola su Ω: ∂u · v dΩ − νΔu · v dΩ + [(u · ∇)u] · v dΩ + ∇p · vdΩ = f · vdΩ. ∂t
Ω
Ω
Ω
Ω
Ω
Utilizzando la formula di Green si trova ∂u · v dγ, − νΔu · v dΩ = ν∇u · ∇v dΩ − ν ∂n ∂Ω Ω Ω ∇p · v dΩ = − pdivv dΩ + pv · n dγ. Ω
Ω
∂Ω
Sostituendo queste relazioni nella prima delle (10.2), si trova Ω
∂u · v dΩ + ∂t
ν∇u · ∇v dΩ +
Ω
= Ω
[(u · ∇)u] · v dΩ −
Ω Ω ∂u − pn · v dγ ν f · v dΩ + ∂n
pdivv dΩ (10.5) ∀v ∈ V.
∂Ω
Analogamente possiamo moltiplicare la seconda delle (10.2) per una funzione test q, appartenente allo spazio Q (da specificare) a cui appartiene anche l’incognita p; integrando su Ω si ottiene:
304
10 Le equazioni di Navier-Stokes
qdivu dΩ = 0 ∀q ∈ Q.
(10.6)
Ω
Come d’abitudine sceglieremo V in modo che le funzioni test si annullino sulla porzione del bordo dove la soluzione è nota: V = [H1ΓD (Ω)]d = {v ∈ [H1 (Ω)]d : v|ΓD = 0},
(10.7)
(esso coinciderà con [H 10 (Ω)]d se ΓD = ∂Ω). Supponiamo che Γ N = ∅. Allora possiamo scegliere Q = L2 (Ω). Cercheremo inoltre, per ogni t > 0, u(t) ∈ [H 1 (Ω)]d , con u(t) = ϕ(t) su ΓD , e p(t) ∈ Q, e u(0) = u0 . Con tale scelta di spazi si osservi innanzitutto che (ν ∂Ω
∂u − pn) · vdγ = ∂n
ψ · vdγ
∀v ∈ VΓD .
ΓN
Inoltre, tutti i termini lineari sono ben definiti. Precisamente: ν ∇u · ∇v ≤ ν|u|H1 (Ω) |v|H1 (Ω) , Ω
p∇vdΩ ≤ pL2 (Ω) |v|H1 (Ω) , Ω
q∇udΩ ≤ qL2 (Ω) |u|H1 (Ω) . Ω
Per semplicità di notazioni, se v è una funzione vettoriale a d componenti, il simbolo vH1 (Ω) denota ( dk=1 vk 2H1 (Ω) )1/2 . Significato analogo per v Lp (Ω) , 1 ≤ p < ∞. Useremo gli stessi simboli anche nel caso di funzioni tensoriali. Per quanto concerne il termine non lineare, iniziamo con l’osservare che vale il seguente risultato (si veda [Ada75]): se d ≤ 3, ∃C > 0: ∀v ∈ H1 (Ω) allora v ∈ L4 (Ω) ed inoltre vL4 (Ω) ≤ CvH1 (Ω) . Usando inoltre la seguente disuguaglianza di Hölder a tre fattori: f gh dΩ ≤ f Lp(Ω) gLq (Ω) hLr (Ω) , Ω
con p, q, r > 1 e tali che p−1 + q −1 + r−1 = 1, troviamo: [(u · ∇)u] · v dΩ ≤ ∇uL2 (Ω) uL4 (Ω) vL4 (Ω) ≤ C 2 u2H1 (Ω) vH1 (Ω) . Ω
10.1 Formulazione debole delle equazioni di Navier-Stokes
305
Dunque l’integrale esiste finito dato che le singole norme del membro di destra sono limitate. Per quanto riguarda l’unicità della soluzione, torniamo a considerare le equazioni di Navier-Stokes nella forma forte (10.2) (analoghe considerazioni varrebbero anche per le equazioni scritte nella forma (10.5), (10.6)). Se Γ D = ∂Ω, ovvero se si considerano solo condizioni di Dirichlet, si può notare che la pressione compare sempre sotto segno di derivata; questo vuol dire che se (u, p) è soluzione delle (10.2), lo è anche (u, p + c), dove c è una qualsiasi costante, dato che ∇(p + c) = ∇p. Per evitare tale indeterminazione possiamo: - fissare il valore di p in un punto x 0 del dominio di risoluzione, ossia porre p(x0 ) = p0 ; - imporre che il valore medio della pressione sia nullo ossia richiedere che p dΩ = 0.
(p, 1) = Ω
La prima soluzione è in generale non consistente con il problema: infatti, se p ∈ L2 (Ω) essa non è necessariamente continua e non ha quindi senso riferirsi a valori puntuali di p (sarà però possibile farlo per la formulazione numerica). La seconda è invece consistente con la formulazione; prenderemo perciò Q = L20 (Ω) = {p ∈ L2 (Ω) : (p, 1) = 0}. Vogliamo anche osservare che nel caso in cui Γ D = ∂Ω, il dato al bordo ϕ dovrà essere compatibile con il vincolo di incomprimibilità. Pertanto
ϕ · n dγ =
divu dΩ = 0. Ω
∂Ω
Nel caso invece in cui la frontiera Γ N non sia vuota, ovvero si considerino anche condizioni al bordo di tipo Neumann (o miste), non si avranno, a priori, problemi di indeterminazione della pressione, per via della condizione su Γ N in cui p non compare più sotto il segno di derivata. In tal caso si prenderà, come già segnalato, Q = L 2 (Ω). In definitiva, da ora in poi sarà sottointeso che: Q = L2 (Ω)
se
ΓN = ∅,
Q = L20 (Ω)
se ΓN = ∅
La formulazione debole delle equazioni (10.2), (10.3), (10.4) è pertanto:
(10.8)
306
10 Le equazioni di Navier-Stokes
trovare u ∈ L2 (R+ ; [H1 (Ω)]d ) ∩ C 0 (R+ ; [L2 (Ω)]d ), p ∈ L2 (R+ ; Q) tale che ⎧ ∂u ⎪ ⎪ ⎪ · v dΩ + ν ∇u · ∇v dΩ + [(u · ∇)u] · v dΩ − pdivv dΩ ⎪ ⎪ ∂t ⎪ ⎪ ⎪ Ω Ω Ω Ω ⎪ ⎪ ⎨ = f · v dΩ + ψ · vdγ ∀v ∈ V, ⎪ ⎪ Ω ΓN ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ q∇ · udΩ = 0 ∀q ∈ Q, ⎪ ⎩ Ω
(10.9) con u|ΓD = ϕD e u|t=0 = u0 . Si è scelto V come in (10.7) e Q = L 2 (Ω) se ΓN = ∅, Q = L20 (Ω) se ΓN = ∅. Come già osservato tale problema ha esistenza di soluzioni sia per d = 2 che per d = 3, mentre l’unicità si dimostra solo per d = 2, nell’ipotesi di dati sufficientemente piccoli. Per un’approfondita analisi matematica di questi aspetti il lettore può fare riferimento a [Sal04]. Osservazione 10.2 Definiamo il numero di Reynolds come Re =
|U|L , ν
dove L è una lunghezza caratteristica del dominio Ω (ad esempio la lunghezza del canale entro cui si studia il moto di un fluido) ed U una velocità caratteristica del fluido. Il numero di Reynolds è una misura di quanto il trasporto domina sulla componente diffusiva del fenomeno. Se Re << 1 il termine convettivo (u · ∇)u può essere omesso e le equazioni di Navier-Stokes si riducono alle equazioni di Stokes, che verranno analizzate nel seguito di questo capitolo. Quando Re è invece elevato si possono porre problemi relativamente all’esistenza e alla stabilità di soluzioni stazionarie, l’esistenza di attrattori strani, la transizione verso il moto turbolento. Quando si sviluppano oscillazioni della velocità su scale temporali e spaziali molto piccole, difficilmente possono essere risolte numericamente. Si ricorre quindi sovente a modelli di turbolenza, che permettono di descrivere in modo approssimato tale fenomeno tramite relazioni algebriche o differenziali. Tale argomento esula dallo scopo di queste note. Il lettore interessato può consultare [Wil98] per una descrizione fisica del fenomeno della turbolenza, [MP94] per una analisi di uno dei modelli di turbolenza più utilizzati (il cosiddetto modello κ − ), mentre [Sag06] e [BIL06] forniscono un’analisi di alcuni modelli avanzati di tipo “Large Eddy”, più costosi computazionalmente, ma in principio capaci di fornire una descrizione più fedele del fenomeno fisico della turbolenza. Vogliamo, infine, accennare alle equazioni di Eulero, introdotte in (9.21), che vengono utilizzate (sia per fluidi comprimibili che per fluidi incomprimibili) quando il fluido può essere modellato come non viscoso (formalmente, il corrispondente numero di Reynolds è infinito). •
10.1 Formulazione debole delle equazioni di Navier-Stokes
307
Le equazioni di Navier-Stokes possono essere riscritte in forma ridotta eliminando la pressione e riconducendosi ad un’equazione nella sola incognita velocità. Per far questo occorre riscrivere la formulazione debole (10.9). Introduciamo i seguenti sottospazi di [H1 (Ω)]d , d Vdiv = {v ∈ H1 (Ω) : divv = 0},
0 Vdiv = {v ∈ Vdiv : v = 0 su ΓD } .
Se richiediamo che la funzione test v appartenga allo spazio V div , nell’equazione del momento in (10.9) il termine contenente la pressione si annulla, ottenendo così un’equazione per la sola velocità. Sostituiamo dunque a (10.9) il seguente problema ridotto: trovare u ∈ L2 (R+ ; Vdiv ) ∩ C 0 (R+ ; [L2 (Ω)]d ) tale che Ω
∂u · v dΩ ∂t
∇u · ∇v dΩ +
+ν
Ω
f · v dΩ +
= Ω
[(u · ∇)u] · v dΩ Ω
ψ · v dγ
(10.10) ∀v ∈
0 Vdiv ,
ΓN
con u|ΓD = ϕD e u|t=0 = u0 . Se u è soluzione di (10.9) allora lo è anche di (10.10). Inoltre, vale il seguente Teorema per la cui dimostrazione si rimanda ad esempio a [QV94]: Teorema 10.1 Sia Ω ⊂ R d con frontiera ∂Ω lipschitziana. Sia u soluzione del problema (10.10). Allora esiste un’unica p ∈ Q tale che (u, p) è soluzione di (10.9). Questo significa che se si è in grado di risolvere il problema ridotto nella sola incognita u, c’è poi un unico modo per ricostruire la pressione p soluzione del problema completo di Navier-Stokes (10.9). Facciamo notare come la (10.10) abbia una natura “parabolica”, contenendo un termine di diffusione ed uno, non lineare, di trasporto. La sua analisi, pertanto, si può condurre utilizzando tecniche simili a quelle riportate nel Cap. 6. (Si veda [Sal04]). In pratica tale approccio può non essere del tutto conveniente dal punto di vista numerico, in quanto, usando il metodo di Galerkin, occorrerebbe costruire uno spazio Vdiv,h a dimensione finita di funzioni a divergenza nulla, operazione in generale non agevole. A tale riguardo si veda [BF91] e [CHQZ06]. Inoltre, il risultato del Teorema 10.1 non è costruttivo per quanto concerne la p ossia non indica un procedimento per ricostruire p. Per tale ragione si preferisce di solito approssimare direttamente il problema completo (10.9).
308
10 Le equazioni di Navier-Stokes
10.2 Le equazioni di Stokes e la loro approssimazione Ci occuperemo in questa sezione della risoluzione numerica del seguente problema, detto problema di Stokes generalizzato, con condizione al bordo di Dirichlet omogenea ⎧ αu − νΔu + ∇p = f in Ω, ⎪ ⎪ ⎪ ⎨ divu = 0 in Ω, (10.11) ⎪ ⎪ ⎪ ⎩ u=0 su ∂Ω, dove α ≥ 0. Esso descrive il moto di un fluido incomprimibile, viscoso, dove il termine quadratico di trasporto è stato trascurato. Si è visto che questa approssimazione risulta valida quando Re1. Ci si può imbattere nel problema (10.11) anche nella fase di discretizzazione temporale con metodi impliciti delle equazioni complete di NavierStokes, come vedremo nella Sez. 10.7. Dal punto di vista matematico le equazioni di Navier-Stokes si possono considerare una perturbazione compatta del sistema di Stokes, differendo da quest’ultimo “solo” per la presenza del termine convettivo che è di ordine inferiore a quello diffusivo (tale termine peraltro assume un’importanza determinante per quanto attiene al comportamento fisico del sistema quando Re è grande, come già osservato in precedenza). Volendo ottenere una formulazione debole di (10.11) moltiplichiamo la prima equazione scalarmente per una funzione test vettoriale v e la seconda per una funzione test scalare q, dopodiché integriamo entrambe le equazioni su Ω. Applicando a questo punto la formula di Green, si ottiene il seguente problema debole: trovare u ∈ V e p ∈ Q tali che ⎧ ⎪ ⎪ ⎪ (αu · v + ν∇u · ∇v) dΩ − pdivv dΩ = f · v dΩ ∀v ∈ V, ⎪ ⎪ ⎨ Ω Ω Ω (10.12) ⎪ ⎪ ⎪ q divu dΩ = 0 ∀q ∈ Q, ⎪ ⎪ ⎩ Ω
dove V = [H10 (Ω)]d e Q = L20 (Ω) (ricordiamo che stiamo risolvendo un problema di Dirichlet omogeneo per u e che il pedice zero di L 20 (Ω) si riferisce al fatto che tra tutte le possibili pressioni cerchiamo quella a media nulla). Definiamo ora le forme bilineari a : V × V → R e b : V × Q → R come segue: a(u, v) =
(αu · v + ν∇u · ∇v) dΩ,
Ω
b(u, q) = − qdivu dΩ. Ω
Con tali notazioni il problema (10.12) diventa:
(10.13)
10.2 Le equazioni di Stokes e la loro approssimazione
309
trovare (u, p) ∈ V × Q tali che
dove (f , v) =
d
a(u, v) + b(v, p) = (f , v)
∀v ∈ V,
b(u, q) = 0
∀q ∈ Q,
i=1 Ω
(10.14)
fi vi dΩ.
Nel caso si considerino condizioni al bordo non omogenee, come indicato in (10.4), la formulazione debole del problema di Stokes diviene: ◦
trovare ( u, p) ∈ V × Q tali che ⎧ ◦ ⎨ a(u, v) + b(v, p) = F(v) ⎩
∀v ∈ V, (10.15)
◦
b(u, q) = G(q)
∀q ∈ Q,
dove V e Q sono gli spazi introdotti in (10.7) e (10.8), rispettivamente. Indicato con ◦ Rϕ ∈ [H1 (Ω)]d un rilevamento del dato ϕ, abbiamo posto u= u − Rϕ, mentre i nuovi termini noti hanno la seguente espressione: ψv dγ − a(Rϕ, v),
F(v) = (f , v) +
G(q) = −b(Rϕ, q).
(10.16)
ΓN
Vale il seguente risultato: Teorema 10.2 La coppia (u, p) è soluzione del problema di Stokes (10.14) se, e solo se, essa è un punto sella per il funzionale lagrangiano L(v, q) =
1 a(v, v) + b(v, q) − (f , v), 2
ovvero se L(u, p) = min max L(v, q). v∈V q∈Q
La pressione q assume dunque il ruolo di moltiplicatore associato al vincolo di solenoidalità. Il problema di Stokes (10.11) è ancora un problema nelle due incognite u e p. È possibile però, analogamente a quanto già visto nella Sez. 10.1 per le equazioni di Navier-Stokes, eliminare l’incognita scalare p. Si trova così la seguente formulazione debole: 0 0 trovare u ∈ Vdiv t.c. a(u, v) = f · v dΩ ∀v ∈ Vdiv . (10.17) Ω
310
10 Le equazioni di Navier-Stokes
In tal modo, il problema diviene un “semplice” problema ellittico nella sola incognita u. Per dimostrarne esistenza ed unicità di soluzione, basta applicare il Lemma 2.1 0 di Lax-Milgram. In effetti, V div è uno spazio di Hilbert rispetto alla norma |∇v| L2 (Ω) (ciò discende dal fatto che l’operatore di divergenza è continuo da V in L 2 (Ω), dunque 0 Vdiv è un sottospazio chiuso dello spazio V ). Inoltre, a(·, ·) è continua e coerciva in 0 Vdiv , e f ∈ Vdiv . Abbiamo la stima 2 f 2L2 (Ω) , αu2L2 (Ω) + ν∇u2L2 (Ω) ≤ CΩ
essendo CΩ la costante della disuguaglianza di Poincaré (A.7). Il problema, tuttavia, è che dalla (10.17) è “sparita” la pressione. Osserviamo però che dalla stessa (10.17) deduciamo che il vettore w = αu − νΔu − f , considerato come elemento di H −1 (Ω), 0 0 si annulla su Vdiv , ovvero H−1 (Ω) < w, v > H1 (Ω) = 0 per ogni v ∈ Vdiv . In tale circostanza si può dimostrare (si veda, ad esempio, [QV94]) che esiste un’unica funzione p ∈ Q tale che w = ∇p, ovvero p soddisfa la prima equazione di (10.11) nel senso delle distribuzioni. La coppia (u, p) è dunque l’unica soluzione del problema debole (10.14). L’approssimazione di Galerkin del problema di Stokes (10.14) ha la forma seguente: trovare (uh , ph ) ∈ Vh × Qh tali che a(uh , vh ) + b(vh , ph ) = (f , vh ) ∀vh ∈ Vh , (10.18) ∀qh ∈ Qh , b(uh , qh ) = 0 ove {Vh ⊂ V } e {Qh ⊂ Q} rappresentano due famiglie di sottospazi di dimensione finita dipendenti dal parametro di discretizzazione h. Nel caso si consideri invece il problema (10.15)-(10.16) corrispondente ai dati non omogenei (10.4), la formulazione precedente deve essere modificata prendendo al secondo membro della prima equazione F(vh ) e della seconda equazione G(q h ), ottenibili da (10.16) pur di sostituire Rϕ con l’interpolante di ϕ nei nodi di Γ D (e che vale zero negli altri nodi), e ψ con il suo interpolante nei nodi di Γ N . La formulazione algebrica del problema (10.18) verrà discussa nella Sez. 10.4. Il seguente teorema, dovuto a F. Brezzi [Bre74], garantisce l’esistenza e l’unicità della soluzione per il problema (10.18): Teorema 10.3 Il problema (10.18) ammette una e una sola soluzione se valgono le seguenti condizioni: 1. La forma bilineare a(·, ·) è: a) coerciva, ossia ∃α > 0 (eventualmente dipendente da h) tale che a(vh , vh ) ≥ αvh 2V
∀vh ∈ Vh∗ ,
ove Vh∗ = {vh ∈ Vh : b(vh , qh ) = 0 ∀qh ∈ Qh };
10.2 Le equazioni di Stokes e la loro approssimazione
311
b) continua, ossia ∃γ > 0 tale che |a(vh , uh )| ≤ γvh V uh V
∀vh , uh ∈ Vh .
2. La forma bilineare b(·, ·) è continua, ossia ∃δ > 0 tale che |b(vh , qh )| ≤ δvh V qh Q
∀vh ∈ Vh , qh ∈ Qh .
3. Infine, esiste una costante positiva β (eventualmente dipendente da h) tale che ∀qh ∈ Qh , ∃vh ∈ Vh : b(vh , qh ) ≥ βvh H1 (Ω) qh L2 (Ω) .
(10.19)
Sotto le ipotesi precedenti valgono inoltre le seguenti stime a priori sulla soluzione numerica: 1 f V , α γ 1 1+ f V , ph Q ≤ β α
uh V ≤
dove V denota al solito lo spazio duale di V . Inoltre, valgono i seguenti risultati di convergenza: γ γ δ u − uh V ≤ 1 + 1+ inf u − vh V + inf p − qh Q , β α vh ∈Vh α qh ∈Qh γ γ 1+ inf u − vh V p − ph Q ≤ β α vh ∈Vh δγ δ inf p − qh Q . + 1+ + β αβ qh ∈Qh
La dimostrazione di questo teorema è piuttosto difficile, in quanto richiede l’uso di risultati non elementari di analisi funzionale. La presenteremo nella Sez. 10.3 per un problema di punto-sella che si riscontra in ambiti assai più generali delle equazioni di Stokes. Il lettore non interessato (o meno sensibile agli aspetti teorici) può saltare (senza danni apparenti) direttamente alla Sez. 10.4. Osserviamo che la condizione (10.19) equivale ad assumere che esiste una costante positiva β tale che b(vh , qh ) ≥ β, qh ∈Qh ,qh =0vh ∈Vh ,vh =0 vh H1 (Ω) qh L2 (Ω) inf
sup
ed è per questo nota anche come condizione inf-sup.
(10.20)
312
10 Le equazioni di Navier-Stokes
10.3 Problemi di punto-sella Obiettivo di questa sezione è studiare la buona positura dei problemi (10.14) e (10.18), fornendone inoltre un corrispondente risultato di convergenza. A tal fine, caleremo tali formulazioni in una cornice più astratta che ci permetterà così di applicare la teoria proposta in [Bre74], [Bab71].
10.3.1 Formulazione del problema Siano X ed M due spazi di Hilbert muniti, rispettivamente, delle norme · X e ·M . Indicati con X ed M i corrispondenti spazi duali (ovvero gli spazi dei funzionali lineari e continui definiti, rispettivamente, su X ed M ), introduciamo le forme bilineari a(·, ·) : X × X −→ R e b(·, ·) : X × M −→ R che supponiamo continue, ovvero tali che esistano γ, δ > 0: |a(w, v)| ≤ γ wX vX ,
|b(w, μ)| ≤ δ wX μM ,
(10.21)
per ogni w, v ∈ X e μ ∈ M . Consideriamo ora il seguente problema vincolato: trovare (u, η) ∈ X × M tali che
a(u, v) + b(v, η) = < l, v > ∀v ∈ X, b(u, μ) = < σ, μ >
∀μ ∈ M,
(10.22)
essendo l ∈ X e σ ∈ M due funzionali assegnati, mentre < ·, · > denota la dualità standard tra X e X o tra M e M . Nella formulazione (10.22) possiamo riconoscere, oltre alla formulazione (10.14) del problema di Stokes, un generico problema vincolato rispetto alla forma bilineare a(·, ·) (η rappresenta il vincolo) o la formulazione a cui si perviene quando si vogliano usare elementi finiti di tipo misto per problemi ai valori al bordo di diversa natura, come, ad esempio, quelli dell’elasticità lineare (si veda, ad esempio, [BF91], [QV94]). È utile riscrivere il problema (10.22) in forma operatoriale. A tal fine, associamo alle forme bilineari a(·, ·) e b(·, ·) gli operatori A ∈ L(X, X ) e B ∈ L(X, M ) definiti attraverso le relazioni < Aw, v > = a(w, v) ∀ w, v ∈ X < Bv, μ > = b(v, μ)
∀ v ∈ X, μ ∈ M,
dove, in accordo con le notazioni usate nella Sez. 3.4.3, con L(V, W ) indichiamo il generico spazio dei funzionali lineari e continui da V a W .
10.3 Problemi di punto-sella
313
Sia ora B T ∈ L(M, X ) l’operatore aggiunto di B definito come < B T μ, v > = < Bv, μ > = b(v, μ) ∀ v ∈ X, μ ∈ M.
(10.23)
Possiamo così riscrivere il problema (10.22) come trovare (u, η) ∈ X × M tali che
Au + B T η = l
in X ,
Bu = σ
in M .
(10.24)
10.3.2 Analisi del problema di punto-sella Al fine di analizzare il problema (10.24), definiamo la varietà affine X σ = {v ∈ X : b(v, μ) = < σ, μ >, ∀μ ∈ M }.
(10.25)
Osserviamo che lo spazio X 0 identifica il nucleo di B, ovvero X 0 = {v ∈ X : b(v, μ) = 0 ∀μ ∈ M } = ker(B), e che questo spazio è un sottospazio chiuso di X. Possiamo così associare al problema (10.22) il seguente problema ridotto: trovare u ∈ X σ
t.c. a(u, v) = < l, v >
∀ v ∈ X 0.
(10.26)
È evidente che, se (u, η) è una soluzione di (10.22), allora u è soluzione anche di (10.26). Introdurremo nel seguito delle condizioni opportune in grado di garantire anche l’implicazione inversa e che la soluzione di (10.26) esista unica, costruendo, in tal modo, una soluzione per (10.22). Prima di far ciò, abbiamo bisogno di dimostrare un risultato di equivalenza che coinvolge la forma bilineare b(·, ·) e l’operatore B. 0 Indichiamo con X polar l’insieme polare di X 0 , cioè 0 = {g ∈ X : < g, v > = 0 ∀v ∈ X 0 }. Xpolar 0 Poiché X 0 = ker(B), possiamo anche scrivere che X polar = (ker(B))polar . Decom0 poniamo ora lo spazio X in termini di X e del suo ortogonale X ⊥ , come
X = X 0 ⊕ (X 0 )⊥ . Una rappresentazione pittorica di questi spazi è data in Fig. 10.1. Dal momento che, in generale, ker(B) non è vuoto, non possiamo dire che B sia un isomorfismo tra X e M . Si vuol dunque introdurre una condizione che è equivalente ad affermare che B è un isomorfismo tra (X 0 )⊥ ed M (e, analogamente, B T è un isomorfismo tra M e 0 Xpolar ).
314
10 Le equazioni di Navier-Stokes X
X X 0 = KerB
0 Xpolar
(X 0 )⊥ B
A
B
BT
M
BT
M
0 Figura 10.1. Gli spazi X ed M , i duali X ed M , i sottospazi X 0 , (X 0 )⊥ e Xpolar , gli T operatori A, B e B . Le linee tratteggiate indicano isomorfismi
Lemma 10.1 Le seguenti proprietà sono equivalenti: a. esiste una costante β ∗ > 0 tale che valga la seguente condizione di compatibilità: ∀ μ ∈ M ∃v ∈ X, con v = 0, : b(v, μ) ≥ β ∗ vX μM ;
(10.27)
0 b. l’operatore B T è un isomorfismo tra M e X polar e vale la seguente proprietà:
B T μX =
< B T μ, v > ≥ β ∗ μM v X v∈V, v=0 sup
∀μ ∈ M ;
(10.28)
c. l’operatore B è un isomorfismo tra (X 0 )⊥ ed M e vale la seguente proprietà: BvM =
< Bv, μ > ≥ β ∗ vX μM μ∈M, μ=0 sup
∀v ∈ (X 0 )⊥ .
(10.29)
Dimostrazione. Dimostriamo innanzitutto che a. e b. sono equivalenti. Dalla definizione (10.23) di B T , è evidente che le disuguaglianze (10.27) e (10.28) coincidono. 0 Resta quindi da verificare che B T è un isomorfismo tra M e X polar . Dalla relazione T (10.28) segue che B è un operatore iniettivo da M nella sua immagine R(B T ), con inverso continuo. Ne segue dunque che R(B T ) è un sottospazio chiuso di X . 0 Rimane da verificare che R(B T ) = Xpolar . Utilizzando il seguente teorema dell’immagine chiusa (si veda, ad esempio, [Yos74]) R(B T ) = (ker(B))polar ,
10.3 Problemi di punto-sella
315
0 otteniamo che R(B T ) = Xpolar , che è quanto desiderato. 0 Proviamo ora che b. e c. sono equivalenti. Verifichiamo innanzitutto che X polar 0 ⊥ 0 ⊥ può essere identificato con il duale dello spazio (X ) . Infatti, ad ogni g ∈ ((X ) ) , possiamo associare un funzionale gˆ ∈ X che soddisfa la relazione
< gˆ, v > = < g, P ⊥ v >
∀v ∈ X,
dove P ⊥ denota la proiezione ortogonale di X sullo spazio (X 0 )⊥ , ovvero ∀v ∈ X,
P ⊥ v ∈ (X 0 )⊥ : (P ⊥ v − v, w)X = 0 ∀w ∈ (X 0 )⊥ .
0 Chiaramente gˆ ∈ Xpolar e si può verificare che g −→ gˆ è un’isometria tra ((X 0 )⊥ ) 0 e Xpolar . Di conseguenza, B T è un isomorfismo tra M e ((X 0 )⊥ ) soddisfacente la relazione 1 0 (B T )−1 L(Xpolar ,M) ≤ ∗ β
se e solo se B è un isomorfismo tra (X 0 )⊥ e M che soddisfa la relazione B −1 L(M ,(X 0 )⊥ ) ≤
1 . β∗
Questo completa la dimostrazione.
Possiamo a questo punto fornire un risultato di esistenza, unicità e dipendenza continua dai dati per la soluzione del problema (10.22). Teorema 10.4 Supponiamo che la forma bilineare a(·, ·) soddisfi la (10.21) e che sia coerciva sullo spazio X 0 , cioè esista una costante α > 0 tale che a(v, v) ≥ αv2X
∀v ∈ X 0 .
(10.30)
Inoltre supponiamo che la forma bilineare b(·, ·) soddisfi la (10.21) e la condizione di compatibilità (10.27). Allora, per ogni l ∈ X e σ ∈ M , esiste un’unica soluzione u del problema (10.26) ed un’unica funzione η ∈ M tale che (u, η) sia l’unica soluzione del problema (10.22). Inoltre la mappa (l, σ) −→ (u, η) è un isomorfismo fra X × M e X × M e valgono le seguenti stime a priori: uX ≤ ηM ≤
1 α+γ , lX + σ M α β∗
γ 1 γ(α + γ) + , l 1 + σ X M β∗ α α β∗
(10.31)
(10.32)
essendo α, β ∗ e γ definite, rispettivamente, dalla (10.30), (10.27) e (10.21) e dove · X e · M denotano le norme degli spazi duali definite come in (10.28) e (10.29).
316
10 Le equazioni di Navier-Stokes
Dimostrazione. L’unicità della soluzione del problema (10.26) è una diretta conseguenza dell’ipotesi di coercività (10.30). Dimostriamone ora l’esistenza. Avendo supposto soddisfatta la relazione (10.27), possiamo affermare, in virtù dell’equivalenza dimostrata nel Lemma 10.1, ed in particolare di quanto affermato al punto c., che esiste un’unica funzione u σ ∈ (X 0 )⊥ tale che Buσ = σ, ed inoltre uσ X ≤
1 σM . β∗
(10.33)
Il problema (10.26) può così esser riformulato: trovare u 3 ∈ X0
t.c. a(3 u, v) = < l, v > −a(uσ , v) ∀ v ∈ X 0
(10.34)
essendo la soluzione u del problema (10.26) identificata dalla relazione u = u 3+ uσ . L’esistenza e l’unicità della soluzione u 3 del problema (10.34) è a questo punto assicurata dal Lemma di Lax-Milgram insieme alla stima di stabilità 3 uX ≤
) 1( lX + γuσ X , α
ovvero, grazie alla (10.33), 3 uX ≤
) 1( γ lX + ∗ σM . α β
(10.35)
L’unicità della soluzione u del problema (10.22) è dunque una diretta conseguenza dell’unicità delle funzioni u 3 ∈ X 0 ed uσ ∈ (X 0 )⊥ , mentre la stima di stabilità (10.31) segue dalla (10.35) combinata ancora con la (10.33). Occupiamoci ora della componente η della soluzione. Torniamo dunque al problema (10.22). Poiché la formulazione (10.34) può essere riscritta nella forma < Au − l, v > = 0
∀v ∈ X 0 ,
0 ne segue che (Au − l) ∈ X polar . Possiamo così sfruttare il punto b. del Lemma 10.1 ed affermare che esiste un’unica funzione η ∈ M tale che Au − l = −B T η, cioè tale che (u, η) sia una soluzione del problema (10.22) soddisfacente la stima
ηM ≤
1 Au − lX . β∗
(10.36)
Abbiamo inoltre già osservato che ogni soluzione (u, η) di (10.22) fornisce una soluzione u del problema (10.26): da ciò segue immediatamente l’unicità della soluzione per il problema (10.22). Infine la stima a priori (10.32) discende dalla (10.36), osservando che 1 ηM ≤ ∗ AL(X,X ) uX + lX β ed utilizzando la stima a priori (10.31) già dimostrata per la funzione u.
10.3 Problemi di punto-sella
317
10.3.3 Approssimazione con il metodo di Galerkin ed analisi di stabilità e convergenza Introduciamo l’approssimazione di Galerkin del problema astratto (10.22). Indichiamo con X h ed Mh due sottospazi di dimensione finita degli spazi X ed M , rispettivamente. Essi possono essere spazi di elementi finiti, oppure spazi polinomiali (su un singolo dominio o su partizioni in sotto-elementi). Recuperiamo in tal modo sia approssimazioni agli elementi finiti che approssimazioni ai metodi spettrali o agli elementi spettrali. Siamo interessati a trovare una soluzione per il seguente problema: dati l ∈ X e σ ∈ M , trovare (u h , ηh ) ∈ Xh × Mh tali che
a(uh , vh ) + b(vh , ηh ) = < l, vh >
∀vh ∈ Xh ,
b(uh , μh ) = < σ, μh >
∀μh ∈ Mh .
(10.37)
Analogamente a quanto fatto nel caso del problema continuo, possiamo definire lo spazio Xhσ = {vh ∈ Xh : b(vh , μh ) = < σ, μh >, ∀μh ∈ Mh }
(10.38)
che ci permette di introdurre la versione finito-dimensionale della formulazione ridotta (10.26): trovare uh ∈ Xhσ
t.c. a(uh , vh ) = < l, vh >
∀ vh ∈ Xh0 .
(10.39)
Osserviamo che, in generale, lo spazio (10.38) non coincide con un sottospazio di X σ essendo, in generale, M h un sottospazio proprio di M . Inoltre è evidente che ogni soluzione (uh , ηh ) del problema (10.37) fornisce una soluzione u h per il problema ridotto (10.39). Quello che ci proponiamo di fare nel seguito di questa sezione è di fornire condizioni opportune in grado di garantire l’implicazione inversa insieme ad un risultato di stabilità e di convergenza per la soluzione (u h , ηh ) del problema (10.37). Partiamo dal risultato di stabilità, fornendo la controparte discreta del Teorema 10.4. Teorema 10.5 (Esistenza, unicità, stabilità) Supponiamo che la forma bilineare a(·, ·) soddisfi la (10.21) e che sia coerciva sullo spazio X h0 , cioè esista una costante αh > 0 tale che a(vh , vh ) ≥ αh vh 2X
∀vh ∈ Xh0 .
(10.40)
Inoltre supponiamo che la forma bilineare b(·, ·) soddisfi la (10.21) e la seguente condizione di compatibilità nel discreto: esiste una costante β h > 0 tale che ∀ μh ∈ Mh ∃vh ∈ Xh , vh = 0, : b(vh , μh ) ≥ βh vh X μh M .
(10.41)
318
10 Le equazioni di Navier-Stokes
Allora, per ogni l ∈ X e σ ∈ M , esiste un’unica soluzione (u h , ηh ) del problema (10.37) che soddisfa le seguenti stime di stabilità: uh X ≤ ηh M ≤
1 αh + γ lX + σM , αh βh
γ 1 γ(αh + γ) 1+ lX + σM . βh αh αh βh
(10.42)
(10.43)
Dimostrazione. Si ottiene ripercorrendo la dimostrazione del Teorema 10.4 considerando Xh al posto di X, Mh al posto di M ed osservando semplicemente che lXh ≤ lX , σMh ≤ σM . Osserviamo che la relazione di coercività (10.30) non necessariamente garantisce la (10.40) in quanto X h0 ⊂ X 0 , così come la condizione di compatibilità (10.27) non implica, in generale, la (10.41), essendo X h un sottospazio proprio di X. Inoltre, nel caso in cui entrambe le costanti α h e βh in (10.40) e (10.41) risultino indipendenti da h, le disuguaglianze (10.42) e (10.43) ci forniscono il risultato di stabilità desiderato. La condizione (10.41) è la ben nota condizione inf-sup o LBB condition (si veda [BF91]). Passiamo ora all’analisi di convergenza formulata nel seguente Teorema 10.6 (Convergenza) Supponiamo siano verificate le ipotesi dei Teoremi 10.4 e 10.5. Allora le soluzioni (u, η) e (u h , ηh ) dei problemi (10.22) e (10.37), rispettivamente, soddisfano le seguenti stime dell’errore γ u − uhX ≤ 1 + αh η − ηh M
inf u − vh∗ X +
∗ ∈X σ vh h
δ αh
inf η − μh M , (10.44)
μh ∈Mh
γ γ 1+ inf u − vh∗ X βh αh vh∗ ∈Xhσ δ γδ inf η − μh M , + 1+ + βh αh βh μh ∈Mh ≤
(10.45)
con γ, δ, αh e βh definite, rispettivamente, dalle relazioni (10.21), (10.40) e (10.41). Inoltre vale la seguente stima δ inf u − vh∗ X ≤ 1 + inf u − vh X . βh vh ∈Xh
∗ ∈X σ vh h
(10.46)
Dimostrazione. Consideriamo v h ∈ Xh , vh∗ ∈ Xhσ e μh ∈ Mh . Sottraendo (10.37) 1 da (10.22) 1 ed aggiungendo e togliendo le quantità a(v h∗ , vh ), b(vh , μh ), abbiamo
10.3 Problemi di punto-sella
319
a(uh − vh∗ , vh ) + b(vh , ηh − μh ) = a(u − vh∗ , vh ) + b(vh , η − μh ). Scegliamo ora vh = uh − vh∗ ∈ Xh0 . Grazie alla definizione dello spazio X h0 , e sfruttando la coercività (10.40) e le relazioni di continuità (10.21), arriviamo alla maggiorazione 1 uh − vh∗ X ≤ γ u − vh∗ X + δ η − μh M αh da cui segue immediatamente la stima (10.44), grazie al fatto che u − uh X ≤ u − vh∗ X + uh − vh∗ X . Proviamo ora la stima (10.45). Grazie alla condizione di compatibilità (10.41), per ogni μh ∈ Mh , possiamo scrivere che ηh − μh M ≤
1 βh
b(vh , ηh − μh ) . vh X vh ∈Xh , vh =0 sup
(10.47)
D’altro canto, sottraendo, membro a membro, la (10.37) 2 dalla (10.22) 2, ed aggiungendo e togliendo la quantità b(v h , μh ), ricaviamo che b(vh , ηh − μh ) = a(u − uh , vh ) + b(vh , η − μh ). Utilizzando tale uguaglianza in (10.47) e grazie alle relazioni di continuità (10.21), ne segue 1 ηh − μh M ≤ γ u − uh X + δη − μh M , βh ovvero il risultato desiderato, sfruttata opportunamente la stima dell’errore (10.44) precedentemente derivata per la variabile u. Dimostriamo infine la (10.46). Per ogni v h ∈ Xh , grazie alla (10.41) e al Lemma 10.1 (applicato ora nei sottospazi di dimensione finita), esiste un’unica funzione z h ∈ (Xh0 )⊥ tale che b(zh , μh ) = b(u − vh , μh ) ∀μh ∈ Mh e che zh X ≤
δ u − vh X . βh
Posto vh∗ = zh + vh , ne segue che vh∗ ∈ Xhσ , essendo b(u, μh ) = < σ, μh > per ogni μh ∈ Mh . Inoltre, δ u − vh∗ X ≤ u − vh X + zh X ≤ 1 + u − vh X , βh da cui segue la stima (10.46).
Osserviamo che le stime (10.44) e (10.45) garantiscono la convergenza ottimale a patto che le relazioni (10.40) e (10.41) valgano per costanti indipendenti da h. Osserviamo inoltre che la stima dell’errore (10.44) vale anche se le condizioni di compatibilità (10.27) e (10.41) non son soddisfatte.
320
10 Le equazioni di Navier-Stokes
Osservazione 10.3 (Modi spuri di pressione) La condizione di compatibilità (10.41) è fondamentale per garantire l’unicità della soluzione η h . Per verificare ciò, osserviamo innanzitutto che da tale relazione si ha che se ∃ μh ∈ Mh
t.c.
b(vh , μh ) = 0
∀vh ∈ Xh ,
allora μh = 0.
Supponiamo dunque che la condizione (10.41) non sia soddisfatta: allora esiste una funzione μ∗h ∈ Mh , con μ∗h = 0, tale che b(vh , μ∗h ) = 0
∀vh ∈ Xh .
Di conseguenza, se (u h , ηh ) è una soluzione del problema (10.37), allora anche (uh , ηh + τ μ∗h ), per ogni τ ∈ R, è una soluzione dello stesso problema. L’elemento μ∗h è detto modo spurio (di pressione quando ci si riferisca al problema di Stokes (10.18) in cui le funzioni μ h rappresentano delle pressioni discrete). Il problema discreto (10.37) non è in grado di tenerne conto. Questo porta alla generazione di instabilità numeriche per lo schema discreto adottato. •
10.4 Formulazione algebrica del problema di Stokes Vediamo ora la struttura del sistema lineare associato all’approssimazione di Galerkin (10.18) del problema di Stokes (o, più in generale, di un problema di punto-sella discreto della forma (10.37)). Indichiamo con {ϕj ∈ Vh }, {φk ∈ Qh }, le funzioni di base per gli spazi V h e Qh , rispettivamente. Sviluppiamo le incognite uh e ph sulle rispettive basi ottenendo uh (x) =
N
uj ϕj (x),
j=1
ph (x) =
M
pk φk (x),
(10.48)
k=1
dove N = dimVh , M = dimQh . Scegliendo come funzioni test nelle (10.18) le stesse funzioni di base, si ottiene il seguente sistema lineare a blocchi AU + BT P = F, (10.49) BU = 0, dove A ∈ RN ×N e B ∈ RM×N sono le matrici relative rispettivamente alle forme bilineari a(·, ·) e b(·, ·), con elementi dati da A = [aij ] = [a(ϕj , ϕi )],
B = [bkm ] = [b(ϕm , φk )],
10.4 Formulazione algebrica del problema di Stokes
321
mentre U e P sono i vettori delle incognite, U = [uj ], P = [pj ]. Poniamo
A BT
S= B
0
.
(10.50)
Questa matrice (N + M ) × (N + M ) è simmetrica a blocchi (essendo A simmetrica) e non definita, in quanto si può verificare che ha autovalori reali, ma di segno variabile. Naturalmente, condizione necessaria e sufficiente affinché il problema algebrico (10.49) ammetta un’unica soluzione è che il determinante di S sia diverso da 0. Vediamo come sia possibile garantirsi questa proprietà tramite il soddisfacimento della condizione inf-sup (10.20). La matrice A è invertibile perché associata alla forma bilineare coerciva a(·, ·). Quindi, dalla prima delle (10.49), si può formalmente ricavare U come U = A−1 (F − BT P).
(10.51)
Sostituendo la (10.51) nella seconda equazione delle (10.49) si ottiene RP = BA−1 F,
ove R = BA−1 BT .
(10.52)
Abbiamo, di fatto, eseguito una eliminazione gaussiana a blocchi sul sistema (10.50). Si ottiene così un sistema nella sola incognita P (la pressione), il quale ammette una ed una sola soluzione nel caso in cui la matrice R sia invertibile, ossia non singolare. Si può facilmente dimostrare che, essendo A non singolare e definita positiva, chiedere che R sia non singolare corrisponde a chiedere che il nucleo della matrice BT sia composto dal solo vettore nullo. Se esiste unico il vettore P, allora, per la non singolarità della matrice A, esiste unico il vettore U soddisfacente la (10.51). Concludendo, il sistema algebrico (10.49) ammette un’unica soluzione (U, P) se, e solo se, kerBT = {0}. (10.53) Si può dimostrare che tale condizione algebrica è equivalente alla condizione infsup (10.20) (si veda l’Esercizio 1). Riprendiamo l’Osservazione 10.3 fatta per il problema generale di punto-sella, e supponiamo che la condizione inf-sup (10.20) non sia soddisfatta. In tal caso è facile vedere che ∃qh∗ ∈ Qh : b(vh , qh∗ ) = 0 ∀vh ∈ Vh . (10.54) Di conseguenza, se (u h , ph ) è soluzione del problema di Stokes (10.18), anche (uh , ph + qh∗ ) lo sarà, in quanto
322
10 Le equazioni di Navier-Stokes
a(uh , vh ) + b(vh , ph + qh∗ )
= a(uh , vh ) + b(vh , ph ) + b(vh , qh∗ ) = a(uh , vh ) + b(vh , ph ) = (f , vh )
∀vh ∈ Vh .
Le funzioni q h∗ che non verificano la condizione inf-sup, sono “trasparenti” allo schema di Galerkin (10.18) e per questo vengono dette modi spuri di pressione o pressioni parassite. La loro presenza impedisce alla pressione di essere unica. Per questa ragione, gli spazi di elementi finiti che non soddisfano la (10.20) vengono detti instabili. Due sono le strategie generalmente seguite per ottenere elementi stabili, spesso anche detti elementi compatibili: - scegliere gli spazi Vh e Qh in modo che sia verificata la condizione inf-sup; - stabilizzare il problema (a priori o a posteriori), eliminando i modi spuri. Analizziamo il primo tipo di strategia e consideriamo dapprima il caso di approssimazioni agli elementi finiti. Per caratterizzare gli spazi Q h e Vh è sufficiente indicare i gradi di libertà per la velocità e per la pressione sui singoli elementi della reticolazione. Cominciamo con l’osservare che la formulazione debole considerata non richiede che la pressione sia necessariamente continua. Consideriamo dunque dapprima il caso di pressioni discontinue (e velocità ovviamente continua). Essendo le equazioni di Stokes del prim’ordine in p e del secondo ordine in u, in generale è sensato utilizzare polinomi di grado k ≥ 1 per lo spazio V h e di grado k − 1 per lo spazio Q h . In particolare, supponiamo di impiegare elementi finiti P 1 per le componenti della velocità e di tipo P 0 per la pressione (si veda la Fig. 10.2 nella quale, ed in quelle che seguiranno, con il simbolo 2 si sono indicati i gradi di libertà per la pressione e con il simbolo • quelli per la velocità). Si può verificare che tale scelta, pur apparendo assai naturale, non soddisfa la condizione inf-sup (10.20) (si vedano gli Esercizi 3 e 5).
Figura 10.2. Caso di pressione discontinua: scelte non soddisfacenti la condizione inf-sup
Per trovare una coppia che soddisfi la condizione inf-sup osserviamo che più ampio sarà lo spazio Vh , più alta sarà la “probabilità” che la condizione (10.20) sia soddisfatta. In altri termini lo spazio V h deve essere sufficientemente “ricco” rispetto allo spazio Qh . Di conseguenza, se la scelta degli spazi non soddisfa la condizione inf-sup, si può tenere fisso Qh ed arricchire Vh . In Fig. 10.3 sono rappresentate scelte soddisfacenti la condizione inf-sup, sempre nel caso di pressioni discontinue e velocità continua. Quella in (a) è composta dagli
10.4 Formulazione algebrica del problema di Stokes
(a)
323
(c)
(b)
Figura 10.3. Caso di pressione discontinua: scelte soddisfacenti la condizione inf-sup con elementi triangolari, (a), e quadrilateri, (b). Anche la coppia (c), detta di Crouzeix-Raviart, soddisfa la condizione inf-sup
(a)
(b)
(c)
(d)
Figura 10.4. Caso di pressione continua: le coppie (a) e (b) non soddisfano la condizione infsup. Gli elementi usati per la velocità nella coppia (c) sono noti come elementi finiti P1 -isoP2 , mentre quelli usati nella coppia (d) sono conosciuti come mini-element
elementi P2 − P0 , quella in (b) da Q 2 − P0 , quella in (c), detta di Crouzeix-Raviart, dagli elementi discontinui di grado 1 per la pressione e di grado 2 più bolla cubica per la velocità. In Fig. 10.4(a), (b) sono rappresentate scelte non soddisfacenti la condizione infsup per il caso di pressioni continue. Esse constano di elementi finiti di grado 1 sia per le velocità che per le pressioni. Più in generale, elementi finiti continui dello stesso grado k ≥ 1 per velocità e pressioni sono instabili. In (c) e (d) sono rappresentati invece elementi stabili. In particolare, le pressioni sono continue e di grado 1. Nel caso (c) le velocità sono continue e di grado 1 su ciascuno dei 4 sottotriangoli indicati in figura. Nel caso (d) invece, le velocità sono la somma di polinomi di grado 1 e di una “bolla”. Rinviamo a [BF91] per la dimostrazione dei risultati qui menzionati nonché per l’analisi della stima di convergenza. Nel caso si usino approssimazioni ai metodi spettrali, è possibile vedere che l’uso dello stesso grado polinomiale per velocità e pressione viola la condizione inf-sup. Una scelta di sottospazi che invece soddisfa la condizione inf-sup è quella dei polinomi di grado N (≥ 2) per le componenti della velocità e di grado N − 2 per la pressione. Ciò da luogo alla cosiddetta approssimazione Q N − QN −2 . I gradi di libertà per le componenti della velocità sono rappresentati dai valori negli (N + 1) 2 nodi GLL (si veda la Fig. 10.5).
324
10 Le equazioni di Navier-Stokes 1
−1 −1
1
Figura 10.5. Gli (N + 1)2 nodi di Gauss-Lobatto, gradi di libertà per le componenti della velocità (qui N = 6) 1
1
−1
−1 −1
1
−1
1
Figura 10.6. Gli (N − 1)2 nodi interni di Gauss-Legendre-Lobatto (a sinistra) e gli (N − 1)2 nodi di Gauss-Legendre (a destra), nel caso N = 6
Per quanto riguarda la pressione, due scelte sono possibili: usare il sotto-insieme degli (N − 1)2 nodi interni di Gauss-Lobatto (Fig. 10.6, a sinistra), oppure usare gli (N − 1)2 nodi di Gauss (Fig. 10.6, a destra). Naturalmente, con queste scelte si può realizzare un metodo spettrale di Galerkin, di collocazione G-NI, o infine ad elementi spettrali SEM-NI con integrazione numerica (si veda [CHQZ07]).
10.5 Un esempio di problema stabilizzato Come abbiamo visto, elementi finiti (o metodi spettrali) che utilizzino lo stesso grado polinomiale per la pressione e per la velocità non verificano la condizione inf-sup e sono, pertanto, “instabili”. È tuttavia possibile stabilizzarli, ricorrendo a tecniche che si ispirano a quelle di tipo SUPG o GLS, già incontrate nel Cap. 5 nell’ambito di problemi di diffusione-trasporto.
10.5 Un esempio di problema stabilizzato
325
Per una descrizione completa rinviamo il lettore a [BF91] e a [QV94]. Ci limitiamo qui a mostrare come applicare una tecnica di stabilizzazione di tipo GLS alle equazioni (10.18) nel caso in cui si usino elementi finiti lineari sia per la pressione che per le componenti della velocità, ovvero ◦1
Vh = [X h ]2 , Qh = {qh ∈ Xh1 :
Ω qh
dΩ = 0}.
Questa scelta è motivata dall’esigenza di ridurre al massimo il numero globale di incognite, esigenza che diventa stringente nel caso di problemi tridimensionali. Poniamo dunque Wh = Vh × Qh e consideriamo anziché (10.18), il seguente problema (ci limiteremo al caso α = 0): trovare (uh , ph ) ∈ Wh : Ah (uh , ph ; vh , qh ) = (fh , vh )
∀(vh , qh ) ∈ Wh ,(10.55)
avendo posto Ah : Wh × Wh → R, Ah (uh , ph ; vh , qh ) = a(uh , vh ) + b(vh , ph ) + b(uh , qh ) −δ
K∈Th
h2K
(−νΔuh + ∇ph − f )(−νΔvh + ∇qh ) dK, K
ed essendo δ un parametro positivo da scegliere opportunamente. Si tratta di approssimazioni fortemente consistenti del problema (10.11). Si noti infatti che il termine aggiuntivo è nullo quando calcolato sulla soluzione esatta, essendo, per la (10.12), −νΔu + ∇p − f = 0. Osserviamo inoltre che, trattandosi di elementi lineari, Δu h|K = Δvh|K = 0, ∀K ∈ Th . Quanto alla stabilità, osserviamo che: Ah (uh , ph ; uh , ph ) = ν∇uh 2L2 (Ω) + δ
h2K ∇ph 2L2 (K) .
(10.56)
k∈Th
Pertanto, il nucleo della forma A h si riduce al solo vettore nullo ed il problema (10.55) ammette una ed una sola soluzione. Essa verifica la disuguaglianza ν∇uh 2L2 (Ω) + δ
h2K ∇ph 2L2 (K) ≤ Cf 2L2 (Ω) ,
(10.57)
K∈Th
essendo C una costante positiva che dipende da ν, ma non da h (si veda l’Esercizio 8). Applicando il Lemma di Strang si può ora verificare che il problema di Galerkin generalizzato (10.55) fornisce la seguente approssimazione per la soluzione del problema (10.11):
326
10 Le equazioni di Navier-Stokes
u − uh H1 (Ω) +
δ
!1/2 h2K ∇p −
∇ph 2L2 (K)
≤ Ch.
K∈Th
Utilizzando nuovamente le notazioni della Sez. 10.2, si può verificare che la forma matriciale del problema (10.55) è la seguente: A BT U F = . (10.58) B −C P G Si noti che tale sistema differisce da quello “non stabilizzato” (10.49) per la presenza del blocco non nullo di posizione (2,2), proveniente dal termine di stabilizzazione. Precisamente, ckm = δ
h2K
K∈Th
∇φm · ∇φk dK,
k, m = 1, . . . , M,
K
mentre il termine noto G ha componenti gk = −δ
K∈Th
h2K
f · ∇φk dK,
k = 1, . . . , M.
K
L’equazione matriciale ridotta alla sola incognita di pressione diventa RP = BA−1 F − G, dove ora, a differenza della (10.52), si ha R = BA −1 BT + C. Essendo C una matrice definita positiva, la matrice R è non singolare.
10.6 Un esempio numerico Risolviamo le equazioni di Navier-Stokes nel caso stazionario sul dominio Ω = (0, 1) × (0, 1) con le seguenti condizioni al contorno di tipo Dirichlet: u=0
per x ∈ ∂Ω\Γ,
u = (1, 0)T
per x ∈ Γ,
dove Γ = {x = (x1 , x2 )T ∈ ∂Ω : x2 = 1}. Utilizziamo elementi finiti su griglie di rettangoli di tipo Q 1 − Q1 non stabilizzati, oppure stabilizzati con il metodo GLS. In Fig. 10.7, a sinistra, vengono riportati i soli modi spuri di pressione che si generano qualora si usino gli elementi Q 1 − Q1 non stabilizzati. Nella stessa figura a destra, riportiamo invece le isolinee della pressione ottenuta con la stessa coppia stabilizzata. Come si vede non c’è traccia di oscillazioni spurie. Infine, nei disegni di Fig.
10.6 Un esempio numerico 1
327
1
0
0 0
1
0
1
Figura 10.7. A destra, isolinee di pressione per il caso test dell’Esempio 10.5 risolto con elementi finiti stabilizzati. Quella verticale è associata al valore nullo della pressione. A sinistra si riportano invece le isolinee della pressione parassita calcolata sullo stesso caso test senza ricorrere alla stabilizzazione 1
1
0
0 0
1
0
1
Figura 10.8. Le streamlines ottenute nel caso del problema della cavità per Re = 1000 a sinistra, Re = 5000 a destra
10.8 riportiamo le linee di flusso (le cosiddette streamlines) ottenute per Re = 1000 e Re = 5000. La presenza della stabilizzazione produce soluzioni accurate anche al crescere del numero di Reynolds e rimuove pertanto sia l’instabilità legata alle soluzioni parassite, sia l’inaccuratezza del metodo di Galerkin quando i termini di trasporto dominano su quelli di diffusione. Per lo stesso problema consideriamo il metodo spettrale G-NI in cui sia la pressione che le due componenti della velocità sono cercate nello spazio Q N (con N = 32). Tale approssimazione non è stabile (essendo la condizione inf-sup non verificata). Nella Fig. 10.9 a sinistra si riportano le isolinee dei modi spuri di pressione. In Fig. 10.9 a destra riportiamo invece le isolinee della pressione ottenuta con lo stesso metodo G-NI, con polinomi di grado N , stabilizzato con la tecnica GLS.
328
10 Le equazioni di Navier-Stokes
Figura 10.9. Isolinee di pressione ottenute con un’approssimazione spettrale G-NI con polinomi di grado N = 32, a sinistra, e con il metodo G-NI stabilizzato con stabilizzazione GLS, a destra. L’isolinea verticale è associata al valore nullo della pressione. Il problema è lo stesso risolto in precedenza con il metodo degli elementi finiti
10.7 Discretizzazione in tempo delle equazioni di Navier-Stokes Torniamo ora ad occuparci delle equazioni di Navier-Stokes (10.2) ed analizziamo alcuni possibili schemi di discretizzazione temporale. Supporremo d’ora in avanti, per comodità di notazione, che Γ D = ∂Ω e ϕ = 0 in (10.3), cosicché V = [H 10 (Ω)]d . La discretizzazione in spazio delle equazioni di Navier-Stokes dà allora luogo al seguente problema: per ogni t > 0, trovare (u h , ph ) ∈ Vh × Qh tali che ⎧ ∂uh ⎪ ⎪ , vh + a(uh , vh ) + c(uh , uh , vh ) + b(vh , ph ) = (fh , vh ) ∀vh ∈ Vh , ⎨ ∂t ⎪ ⎪ ⎩ b(uh , qh ) = 0 ∀qh ∈ Qh , (10.59) dove {Vh ⊂ V } e {Qh ⊂ Q} sono, come di consueto, due famiglie di sottospazi di dimensione finita. La forma trilineare c(·, ·, ·), definita da c(w, z, v) =
[(w · ∇)z] · v dΩ,
∀w, z, v ∈ V,
Ω
è associata al termine convettivo non lineare, mentre a(·, ·) e b(·, ·) sono le stesse che in (10.13) (ponendo tuttavia α = 0).
10.7 Discretizzazione in tempo delle equazioni di Navier-Stokes
329
Il problema (10.59) è un sistema di equazioni differenziali algebriche. Utilizzando notazioni già impiegate nelle precedenti sezioni, esso ha la forma ⎧ ⎨ M du(t) + Au(t) + C(u(t))u(t) + BT p(t) = f (t), dt (10.60) ⎩ Bu(t) = 0, con u(0) = u0 . C(u(t)) è una matrice dipendente da u(t), il cui elemento generico è cmi (t) = c(u(t), ϕi , ϕm ). Per discretizzare in tempo tale sistema utilizziamo il θ-metodo, presentato nella Sez. 6.8. Se si pone un+1 = θun+1 + (1 − θ)un , θ = θpn+1 + (1 − θ)pn , pn+1 θ fθn+1 = f (θtn+1 + (1 − θ)tn ), si perviene al seguente sistema di equazioni algebriche, ⎧ n+1 − un ⎨ Mu + Aun+1 + C(un+1 )un+1 + BT pn+1 = fθn+1 , θ θ θ θ Δt ⎩ Bun+1 = 0.
(10.61)
La sua risoluzione risulta in generale molto costosa (salvo nel caso in cui θ = 0, corrispondente al metodo di Eulero in avanti). Una possibile alternativa è quella di utilizzare uno schema nel quale la parte lineare del problema viene trattata in maniera implicita, mentre la parte non lineare viene trattata in maniera esplicita (giungendo così ad un problema semi-implicito). Se θ ≥ 1/2, lo schema risulta incondizionatamente stabile, mentre va soggetto a condizioni su Δt (in funzione di h e di ν) negli altri casi. Commentiamo in dettaglio le varie opzioni qui di seguito. Nelle Sez. 10.7.2 e 10.7.3 considereremo invece alcuni schemi di discretizzazione temporale alternativi ai precedenti.
10.7.1 Metodi alle differenze finite Consideriamo dapprima una discretizzazione temporale esplicita per la prima equazione delle (10.60), ad esempio quella corrispondente a θ = 0 in (10.61). Supponendo note le quantità al tempo t n , si otterrà Mun+1 = H(un , pn , f n ), Bun+1 = 0, essendo M la matrice di massa di elementi mij = ϕi ϕj dΩ. Ω
330
10 Le equazioni di Navier-Stokes
Tale sistema è sovradeterminato nella velocità u n+1 , mentre non consente di ottenere la pressione pn+1 . Un rimedio è costituito dalla sostituzione di p n con pn+1 nella equazione del momento. In tal caso si otterrebbe: Mun+1 + BT pn+1 = G, (10.62) Bun+1 = 0, dove G è un vettore opportuno. Essendo M definita positiva e simmetrica, il sistema ridotto BM−1 BT pn+1 = BM−1 G è non singolare purché la condizione (10.53) sia soddisfatta. La velocità u n+1 si ricava poi dalla prima delle (10.62). Tale metodo risulta stabile se è soddisfatta una condizione del tipo Δt ≤ Cmin(h2 /ν, h/(max |un |)). x∈Ω
Consideriamo ora una discretizzazione temporale implicita (ad esempio basata sul metodo di Eulero all’indietro, corrispondente alla scelta θ = 1 in (10.61)). Come precedentemente osservato tale metodo è incondizionatamente stabile. In tal caso si trova un sistema algebrico non lineare, corrispondente alla discretizzazione ad elementi finiti del problema di Navier-Stokes stazionario: ⎧ ⎨ −νΔz + (z · ∇)z + ∇p + z = ˜f , Δt ⎩ divz = 0. Un tale sistema di equazioni, essendo non lineare, può essere risolto, ad esempio, con una tecnica di tipo Newton accoppiata ad un metodo di Krylov (come il GMRES o il metodo BiCGStab) per la risoluzione del sistema lineare che si ottiene ad ogni passo di iterazione di Newton (si veda ad esempio [Saa96] o [QV94, Cap. 2]). In questo modo si hanno globalmente tre cicli iterativi annidati: - iterazione temporale: t n → tn+1 , - iterazione di Newton: x n+1 → xn+1 k k+1 , n+1 - iterazione di Krylov: [x k ]j → [xn+1 ]j+1 . k ]j per la quale Si ottiene così una successione [x n+1 k n+1 u n+1 . lim lim [xk ]j = n+1 p k→∞j→∞ Operiamo ora la discretizzazione temporale utilizzando un metodo semi-implicito, ossia trattiamo in implicito la parte lineare e in esplicito il termine convettivo non lineare. Otteniamo pertanto ⎧ ⎨ 1 Mun+1 + Aun+1 + BT pn+1 = G, Δt (10.63) ⎩ Bun+1 = 0,
10.7 Discretizzazione in tempo delle equazioni di Navier-Stokes
331
dove G è un vettore opportuno, ovvero un sistema del tipo (10.49). La condizione di stabilità è del tipo Δt ≤ C
h . max|un |
(10.64)
x∈Ω
10.7.2 Metodi alle caratteristiche (o Lagrangiani) Per questi metodi si definisce innanzitutto la cosiddetta derivata materiale ∂u Du = + (u · ∇)u, Dt ∂t indi la si approssima, ad esempio, con la formula di Eulero all’indietro: Du un+1 (x) − un (xp ) (x) ≈ , Dt Δt essendo xp il piede (al tempo t n ) della caratteristica uscente da x al tempo t n+1 . Si deve quindi risolvere un sistema di equazioni differenziali ordinarie per seguire a ritroso la linea caratteristica X spiccata dal punto x stesso: ⎧ ⎪ ⎨ dX (t; s, x) = u(t, X(t; s, x)), t ∈ (tn , tn+1 ) dt ⎪ ⎩ X(s; s, x) = x, con s = tn+1 . La difficoltà si è dunque trasferita nella ricostruzione delle linee caratteristiche. La prima esigenza è quella di approssimare adeguatamente il campo di velocità u per t ∈ (tn , tn+1 ), in quanto u n+1 è ancora incognita. A tale scopo, il metodo più semplice consiste nell’utilizzare uno schema di Eulero in avanti per la discretizzazione della derivata materiale. La seconda difficoltà è legata al fatto che la caratteristica può attraversare più elementi della griglia di calcolo. Occorre quindi avere un algoritmo efficiente per individuare l’elemento di griglia dove cade il piede della caratteristica. Serve dunque prevedere la possibilità che la caratteristica termini sul bordo del dominio computazionale. L’equazione del momento si riscrive, per ogni tempo t n+1 : un+1 (x) − un (xp ) − νΔun+1 (x) + ∇pn+1 (x) = f n+1 (x), Δt dove x è un generico punto di Ω, e x p il piede della caratteristica uscente da x al tempo tn+1 .
332
10 Le equazioni di Navier-Stokes
10.7.3 Metodi a passi frazionari Consideriamo un generico problema della forma ∂w + Lw = f, ∂t dove L è un operatore differenziabile che supponiamo possa essere scomposto nella somma di due operatori L 1 e L2 , ovvero Lv = L1 v + L2 v. L’idea di base dei metodi a passi frazionari è quella di risolvere l’avanzamento temporale da tn a tn+1 in due (o più) passi: in un primo passo, viene risolto il problema considerando solo L 1 , nel secondo passo, si corregge la soluzione ottenuta al passo precedente considerando solo l’operatore L 2 . In questo senso tali metodi si chiamano anche operator splitting. Separando i due operatori L 1 e L2 si spera di ridurre un problema complesso a due problemi più semplici, confinando in ognuno di essi gli effetti e le problematiche ad essi associati (non linearità, diffusione, trasporto, . . .). In tal senso, gli operatori L1 e L2 possono essere scelti in base a considerazioni fisiche operate sulla base del problema che si sta risolvendo (in effetti, anche la risoluzione delle equazioni di Navier-Stokes con il metodo alle caratteristiche potrebbe essere interpretata come un metodo a passi frazionari nel quale il primo passo è proprio quello lagrangiano). Uno schema possibile, semplice, ma non ottimale, può essere il seguente (detto splitting di Yanenko): 1. si calcola w ˜ soluzione di w ˜ − wn + L1 w ˜ = 0; Δt 2. si calcola w n+1 come ˜ wn+1 − w + L2 wn+1 = f n . Δt Si noti che, eliminando w, ˜ lo splitting di Yanenko corrisponde a risolvere il seguente problema per la variabile w n+1 : wn+1 − wn + Lwn+1 = f n + ΔtL1 (f n − L2 wn+1 ). Δt Se L1 e L2 sono entrambi operatori ellittici, allora questo schema è incondizionatamente stabile rispetto a Δt. Applichiamo tale idea alle equazioni di Navier-Stokes (10.2), scegliendo come L1 l’operatore L 1 (w) = −νΔw + (w · ∇)w ed essendo L2 tutto ciò che manca per completare il sistema di Navier-Stokes. In tal modo abbiamo separato le due principali difficoltà derivanti rispettivamente dalla non-linearità e dalla richiesta di incomprimibilità. Lo schema a passi frazionari che si ottiene è il seguente:
10.7 Discretizzazione in tempo delle equazioni di Navier-Stokes
1. si risolve la seguente equazione di diffusione(-trasporto) per la velocità, ⎧ n+1 ˜ − un ⎨ u − νΔ˜ un+1 + (u∗ · ∇)u∗∗ = f n+1 in Ω, Δt ⎩ n+1 ˜ =0 su ∂Ω; u 2. si risolve in seguito il problema accoppiato ⎧ n+1 ˜ n+1 u −u ⎪ ⎪ ⎪ + ∇pn+1 = 0 ⎪ ⎨ Δt divun+1 = 0 ⎪ ⎪ ⎪ ⎪ ⎩ n+1 ·n= 0 u
333
(10.65)
in Ω, in Ω,
(10.66)
su ∂Ω,
˜ n+1 o un a seconda che il primo passo tratti i termidove u∗ e u∗∗ possono essere u ni convettivi in modo esplicito, implicito o semi-implicito. In questo modo si calcola ˜ n+1 che poi si corregge al secondo passo al primo passo una velocità intermedia u dello schema in modo da soddisfare il vincolo di incomprimibilità. Se la risoluzione del primo passo può essere condotta con successo con le tecniche presentate per problemi di diffusione-trasporto, più difficoltosa appare la risoluzione del secondo passo. Nel tentativo di semplificare le cose, applichiamo l’operatore di divergenza alla prima equazione del secondo passo. Troviamo div
˜ n+1 u un+1 − div + Δpn+1 = 0, Δt Δt
ovvero un problema ellittico con condizioni al contorno di Neumann per l’incognita pn+1 : ⎧ ˜ n+1 u ⎪ ⎪ in Ω, ⎨ −Δpn+1 = −div Δt (10.67) n+1 ⎪ ⎪ ⎩ ∂p =0 su ∂Ω. ∂n La condizione di Neumann discende dalla condizione u n+1 · n = 0 su ∂Ω (si veda la (10.66). Dalla risoluzione di (10.67) si ricava p n+1 e quindi la velocità u n+1 utilizzando la prima delle equazioni nella (10.66), ˜ n+1 − Δt∇pn+1 un+1 = u
in Ω,
(10.68)
la quale fornisce, in modo esplicito, la correzione da operare sulla velocità. Riassumendo, si risolve dapprima il sistema scalare ellittico (10.65) nell’incogni˜ n+1 (velocità intermedia), indi il problema ellittico (10.67) nell’incognita p n+1 , ta u infine si ottiene la nuova velocità u n+1 attraverso la relazione esplicita (10.68). Vediamo ora le principali caratteristiche di tale metodo.
334
10 Le equazioni di Navier-Stokes
Consideriamo il primo passo di avanzamento e supponiamo di porre u ∗ = u∗∗ = un , ottenendo (dopo la discretizzazione spaziale) un sistema lineare della forma 1 ˜ n+1 = ˜f n+1 . M+A u Δt Tale problema è scomponibile nelle singole componenti spaziali (l’accoppiamento essendo venuto meno grazie al trattamento esplicito dei termini convettivi) ed è quindi riconducibile alla risoluzione di d problemi ellittici scalari, uno per ogni componente della velocità. Il limite principale di tale metodo risiede nel fatto che il trattamento esplicito dei termini convettivi comporta una condizione di stabilità della stessa forma di (10.64). Supponiamo ora di usare un metodo di avanzamento in tempo implicito ponendo ˜ n+1 . Si ottiene così un metodo incondizionatamente stabile, ma compou∗ = u∗∗ = u sto da un’equazione di diffusione-trasporto non-lineare accoppiata nelle componenti spaziali, un problema pertanto più difficile da risolvere di quello ottenuto in precedenza. Ancora una volta, tale problema potrà essere risolto con un metodo iterativo di tipo Newton combinato con un metodo di Krylov. Consideriamo ora il secondo passo del metodo. In esso si impongono delle condizioni del tipo u n+1 · n = 0 su ∂Ω, ossia si impone una condizione al contorno solo sulla componente normale della velocità, perdendo così il controllo della componente tangenziale della velocità. Ciò dà luogo ad un errore, detto errore di splitting. Si trovano velocità a divergenza nulla, ma che risentono in prossimità del bordo di perturbazioni causate dal mancato soddisfacimento della condizione di Dirichlet per la componente tangenziale della velocità, e che originano degli strati limite sulla √ pressione di ampiezza ν Δt. Il metodo appena descritto, dovuto a Chorin e Temam, viene anche chiamato metodo di proiezione. Il motivo è da ricercarsi nel seguente Teorema di scomposizione di Helmholtz-Weyl. Teorema 10.7 Sia Ω ⊂ R d , d = 2, 3, un dominio con frontiera Lipschitziana. Allora per ogni v ∈ [L 2 (Ω)]d , esistono uniche due funzioni w, z, d w ∈ H0div = {v ∈ L2 (Ω) : divv = 0 in Ω, v · n = 0 su ∂Ω}, z ∈ [L2 (Ω)]d ,
rotz = 0
(quindi z = ∇ψ, ψ ∈ H1 (Ω))
tali che v = w + z. Questo risultato assicura che una generica funzione v ∈ [L 2 (Ω)]d può essere rappresentata in modo univoco come somma di un campo solenoidale (ossia a divergenza nulla) e di un campo irrotazionale (cioè dato dal gradiente di un’opportuna funzione). ˜ n+1 a partire da un risolvendo In effetti, dopo il primo passo (10.65) in cui si genera u
10.8 Risoluzione del sistema di Stokes e metodi di fattorizzazione algebrica
335
l’equazione del momento, nel secondo passo si recupera un campo solenoidale u n+1 ˜ n+1 , applicando il teorema di in (10.68), con u n+1 · n = 0 su ∂Ω, proiezione di u n+1 ˜ decomposizione con le identificazioni: w = u , v = un+1 , ψ = −Δtpn+1 . Si chiama metodo di proiezione in quanto
n+1
u Ω
· ψ dΩ =
˜ n+1 · ψ dΩ u
∀ψ ∈ H0div ,
Ω
˜ n+1 sullo spazio ossia un+1 è la proiezione, rispetto al prodotto scalare di L 2 (Ω), di u 0 Hdiv . Osservazione 10.4 Ci sono molte varianti del classico metodo di proiezione qui presentato miranti ad eliminare (o ridurre) l’errore di splitting sulla pressione. Per maggiori dettagli si veda [QV94], [Qua93], [Pro97], [CHQZ07] e [KS05]. • Esempio 10.1 Nella Fig. 10.10 riportiamo le isolinee del modulo della velocità relative alla risoluzione del problema di Navier-Stokes in un dominio bidimensionale Ω = (0, 17) × (0, 10) con 5 cilindri (in sezione). È stata assegnata una condizione di Dirichlet non omogenea (u = [atan(20(5 − |5 − y|)), 0]T ) all’inflow, una condizione di Dirichlet omogenea sui lati orizzontali e sul bordo dei cilindri, mentre all’outflow è stata posta a zero la componente normale del tensore degli sforzi. La soluzione è ottenuta utilizzando, per la discretizzazione in spazio, elementi spettrali stabilizzati (114 elementi spettrali, con polinomi di grado 7 per la velocità e la pressione, su ciascun elemento) e uno schema implicito BDF2 per la discretizzazione in tempo ( si veda Sez. 11.5 e anche [QSS00]).
10.8 Risoluzione del sistema di Stokes e metodi di fattorizzazione algebrica Un approccio alternativo ai precedenti è basato sulle fattorizzazioni inesatte (o incomplete) della matrice del sistema di Stokes (10.49) o di quello che si ottiene dopo l’adozione di avanzamenti temporali semi-impliciti, si veda ad esempio (10.63), delle equazioni di Navier-Stokes tempo-dipendenti. Più in generale, dunque, supporremo di avere a che fare con un sistema algebrico della forma C BT U F = (10.69) B 0 P 0 1 dove C coincide con la matrice A nel caso del sistema (10.49), con Δt M + A nel α caso del sistema (10.63), mentre in generale potrebbe essere data da Δt M + A + δD, essendo D la matrice associata al gradiente, nel caso si applichi una linearizzazione (o uno schema semi-implicito) del termine convettivo. In tal caso i coefficienti α e δ
336
10 Le equazioni di Navier-Stokes
Figura 10.10. Isolinee del modulo della velocità per il caso test dell’Esempio 10.1 associate agli istanti t = 10.5 (sopra) e t = 11.4 (sotto)
dipenderanno dagli schemi temporali e di linearizzazione scelti. Possiamo ancora associare a (10.69) il complemento di Schur RP = BC−1 F,
R = BC−1 BT
(10.70)
che si riduce a (10.52) nel caso si parta dal sistema di Stokes (10.49) anziché da (10.69). Iniziamo con l’osservare che il numero di condizionamento della matrice R dipende dalla costante β della condizione inf-sup. Più precisamente, nel caso del problema stazionario (10.52), si hanno le relazioni β = λmin , δ ≥ λmax dove λmin e λmax sono gli autovalori di R, mentre δ è la costante di continuità della forma bilineare b(·, ·) (si veda [QV94], Sez. 9.2.1). Nel caso evolutivo, che conduce ad un sistema come (10.69), essi dipendono anche da Δt e da come si è discretizzato il termine convettivo. Un possibile approccio per la risoluzione di (10.52) consisterebbe nel risolvere il complemento di Schur (10.70) con un metodo iterativo (ad esempio, il gradiente coniugato se C = A, oppure il GMRES o il Bi-CGStab nel caso in cui siano presenti anche termini del prim’ordine, ovvero δ = 0). L’aspetto critico sarebbe allora la scelta di un opportuno precondizionatore. Una discussione al proposito è fatta in [QV94] per quanto
10.8 Risoluzione del sistema di Stokes e metodi di fattorizzazione algebrica
337
concerne approssimazioni spaziali agli elementi finiti, e in [CHQZ07] per discretizzazioni con metodi spettrali. Qui ci limiteremo ad osservare che S si può fattorizzare nel prodotto di due matrici triangolari a blocchi, ovvero I 0 C BT S= BC−1 I 0 −R e che le due matrici PD =
C
0
0
−R
o PT =
C
BT
0
−R
forniscono due precondizionatori ottimali di S, uno diagonale, l’altro triangolare (a blocchi). Entrambi sono tuttavia piuttosto onerosi per via della presenza del termine diagonale R (il complemento di Schur, che contiene a sua volta l’inversa di C). In alternativa si possono usare le loro approssimazioni ⎡ ⎤ ⎡ ⎤ + + BT C 0 C +D = ⎣ +T = ⎣ ⎦ o P ⎦ P + + 0 −R 0 −R +eR + siano due approssimazioni “di basso costo” di C ed R, rispettivamente (ad dove C esempio, costruite a partire da precondizionatori ottimali della matrice di rigidezza). Per un’esaustiva rassegna di precondizionatori di R e di S (nel caso del sistema di Stokes), si veda [BGL05]. Una diversa fattorizzazione di S, C 0 I C−1 BT S= = LU (10.71) B −R 0 I è invece alla base del cosiddetto precondizionatore SIMPLE proposto da Patankar [Pat80], ed ottenuto sostituendo il fattore U con quello approssimato in cui C −1 venga sostituita da una matrice diagonale D −1 (con D, ad esempio, data dalla diagonale di C). Molte varianti sono possibili, si veda ad esempio [Wes01]. Un approccio alternativo consiste nell’approssimare a priori sia L sia U in (10.71), ottenendo la fattorizzazione inesatta: C 0 I UBT +=L +U += S (10.72) B −BLBT 0 I essendo L ed U due possibili approssimazioni di C −1 . Basandosi su questa approssimazione (o fattorizzazione LU-inesatta di S) proposta da J.B. Perot [Per93] nell’ambito dei volumi finiti, ed in seguito generalizzata da A. Veneziani (si veda [Ven98], [QSV00], [SV05]) per approssimazioni di Galerkin di problemi di punto-sella, la risoluzione del sistema
338
10 Le equazioni di Navier-Stokes
+ S
+ u
F
=
+ p
0
dà luogo ai seguenti passi: ⎧ u=F (velocità intermedia) ⎨ C3 passo L : ⎩ + = −B3 u (pressione) −BLBT p passo U :
+ (velocità finale). +=u 3 − UBT p u
In [QSV00] sono state esplorate due possibilità: L=U =
α −1 M Δt
(10.73)
oppure
α −1 M e U = C−1 . (10.74) Δt La prima (10.73) è anche chiamata “approssimazione di Chorin-Temam algebrica” in quanto in tal caso i passi L e U sopra descritti riproducono in versione algebrica il metodo a passi frazionari di Chorin e Temam (si veda la Sez. 10.7.3). La scelta (10.74) è detta “approssimazione di Yosida” in quanto si può ricondurre ad un processo di regolarizzazione “alla Yosida” del complemento di Schur ([Ven98]). Il vantaggio di questa strategia rispetto ai metodi a passi frazionari descritti in precedenza è la loro trasparenza rispetto al problema delle condizioni al bordo. Queste ultime sono già implicitamente tenute in conto dalla formulazione algebrica (10.69) e non devono essere imposte nei singoli passi L e U. Diverse generalizzazioni della tecnica di fattorizzazione inesatta (10.72) sono state recentemente proposte, consistenti in diverse scelte delle componenti L e U che garantiscono un ordine temporale più elevato (≥ 2) nel caso si considerino a monte discretizzazioni temporali di ordine superiore ad 1 delle equazioni di Navier-Stokes. Rinviamo il lettore interessato a [GSV06, SV05]. Riportiamo in Fig. 10.11 il comportamento dell’errore corrispondente alla discretizzazione delle equazioni evolutive di Navier-Stokes sul dominio Ω = (0, 1) 2 con il metodo SEM usando 4 × 4 elementi (quadrati di lato H = 0.25) e polinomi di grado N = 8 per le componenti della velocità e N = 6 per le componenti della pressione. La soluzione esatta è u(x, y, t) = (sin(x) sin(y + t), cos(x) cos(y + t)) T , p(x, y, t) = cos(x) sin(y + t). La discretizzazione temporale è ottenuta con le differenze finite implicite all’indietro BDF di ordine 2 (BDF2), 3 (BDF3), 4 (BDF4), completate da una fattorizzazione algebrica di tipo Yosida di ordine rispettivamente 2, 3, 4. Indicando con (u nN , pnN ) la soluzione numerica all’istante t n , gli errori su velocità e pressione, L=
Eu :=
Δt
NT n=0
!1/2 u(tn ) − unN 2H 1 (Ω)
, Ep :=
Δt
NT n=0
!1/2 p(tn ) − pnN 2L2 (Ω)
10.9 Esercizi 10
0
10 10
10 10 10
−2
−2
10 10
339
−4
−4
10
−6
2
−6
1.5 10
3
−8
2.5
BDF2+Yosida
−8
4
10
BDF3+Yosida3 BDF4+Yosida4
−10
10 −4
10
10
−3
Δt
10
−2
10
−1
−10
BDF2+Yosida
3.5
BDF3+Yosida3 BDF4+Yosida4
−12
10
−4
10
−3
Δt
10
−2
10
−1
Figura 10.11. A sinistra errore Eu sulla velocità; a destra errore Ep sulla pressione
sono infinitesimi (in Δt) di ordine 2, 3, e 4, rispettivamente, per le velocità, mentre sono di ordine 3/2, 5/2 e 7/2, rispettivamente, per le pressioni.
10.9 Esercizi 1. Si verifichi che la condizione (10.53) è equivalente alla condizione inf-sup (10.20). [Soluzione: la (10.53) è violata se e solo se ∃p ∗ = 0 con p∗ ∈ RM tale che BT p∗ = 0 o, equivalentemente, che ∃p ∗h ∈ Qh tale che b(ϕn , p∗h ) = 0 ∀n = 1, . . . , N . Ciò equivale ad avere b(v h , p∗h ) = 0 ∀vh ∈ Vh , proprietà che a sua volta equivale a violare la condizione (10.20).] 2. Si dimostri che una condizione necessaria affinché la (10.53) sia soddisfatta è che 2N ≥ M . [Soluzione: si ha che 2N = rango(B) + dim(kerB), mentre M = rango(B T ) + dim(kerBT ) = rango(BT ) = rango(B). Di conseguenza, abbiamo che 2N − M = dim(kerB) ≥ 0 e dunque una condizione necessaria per avere un’unica soluzione è 2N ≥ M .] 3. Si dimostri che la coppia di elementi finiti P 1 − P0 per velocità e pressione non soddisfa la condizione inf-sup. [Soluzione: eseguiamo la dimostrazione in due dimensioni spaziali. Il numero di gradi di libertà per la velocità è pari al doppio del numero di nodi della griglia ai quali sono stati sottratti i nodi di bordo. La pressione ha invece un numero di gradi di libertà pari al numero di elementi meno uno (avendo imposto il vincolo di media nulla). Se la griglia ha n × n nodi si vede immediatamente che 2N = 2(n2 − 2n − 2(n − 2)) = 2n2 − 8n + 8, mentre M = 2(n − 1)2 − 1. Dunque, 2N < M e la condizione necessaria è violata.] 4. Si dimostri che la coppia di elementi finiti quadrangolari Q 1 − Q0 con velocità bi-lineare e pressione costante su ciascun elemento non soddisfa la condizione inf-sup.
340
10 Le equazioni di Navier-Stokes
[Soluzione: poniamoci in due dimensioni e cominciamo con l’osservare che se la griglia è formata da (n + 1) × (n + 1) elementi, ci saranno n 2 nodi interni e quindi 2N = 2n2 gradi di libertà per le velocità e M = (n + 1) 2 − 1 gradi di libertà per le pressioni. La condizione necessaria è perciò soddisfatta. Bisogna procedere perciò ad una verifica diretta del fatto che la condizione inf-sup non sia soddisfatta. Supponiamo la griglia uniforme di passo h (si veda la Fig. 10.12) ed indichiamo con q i±1/2,j±1/2 una quantità q valutata nei punti (x i±1/2 , yj±1/2 ) = (xi ± h/2, yi ± h/2). Sia Kij l’elemento ij-esimo della griglia di calcolo. Con qualche manipolazione algebrica si trova che Ω
n h qh divuh dΩ = uij (qi−1/2,j−1/2 + qi−1/2,j+1/2 2 i,j=1
−qi+1/2,j−1/2 − qi+1/2,j+1/2 ) +vij (qi−1/2,j−1/2 − qi−1/2,j+1/2 + qi+1/2,j−1/2 − qi+1/2,j+1/2 ).
Appare allora evidente che la pressione p ∗ che vale 1 sugli elementi neri e −1 sugli elementi bianchi della Fig. 10.12 è una pressione spuria.] 5. Per il problema di Stokes si consideri il problema di Dirichlet omogeneo sul quadrato (0, 1)2 e si utilizzi una griglia uniforme formata da elementi quadrati. Verificare quindi direttamente l’esistenza di (almeno) un modo di pressione spurio. 6. Si consideri il problema di Stokes stazionario non-omogeneo: ⎧ ⎨ −νΔu + ∇p = f in Ω ⊂ R2 , divu = 0 in Ω, ⎩ u=g su Γ = ∂Ω. dove g è una funzione data. Si mostri che il problema ammette soluzione solo se Γ g · n = 0 e si trovi la sua formulazione debole. Mostrare che il termine a destra dell’equazione di conservazione della quantità di moto (prima equazione del sistema) definisce un elemento di V , spazio duale di V . 7. Ripetere le medesime considerazione dell’esercizio precedente per il problema di Navier-Stokes non omogeneo:
Figura 10.12. Griglia uniforme con modi spuri di pressione
10.9 Esercizi
⎧ ⎨ (u · ∇)u − νΔu + ∇p = f divu = 0 ⎩ u=g
341
in Ω ⊂ R2 , in Ω, su Γ = ∂Ω.
8. Si dimostri la stima a priori (10.57). [Soluzione: si ponga v h = uh e qh = ph nella (10.55). Indi si applichino le disuguaglianze di Cauchy-Schwarz e di Young al termine noto, nonché la disuguaglianza di Poincaré.]
11 Cenni di programmazione degli elementi finiti
In questo capitolo approfondiamo alcuni aspetti relativi alla traduzione in codici di calcolo del metodo degli elementi finiti. Questa operazione di implementazione può nascondere alcune insidie. La necessità di avere un’implementazione ad alta efficienza computazionale, oltre alle esigenze sintattiche di un qualsiasi linguaggio di programmazione, richiede una codifica che non è in genere l’immediata traduzione di quanto visto in sede di presentazione teorica. L’efficienza dipende da tanti fattori, compresi il linguaggio usato e l’architettura su cui si lavora. L’esperienza personale può giocare un ruolo fondamentale tanto quanto l’apprendimento da un testo. Anche se talvolta passare tanto tempo alla ricerca di un errore in un codice o di una struttura dati più efficiente può sembrare tempo perso, non lo è (quasi) mai. Per questo, l’auspicio è che il presente capitolo sia una sorta di “canovaccio” per prove che il lettore possa fare autonomamente più che un capitolo da studiare in senso tradizionale. Un’ultima osservazione riguarda il taglio del capitolo: l’approccio seguito qui è quello di fornire indicazioni di carattere generale: ovviamente ogni problema ha specificità che possono essere sfruttate in modo mirato per una implementazione ancor più efficiente.
11.1 Fasi operative di un codice a elementi finiti Nell’esecuzione di un calcolo a elementi finiti possiamo distinguere quattro fasi che rappresentano altrettante fasi di codifica (Fig. 11.1). 1. Pre-processing. Questa fase consiste nella impostazione del problema e nella codifica del dominio di calcolo che, come visto nel Cap. 3, richiede la costruzione della reticolazione. In generale, a parte i casi banali (ad esempio in dimensione 1), la costruzione di una mesh adeguata è un problema numerico di rilevante interesse, per il quale sono state sviluppate tecniche ad hoc. In genere, questa operazione è svolta da programmi a parte o da moduli appositi all’interno di un solutore, nei quali di recente molta cura è stata rivolta alla parte di interfaccia grafica e di interfacciamento con programmi di CAD (Computer Aided Design). Alle tecniche di base per la generazione di griglia è dedicato il Cap. 12.
344
11 Cenni di programmazione degli elementi finiti
Pre
Assemblaggio -
M ESH
I NFO G EOMETRIA
I NFO F UNZIONALI
6 ? C OSTRUZIONE M ATRICI
? R ISOLUTORE A LGEBRICO
A DATTIVIT A` R EMESHING 6
NO
Post
? @
@ S`I OK ? @ @ @ @
- E ND
Figura 11.1. Fasi operative di un codice a elementi finiti
2. Assemblaggio. In questa fase vengono costruite le strutture dati “funzionali”, a partire da quelle “geometriche” ricavate dalla mesh e dalle scelte dell’utente circa il tipo di elementi finiti che si vuole usare. Inoltre, in base al problema che si vuol risolvere e alle sue condizioni al bordo, viene calcolata la matrice di rigidezza associata alla discretizzazione (si vedano i Cap. 3 e 5). Questa operazione può essere eventualmente inserita all’interno di un ciclo di avanzamento temporale se si stanno trattando problemi tempo-dipendenti (come fatto nei Cap. 6-10) e può essere il frutto anche di un’operazione di linearizzazione nel caso si stiano trattando problemi non lineari. In senso stretto, il termine “assemblaggio” si riferisce alla costruzione della matrice del sistema lineare, passando dal calcolo locale svolto sull’elemento di riferimento a quello globale che concorre alla determinazione della matrice associata al problema discretizzato. La Fig. 11.2 riassume le diverse operazioni durante la fase di assemblaggio per la preparazione del sistema algebrico. 3. Risoluzione del sistema algebrico. Il nocciolo risolutivo di base di ogni calcolo ad elementi finiti è rappresentato dalla soluzione di un sistema lineare. Come detto,
11.1 Fasi operative di un codice a elementi finiti
345
Nodi 1
2
3
1
4
6
5
2
5
6
1
3
1
6
2
4
2
6
3
5
3
6
4
Elemento
1
2
5
6
1 4
3 2 (Dirichlet)
5
4
3
A
+ ϕi , i = 1, 2, 3
3 (Dirichlet)
3
6
3 b
4
3 6 4
A
b
Figura 11.2. Schematizzazione dell’assemblaggio. Le informazioni geometriche e topologiche (tabella in alto), opportunamente memorizzate descrivono la griglia. Mediante la mappatura sule e del termine l’elemento di riferimento, si effettua il calcolo della matrice di discretizzazione A e procedendo prima elemento per elemento (calcolo locale) e poi, sfruttando l’additività noto b, dell’operazione di integrazione, si aggiorna la matrice globale. I simboli che rappresentano ogni elemento della matrice sono ottenuti dalla sovrapposizione dei simboli usati per definire ogni elemento della mesh. Alla fine, si opera la prescrizione delle condizioni al bordo, che idealmente elimina i gradi di libertà con condizioni di Dirichlet, giungendo alla matrice finale A e al termine noto b. Come vedremo, l’operazione viene spesso implementata diversamente
questo potrà essere eventualmente parte di un ciclo temporale (basato su un metodo di discretizzazione implicito) o di un ciclo iterativo dovuto alla linearizzazione di un problema non lineare. La scelta del metodo risolutivo è in genere affidata all’utente. Per questo motivo è molto importante che l’utente sappia unire alle conoscenze del problema in esame, che come visto nel Cap. 3 si riflettono sulla struttura della matrice (ad esempio la simmetria, la positività) una buona conoscenza dei metodi a disposizioni per poter fare una scelta ottimale (la quale raramente è quella di default). Per questo motivo, in Appendice B vengono richiamate le principali caratteristiche dei metodi per la risoluzione di sistemi lineari. Oggi vi sono molte librerie di calcolo molto efficienti per la risoluzione di sistemi lineari di diverso tipo, per cui l’orientamento in fase di codifica è in genere quello di includere tali librerie piuttosto che implementarle ex-novo. Ad esempio, negli
346
11 Cenni di programmazione degli elementi finiti
esempi che seguiranno la parte di risoluzione dei sistemi lineari è affidata a Aztec Versione 2.1, libreria sviluppata presso i Sandia Laboratories di Albuqerque, New Mexico, USA (si veda [AZT]). Vi sono tuttavia molte altre librerie dedicate a questo scopo, fra le quali ricordiamo PetSC (si veda [Pet]) e UMFPACK [UMF], TriLinos [Tri]. 4. Post-processing. La mole di dati numerici generati da un codice agli elementi finiti è spesso enorme. Occorre elaborare questa informazione in modo da presentare risultati sintetici ed in una forma utilizzabile per gli scopi dell’analisi. La sintesi mediante immagini o il calcolo di grandezze derivate può non essere una fase banale. In particolare, il calcolo di grandezze derivate, se non viene effettuato con i dovuti accorgimenti può introdurre inaccettabili errori aggiuntivi. Presenteremo le tecniche di generazione di griglia nel prossimo capitolo. Pertanto, l’oggetto principale di questo capitolo sarà la fase di Assemblaggio (Sez. 11.4), nella quale la codifica efficiente del metodo degli elementi finiti non è la semplice traduzione in un linguaggio di programmazione di quanto visto nella teoria, ma sono richiesti accorgimenti opportuni. Prima di affrontare l’argomento, nella Sez. 11.2 ci occuperemo della codifica di formule di quadratura per il calcolo numerico degli integrali, mentre la codifica delle matrici in formato sparso è trattata nella Sez. 11.3. Per quanto riguarda la fase di post-processing, rimandiamo alla letteratura specifica, osservando che alcune tecniche usate sono state già introdotte nel Cap.3 per il calcolo di stimatori a posteriori. La Sez. 11.6 riporta infine un esempio completo.
11.1.1 Due parole sul codice utilizzato Vi sono molti linguaggi e ambienti di programmazione disponibili oggi, caratterizzati da filosofie e obiettivi disparati. Nel momento in cui si affronta l’implementazione di un metodo numerico, occorre fare una scelta motivata in questo panorama, per poter concretizzare le spiegazioni attraverso porzioni di codice. Tra gli ambienti di programmazione molto utili per la costruzione di prototipi, Matlab è sicuramente uno strumento validissimo sotto molti punti di vista, anche se, come per tutti i linguaggi interpretati, difetta sotto il profilo della efficienza computazionale. Un altro ambiente orientato alla soluzione di problemi differenziali in 2D mediante il metodo degli elementi finiti è FreeFem++ (si veda www.freefem.org). Questo ambiente comprende in un unico pacchetto (gratuito e usabile sotto diversi sistemi operativi) tutte le quattro fasi indicate sopra, con una sintassi particolarmente accattivante, che riduce la distanza fra codifica e formulazione teorica, e in particolare avvicinando significativamente la prima alla seconda. Questa operazione ha un indubbio valore “didattico”, di effettuare simulazioni anche di problemi non banali rapidamente. Tuttavia, i costi computazionali e la difficoltà ad implementare nuove strategie che richiedano estensioni della sintassi possono risultare penalizzanti in casi di interesse reale. Tradizionalmente, tra i linguaggi di programmazione compilati, il Fortran (in particolare il Fortran 77) è quello cha ha avuto maggior successo in ambito numerico,
11.2 Calcolo numerico degli integrali
347
grazie al fatto di generare codici eseguibili molto efficienti. Più di recente, la filosofia di programmazione orientata agli oggetti è sembrata avere caratteristiche di astrazione molto adatte per problemi matematico-numerici. L’astrazione insita nella trasversalità degli strumenti matematici sembra trovare un ottimo corrispettivo nell’astrazione propria della programmazione a oggetti, basata sulla progettazione di tipi di dato da parte dell’utente (più che su operazioni da svolgere, come nella programmazione procedurale) e sul loro uso polimorfico (si veda ad es. [LL00, CP00, Str00]). Tuttavia, il costo computazionale di questa astrazione ha talvolta ridotto l’interesse per una programmazione filosoficamente interessante, ma sovente operativamente perdente per problemi di tipo scientifico, dove l’efficienza computazionale è (quasi) sempre cruciale. Questo ha richiesto lo sviluppo di tecniche di programmazione più sofisticate (ad esempio gli Expression Templates), che consentissero di evitare che i costi della interpretazione di oggetti astratti diventassero troppo pesanti dutrante l’esecuzione del codice (si vedano ad es. [Vel95, Fur97, Pru05, DV05]). Accanto al Fortran, pertanto, oggi sono sempre più diffusi anche in ambito scientifico linguaggi come il C++, nato come un miglioramento del linguaggio C orientato agli oggetti: fra gli altri, ricordiamo Diffpack e FoamCFD. A questo linguaggio faremo pertanto riferimento nelle parti di codice presentati nel seguito. In particolare, queste porzioni di codice sono parte di un’ampia libreria, LifeV (Life 5), sviluppata presso i centri CMCS del Politecnico di Losanna, l’INRIA di Rocquencourt, Parigi e il MOX del Politecnico di Milano. Questa libreria, liberamente scaricabile da www.lifev.org sotto le condizioni generali di licenza LGPL, si configura come un codice aperto a nuovi contributi in diversi contesti applicativi (principalmente in 3D) per l’applicazione di metodi numerici recenti in un contesto di programmazione avanzata orientata agli oggetti. La lettura accurata del codice (che d’ora in avanti chiameremo “Programmi” per semplicità) richiede alcune conoscenze di base di C++ per le quali rinviamo a [LL00]. Volendo tuttavia usare il presente capitolo come base per fare prove autonome (e con il proprio linguaggio di programmazione preferito) non è essenziale, per la comprensione del testo, la conoscenza completa della sintassi del C++, ma è sufficiente avere dimestichezza con i construtti sintattici di base.
11.2 Calcolo numerico degli integrali Il calcolo numerico effettivo degli integrali richiesti nella formulazione a Elementi Finiti viene tipicamente eseguito mediante l’applicazione di formule di quadratura. Per una introduzione completa all’argomento della quadratura numerica, rimandiamo a testi di Analisi Numerica di base (ad esempio [QSS00]). In questa sede, basta ricordare che una formula di quadratura generica ha la forma: f (x)dx ≈ K
nqn
f (xiq )wiq
iq=1
ove K indica la regione su cui si integra (tipicamente un elemento della griglia), nqn è il numero di nodi di quadratura per la formula scelta, x iq sono le coordinate dei nodi
348
11 Cenni di programmazione degli elementi finiti
di quadratura e w iq sono i pesi. Tipicamente, l’accuratezza della formula nonché il costo computazionale crescono con il numero di nodi di quadratura. Come visto nel Cap. 4, Sez. 4.2.2 e 4.2.3, le formule che, a parità di numero di nodi, garantiscono la migliore accuratezza sono quelle gaussiane. Il calcolo dell’integrale viene in genere svolto sull’elemento di riferimento, sul quale è nota l’espressione delle funzioni di base, mediante un opportuno cambio di variabile (Sez. 3.3). Se indichiamo le coordinate dello spazio di riferimento con x ˆ i e le relative funzioni di base con ϕ +i , l’integrazione nello spazio di riferimento richiederà la conoscenza della matrice Jacobiana J della trasformazione geometrica, definita come ∂xi J = [Jij ] = . ∂x ˆj Infatti, si ha:
f (x)dx = K
ˆ K
f (ˆ x)|J|(x)dˆ x≈
xiq )wiq fˆ(ˆ xiq )|J|(ˆ
(11.1)
iq
dove |J| indica il determinante di J. Nel caso di operatori dove interviene la derivata spaziale, occorre applicare le regole di derivazione delle funzioni composte: ∂f ∂x ∂f +j = , ∂xi ∂+ x ∂x i j j=1 d
∇f = J −T ∇xbf+ =
1 cof(J)∇x f+, |J|
ove cof(J) è la matrice dei cofattori di J. Ad esempio, per il calcolo della matrice di stiffness avremo: ∂ϕα ∂ϕβ ∂ ϕˆα ∂ x ˆl ∂ ϕˆβ ∂ x ˆm ∇ϕα ∇ϕβ = dx = |J|dx ≈ ∂x ∂x ∂ x ˆ ∂x ∂ x ˆ ∂x i j l i m j K i,j K
i,j,l,m K
∂ ϕˆα −1 ∂ ϕˆβ −1 J J |J|(xˆiq )wiq , ˆl li ∂ x ˆm mj i,j,l,m iq ∂ x
(11.2) essendo α e β gli indici di due generiche funzioni di base. Si noti la presenza degli elementi della matrice Jacobiana inversa J −1 , dovuti alla trasformazione di coordinate che intervengono nel calcolo delle derivate delle funzioni di base. La classe che codifica una formula di quadratura memorizza pertanto nodi di quadratura e pesi associati. Nel calcolo effettivo degli integrali, verranno poi ottenute le informazioni sulla mappatura necessarie per il calcolo vero e proprio, dipendenti dalla geometria di K.
11.2 Calcolo numerico degli integrali
349
Nel Programma 1 si riporta la codifica di una formula di quadratura a 5 punti per tetraedri: 1 1 1 9 1 +1 = , , , w1 = x 20 6 6 6 6 1 1 1 9 1 +2 = x , , , w2 = 20 6 6 6 2 1 1 1 9 1 +3 = , , , w3 = x 20 6 6 2 6 1 1 1 9 1 +4 = , , , w4 = x 20 6 2 6 6 1 1 1 16 1 +5 = , , , w5 = − . x 4 4 4 20 6 Il fattore 1/6 che compare nell’espressione dei pesi w i rappresenta il volume del tetraedro di riferimento. Sovente, i pesi tabulati nei libri non tengono conto esplicitamente di questo fattore, per cui, nel nostro caso, si trovano i valori 9/20 e −16/20, ma la misura dell’elemento di riferimento non va dimenticata! Programma 1 - pt-tetra-5pt: Formula di quadratura a cinque nodi su tetraedro: la classe QuadPoint definisce il singolo nodo di quadratura con il peso associato. La formula di quadratura sarà definita da un array di oggetti QuadPoint class QuadPoint { Real _coor[ 3 ]; Real _weight; public: QuadPoint(Real x, Real y, Real z, Real weight ) { _coor[ 0 ] = x; _coor[ 1 ] = y; _coor[ 2 ] = z; _weight = weight; } } //Integrazione su Tetraedro con una formula a 5 nodi const Real tet5ptx1 = 1. / 6. , tet5ptx2 = 1. / 2., tet5ptx3 = 1. / 4.; static const QuadPoint pt_tetra_5pt[ 5 ] = { QuadPoint( tet5ptx1,tet5ptx1, tet5ptx1, 9. / 120. ), QuadPoint( tet5ptx1,tet5ptx1, tet5ptx2, 9. / 120. ), QuadPoint( tet5ptx1, tet5ptx2, tet5ptx1, 9. / 120. ), QuadPoint( tet5ptx2, tet5ptx1, tet5ptx1, 9. / 120. ), QuadPoint( tet5ptx3, tet5ptx3, tet5ptx3, -16. / 120. ) };
350
11 Cenni di programmazione degli elementi finiti
La scelta di una formula di quadratura risponde a due esigenze (di tipo conflittuale): 1. da un lato, maggiore è l’accuratezza e meglio è controllato l’errore generato dal calcolo degli intergrali; per problemi a coefficienti costanti o polinomiali, facendo leva sul concetto di grado di esattezza di una formula di quadratura, si può addirittura annullare completamente l’errore di integrazione numerica; 2. dall’altro lato, l’aumento dell’accuratezza si accompagna spesso ad un aumento del numero di nodi nqn. La giusta sintesi fra le due esigenze, evidentemente, dipende dai requisiti del problema che si vuole risolvere, nonché dalle specifiche di accuratezza e velocità per il calcolo da eseguire.
11.2.1 Le coordinate baricentriche Quando l’elemento di riferimento è un simplesso unitario, è possibile far riferimento nella definizione delle formule di quadratura alle coordinate baricentriche (dette anche di area in 2D o di volume in 3D), introdotte nel Cap. 5. Questo insieme di coordinate gode infatti di alcune proprietà utili in determinati contesti. Dato il tetraedro di riferimento, associamo ad ogni punto 4 numeri (in generale, se il problema è d dimensionale, si associano d + 1 numeri, ma da ora in avanti ci riferiremo solo al caso 3D, anche se le definizioni si estendono in modo immediato al caso 2D e 1D), P = (λ0 , λ1 , λ2 , λ3 )
con λ1 = 1 − λ2 − λ3 − λ4 .
Si tratta evidentemente di una definizione un po’ anomala, dal momento che le coordinate non sono indipendenti fra loro. Inoltre, i 4 vertici del tetraedro, nella numerazione canonica di Fig. 11.3, verranno identificati dalle n-uple: P0 = (1, 0, 0, 0), P1 = (0, 1, 0, 0), P2 = (0, 0, 1, 0), P3 = (0, 0, 0, 1) in modo che in modo naturale ogni coordinata è associata ad un vertice, mentre il baricentro avrà coordinate B = (1/4, 1/4, 1/4, 1/4). In generale, la coordinata di un punto P qualsiasi rappresenterà il rapporto fra il volume del tetraedro che ha come vertici quelli della faccia opposta al vertice cui è associata e il punto P e il volume totale del tetraedro. Le proprietà che rendono interessanti queste coordinate sono principalmente le seguenti. 1. Le funzioni di base degli elementi finiti lagrangiani lineari sull’elemento di riferimento coincidono proprio con l’espressione delle coordinate baricentriche, pur di porre (+ x, y+, z+) = (λ1 , λ2 , λ3 ), ossia ϕ +i = λi , i = 0, 1, 2, 3. Questo giustifica il nome di “coordinate”, nel senso che (come vedremo anche nella Sez. 11.4.3, in particolare nella (11.5)) l’espressione di un generico punto nello spazio fisico a partire da quella delle coordinate dei vertici del tetraedro diventa:
11.2 Calcolo numerico degli integrali
351
zˆ P3 yˆ P2 P
xˆ
P1
P0
Figura 11.3. La coordinata baricentrica λi del punto P rappresenta il rapporto fra il volume del tetraedro che ha come vertici P stesso e quello della faccia opposta al vertice Pi (in figura viene ombreggiato il tetraedro opposto a P0 sotteso da P e dai vertici P1 , P2 , P3 ) e il volume totale del tetraedro
x +=
3 j=0
λj x +j ,
y+ =
3 j=0
λj y+j ,
z+ =
3
λj z+j .
j=0
Anche le funzioni di base di elementi di grado più elevato possono essere espresse in funzione delle coordinate baricentriche e in particolare per un tetraedro lagrangiano di grado 2 si ha: ϕ +0 = λ0 (2λ0 − 1), ϕ +1 = λ1 (2λ1 − 1), ϕ +2 = λ2 (2λ2 − 1), ϕ +3 = λ3 (2λ3 − 1), ϕ +4 = 4λ1 λ2 , ϕ +5 = 4λ1 λ3 , ϕ +6 = 4λ1 λ4 , ϕ +7 = 4λ2 λ3 , ϕ +8 = 4λ3 λ4 , ϕ +9 = 4λ2 λ4 . 1
Il calcolo delle derivate rispetto alle coordinate baricentriche è reso complicato dal fatto che esse non sono tutte indipendenti fra loro. Esistono tuttavia modi efficienti per il calcolo della matrice Jacobiana: il lettore interessato può riferirsi a [Aki94], Cap. 9 o [Hug00], Cap. 3. 2. Per le coordinate baricentriche in 3D si ha: a!b!c!d! + 6Vol(K), λa0 λb1 λc2 λd3 dω = (a + b + c + d + 3)! b K + la misura del volume dell’elemento K + (pari a 1/6). Questa foressendo Vol(K) mula consente agevolmente il calcolo esatto di integrali polinomiali nelle funzioni di base lagrangiane, utili ad esempio per problemi a coefficienti costanti. In 2D la formula analoga è
352
11 Cenni di programmazione degli elementi finiti
b K
λa0 λb1 λc2 dω =
mentre in 1D essa diventa λa0 λb1 dω = b K
a!b!c! + 2Area(K), (a + b + c + 2)!
a!b! + Lunghezza(K). (a + b + 1)!
3. La verifica di appartenenza di un punto P a un elemento K si riduce alla verifica che le sue coordinate baricentriche λ i siano tutte positive. Questa proprietà è particolarmente utile quando serva determinare l’elemento di appartenenza di un punto, come nell’uso di derivate lagrangiane (Cap. 10) o del calcolo di grandezze in post-processing come le linee di flusso.
11.2.2 Alcuni esempi di formule di quadratura A titolo di esempio, la Tabella 11.1 riporta i pesi e i nodi per alcune formule di quadratura assai comuni in 2D. La Tabella 11.2 riporta alcune formule per tetraedri. Le formule sono simmetriche: bisogna considerare tutte le possibili permutazioni delle coordinate baricentriche per avere la lista completa dei nodi. Per comodità si riporta, oltre al numero totale di nodi nqn, la molteplicità m di ciascun nodo di quadratura, cioè il numero di nodi generati dalle permutazioni. Si fornisce anche il grado di esattezza r. nqn 1 3 3 4 6 6
1/3 1 2/3 1/3 0.6 0.65902762237 0.81684757298 0.10810301817
λ(j) 1/3 0 1/3 1/3 0.2 0.23193336855 0.09157621351 0.44594849092
1/3 0 1/3 1/3 0.2 0.10903900907 0.09157621351 0.44594849092
m 1 3 3 1 3 6 3 3
wj 1 1/3 1/3 -0.5625 0.52083 1/6 0.10995174366 0.22338158968
r 1 1 1 2 2 3
Tabella 11.1. Nodi e pesi per formule di quadratura su triangoli. I nodi sono espressi mediante le loro coordinate baricentriche. I pesi non tengono conto della misura dell’elemento di riferimento (che vale 1/2)
Vediamo due semplici esempi. Supponiamo di voler calcolare: I = f (x, y)dx = f+(+ x, y+)J(+ x, y+)d+ x. K
b K
Usando i pesi e nodi della prima riga della tabella si ottiene: I
1 1 1+1 1 f ( , )J( , ) = Area(K)f (x, y), 2 3 3 3 3
11.3 Memorizzazione di matrici sparse
353
dove il coefficiente 1/2 rappresenta l’area dell’elemento di riferimento, x è il nodo di coordinate baricentriche λ 1 = λ2 = λ3 = 1/3 e corrisponde al baricentro del triangolo. Pertanto la corrispondente formula è la ben nota formula del punto medio composita. Per usare la formula della seconda riga notiamo che m = 3 e dunque abbiamo di fatto 3 nodi di quadratura le cui coordinate baricentriche si ottengono per permutazione ciclica: (λ1 = 1, λ2 = 0, λ3 = 0), (λ1 = 0, λ2 = 1, λ3 = 0), (λ1 = 0, λ2 = 0, λ3 = 1). Quindi per ogni triangolo K otteniamo f (x)dx K
1 1 + f (0, 0)J(0, 0) + f+(1, 0)J(1, 0) + f+(0, 1)J(0, 1) 23
2 1 f (xi ) . = Area(K) 3 i=0
essendo x0 , x1 , x2 , i vertici del triangolo K, corrispondenti alle coordinate baricentriche (0,0),(1,0) e (0,1) rispettivamente. La corrispondente formula dà pertanto origine alla formula del trapezio composita. Entrambe le formule hanno grado di esattezza 1. nqn 1 4 5
λ(j) 1/4 1/4 0.58541020 0.13819660 1/4 1/4 1/2 1/6
1/4 0.13819660 1/4 1/6
1/4 0.13819660 1/4 1/6
m 1 4 1 4
wj 1 1/4 -16/20 9/20
r 1 2 3
Tabella 11.2. Nodi e pesi per formule di quadratura su tetraedri. I nodi sono espressi mediante le loro coordinate baricentriche. I pesi non tengono conto della misura dell’elemento di riferimento (che vale 1/6)
Altre formule di quadratura per il calcolo di integrali per diversi elementi finiti si trovano in [Com95], [Hug00], [Str71]. Osservazione 11.1 Qualora si faccia uso di elementi quadrilateri o prismatici, nodi e pesi delle formule di quadratura si possono ottenere come prodotto tensoriale delle formule di quadratura di Gauss per il caso monodimensionale, come visto nel Cap. 4 (si veda anche [CHQZ06]). •
11.3 Memorizzazione di matrici sparse Come visto nel Cap. 3, le matrici degli elementi finiti sono sparse. La distribuzione degli elementi non nulli viene indicata dal cosiddetto pattern di sparsità (detto anche grafo) della matrice. Il pattern dipende dalla griglia computazionale adottata, dal
354
11 Cenni di programmazione degli elementi finiti
tipo di elemento finito scelto e dalla numerazione dei nodi. La memorizzazione efficiente di una matrice consiste pertanto nella memorizzazione dei soli elementi non nulli, secondo il posizionamento indicato dal pattern. La discretizzazione di problemi differenziali diversi, ma sulla stessa griglia computazionale e con lo stesso tipo di elementi finiti, porta a matrici con lo stesso grafo. Per questo motivo può capitare di dover gestire più matrici, ma tutte con lo stesso pattern. Pertanto, in una logica di programmazione a oggetti, può essere utile separare la memorizzazione del grafo (che può diventare un “tipo di dato” definito dall’utente, ossia una classe) dalla memorizzazione dei valori di ogni matrice. In tal modo, una matrice si può vedere come una struttura dati per la memorizzazione dei suoi valori, unita a un puntatore al grafo ad essa associato. Il puntatore, infatti, memorizza solo la locazione di memoria ove il pattern viene memorizzato e quindi, di per sé, ha una occupazione di memoria minima. Più matrici potranno pertanto condividere lo stesso grafo, senza inutili duplicazioni di memorizzazione del pattern (si vedano i codici 2 e 3). All’atto pratico, vi sono diverse tecniche per memorizzare in modo efficiente matrici sparse, ossia la posizione e il valore dei loro elementi non nulli. E’ bene osservare che, in questo contesto, l’aggettivo “efficiente” non si riferisce soltanto alla minor occupazione di memoria che si possa realizzare, ma anche alla rapidità di accesso in memoria di ogni elemento. Un formato di memorizzazione che richieda il minimo dispendio di memoria possibile è verosimilmente più lento nell’accedere a un valore desiderato. Infatti, la maggior compattezza di memorizzazione tipicamente si ottiene introducendo forme indirette di indirizzamento, in base alle quali il valore di un elemento si ottiene dopo aver ricavato la sua posizione nella memoria dell’elaboratore accedendo alle strutture dati che memorizzano il grafo. Più passaggi intermedi sono necessari, più il tempo di accesso all’elemento desiderato sarà lungo. Proprio per la necessità di trovare il giusto compromesso, diverse tecniche di memorizzazione sono state proposte in letteratura, con diverse prerogative. Una rassegna commentata si trova ad esempio in [FSV05], Appendice B. Qui ci limitiamo a ricordare un formato molto usato per la memorizzazione di matrici sparse quadrate, ossia il formato MSR (Modified Sparse Row). Il grafo di sparsità di una matrice quadrata generata dalla discretizzazione di un problema mediante elementi finiti possiede la proprietà che gli elementi diagonali sono sempre compresi a priori fra gli elementi non nulli, per il motivo banale che il supporto di una funzione di base ha intersezione non vuota con se stesso. Il formato MSR si basa su questa considerazione per memorizzare solo il pattern della parte extra-diagonale, utilizzando poi un altro vettore per memorizzare i valori della diagonale principale, ordinati secondo la riga di appartenenza. Nella pratica, per memorizzare la matrice, si usano due vettori, che chiameremo value (valori) e bindx (connessione delle righe). A questo, per i motivi che vedremo in [FSV05] si propone di aggiungere un terzo vettore che chiamiamo bindy (connessione delle colonne). Indichiamo con n la dimensione della matrice da memorizzare e nz il numero dei suoi elementi non nulli.
11.3 Memorizzazione di matrici sparse
Per illustrare il formato MSR ci n = 5 e nz = 17: ⎡0 a ⎢ 0 ⎢ A= ⎢ ⎢ h ⎣ 0 i
355
serviamo di un esempio (vd. Fig. 11.4) in cui 1 2 0 f b k l c n 0 0 s
3 4 0 g m 0 0 r d p q e
⎤ ⎥ ⎥ ⎥ ⎥ ⎦
0 1 2 3 4
Facciamo notare che la numerazione di righe e colonne in matrici e vettori parte da 0, secondo la sintassi del C++. I vettori che caratterizzano il formato MSR sono: ⎤ ⎡ ⎤ ⎡ 6 0 a ⎢ 8 ⎥ ⎢ b ⎥ 1 ⎥ ⎢ ⎥ ⎢ 2 ⎢ 10 ⎥ ⎢ c ⎥ ⎥ ⎢ ⎢ d ⎥ 3 ⎢ 13 ⎥ ⎥ ⎢ ⎥ ⎢ ⎢ e ⎥ 4 ⎢ 15 ⎥ ⎥ ⎢ ⎢ 18 ⎥ ⎢ ∗ ⎥ 5 ⎥ ⎢ ⎥ ⎢ ⎢ 2 ⎥ ⎢ f ⎥ 6 ⎥ ⎢ ⎥ ⎢ ⎢ 4 ⎥ ⎢ g ⎥ 7 ⎥ ⎢ ⎥ ⎢ 8 ⎢ 2 ⎥ ⎢ k ⎥ bindx = ⎢ value = ⎢ ⎥ ⎥ 9 ⎢ 3 ⎥ ⎢ m ⎥ ⎥ ⎢ ⎢ h ⎥ 10 ⎢ 0 ⎥ ⎥ ⎢ ⎥ ⎢ ⎢ l ⎥ 11 ⎢ 1 ⎥ ⎥ ⎢ ⎥ ⎢ ⎢ r ⎥ 4 12 ⎥ ⎢ ⎥ ⎢ ⎢ 1 ⎥ ⎢ n ⎥ 13 ⎥ ⎢ ⎥ ⎢ 14 ⎢ 4 ⎥ ⎢ p ⎥ ⎢ 0 ⎥ ⎢ i ⎥ 15 ⎥ ⎢ ⎥ ⎢ ⎣ 2 ⎦ ⎣ s ⎦ 16 3 17 q Il vettore bindy è:
⎡
bindy =
⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣
10 15 11 13 6 8 16 9 17 7 12 14
⎤ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦
0 1 2 3 4 5 6 7 8 9 10 11
Vediamo come sono strutturati questi vettori. Nelle prime n posizioni di value (indicizzate da 0 a 4 = n − 1) vengono memorizzati i valori diagonali della matrice. La posizione di indice n viene lasciata vuota, mentre dalla posizione di indice n + 1
356
11 Cenni di programmazione degli elementi finiti
Riga 0
value=
bindx=
Riga 1
a
b
c
d
e
∗
f
g
k
m
0
1
2
3
4
5
6
7
8
6
8
10 13 15 18 2
4 1
10 − 6 = 4
ybind=
Riga 2
Riga 3
Riga 4
h
l
r
n
p
i
s
q
9
10
11
12
13
14
15
16
17
2
3
0
1
4
1
4
0
2
3
2
3
4
5
6
7
8
9
10
11
10 15 11 13 6
8
16 9
0
Colonna 0 Colonna 1
Colonna 2
17 7 Colonna 3
12 14 Colonna 4
Figura 11.4. Illustrazione delle strutture del formato MSR: le frecce indicano il percorso per la determinazione degli elementi della terza riga e della terza colonna
in avanti vengono memorizzati i valori degli elementi extradiagonali, ordinati riga per riga. La dimensione complessiva di value sarà pertanto nz + 1. Il vettore bindx ha pure nz + 1 elementi. Gli elementi di posizione n + 1 fino a nz + 1 contengono gli indici di colonna dei rispettivi elementi il cui valore è memorizzato in value nella stessa posizione. Le prime n + 1 posizioni di bindx puntano a dove iniziano le righe nelle posizioni di indice da n + 1 a nz + 1. Se ad esempio si volesse accedere agli elementi della terza riga (vedi Fig. 11.4), si ha che: a) l’elemento diagonale è in value(2); b) gli elementi extra-diagonali sono compresi nelle posizioni indicate da bindx(2) e bindx(3)-1, ossia 1. i valori sono in value(bindx(2)), bindx(2)+1), . . ., value(bindx(3)-1); 2. gli indici di colonna sono in bindx(bindx(2)), bindx(bindx(2)+1), . . ., bindx(bindx(3)-1). L’elemento bindx(n) punta a una ipotetica riga successiva all’ultima. In questo modo, il numero di elementi non nulli della riga i-esima (per 1 ≤ i ≤ n) è dato senza eccezioni (che significa senza la necessità di introdurre salti condizionati) dalla differenza bindx(i+1)-bindx(i). Se la matrice fosse memorizzata solo tramite questi due vettori, avremmo un accesso agevole per righe (ossia è facile estrarne una riga), mentre l’accesso per colonne richiederebbe numerosi confronti, a scapito dell’efficienza. Un modo per rendere più agevole questa operazione è quello di arricchire il formato MSR di bindy. Si sfrutta la caratteristica delle matrici degli elementi finiti di avere un pattern simmetrico. Infatti, la proprietà che due funzioni di base abbiano supporto non disgiunto è evidentemente “simmetrica”. Questo significa che, se percorriamo gli elementi extra-diagonali della
11.3 Memorizzazione di matrici sparse
357
riga di indice k e troviamo che il coefficiente a kl è presente nel pattern (cioè è non nullo), sarà presente nel pattern anche a lk , che si ottiene percorrendo la riga di indice l. Se la posizione in bindx (e value) dell’elemento a lk è memorizzata in un vettore “gemello” della porzione di bindx che va dagli indici n + 1 a nz, abbiamo una struttura che restituisce gli elementi di una colonna desiderata. Tale vettore è bindy: ad esempio, per estrarre la colonna di indice 2 dalla matrice basta leggere gli elementi di bindy compresi fra le posizioni bindx(2)-(n+1) e bindx(3)-1-(n+1) (la sottrazione di indice n + 1 serve solo come shift fra gli indici cui punta bindx in value e quelli cui deve puntare in bindy). Questi elementi puntano alle posizioni di bindx e value ove si possono trovare, rispettivamente, gli indici di riga corrispondenti e i valori della matrice. Il formato MSR essendo uno dei formati più “compatti” per matrici sparse consente economia di memoria ed è pertanto utilizzato in alcune librerie di algebra lineare per problemi di grandi dimensioni, come Aztec (si veda [AZT]). Ha tuttavia il difetto di essere utilizzabile solo per matrici quadrate. Per maggiori dettagli si vedano [FSV05], [Saa96]. Nei Programmi 2 e 3 riportiamo la struttura dati (ossia i membri private) delle classi MSRPatt e MSRMatr. Programma 2 - BasePattern: Struttura di base per memorizzare il pattern di matrice in formato MSR class BasePattern : public PatternDefs public: ... protected: ... UInt _nnz; UInt _nrows; UInt _ncols; ; class MSRPatt : public BasePattern public: ... const Container& bindx() const return _bindx; ; const Container& bindy() const return _bindy; ; ;
Programma 3 - MSRMatr: Matrici in formato MSR template
class MSRMatr public:
358
11 Cenni di programmazione degli elementi finiti
... private: std::vector _value; const MSRPatt *_Patt; ;
11.4 La fase di assemblaggio Per fase di assemblaggio intendiamo in realtà l’articolazione di diverse operazioni che portano alla costruzione della matrice associata al problema discretizzato. Per questo scopo, occorrono due tipi di informazioni: 1. geometriche, tipicamente contenute nel file della mesh; 2. funzionali, relative alla rappresentazione della soluzione mediante elementi finiti. Le informazioni di carattere funzionale sono tanto più ampie quanti più tipi di elementi diversi sono codificati. In LifeV sono trattati elementi finiti Lagrangiani e non, continui e discontinui. In particolare, per gli elementi Lagrangiani continui, si hanno: 1. elementi finiti Lagrangiani in 1D di grado 1 e 2; 2. elementi finiti Lagrangiani in 2D; a) triangolari con funzioni lineari e quadratiche; b) quadrilateri con funzioni bilineari e biquadratiche; 3. elementi finiti Lagrangiani in 3D; a) tetraedrici con funzioni lineari e quadratiche; b) prismatici con funzioni bilineari e biquadratiche. In Fig. 11.4 sono riportate le principali geometrie di riferimento considerate nel codice con la numerazione locale dei vertici. I tetraedri rappresentano l’estensione in 3D degli elementi triangolari considerati nel Cap. 3. Gli elementi prismatici estendono in 3D gli elementi geometrici quadrilateri in 2D introdotti nel Cap. 4. Una descrizione completa della costruzione di elementi di questo tipo si può trovare in [Hug00], Cap. 3. Le informazioni geometriche e funzionali, opportunamente codificate, vengono poi utilizzate per la costruzione della matrice del problema discretizzato. Contrariamente a quanto sembrerebbe naturale nella definizione di elementi finiti Lagrangiani, la costruzione della matrice avviene effettuando un ciclo sugli elementi anziché sui nodi. Il motivo di questo approccio element-oriented, piuttosto che di quello nodeoriented, è essenzialmente legato a questioni di efficienza computazionale. L’espressione analitica di una funzione di base associata ad un nodo varia su ogni elemento afferente a quel nodo. Effettuando un ciclo su nodi si renderebbe necessario, prima di effettuare il calcolo degli integrali individuare l’espressione analitica della funzione di base appropriata per ogni elemento afferente. In termini di codice questo significa che il corpo del ciclo va riempito di salti condizionati, ossia istruzioni di tipo if...then...elseif...then...else... all’interno del ciclo di assemblaggio. I salti condizionati sono istruzioni “costose” in termini computazionali, tanto più se sono all’interno
11.4 La fase di assemblaggio
1D
359
4
2
1
1
3
3
2
3D 1
2 8
2D 4
3
7
6
5 4
1
2
1
3 2
Figura 11.5. Illustrazione di alcuni elementi di riferimento presenti in LifeV con la numerazione locale (convenzionale) dei nodi
di un ciclo (e vengono quindi effettuati numerose volte). Per rendersene conto, è sufficiente osservare il numero di micro-istruzioni assembler richieste in fase di compilazione per espandere un salto condizionato, rispetto a una qualsiasi altra istruzione, si veda ad esempio [HVZ97]. Come vedremo, l’approccio element-oriented, sfruttando l’additività dell’ operazione di integrazione, permette di aggirare brillantemente l’ostacolo. In particolare, come già evidenziato nel Cap. 3, la costruzione della matrice del problema può avvenire concettualmente in due passi, all’interno di un ciclo sugli elementi della griglia: 1. costruzione della matrice e del termine noto che discretizzano l’operatore differenziale sull’ elemento considerato (matrice e vettore locali); 2. aggiornamento della matrice e del termine noto globali, sfruttando l’additività dell’operazione di integrazione. Vi sono anche approcci diversi al problema: in alcuni casi, la matrice non viene costruita, ma si calcolano direttamente i suoi effetti nella moltiplicazione per un vettore; per ragioni di spazio qui ci occupiamo dell’approcio più standard. Come detto, la costruzione della matrice locale viene effettuata operando l’inte+ usando opportune formule di quadratura. A grazione sull’elemento di riferimento K, costruzione effettuata di matrice e termine noto, vengono imposte le condizioni al bordo; in particolare, la prescrizione delle condizioni di Dirichlet non usa necessaria-
360
11 Cenni di programmazione degli elementi finiti
mente la tecnica vista nelle Sez 2.2.2 e 3.4, che consiste nella eliminazione dei gradi di libertà associati a tali condizioni dopo la costruzione del rilevamento. Come si vede, l’assemblaggio è una fase articolata. Nei paragrafi seguenti tratteremo gli aspetti menzionati, senza tuttavia approfondirli, per ragioni di spazio. Verranno prima trattate le strutture dati per la codifica delle informazioni geometriche (Sez. 11.4.1) e funzionali (Sez. 11.4.2). Il calcolo della mappatura geometrica tra elemento di riferimento e elemento corrente fornisce l’occasione per introdurre gli elementi isoparametrici (Sez. 11.4.3). Il calcolo effettivo di matrice e termine noto locali e il loro uso nella costruzione del sistema globale è trattato nella Sez. 11.4.4. Infine, nella Sez. 11.4.5 accenniamo ad alcune tecniche implementative per l’imposizione delle condizioni al bordo.
11.4.1 Codifica delle informazioni geometriche In termini di strutture dati, la mesh può essere vista come una collezione di elementi geometrici e di informazioni topologiche. Le prime possono essere costruite aggregando classi per la definizione di punti (ossia di elementi geometrici zero dimensionali), di spigoli (elementi geometrici 1D), di facce (2D) e infine volumi (3D). Una possibile interfaccia per la codifica di queste entità geometriche, limitatamente al caso di punti e volumi, è fornita nel Programma 4. Programma 4 - GeoElements: Classi elementari e aggregate per la costruzione degli enti geometrici //! Classe per Punti e Vertici class GeoElement0D public: GeoElement0D(); GeoElement0D( ID id, Real x, Real y, Real z, bool boundary = false ); GeoElement0D & operator = ( GeoElement0D const & g ); ;
// Classe per Elementi 3D template class GeoElement3D public: GeoElement3D( ID id = 0 ); typedef GeoElement1D<EdgeShape, MC> EdgeType; typedef GeoElement2D FaceType; typedef GeoElement0D PointType; typedef FaceType GeoBElement;
11.4 La fase di assemblaggio
361
//! Numero di Vertici per elemento static const UInt numLocalVertices; //! Numero di Facce per elemento static const UInt numLocalFaces; //! Numero di spigoli per elemento (regola di Eulero) static const UInt numLocalEdges; ;
La classe per la definizione delle entità geometriche, che qui viene presentata in una forma significativamente semplificata rispetto a quella di LifeV, fornisce metodi (che non riportiamo per ragioni di spazio) che consentano di interrogare (query) la struttura per ricavare informazioni di interesse, quali l’identificatore all’interno di una lista o gli identificatori di entità geometriche adiacenti. Questo è molto importante nel definire la connessione della mesh e, dunque, il pattern della matrice. La definizione di tipi standard per le entità geometriche (indicate con il termine di GEOSHAPE nel codice precedente) può essere fatta mediante l’introduzione di opportune classi che indichino la struttura geometrica di cui si compongono i volumi della mesh. Ad esempio, nel Programma 5 indichiamo la classe per i tetraedri. Programma 5 - Tetra: Classe per la codifica di elementi tetraedrici class Tetra public: static const ReferenceShapes Shape = TETRA; static const ReferenceGeometry Geometry = VOLUME; static const UInt nDim = 3; static const UInt numVertices = 4; static const UInt numFaces = 4; static const UInt numEdges = numFaces + numVertices - 2; ;
Partendo da queste classi di base, una mesh sarà una classe per collezionare gli elementi. In realtà, alla struttura geometrica è giocoforza aggiungere: 1. informazioni topologiche che permettano la caratterizzazione degli elementi nella griglia, ossia la connettività fra i nodi, rispetto ad una numerazione convenzionale degli stessi. La convenzione per i possibili elementi presente in LifeV è data in Fig. 11.4; per poter “visitare” in modo efficiente gli elementi di una griglia, si possono aggiungere anche informazioni sugli elementi adiacenti ad ogni elemento; 2. informazioni specifiche che permettono la localizzazione dei gradi di libertà che sono sul bordo; questo semplifica le gestione della prescrizione delle condizioni di bordo; osserviamo che tipicamente si associa ad ogni elemento geometrico di bordo un indicatore che poi verrà associato ad una specifica condizione al bordo. A partire dalla classe di riferimento geometrica, si codificano poi gli elementi geometrici correnti, secondo le possibili mappature trattate nella Sez. 11.4.3. Ad esempio,
362
11 Cenni di programmazione degli elementi finiti
se la mappatura è di tipo affine, si ottengono tetraedri lineari, indicati nel Programma 6. Programma 6 - LinearTetra: Classe per la codifica di tetraedri ottenuti per trasformazione geometrica affine dell’elemento di riferimento class LinearTetra: public Tetra public: typedef Tetra BasRefSha; typedef LinearTriangle GeoBShape; static const UInt numPoints = 4; static const UInt nbPtsPerVertex = 1; static const UInt nbPtsPerEdge = 0; static const UInt nbPtsPerFace = 0; static const UInt nbPtsPerVolume = 0; ;
A questo punto, il codice con parte della classe che identifica la mesh è nel Programma 7 Programma 7 - RegionMesh3D: Classe per la memorizzazione di una mesh 3D template class RegionMesh3D
public: explicit RegionMesh3D(); //Definizione dei profili di base typedef GEOSHAPE VolumeShape; typedef typename GEOSHAPE::GeoBShape FaceShape; typedef typename FaceShape::GeoBShape EdgeShape; // Enti geometrici typedef GeoElement3D VolumeType; typedef GeoElement2D FaceType; typedef GeoElement1D<EdgeShape> EdgeType; typedef GeoElement0D PointType; //Vettore dei punti typedef SimpleVect Points; //Vettore dei volumi typedef SimpleVect Volumes; //Vettore delle facce di bordo typedef SimpleVect Faces; //Vettore degli spigoli typedef SimpleVect<EdgeType> Edges;
11.4 La fase di assemblaggio
363
typedef GEOSHAPE ElementShape; typedef typename GEOSHAPE::GeoBShape BElementShape; typedef GeoElement3D ElementType; typedef GeoElement2D BElementType; typedef SimpleVect Elements; Points _pointList; Volumes volumeList; Faces faceList; Edges edgeList; UInt numLocalVertices() const; //Numero di vertici per elemento UInt numLocalFaces() const; //Numero di facce per elemento UInt numLocalEdges() const; //Numero di spigoli per elemento UInt numLocalEdgesOfFace() const; //Numero di spigoli per faccia
UInt numElements() const; //Numero totale di volumi UInt & numElements(); UInt numBElements() const; //Numero di elementi al bordo (=facce) UInt & numBElements(); ElementType & element( ID const & i ); ElementType const & element( ID const & i ) const; BElementType & bElement( ID const & i ); BElementType const & bElement( ID const & i ) const; ;
Il vettore di elementi geometrici di tipo “volume” dichiarato in Volumes volumeList conterrà ad esempio la lista dei vertici che definiscono ogni tetraedro della mesh, nell’ordine convenzionale stabilito e indicato in Fig. 11.4. La costruzione di un contenitore per una mesh di tetraedri affini verrà effettuata mediante l’istruzione RegionMesh3D aMesh; cui seguirà la lettura della Mesh per riempire effettivamente i vettori di volumi, facce, spigoli e punti previsti in RegionMesh3D. Per quanto riguarda i formati di un file di mesh, non esiste uno standard accettato universalmente. Tipicamente, ci si aspetta che un tale file contenga le coordinate dei vertici, la connettività che associa i vertici agli elementi geometrici e la lista degli elementi di bordo con relativo indicatore da usare per la definizione delle condizioni di bordo. I valori delle condizioni al bordo, invece, sono generalmente assegnati separatamente. Osservazione 11.2 I problemi multi-fisica o multi-modello stanno diventando una componente rilevante del calcolo scientifico: si pensi ad esempio ai problemi di interazione fluido-struttura o di accoppiamento (talvolta in chiave adattiva) di problemi
364
11 Cenni di programmazione degli elementi finiti
nei quali il modello differenziale completo (e computazionalmente più costoso) venga usato solo in una regione di specifico interesse, accoppiandolo con modelli più semplici nelle rimanenti regioni. Queste applicazioni e, più in generale, la necessità di sviluppare algoritmi di calcolo di tipo parallelo, hanno motivato lo sviluppo di tecniche di risoluzione dei problemi differenziali mediante decomposizione dei domini. Il lettore interessato può consultare ad esempio [QV99], [TW05]. In questo caso, la mesh risultante è la collezione delle mesh dei sottodomini, unitamente alle informazioni topologiche circa le interfacce fra sottodomini. In questo testo, per semplicità, faremo comunque sempre riferimento a problemi a un solo dominio. •
11.4.2 Codifica delle informazioni funzionali Come visto nel Cap. 3, la definizione delle funzioni di base viene effettuata su un elemento di riferimento. Ad esempio, per i tetraedri, questo elemento coincide con il simplesso unitario (vedi Fig. 11.4). La codifica di un elemento di riferimento avrà essenzialmente puntatori a funzioni per la determinazione delle funzioni di base e delle loro derivate. Inoltre, potrà essere arricchita da un puntatore alla formula di quadratura usata nel calcolo degli integrali (vd. Sez. 11.2), come nel Programma 8. Programma 8 - RefEle: Classe per la memorizzazione delle informazioni funzionali sull’elemento di riferimento class RefEle protected: const Fct* _phi; //Puntatore alle funzioni di base const Fct* _dPhi;//Puntatore alle derivate delle funzioni di base const Fct* _d2Phi;////Puntatore allee derivate seconde delle funzioni di base const Real* _refCoor; //Coord di Riferimento: xi_1,eta_1,zeta_1,xi_2,eta_2,zeta_2,... const SetOfQuadRule* _sqr; //Puntatore all’insieme di formule di quadratura public: const std::string name; //Nome dell’elemento di riferimento const ReferenceShapes shape; //Forma geometrica dell’elemento const int nbDof; //Numero totale di gradi di libertà const int nbCoor; //Numero di coordinate locali ;
Nel codice 9 riportiamo le funzioni per la definizione di elementi finiti lineari su tetraedro. Per ragioni di spazio riportiamo solo la codifica di alcune delle derivate prime. Programma 9 - fctP13D: Funzioni di base per un elemento tetraedrico lineare Real fct1_P1_3D( cRRef x, cRRef y, cRRef z )return 1 -x - y - z; Real fct2_P1_3D( cRRef x, cRRef, cRRef )return x; Real fct3_P1_3D( cRRef, cRRef y, cRRef )return y; Real fct4_P1_3D( cRRef, cRRef, cRRef z )return z;
11.4 La fase di assemblaggio
365
Real derfct1_1_P1_3D( cRRef, cRRef, cRRef )return -1; Real derfct1_2_P1_3D( cRRef, cRRef, cRRef )return -1; ...
Una volta instanziato l’elemento di riferimento, le informazioni funzionali saranno disponibili sia per la rappresentazione della soluzione che per la definizione della mappatura geometrica fra elemento di riferimento e elemento corrente, come vediamo nella sezione che segue. Avendo definito l’elemento geometrico e il tipo di elementi finiti che vogliamo usare, siamo ora in grado di costruire i gradi di libertà del problema. Ciò significa assegnare ad ogni elemento della mesh la numerazione dei gradi di libertà che giacciono sull’elemento e il pattern della matrice locale; quest’ultima è generalmente piena, anche se può comunque contenere elementi nulli. Un grado di libertà può avere bisogno di informazioni aggiuntive quali, nel caso di elementi finiti Lagrangiani, le coordinate del nodo corrispondente sull’elemento di riferimento.
11.4.3 Mappatura tra elemento di riferimento e elemento fisico Nel Cap.3 si è visto come sia vantaggioso scrivere le funzioni di base, le formule di quadratura e, dunque, svolgere il calcolo degli integrali ripetto a un elemento di riferimento. Può essere pertanto interessante esaminare alcuni metodi pratici per la costruzione e la codifica di tale cambio di coordinate. Per maggiori dettagli, rimandiamo a [Hug00]. Limitiamoci per ora a considerare il caso di elementi triangolari e tetraedrici. Un primo tipo di trasformazione di coordinate è quello affine. In sostanza, la mapˆ e x è esprimibile tramite una matrice B e un vettore c (vd. Sez.3.4.3 e patura fra x Fig. 11.6): ˆ + c. x = Bx (11.3) In questo modo, si ha banalmente che J = B (costante su ciascun elemento). Se la distribuzione di nodi generata dal reticolatore è corretta, il determinante di J è sempre positivo, cosa che garantisce che non vi siano casi degeneri (ad esempio quattro vertici di un tetraedro complanari) e che non vi sono permutazioni scorrette nei nodi corrispondenti nella mappatura. L’espressione di B e c si ricava dall’espressione delle coordinate dei nodi. Supponiamo infatti che i nodi numerati localmente 1,2,3,4 del tetraedro di riferimento corrispondano rispettivamente ai nodi della mesh numerati con i, k, l, m. Si ha allora: ⎧ x = c1 y i = c2 y i = c3 ⎪ ⎪ ⎨ i xk = b11 + xi yk = b12 + yi zk = b13 + yi (11.4) xl = b21 + xi yl = b22 + yi zl = b23 + yi ⎪ ⎪ ⎩ xm = b31 + xi ym = b32 + yi zm = b33 + yi da cui ri ricavano le espressioni di B e c.
366
11 Cenni di programmazione degli elementi finiti
zˆ P3
P2
P0
yˆ
P1 xˆ
Figura 11.6. Mappatura fra il tetraedro di riferimento e quello corrente. A destra in alto, una mappatura di tipo affine; a destra in basso, una mappatura di tipo quadratico
Esiste, tuttavia, un modo più efficace di rappresentare la trasformazione: essendo lineare elemento per elemento, essa può essere rappresentata tramite le funzioni di base degli elementi finiti Lagrangiani lineari. Infatti, si può scrivere: x=
3 j=0
Xj ϕ +j (+ x, y+, z+), y =
3 j=0
Yj ϕ +j (+ x, y+, z+), z =
3
Zj ϕ +j (+ x, y+, z+).
(11.5)
j=0
Gli elementi della matrice Jacobiana della trasformazione si calcolano immediatamente: ⎡ 4 ⎤ 4 4 ∂ϕ +j ∂ϕ +j ∂ϕ +j X X X j j j ⎢ ∂+ x j=1 ∂+ y j=1 ∂+ z ⎥ ⎢ j=1 ⎥ ⎢ 4 4 4 ∂ϕ ∂ϕ ∂ϕ +j +j +j ⎥ ⎢ ⎥ Yj Yj Yj (11.6) J =⎢ ⎥. ∂+ x ∂+ y ∂+ z ⎥ ⎢ j=1 j=1 j=1 ⎢ 4 ⎥ 4 4 ⎣ ∂ϕ +j ∂ϕ +j ∂ϕ +j ⎦ Zj Zj Zj ∂+ x ∂+ y ∂+ z j=1 j=1 j=1 Quando in un elemento finito Lagrangiano le stesse funzioni di base vengono usate per la definizione della mappa geometrica, si parla di elementi iso-parametrici (vd. Fig. 11.6 e 11.7). Ovviamente, la coincidenza vale per il fatto di avere scelto elementi finiti lineari e trasformazioni geometriche affini. Quando si prendono in considerazione elementi finiti di grado maggiore di 1, possiamo considerare due tipi di mappature: - elementi finiti affini: in questo caso, la trasformazione geometrica è descritta ancora dalle trasformazioni affini (11.5), anche se l’informazione funzionale relativa
11.4 La fase di assemblaggio
367
y+ P3
P2 + x
P0
P1
Figura 11.7. Mappatura fra il quadrilatero di riferimento e l’elemento corrente: affine (in alto), isoparametrico (in centro), ibrido (in basso). Quest’ultimo viene costruito con 5 nodi, in modo da poter avere una trasformazione biquadratica per i nodi di un solo lato
alla soluzione è descritta da funzioni quadratiche o di grado più elevato; il bordo del dominio discretizzato Ω h , in questo caso, è sempre poligonale (poliedrico); - elementi finiti isoparametrici: la trasformazione geometrica è descritta dalle stesse funzioni di base usate per rappresentare la soluzione; pertanto gli elementi nello spazio fisico Oxyz avranno in generale lati curvi; La definizione di una mappatura quadratica a partire dall’elemento di riferimento tetraedrico, consente ad esempio la creazione di elementi geometrici quadratici tetraedrici, codificati nella classe QuadraticTetra riportata nel Programma 10. Programma 10 - QuadraticTetra: Classe per la definzione di elementi tetraedrici quadratici class QuadraticTetra: public Tetra public: typedef Tetra BasRefSha; typedef QuadraticTriangle GeoBShape; static const UInt numPoints = 10; static const UInt nbPtsPerVertex = 1; static const UInt nbPtsPerEdge = 1; static const UInt nbPtsPerFace = 0; static const UInt nbPtsPerVolume = 0; ;
368
11 Cenni di programmazione degli elementi finiti
Stabilito il tipo di elemento di riferimento e le mappature geometriche, è possibile costruire la collezione degli elementi “correnti”. L’elemento corrente può essere codificato come nel Programma 11. Programma 11 - CurrentFE: Classe per la definizione dell’elemento corrente class CurrentFE private: void _comp_jacobian(); void _comp_jacobian_and_det(); void _comp_inv_jacobian_and_det(); void _comp_quad_point_coor(); template void _update_point( const GEOELE& geoele ); //! compute phiDer void _comp_phiDer(); //! compute the second derivative phiDer2 void _comp_phiDer2(); //! compute phiDer and phiDer2 void _comp_phiDerDer2();
UInt _currentId; public: CurrentFE( const RefFE& _refFE, const GeoMap& _geoMap, const QuadRule& _qr ); const int nbGeoNode; const int nbNode; const int nbCoor; const int nbQuadPt; const int nbDiag; const int nbUpper; const int nbPattern; const RefFE& refFE; const GeoMap& geoMap; const QuadRule& qr; ;
La classe contiene, come si vede, le informazioni relative all’elemento di riferimento, alla mappatura geometrica che lo genera e alla formula di quadratura che verrà ultilizzata per il calcolo degli integrali. In particolare, la (11.6) si rivela molto efficace in fase di codifica, che riportiamo nel Codice 12. Va notato come il calcolo dello jacobiano venga effettuato nei nodi di quadratura richiesti per il calcolo degli integrali (Sez. 11.2).
11.4 La fase di assemblaggio
369
Programma 12 - comp-jacobian: Membro della classe che memorizza gli elementi correnti che calcola lo jacobiano della trasformazione fra elemento corrente e di riferimento void CurrentFE::_comp_jacobian() Real fctDer; // derivate dei GeoMap: for ( int ig = 0;ig < nbQuadPt;ig++ ) for ( int icoor = 0;icoor < nbCoor;icoor++ ) for ( int jcoor = 0;jcoor < nbCoor;jcoor++ ) fctDer = 0.; for ( int j = 0;j < nbGeoNode;j++ ) fctDer += point( j, icoor ) * dPhiGeo( j, jcoor, ig ); jacobian( icoor, jcoor, ig ) = fctDer;
Nel caso di elementi quadrilateri e prismatici, molti concetti visti possono essere estesi, facendo riferimento ad esempio a mappe bilineari o biquadratiche. Risulta tuttavia più complesso garantire l’invertibilità della mappatura: per maggiori dettagli, si veda [FSV05]. Vi sono casi in cui può essere utile usare elementi finiti che siano di grado diverso rispetto a diverse coordinate. Questo è possibile in particolare con griglie quadrilatere strutturate, in cui si può costruire un elemento in cui su uno dei lati si abbia un polinomio biquadratico, mentre sugli altri lati si hanno polinomi bilineari. Nel caso di una codifica isoparametrica della mappatura geometrica, questo porta ad avere, ad esempio, elementi quadrilateri con tre lati diritti e uno curvo. A questo proposito, segnaliamo che in [Hug00], Cap. 3 viene riportata l’implementazione “incrementale” di un elemento quadrilatero che, a partire da una base bilineare a 4 nodi, viene arricchito di altri gradi di libertà fino all’elemento biquadratico a 9 nodi.
11.4.4 La costruzione dei sistemi locali e di quello globale Questa fase è il cuore della costruzione della discretizzazione degli operatori differenziali. Prendiamo come esempio il codice in Programma 13, che costruisce la discretizzazione dell’equazione differenziale μu + σu = f . L’operazione complessiva si articola in un ciclo sugli elementi della mesh aMesh. Dopo l’azzeramento della matrice e del vettore elementari, queste strutture vengono riempite in modo incrementale, prima con la discretizzazione dell’operatore di stiffness (diffusione) e poi con quello di massa (reazione). La subroutine source si occupa del vettore termine noto locale. Successivamente, le subroutine assemb si occupano di aggiornare il calcolo nella matrice globale, come già indicato in Fig. 11.2.
370
11 Cenni di programmazione degli elementi finiti
In questa fase, per non dover verificare se un grado di libertà è di bordo mediante salti condizionati all’interno del ciclo, non si tiene conto delle condizioni al bordo. Programma 13 - assemble: Codice per l’assemblaggio della discretizzazione di un problema di diffusione e reazione μu + σu = f , dove f è indicata da sourceFct Real mu=1., sigma=0.5; ElemMat elmat(fe.nbNode,1,1); ElemVec elvec(fe.nbNode,1); for(UInt i = 1; i<=aMesh.numVolumes(); i++) fe.updateFirstDerivQuadPt(aMesh.volumeList(i)); //<- calcola le informazioni necessarie per l’integrazione numerica elmat.zero(); elvec.zero(); stiff(mu,elmat,fe); mass(sigma,elmat,fe); source(sourceFct,elvec,fe,0); assemb_mat(A,elmat,fe,dof,0,0); assemb_vec(F,elvec,fe,dof,0);
Vediamo in dettaglio separatamente la possibile implementazione del calcolo locale e dell’aggiornamento globale. Il calcolo delle matrici locali Il programma 14 riporta le implementazioni del calcolo della matrice locale dell’operatore di diffusione e del termine noto. In particolare, si assemblano dapprima i contributi diagonali e poi quella extradiagonali della matrice locale, effettuando un ciclo sui nodi di quadratura. L’operazione “nucleo” del ciclo sarà: s += fe.phiDer( iloc, icoor, ig ) * fe.phiDer( jloc, icoor, ig ) * fe.weightDet( ig )*coef; L’istruzione mat( iloc, jloc ) += s; aggiorna il termine i, j della matrice locale in modo incrementale: alla chiamata della successiva subroutine mass(), il contributo dell’operatore di reazione si sommerà a quello già calcolato. In modo simile si agisce in source per il calcolo del vettore locale dei termini noti. Programma 14 - stiff-source: Subroutines per il calcolo dell’operatore di derivata seconda e del termine noto a livello locale void stiff( Real coef, ElemMat& elmat, const CurrentFE& fe, const Dof& dof, const ScalUnknown& U,Real t)
11.4 La fase di assemblaggio int iblock=0,jblock=0; ElemMat::matrix_view mat = elmat.block( 0,0 ); //inizializzazione matrice locale int iloc, jloc, i, icoor, ig, iu; double s, coef_s, x, y, z; ID eleId=fe.currentId(); // Elementi diagonali for ( i = 0;i < fe.nbDiag;i++ ) iloc = fe.patternFirst( i );s = 0; for ( ig = 0;ig < fe.nbQuadPt;ig++ ) // integrazione numerica fe.coorQuadPt(x,y,z,ig);// definizione della formula di quadratura for ( icoor = 0;icoor < fe.nbCoor;icoor++ ) // ‘‘core’’ dell’assemblaggio s += fe.phiDer( iloc, icoor, ig ) * fe.phiDer( iloc, icoor, ig ) * fe.weightDet( ig )*coef(t,x,y,z,uPt); mat( iloc, iloc ) += s; // Elementi extra-diagonali for ( i = fe.nbDiag;i < fe.nbDiag + fe.nbUpper;i++ ) iloc = fe.patternFirst( i ); jloc = fe.patternSecond( i );s = 0; for ( ig = 0;ig < fe.nbQuadPt;ig++ ) fe.coorQuadPt(x,y,z,ig); for ( icoor = 0;icoor < fe.nbCoor;icoor++ ) s += fe.phiDer( iloc, icoor, ig ) * fe.phiDer( jloc, icoor, ig ) * fe.weightDet( ig )*coef; coef_s = s; mat( iloc, jloc ) += coef_s; //aggiornamento matrice locale mat( jloc, iloc ) += coef_s; // in modo incrementale // si ricordi che l’operatore in oggetto e’ SIMMETRICO!
void source( Real (*fct)(Real,Real,Real,Real,Real), ElemVec& elvec, const CurrentFE& fe, const Dof& dof, const ScalUnknown& U,Real t) int iblock=0; int i, ig; ElemVec::vector_view vec = elvec.block( iblock ); Real s; ID eleId=fe.currentId(); int iu;
371
372
11 Cenni di programmazione degli elementi finiti
for ( i = 0;i < fe.nbNode;i++ ) s = 0.0; for ( ig = 0;ig < fe.nbQuadPt;ig++ ) s += fe.phi( i, ig ) * fct(t, fe.quadPt( ig, 0 ),fe.quadPt( ig, 1 ),fe.quadPt( ig, 2 )) * fe.weightDet( ig ); vec( i ) += s; //calcolo del termine noto
L’aggiornamento della matrice globale Il Programma 15 contiene l’aggiornamento della matrice globale a partire da quelle locali. Il punto cruciale è l’identificazione della posizione dei nodi che fanno parte dell’elemento corrente sul quale è appena stata calcolata la matrice locale nell’ambito della matrice globale. Questa operazione viene fatta consultando le Tabelle dof.localToGlobal che contengono questo tipo di informazione. Per l’aggiornamento del termine noto si effettua un’operazione simile. Ovviamente, l’additività dell’integrale richiede che l’operazione venga effettuata, aggiungendo via via i vari contributi: questo spiega il += nell’aggiornamento del vettore (che corrisponde a V[ig]=V[ig]+ vec( i ) e all’analogo in M.setmatinc che sta per set matrix incrementally. Programma 15 - assemb: Assemblaggio della matrice globale e del termine noto template void assemb_mat( Matrix& M, ElemMat& elmat, const CurrentFE& fe, const DOF& dof) ElemMat::matrix_view mat = elmat.block(0,0); UInt totdof = dof.numTotalDof(); int i, j, k; UInt ig, jg; UInt eleId = fe.currentId(); for ( k = 0 ; k < fe.nbPattern ; k++ ) i = fe.patternFirst( k ); j = fe.patternSecond( k ); ig = dof.localToGlobal( eleId, i + 1 ) - 1; jg = dof.localToGlobal( eleId, j + 1 ) - 1; M.set_mat_inc( ig, jg, mat( i, j ) ); template void assemb_vec( Vector& V, ElemVec& elvec, const CurrentFE& fe, const DOF& dof) UInt totdof = dof.numTotalDof();
11.4 La fase di assemblaggio
373
typename ElemVec::vector_view vec = elvec.block( iblock ); int i; UInt ig; UInt eleId = fe.currentId(); for ( i = 0 ; i < fe.nbNode ; i++ ) ig = dof.localToGlobal( eleId, i + 1 ) - 1; V[ ig ] += vec( i );
11.4.5 La prescrizione delle condizioni al bordo La necessità di memorizzare in modo efficiente matrici sparse deve essere conciliata con la necessità di accedere e manipolare la matrice stessa, come abbiamo già avuto modo di osservare per il formato MSR modificato, ad esempio nella fase di imposizione delle condizioni al bordo. In un codice ad elementi finiti la matrice viene tipicamente assemblata ignorando le condizioni al bordo, per non dover introdurre salti condizionati all’interno del ciclo di assemblaggio. Le condizioni al bordo vengono poi introdotte modificando il sistema algebrico. L’imposizione di condizioni di tipo Neumann e Robin si traduce essenzialmente nel calcolo di opportuni integrali di bordo (o, nei casi monodimensionali, di valori valutati al bordo). Ad esempio, il Programma 16 implementa il calcolo degli integrali su superficie per le condizioni di tipo Neumann specificate dalla funzione Bcb. L’integrale comporta l’uso di una formula di quadratura opportuna che consente l’aggiornamento del termine noto b. La struttura bdLocalToGlobal consente di trasferire l’informazione per ogni elemento di bordo che abbia gradi di libertà di Neumann al termine noto globale. Programma 16 - BcNaturalManage: Subroutine per la gestione di condizioni al bordo di Neumann template void bcNaturalManage( VectorType& b, const MeshType& mesh, const Dof& dof, const BCBase& BCb, CurrentBdFE& bdfem, const DataType& t ) UInt nDofF = bdfem.nbNode; UInt totalDof = dof.numTotalDof(); UInt nComp = BCb.numberOfComponents(); const IdentifierNatural* pId; ID ibF, idDof, icDof, gDof; Real sum; DataType x, y, z; // Ciclo sui tipi di condizioni al bordo for ( ID i = 1; i <= BCb.list_size(); ++i ) pId = static_cast< const IdentifierNatural* >( BCb( i ) ); // Numero della faccia di bordo corrente
374
11 Cenni di programmazione degli elementi finiti
ibF = pId->id(); // definizione delle informazioni sulla faccia bdfem.updateMeas( mesh.boundaryFace( ibF ) ); // Ciclo sui gradi di liberta per faccia for ( ID idofF = 1; idofF <= nDofF; ++idofF ) // Ciclo sulle componenti della incognita coinvolte for ( ID j = 1; j <= nComp; ++j ) //Dof globale idDof = pId->bdLocalToGlobal( idofF ) + ( BCb.component( j ) - 1 ) * totalDof; // Ciclo sui nodi di quadratura for ( int l = 0; l < bdfem.nbQuadPt; ++l ) bdfem.coorQuadPt( x, y, z, l ); // quadrature point coordinates // Contributo nel termine noto b[ idDof - 1 ] += bdfem.phi( int( idofF - 1 ), l ) * BCb( t, x, y, z, BCb.component( j ) ) * bdfem.weightMeas( l );
Più complessa è la gestione delle condizioni al bordo di tipo Dirichlet o essenziale (vd. Fig. 11.2). Vi sono varie strategie per questa operazione, alcune delle quali sono trattate in [FSV05]. L’approccio più coerente a quanto indicato dalla teoria consiste nella eliminazione dal sistema ottenuto in assemblaggio delle righe e colonne relative a nodi associati a condizioni al bordo di Dirichlet, correggendo il termine noto usando i valori del dato di Dirichlet che si vuole imporre. Di fatto, questo coincide con l’operazione di rilevamento del dato al bordo mediante una funzione polinomiale a pezzi del grado scelto per gli elementi finiti con cui si approssima il problema e il cui supporto è limitato al solo strato di elementi della triangolazione che si affacciano sul bordo (si veda la Fig. 3.10 del Cap. 11.4). Questo modo di procedere ha il vantaggio di ridurre la dimensione del problema al numero effettivo dei gradi di libertà, tuttavia la sua implemenazione pratica è problematica. Infatti, mentre per problemi 1D l’ordinamento naturale dei gradi di libertà fa sì che le righe e colonne eventualmente da eliminare siano sempre e solo la prima e l’ultima, per problemi in più dimensioni si tratta di eliminare righe e colonne la cui numerazione può essere arbitraria, operazione non facile da gestire in modo efficiente. Va anche osservato che questa operazione modifica in modo sostanziale il pattern della matrice e questo può essere sconveniente se lo si volesse condividere tra più matrici al fine di risparmiare memoria. Per questo motivo, si preferisce considerare la condizione di Dirichlet da imporre nel generico nodo k D come un’equazione della forma ukD = gkD da sostituire alla kD -esima riga del sistema originario. Per evitare di modificare il pattern della matrice questa sostituzione viene eseguita ponendo a zero gli elementi extra-diagonali della riga, tranne quello diagonale, che viene posto uguale a 1 e il termine noto viene posto pari a g kD . Questa operazione richiede un accesso alla matrice solo per righe, per cui value e bindx basterebbero. Tuttavia, così facendo si compromette l’eventuale simmetria della matrice. Per conservarla (al fine ad esempio di poter utilizzare il gradiente coniugato
11.4 La fase di assemblaggio
375
Figura 11.8. Effetti del trattamento delle condizioni di Dirichlet su un caso reale di una griglia 3D mediante azzeramento degli elementi extra-diagonali di righe e colonne associate a gradi di libertà di Dirichlet: a sinistra prima dell’imposizione delle condizioni al bordo, a destra dopo
come metodo iterativo di soluzione, o poter eseguire una decomposizione di Cholesky) occorre modificare anche le colonne della matrice e il termine noto. A tal fine, si può pensare di modificare anche la k D -esima colonna ponendone a zero gli elementi (escluso quello diagonale) ed aggiornando il termine noto in modo appropriato. Da un punto di vista implementativo, in sostanza l”’eliminazione” dei gradi di libertà di Dirichlet viene sostituita da una alterazione dei coefficienti della matrice che ne lascia però inalterato il pattern. Per essere effettuata, richiede un accesso agevole alle matrici anche per colonne che, come si è visto, viene consentito dal vettore bindy. Gli effetti della imposizione delle condizioni al bordo mediante questo approccio sono evidenti in Fig. 11.8. Una possibile implementazione di questa tecnica è riportata nel Programma 17. Programma 17 - diagonalize: Trattamento delle condizioni al bordo di Dirichlet mediante annullamento dei coefficienti extra-diagonali di righe e colonne associati a condizioni di Dirichlet template void MSRMatr::diagonalize( UInt const r, std::vector &b, DataType datum ) _value[r] = 1.; UInt istart = *( _Patt->give_bindx().begin() + r); UInt iend = *( _Patt->give_bindx().begin() + r + 1); typename std::vector::iterator start = _value.begin() + istart; typename std::vector::iterator end = _value.begin() + iend;
376
11 Cenni di programmazione degli elementi finiti
UInt disp = _Patt->nRows() + 1; UInt row, col; transform( start, end, start, zero ); for ( UInt i = istart;i < iend;++i ) row = _Patt->give_bindx() [ i ]; col = _Patt->give_bindy() [ i - disp ]; b[ row ] -= _value[ col ] * datum; _value[ col ] = 0.;
b[ r ] = datum; return ;
11.5 L’integrazione in tempo Fra i tanti metodi per effettuare l’integrazione in tempo, nei Capitoli precedenti si è analizzato il θ metodo, ma si è fatto cenno anche a numerosi altri metodi, in particolare ai BDF (Backward Difference Formulas) implementati in LifeV. Una loro introduzione si trova in [QSS00]. Qui ne richiamiamo brevemente gli aspetti di base. Dato il sistema di equazioni differenziali ordinarie: M
du = f − Au dt
e il dato iniziale associato u(t = 0) = u0 , un metodo BDF è un metodo multistep implicito nella forma: p α0 αj n+1−j M Un+1 + AUn+1 = f n+1 + U , Δt Δt j=1
(11.7)
per opportuni p ≥ 1, ove i coefficienti sono determinati in modo che: p ∂U α0 n+1 αj n+1−j | n+1 = U U − + O(Δtp ). ∂t t=t Δt Δt j=1
Nella Tabella 11.3 (a sinistra) vengono riportati i coefficienti per p = 1 (metodo di Eulero implicito), p = 2, 3. Nel caso in cui la matrice A sia funzione di u, ossia nel caso in cui il problema (11.7) sia non lineare, i metodi BDF, essendo impliciti, possono risultare molto costosi, richiedendo ad ogni basso temporale la risoluzione del sistema algebrico non lineare in Un+1
11.5 L’integrazione in tempo p 1 2 3
α0 1 3/2 11/6
α1 1 2 3
α2 -1/2 -3/2
α3 1/3
β0 1 2 3
β1 -1 -3
377
β2 1
Tabella 11.3. Coefficienti αi per i metodi BDF (p = 1, 2, 3) e coefficienti βi per l’estrapolazione in tempo
p α0 αj n+1−j n+1 n+1 n+1 n+1 MU U + A(U )U =f + . Δt Δt j=1
Una possibile soluzione di compromesso che riduce significativamente i costi computazionali, senza tuttavia passare a un metodo completamente esplicito (le cui proprietà di stabilità in generale possono essere insoddisfacenti) è quello di risolvere il sistema lineare: p α0 αj n+1−j M Un+1 + A(U∗ )Un+1 = f n+1 + U . Δt Δt j=1 ove U∗ approssima Un+1 usando le soluzioni note dai passi precedenti. In sostanza si pone: p βj Un−j = Un+1 + O(Δtp ), U∗ = j=0
per opportuni coefficienti di “estrapolazione” β j . L’obiettivo è quello di ridurre i costi computazionali senza ridurre in modo drammatico la regione di assoluta stabilità dello schema implicito né l’accuratezza complessiva dello schema di avanzamento in tempo. La Tabella 11.3 riporta a destra i coefficienti β j . La codifica di un integratore in tempo di tipo BDF a questo punto può essere dunque effettuata mediante una opportuna classe, riportata nel Programma 18, i cui membri sono: 1. l’indicatore dell’ordine p che dimensiona anche i vettori α e β; 2. i vettori α e β; 3. la matrice unknowns data dall’accostamento dei vettori U n , Un−1 , . . . Un+1−p . La dimensione di ciscun vettore, ossia il numero di righe di questa matrice (che ha p colonne) viene memorizzata in un indice size. Una volta assemblate le matrici A e M , l’avanzamento in tempo verrà effettuato p α α0 j calcolando la matrice M + A, il termine noto f n+1 + Un+1−j e risolvendo Δt Δt j=1 il sistema (11.7). In particolare, nella implementazione presentata nel codice 18, la p α j funzione time der calcola il termine Un+1−j accedendo al vettore alpha e Δt j=1 alla matrice unknowns. Nel caso in cui il problema sia non lineare si può ricorrere al vettore β tramite la funzione extrap().
378
11 Cenni di programmazione degli elementi finiti
Dopo aver calcolata la soluzione al nuovo passo temporale, la matrice unknowns deve “farle posto”, spostando a destra tutte le sue colonne, in modo che la prima colonna sia la soluzione appena calcolata. Questa operazione è gestita dalla funzione shift right, che sostanzialmente copia la penultima colonna di unknowns nell’ultima, la terzultima nella penultima e così via fino a liberare la prima colonna per memorizzarvi la soluzione appena calcolata. Programma 18 - Bdf: Classe di base per la costruzione di metodi di integrazione in tempo di tipo Bdf class Bdf public: Bdf( const UInt p ); ~Bdf(); void initialize_unk( Vector u0 ); void shift_right( Vector const& u_curr ); Vector time_der( Real dt ) const; Vector extrap() const; double coeff_der( UInt i ) const; double coeff_ext( UInt i ) const; const std::vector& unk() const; void showMe() const; private: UInt _M_order; UInt _M_size; Vector _M_alpha; Vector _M_beta; std::vector _M_unknowns; ;
Bdf::Bdf( const UInt p ) : _M_order( p ), _M_size( 0 ), _M_alpha( p + 1 ), _M_beta( p ) if ( n <= 0 || n > BDF_MAX_ORDER ) // Gestione dell’errore per aver richiesto un ordine sbagliato // o non implementato switch ( p ) case 1:
11.6 Ed ora consideriamo un esempio completo
379
_M_alpha[ 0 ] = 1.; // Eulero implicito _M_alpha[ 1 ] = 1.; _M_beta[ 0 ] = 1.; // u al tempo n+1 approssimato da u al tempo n break; case 2: _M_alpha[ 0 ] = 3. / 2.; _M_alpha[ 1 ] = 2.; _M_alpha[ 2 ] = -1. / 2.; _M_beta[ 0 ] = 2.; _M_beta[ 1 ] = -1.; break; case 3: _M_alpha[ 0 ] = 11. / 6.; _M_alpha[ 1 ] = 3.; _M_alpha[ 2 ] = -3. / 2.; _M_alpha[ 3 ] = 1. / 3.; _M_beta[ 0 ] = 3.; _M_beta[ 1 ] = -3.; _M_beta[ 2 ] = 1.; break; _M_unknowns.resize( p ); //numero di colonne della matrice _M_unknowns
11.6 Ed ora consideriamo un esempio completo Concludiamo questo capitolo con il listato di un programma scritto con LifeV per la risoluzione del problema parabolico di diffusione-reazione: ⎧ ∂u ⎪ ⎪ − μ(t)u + σ(t)u = f, x ∈ Ω, 0 < t ≤ 10, ⎪ ⎪ ⎪ ⎨ u∂t= g , x ∈ Γ ∪ Γ , 0 < t ≤ 10, 1
u = g2 , ⎪ ⎪ ⎪ ⎪ ∇u · n = 0, ⎪ ⎩ u = u0 ,
10
11
x ∈ Γ20 ∪ Γ21 , 0 < t ≤ 10, x ∈ Γ50 , 0 < t ≤ 10, x ∈ Ω, t = 0,
dove Ω è un dominio cubico e ∂Ω = Γ 10 ∪ Γ11 ∪ Γ20 ∪ Γ21 ∪ Γ50 . Precisamente, i codici numerici sulle porzioni di bordo sono: Γ20 : x = 0, 0 < y < 1, 0 < z < 1; Γ21 : x = 0, (y = 0, 0 < z < 1) ∪ (y = 1, 0 < z < 1) ∪(z = 0, 0 < y < 1) ∪ (z = 0, 0 < y < 1); Γ10 : x = 1, 0 < y < 1, 0 < z < 1; Γ11 : x = 1, (y = 0, 0 < z < 1) ∪ (y = 1, 0 < z < 1) ∪(z = 0, 0 < y < 1) ∪ (z = 0, 0 < y < 1); Γ50 : ∂Ω\ {Γ20 ∪ Γ21 ∪ Γ10 ∪ Γ11 ∪ Γ50 } . In particolare, μ(t) = t 2 , σ(t) = 2, g1 (x, y, z, t) = g2 (x, y, z, t) = t2 + x2 , u0 (x, y, z) = 0, f = 2t + 2x2 . La soluzione esatta è proprio t 2 + x2 e il test vie-
11.6 Ed ora consideriamo un esempio completo #define P2 // Useremeo elementi Lagrangiani affini quadratici int main() using namespace LifeV; using namespace std; Chrono chrono; // Utility per il calcolo dei tempi di esecuzione // =================================================== // Definizione delle condizioni al bordo (vedere main.hpp) // =================================================== BCFunctionBase gv1(g1); // Funzione g1 BCFunctionBase gv2(g2); // Funzione g2 BCHandler BCh(2); // Due condizioni al bordo vengono imposte // Alle due condizioni si associano i codici numerici 10 e 20 // contenuti nella griglia si calcolo BCh.addBC("Dirichlet1", 10, Essential, Scalar, gv1); BCh.addBC("Dirichlet2", 20, Essential, Scalar, gv2); // =================================================== // Informazioni sulla mappatura geometrica e l’integrazione numerica // =================================================== const GeoMap& geoMap = geoLinearTetra; const QuadRule& qr = quadRuleTetra64pt; const GeoMap& geoMapBd = geoLinearTria; const QuadRule& qrBd = quadRuleTria3pt; //P2 elements const RefFE& refFE = feTetraP2; const RefFE& refBdFE = feTriaP2; // ================================ // Struttura della mesh // ================================ RegionMesh3D aMesh; GetPot datafile( "data" ); // le informazioni su quale sia il file della mesh // e altro sono contenute in un file chiamato ‘‘data’’ long int m=1; std::string mesh_type = datafile( "mesh_type", "INRIA" ); string mesh_dir = datafile( "mesh_dir", "." ); string fname=mesh_dir+datafile( "mesh_file", "cube_6007.mesh" ); readMppFile(aMesh,fname,m); // lettura della griglia aMesh.updateElementEdges(); aMesh.updateElementFaces();
381
382
11 Cenni di programmazione degli elementi finiti aMesh.showMe(); // ======================================= // Definizione dell’elemento finito corrente, munito di // mappa geometrica e regola di quadratura // ======================================= CurrentFE fe(refFE,geoMap,qr); CurrentBdFE feBd(refBdFE,geoMapBd,qrBd); // ======================================== // Definizione dei gradi di liberta’ (DOF) per il problema // e per le condizioni al bordo specifiche // ======================================== Dof dof(refFE); dof.update(aMesh); BCh.bdUpdate( aMesh, feBd, dof ); UInt dim = dof.numTotalDof(); dof.showMe(); // ================================ // Inizializzazione dei vettori delle incognite // U e del termine noto F // ================================ ScalUnknown U(dim), F(dim); U=ZeroVector( dim ); F=ZeroVector( dim ); // =============================================== // Definizione dei parametri per l’integrazione in tempo // Vengono sempre specificati in ‘‘data’’ e letti da li // =============================================== Real Tfin = datafile( "bdf/endtime", 10.0 ); Real delta_t = datafile( "bdf/timestep", 0.5 ); Real t0 = 0.; UInt ord_bdf = datafile( "bdf/order", 3 );; Bdf bdf(ord_bdf); Real coeff=bdf.coeff_der(0)/delta_t; bdf.showMe(); // ====================================================== // Costruzione del pattern e delle matrici indipendenti dal tempo // ====================================================== // pattern for stiff operator MSRPatt pattA(dof); MSRMatr<double> A(pattA);
11.6 Ed ora consideriamo un esempio completo MSRMatr<double> M(pattA); M.zeros(); cout << "*** Matrix computation : "<<endl; chrono.start(); // SourceFct sourceFct; ElemMat elmat(fe.nbNode,1,1); ElemVec elvec(fe.nbNode,1); for(UInt i = 1; i<=aMesh.numVolumes(); i++) fe.updateJacQuadPt(aMesh.volumeList(i)); elmat.zero(); mass(1.,elmat,fe); assemb_mat(M,elmat,fe,dof,0,0); // Matrice di massa M
// ================================================ // Definizione dei parametri per il solutore del sistema lineare // Viene usato AZTEC // ================================================ int proc_config[AZ_PROC_SIZE]; // Informazioni sul processore (seriale o parallelo) int options[AZ_OPTIONS_SIZE]; // Vettore del tipo di solutore usato double params[AZ_PARAMS_SIZE]; // Parametri del solutore usato int *data_org; // Vettore di servizio double status[AZ_STATUS_SIZE]; // Vettore di ritrono dalla chiamata di AZTEC // indica se la soluzione e’ avvenuta con successo // altre dichiarazioni per AZTEC int *update,*external; int *update_index; int *extern_index; int N_update; // cout << "*** Linear System Solving (AZTEC)" << endl; AZ_set_proc_config(proc_config, AZ_NOT_MPI ); AZ_read_update(&N_update, &update, proc_config, U.size(), 1, AZ_linear); AZ_defaults(options,params); AZ_transform(proc_config, &external, (int *)pattA.giveRaw_bindx(), A.giveRaw_value(), update, &update_index, &extern_index, &data_org, N_update, NULL, NULL, NULL, NULL, AZ_MSR_MATRIX);
383
384
11 Cenni di programmazione degli elementi finiti chrono.start(); init_options(options,params);
// ===================================== // TIME LOOP // ===================================== int count=0; bdf.initialize_unk(u0,aMesh,refFE,fe,dof,t0,delta_t,1); for (Real t=t0+delta_t;t<=Tfin;t+=delta_t) A.zeros(); F=ZeroVector( F.size() ); // ========================================= // Assemblaggio e // Aggiornamento del termine noto con // la soluzione dei passi precedenti // ========================================= Real visc=nu(t);// mu e sigma dipendono dal tempo Real s=sigma(t); for(UInt i = 1; i<=aMesh.numVolumes(); i++) fe.updateFirstDerivQuadPt(aMesh.volumeList(i)); elmat.zero(); elvec.zero(); mass(coeff+s,elmat,fe); stiff(visc,elmat,fe); source(sourceFct,elvec,fe,t,0); assemb_mat(A,elmat,fe,dof,0,0); assemb_vec(F,elvec,fe,dof,0);
// Handling of the right hand side F += M*bdf.time_der(delta_t); // ======================================== // Prescrizione delle condizioni al bordo // =======================================
chrono.start(); A.spy("test.m"); bcManage(A,F,aMesh,dof,BCh,feBd,1.,t); A.spy("test_bc.m"); chrono.stop(); chrono.start();
11.6 Ed ora consideriamo un esempio completo AZ_solve(U.giveVec(), F.giveVec(), options, params, NULL, (int *)pattA.giveRaw_bindx(), NULL, NULL, NULL, A.giveRaw_value(), data_org, status, proc_config); chrono.stop(); // ====================================== // Scrittura su file di post-processing // ====================================== count++; index << count; wr_medit_ascii_scalar( "U" + index.str() + ".bb", U.giveVec(), dim ); wr_medit_ascii( "U" + index.str() + ".mesh", aMesh); // ================================================== // In questo caso test conosciamo la soluzione // analitica (specificata in main.hpp) // e vogliamo calcolare gli errori in diverse norme // ================================================== AnalyticalSol analyticSol; Real normL2=0., normL2diff=0., normL2sol=0.; Real normH1=0., normH1diff=0., normH1sol=0.; for(UInt i=1; i<=aMesh.numVolumes(); ++i) fe.updateFirstDeriv(aMesh.volumeList(i)); normL2 += elem_L2_2(U,fe,dof); normL2sol += elem_L2_2(analyticSol,fe,t,( UInt )U.nbcomp()); normL2diff += elem_L2_diff_2(U,analyticSol,fe, dof, t,( UInt )U.nbcomp()); normH1 += elem_H1_2(U,fe,dof); normH1sol += elem_H1_2(analyticSol,fe,t,U.nbcomp()); normH1diff += elem_H1_diff_2(U,analyticSol,fe,dof,t,U.nbcomp());
normL2 = sqrt(normL2); normL2sol = sqrt(normL2sol); normL2diff = sqrt(normL2diff); normH1 = sqrt(normH1); normH1sol = sqrt(normH1sol); normH1diff = sqrt(normH1diff); bdf.shift_right(U);
// END OF TIME LOOP
385
386
11 Cenni di programmazione degli elementi finiti
return EXIT_SUCCESS;
Quello che segue è una parte dell’output a video ottenuto lanciando il codice: Boundary Conditions Handler ====> Number of BC stored 5 List => ******************************** BC Name: Wall Flag: 50 Type: 1 Mode: 0 Number of components: 1 List of components: 1 Number of stored ID’s: 0 ******************************** ... <===========================> Reading INRIA mesh file Linear Tetra Mesh #Vertices = 1322 #BVertices = 599 #Points = 1322 #Boundary Points = 599 #Volumes = 6007 ************************************************** ************************************************** RegionMesh3D ************************************************** ************************************************** ID: 0 Marker Flag:1 **************** COUNTERS ******************** NumPoints=1322 numBPoints=599 NumVertices=1322 numBVerices=599 NumVolumes=6007 numFaces=12611 NumBFaces=1194 numEdges=7925 NumBEdges=1791 ************************************************** ************ACTUALLY STORED ******************** Points=1322 Edges= 1791 Faces= 1194 Volumes=6007 ************************************************** ...
11.6 Ed ora consideriamo un esempio completo
*** BDF Time discretization of order 3 *** Coefficients: alpha(0) = 1.83333 alpha(1) = 3 alpha(2) = -1.5 alpha(3) = 0.333333 beta (0) = 3 beta (1) = -3 beta (2) = 1 3 unknown vectors of length 0 dim = 9247 Now we are at time 0.5 A has been constructed 16.93s. *** BC Management: 1.44s. ******************************************************* ***** Preconditioned GMRES solution ***** ILUT( fill-in = 5.000e+00, drop = 1.000e-04) ***** without overlap ***** No scaling ***** NOTE: convergence VARIES when the total number of ***** processors is changed. ******************************************************* iter:
0
residual = 1.000000e+00
******************************************************* ***** ilut: The ilut factors require 3.914e+00 times ***** the memory of the overlapped subdomain matrix. ******************************************************* iter: iter: iter: iter: iter: iter: iter: iter:
1 2 3 4 5 6 7 8
residual = 9.674996e-04 residual = 1.262096e-04 residual = 9.806253e-06 residual = 5.693536e-07 residual = 4.168325e-08 residual = 3.028269e-09 residual = 1.919715e-10 residual = 1.371272e-11
387
388
11 Cenni di programmazione degli elementi finiti
Solution time: 1.160000 (sec.) total iterations: 8 Flops not available for options[AZ_precond] = 14 *** Solution computed in 1.17s. || U ||_{L^2} = 0.655108 || sol ||_{L^2} = 0.655108 || U - sol ||_{L^2} = 1.49398e-09 || U - sol ||_{L^2} / || sol ||_{L^2} = 2.28051e-09 || U ||_{H^1} = 1.32759 || sol ||_{H^1} = 1.32759 || U - sol ||_{H^1} = 8.09782e-09 || U - sol ||_{H^1} / || sol ||_{H^1} = 6.09963e-09 Now we are at time 1 A has been constructed 28.77s. *** BC Management: 1.43s. Si noti come gli errori siano da imputare solo alla risoluzione del sistema lineare: infatti, dal momento che la soluzione esatta è una funzione parabolica in tempo e in spazio, la scelta degli elementi finiti di grado 2 e dello schema di avanzamento BDF di ordine 3 garantisce che gli errori di discretizzazione siano nulli. Le Fig. 11.10 illustrano i risultati visualizzati da Medit.
Figura 11.10. Risultati della simulazione dopo 5 passi temporali (a sinistra) e 20 (a destra)
12 Generazione di griglie nel caso bidimensionale
Come abbiamo visto i metodi numerici per la risoluzione delle equazioni differenziali alle derivate parziali richiedono una “reticolazione” del dominio computazionale ossia una partizione del dominio stesso in unità geometriche più semplici (ad esempio, triangoli o quadrilateri in due dimensioni, tetraedri o prismi in tre dimensioni) che verifichino determinate condizioni. La loro unione definirà la cosiddetta griglia di calcolo. Abbiamo già trattato il caso monodimensionale nel capitolo precedente, ora ci occupiamo delle principali tecniche di reticolazione per dominî bidimensionali, senza alcuna pretesa di essere esaustivi. Si rimanderà il lettore, dove opportuno, alla letteratura specializzata. Per semplicità tratteremo il caso bidimensionale; le tecniche qui esposte possono però essere estese a dominî tridimensionali. Inoltre, non affronteremo la complessa tematica relativa alla approssimazione della frontiera di dominî di forma non poligonale. Il lettore interessato può consultare [Cia78], [BS94]. Supporremo dunque nel seguito che la frontiera della triangolazione coincida con quella del dominio.
12.1 Reticolazione di un dominio poligonale Dato un dominio poligonale Ω limitato in R 2 , possiamo associare ad esso una griglia Th mediante una decomposizione di Ω stesso in poligoni K tali che , Ω= K, K∈Th
dove Ω è la chiusura di Ω, e ◦
- K = ∅, ∀K ∈ Th ; ◦
◦
- K1 ∩ K2 = ∅ per ogni K 1 , K2 ∈ Th con K1 = K2 ; - se F = K1 ∩ K2 = ∅ con K1 , K2 ∈ Th e K1 = K2 , allora F è o un intero lato o un vertice della griglia;
390
12 Generazione di griglie nel caso bidimensionale
Figura 12.1. Esempio di griglia conforme (a sinistra) e non-conforme (a destra)
- indicato con h K il diametro di K, per ogni K ∈ T h , definiamo h = maxK∈Th hK . ◦
Abbiamo denotato con K = K \ ∂K, ossia l’interno di K. T h viene anche detta reticolazione, o talvolta triangolazione (in senso lato) di Ω. I vincoli imposti alla griglia dalle prime due condizioni sono ovvi. La terza condizione limita le triangolazioni ammissibili a quelle cosiddette conformi. Per esemplificare il concetto, riportiamo in Fig. 12.1 una triangolazione conforme (a sinistra) ed un esempio di triangolazione non-conforme (a destra). Noi considereremo qui solo triangolazioni conformi. Esistono tuttavia delle approssimazioni agli elementi finiti molto particolari, non esaminate in questo libro, che utilizzano griglie non-conformi, cioè che non rispettano la terza condizione. La quarta condizione lega il parametro h al massimo diametro degli elementi di T h . Per ragioni legate alla teoria dell’errore di interpolazione ricordata nel Cap. 3, noi considereremo solo triangolazioni T h regolari, per le quali cioè, per ogni elemento K ∈ Th , il rapporto tra il diametro h K e la sfericità ρK (che ricordiamo essere il diametro del cerchio inscritto) sia minore di una certa costante prefissata. Più precisamente griglie per le quali sia soddisfatta la seguente proprietà: hK ≤δ ρK
∀K ∈ Th ,
per un dato δ > 0. La Fig. 12.2 illustra il diametro e la sfericità per un elemento di forma triangolare e per un quadrilatero. Si suole distinguere le griglie in strutturate e non-strutturate. Le griglie strutturate utilizzano essenzialmente elementi quadrangolari e sono caratterizzate dal fatto che
hK
hK
ρK
ρK
Figura 12.2. Diametro e sfericità per un elemento triangolare (a sinistra) e per un quadrilatero (a destra)
12.1 Reticolazione di un dominio poligonale
391
(i+1,j+1)
(i,j+1)
(I,J) (i,j)
(i+1,j)
i=I, j=J
Figura 12.3. Localizzazione della numerazione dei vertici appartenenti ad un elemento di indici (I, J)
l’accesso ai vertici adiacenti ad un dato nodo (o agli elementi adiacenti ad un dato elemento) è immediato. Infatti è possibile stabilire una relazione biunivoca tra i vertici di griglia e le coppie di numeri interi (i, j), i = 1, . . . , N i , j = 1, . . . , Nj tale per cui, dato il nodo di coefficienti (i, j), i 4 vertici adiacenti sono in corrispondenza agli indici (i − 1, j), (i + 1, j), (i, j − 1) e (i, j + 1). Il numero totale di vertici è dunque Ni Nj . Una analoga associazione può essere fatta tra gli elementi della griglia e le coppie (I, J), I = 1, . . . , Ni − 1, J = 1, . . . , Nj − 1. Inoltre è possibile identificare direttamente i vertici corrispondenti a ciascun elemento, senza avere bisogno di memorizzare esplicitamente la matrice delle connettività. La Fig. 12.3 illustra questa situazione. Chiaramente, in un codice di calcolo le coppie di indici sono in genere sostituite con una numerazione formata da un singolo numero intero che è biunivocamente associato agli indici sopra descritti. Ad esempio, per la numerazione dei vertici si può scegliere di associare a ciascuna coppia (i, j) il numero intero k = i + (j − 1)N i . Nelle griglie non strutturate, invece, l’associazione tra un elemento della griglia ed i suoi vertici deve essere esplicitamente memorizzata nella matrice delle connettività, che fornisce appunto, per ciascun elemento, la numerazione dei vertici ad esso appartenenti. Un codice sviluppato per griglie strutturate si potrà avvantaggiare della “struttura” della griglia e, a parità di elementi, produrrà normalmente un algoritmo più efficiente, sia in termini di memoria che di tempi di calcolo, rispetto ad uno schema analogo su di una griglia non strutturata. Per contro, le griglie non strutturate offrono una maggiore flessibilità sia dal punto di vista della triangolazione di dominî di forma complessa sia perché offrono la possibilità di raffinare/deraffinare localmente la griglia. La Fig. 12.4 mostra un esempio di griglia non strutturata, la cui spaziatura della griglia è stata adattata al particolare problema in esame. Tali raffinamenti localizzati sarebbero difficili, o impossibili, da ottenere con una griglia di tipo strutturato. Griglie non strutturate bidimensionali sono in genere formate da triangoli, anche se è possibile avere griglie non-strutturate quadrangolari.
392
12 Generazione di griglie nel caso bidimensionale 1
0.8
0.6
0.4
0.2
0
−0.2
−0.4
−0.6
−0.8
−1 −0.5
0
0.5
1
1.5
Figura 12.4. Esempio di mesh non strutturata, ad elementi triangolari. Particolare di una griglia in una regione esterna ad un profilo alare. La mesh è stata adattata per migliorare l’accuratezza della soluzione numerica per una data condizione di flusso
12.2 Generazione di griglie strutturate L’idea più elementare per generare una griglia strutturata su un dominio di forma qualunque Ω, consiste nel trovare una mappa regolare ed invertibile M tra il quadrato + = [0, 1] × [0, 1] (che chiameremo quadrato di riferimento) e Ω. Si noti che la Ω regolarità della mappa deve poter estendersi anche alla frontiera (questa richiesta può in qualche caso essere parzialmente rilassata). Si procede quindi generando una reticolazione, ad esempio uniforme, nel quadrato di riferimento e si utilizza poi la mappa M per trasformare le coordinate dei vertici in + nelle corrispondenti in Ω. Ω Vi sono diversi punti in questa procedura che devono essere considerati con la dovuta attenzione. 1. La ricerca della mappa M è spesso non semplice. Inoltre tale mappa non è unica ed è opportuno che sia la più regolare possibile. 2. Una reticolazione uniforme nel quadrato di riferimento non fornisce in genere una griglia ottimale in Ω. Infatti, normalmente, si vuole poter controllare la distibuzione dei vertici in Ω, e questo, in generale, può essere fatto solo generando delle griglie non uniformi sul quadrato di riferimento, la cui spaziatura dipenderà sia dalla spaziatura desiderata in Ω che dalla mappa M scelta. 3. Anche se la mappa è regolare (per esempio di classe C 1 ) non è garantito che gli elementi della griglia prodotta in Ω siano ammissibili, in quanto essi non sono + Basti solo pensare l’immagine tramite M degli elementi corrispondenti in Ω. che, se si desiderano elementi Q 1 in Ω, essi dovranno avere lati paralleli agli assi cartesiani mentre l’immagine di una reticolazione Q 1 sul quadrato di riferimento produce, se la mappa non è lineare, lati curvi in Ω. In altre parole la mappa viene + e non sugli spigoli. fatta agire solamente sui vertici della griglia di Ω Una possibilità per costruire la mappa M consiste nell’utilizzare l’interpolazione transfinita (4.2) illustrata nel Cap. 4. Tale metodologia non è tuttavia sempre fa-
12.2 Generazione di griglie strutturate (0,1)
393
g3 (s)
^y
(1,1)
4
^ Ω
g4(s)
3
2
g2 (s)
Ω ^x
1 (0,0)
(1,0)
g1(s)
Figura 12.5. Costruzione di mesh strutturata: identificazione della mappa sulla frontiera
cilmente applicabile. Illustreremo dunque nel seguito una metodologia più generale, che applicheremo ad un esempio specifico, rimandando alla letteratura specializzata [TWM85, TSW99] per ulteriori ragguagli e approfondimenti. Supponiamo di avere un dominio Ω e di poter partizionare il suo contorno in 4 parti Γ1 , . . . , Γ4 consecutive, come illustrato in Fig. 12.5 per un dominio particolarmente semplice. Supponiamo inoltre di poter descrivere tali porzioni di ∂Ω tramite 4 curve parametriche orientate g 1 , . . . , g4 , come in figura, dove il parametro s varia tra 0 e 1 su ciascuna curva. Questa costruzione ci permette di creare una mappa biiettiva tra il lati del quadrato di riferimento ed il contorno del dominio. Assoceremo infatti ciascuna curva al corrispondente lato del quadrato, come esemplificato in Fig. 12.5. Si + tratta ora di capire come estendere la mappa a tutto Ω. Osservazione 12.1 Si noti che le curve g i i = 1, . . . , 4 non sono, in genere, differeni ziabili in tutto (0, 1), ma possono presentare un numero finito di “spigoli” dove dg ds non è definita. In Fig. 12.5, per esempio, la curva g 2 non è derivabile in corrispondenza dello “spigolo” marcato da un piccolo quadrato nero. • Una possibilità per costruire la mappa M : (+ x, y+) → (x, y) consiste nel risolvere il + seguente problema ellittico vettoriale su Ω: −
∂ 2x ∂ 2 x − 2 = 0, ∂+ x2 ∂+ y
+ = (0, 1)2 , su Ω
(12.1)
con condizioni al bordo x), x(+ x, 1) = g3 (+ x), x(+ x, 0) = g1 (+
x + ∈ (0, 1),
y ), x(0, y+) = g4 (+ y ), x(1, y+) = g2 (+
y+ ∈ (0, 1).
I vertici di una griglia nel quadrato di riferimento potranno ora essere trasformati nei vertici di una griglia in Ω. Si noti che la soluzione del problema (12.1) dovrà, in generale, essere trovata utilizzando un metodo numerico, per esempio tramite uno schema alle differenze finite (o agli elementi finiti). Inoltre, per rispettare adeguatamente la geometria della frontiera di Ω è necessario assicurarsi che un vertice venga generato in corrispondenza di ogni “spigolo”. In Fig. 12.6 si mostra il risultato dell’applicazione della metodologia descritta al dominio di Fig. 12.5.
394
12 Generazione di griglie nel caso bidimensionale 1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
Figura 12.6. Costruzione di mesh strutturata: griglia 25 × 25 corrispondente ad una partizione uniforme del quadrato di riferimento
g3 (s) 1
0.9
g2 (s)
g4(s)
0.8
0.7
0.6
Ω
0.5
0.4
0.3
0.2
0.1
0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
g1(s) Figura 12.7. Triangolazione di un dominio non-convesso. Identificazione della mappa alla frontiera e mesh ottenuta risolvendo il problema ellittico (12.1)
Si può notare come la griglia corrispondente ad una suddivisione regolare del quadrato di riferimento non sia particolarmente soddisfacente se si volesse, per esempio, avere un addensamento dei vertici in corrispondenza dello spigolo. Inoltre, la metodologia così descritta non è applicabile a dominî non convessi. Consideriamo infatti la Fig. 12.7 dove si mostra un dominio a forma di L, con la relativa suddivisione della frontiera, e la griglia ottenuta risolvendo il problema (12.1) partendo da una suddivisione regolare del dominio di riferimento. È evidente che la griglia non è accettabile. Per risolvere tali problemi si può procedere in diversi modi (non mutuamente escludentisi): + un griglia non più uniforme, ma fatta variare in modo da tenere - si utilizza su Ω conto delle caratteristiche geometriche di Ω; - si utilizza una mappa M differente, ottenuta, per esempio risolvendo al posto di (12.1) il seguente nuovo problema differenziale: −α
∂2x ∂2x − β + γx = f , ∂+ x2 ∂+ y2
+ su Ω,
(12.2)
12.3 Generazione di griglie non strutturate
395
dove α > 0, β > 0, γ ≥ 0 e f sono funzioni di x + e y+ opportune, scelte in modo da controllare la distribuzione dei vertici. Chiaramente esse dipenderanno dalla geometria di Ω; - si suddivide Ω in sotto-dominî che vengono triangolati separatamente. Questa tecnica è normalmente conosciuta come generazione strutturata a blocchi. Se si vuole che la griglia globale sia conforme, occorre prestare particolare attenzione a come si distribuisce il numero di vertici sui bordi di interfaccia tra i vari sottodominî. Il problema può divenire estremamente complesso quando il numero di sotto-dominî è elevato. Per i dettagli si rimanda il lettore interessato alla letteratura specializzata già citata. Metodi di generazione del tipo illustrato vengono chiamati schemi ellittici di generazione di griglia, poiché si basano sulla risoluzione di equazioni differenziali ellittiche.
12.3 Generazione di griglie non strutturate Considereremo qui la generazione di griglie non strutturate ad elementi triangolari. I due algoritmi principali utilizzati per tale scopo sono • •
la triangolazione di Delaunay, la tecnica di avanzamento del fronte.
12.3.1 Triangolazione di Delaunay Una triangolazione di n punti di R 2 si dice di Delaunay se il cerchio circoscritto a ciascun triangolo non contiene alcun vertice al suo interno (si veda la Fig. 12.8). Essa gode delle seguenti proprietà: 1. dato un set di punti, la sua triangolazione di Delaunay è unica, a meno di situazioni particolari in cui M punti (con M > 3) giacciano su una circonferenza; 2. tra tutte le triangolazioni possibili la triangolazione di Delaunay è quella che massimizza il minimo angolo dei triangoli della griglia (proprietà di regolarità max-min); 3. l’insieme formato dall’unione dei triangoli è la figura convessa di area minima che racchiuda il set di punti dato (anche detto inviluppo convesso). La terza proprietà rende l’algoritmo di Delaunay impraticabile per dominî non convessi, almeno nella sua forma originaria. Ne esiste però una variante chiamata algoritmo di Delaunay vincolato (constrained Delaunay triangulation) che permette di fissare a-priori un insieme di lati della griglia da generare. In particolare, si possono fissare i lati che definiscono la frontiera della griglia. Dati due punti P1 e P2 diremo che essi sono reciprocamente visibili se il segmento P1 P2 non attraversa nessuno dei lati di frontiera (o, in generale, i lati che si vogliono fissare). Una triangolazione di Delaunay vincolata soddisfa la proprietà: l’interno del
396
12 Generazione di griglie nel caso bidimensionale
K
P
Figura 12.8. A sinistra un esempio di griglia di Delaunay su un dominio convesso di forma triangolare. Si può facilmente verificare che il cerchio circoscritto a ciascun triangolo non contiene al suo interno nessun vertice della griglia. A destra, invece, un particolare di una griglia non soddisfacente la condizione di Delaunay: il vertice P cade infatti all’interno del cerchio circoscritto al triangolo K
cerchio circoscritto a ciascun triangolo K non contiene alcun vertice che sia visibile da un punto interno a K. Si può ancora mostrare che tale triangolazione è unica e soddisfa la proprietà maxmin. In Fig. 12.9 si mostra una triangolazione di Delaunay vincolata di una figura non convessa. La triangolazione di Delaunay non permette di avere un controllo dell’aspetto di forma dell’elemento generato. D’altra parte, in certe situazioni, può essere utile generare triangoli “allungati” in una certa direzione, per esempio per ben rappresentare uno strato limite. A tale scopo è stato sviluppato l’algoritmo detto di triangolazione di Delaunay generalizzata, in cui la condizione sul cerchio circoscritto viene sostituta con una condizione analoga sull’ellisse circoscritta al triangolo in esame. In questo modo, regolando opportunamente la lunghezza e le direzioni degli assi di tale ellisse si possono generare elementi allungati nella direzione voluta. Gli algoritmi di generazione di griglie di Delaunay utilizzati più correntemente sono di tipo “incrementale”, cioè generano una successione di griglie di Delaunay aggiungendo un vertice alla volta. Bisogna quindi trovare delle procedure che forniscano i nuovi vertici in accordo con la spaziatura di griglia desiderata, riuscendo ad arrestare
Figura 12.9. Esempio di triangolazione di Delaunay vincolata di un dominio non convesso
12.3 Generazione di griglie non strutturate
397
tale procedura nel momento in cui la griglia così generata risulti soddisfacente. Per ulteriori dettagli si può consultare, per esempio, [GB98] e [TSW99, Cap. 16]. Una descrizione dettagliata delle proprietà geometriche della triangolazione di Delaunay vincolata, sia per dominî di R 2 che di R3 , si può trovare in [BE92].
12.3.2 Tecnica di avanzamento del fronte Descriviamo a grandi linee in questa sezione un’altra fra le tecniche più comunemente usate per la generazione di griglie non strutturate, quella di avanzamento del fronte. Un ingrediente necessario è la conoscenza della spaziatura desiderata per gli elementi della griglia che si andrà a generare. Supponiamo allora che su Ω sia definita una funzione H, detta di spaziatura, che fornisca per ciascun punto di Ω le dimensioni della griglia ivi desiderata. Tale funzione fornisce, per ciascun punto di Ω, il valore del diametro h desiderato. Se si volesse controllare anche l’aspetto di forma degli elementi generati, H avrà una forma più complessa. La prima operazione da compiere è quella di generare vertici lungo la frontiera del dominio. Supponiamo che ∂Ω sia descritto come l’unione di curve parametriche gi (s), i = 1, . . . N , per esempio splines o spezzate poligonali. Per semplicità si assume che, per tutte le curve, il parametro s vari tra 0 e 1. Se si desidera generare n vertici lungo la curva g i è sufficiente generare un vertice per tutti i valori di s per cui la funzione s dg i (τ )dτ f (s) = κ H−1 (gi (τ )) ds 0 assume valori interi. Il parametro di correzione κ può essere calcolato come già visto nella sezione citata. In pratica, l’algoritmo è del tutto analogo al caso monodimeni sionale, salvo che qui si lavora su una curva di R 2 . Il termine | dg ds | tiene conto della metrica intrinseca della curva. Fatto questo, può avere inizio il processo di avanzamento del fronte. Il fronte è una struttura dati che contiene la lista dei lati che definiscono la frontiera tra la porzione di Ω già triangolata e quella ancora da triangolare. All’inizio del processo il fronte contiene i lati di frontiera. Durante il processo di generazione della griglia, ogni lato del fronte è disponibile a formare un nuovo elemento, che viene creato connettendo il lato scelto o con un vertice di griglia già esistente o con un nuovo vertice. La scelta se utilizzare un vertice esistente o crearne uno nuovo dipende da diversi fattori, tra cui la compatibilità tra la dimensione e forma dell’elemento che verrebbe generato con quelle fornite dalla funzione di spaziatura H. Inoltre, il nuovo elemento non deve intersecare alcun lato del fronte. Una volta generato il nuovo elemento, i suoi lati verranno “aggiunti” al fronte in modo che quest’ultimo descriva la nuova frontiera tra la parte triangolata e non. In questo modo, durante il processo di generazione, il fronte avanzerà dalle zone già triangolate verso la zona ancora da triangolare (si veda la Fig. 12.10). Le operazioni fondamentali che andranno eseguite durante la generazione di ogni nuovo elemento sono quindi:
398
12 Generazione di griglie nel caso bidimensionale Fronte
Nuovo Fronte
Nuovo Nodo
Lato scelto
Figura 12.10. Avanzamento del fronte. La parte di dominio già triangolata è stata ombreggiata
- scegliere un conveniente lato AB del fronte avanzante; - costruire un potenziale nuovo vertice C ed il corrispondente triangolo ABC avente come base il lato AB scelto e dimensioni in accordo con le richieste di spaziatura date; - cercare i vertici del fronte che sono “vicini” al nuovo potenziale vertice C; - scegliere tra tutti i vertici vicini a C (compreso C stesso) quello più “conveniente” e che non intersechi nessun lato del fronte attuale; - generare il nuovo triangolo e aggiornare il fronte. È ovvio che se si desidera avere un costo computazionale lineare in funzione del numero di elementi generati, bisognerà rendere le operazioni sopra descritte il più possibile indipendenti dalle dimensioni della griglia che si sta generando e, in particolare, dalle dimensione del fronte avanzante. Un tale obiettivo è tutt’altro che banale soprattutto se si pensa che operazioni come il controllo dell’intersezione di un nuovo triangolo o la ricerca dei vertici del fronte vicino ad un generico punto prendono in considerazione, a priori, tutto il fronte. Si rimanda per questi aspetti alla letteratura specializzata, ed in particolare ai Cap. 14 e 17 di [TSW99]. La qualità della griglia generata dipende dalla procedura di scelta del lato del fronte su cui generare il nuovo triangolo. In particolare, una tecnica frequentemente adottata consiste nello scegliere il lato di lunghezza inferiore. Implementando gli opportuni accorgimenti e strutture dati adeguate, l’algoritmo di avanzamento fornisce una griglia la cui spaziatura è coerente con quella richiesta, con tempi di generazione pressoché proporzionali al numero di elementi generati. In particolare, la griglia attorno al profilo alare di Fig. 12.4 è stata ottenuta usando un algoritmo di avanzamento del fronte. La tecnica di avanzamento del fronte può essere anche utilizzata per la generazione di griglie ad elementi quadrangolari.
12.4 Tecniche di regolarizzazione Una volta generata la griglia può rendersi necessario un post-processing in grado di migliorarne la regolarità. Alcuni metodi consentono di trasformare la griglia mediante
12.4 Tecniche di regolarizzazione N2
N2
K1
N1
399
K*2
N3
e
N1
K*1
N3
e*
K2
N4 a)
N4 b)
Figura 12.11. Le due configurazioni ottenute tramite lo scambio della diagonale nel quadrilatero convesso formato da due elementi adiacenti. Le due configurazioni vengono confrontate sulla base di un criterio di ottimalità
operazioni che migliorano la forma dei triangoli. In particolare prenderemo in considerazione tecniche di regolarizzazione che modificano le caratteristiche topologiche della griglia (scambio delle diagonali) e altre che ne modificano le caratteristiche geometriche (movimento dei nodi).
12.4.1 Scambio delle diagonali Lo scambio delle diagonali è una tecnica che consente di modificare la topologia della griglia senza cambiare la posizione e il numero dei suoi vertici. Tale tecnica si basa sul fatto che un quadrilatero, formato da due triangoli aventi un lato in comune, può essere tagliato in due modi diversi in coppie di triangoli (si veda la Fig. 12.11). In genere lo scambio delle diagonali viene utilizzato per migliorare la qualità delle griglie non strutturate seguendo un criterio di ottimalità prefissato. Se l’obiettivo, per esempio, è quello di evitare angoli troppo grandi, un criterio possibile è quello di effettuare lo scambio nel caso in cui la somma degli angoli opposti alla diagonale sia maggiore di π. Uno schema generale per un possibile algoritmo di scambio delle diagonali si ottiene definendo il criterio di ottimalità a livello di elemento, sotto forma di una appropriata funzione positiva S : K → R che assume il valore nullo nel caso in cui l’elemento K abbia la forma e la dimensione “ottimale”. Per esempio, si può usare √ |K| 3 S(K) = 3 (12.3) − , 2 i=1 |eK 6 i | K dove eK i indica un generico lato di K e |e i | la sua lunghezza. Utilizzando questa funzione si privilegiano i triangoli “vicini” al triangolo equilatero, per il quale S(K) = 0. Si otterrà quindi, in generale, una griglia la più possibile regolare, ma senza tenere conto della spaziatura. L’algoritmo procederà quindi come segue, facendo riferimento alla Fig. 12.11:
1. ciclo 0: mettere a zero il contatore di lati scambiati: swap = 0;
400
12 Generazione di griglie nel caso bidimensionale
2. ciclo su tutti i lati e interni della mesh corrente; 3. se i due triangoli adiacenti a e formano un quadrilatero convesso: a) calcolo G = S 2 (K1 ) + S 2 (K2 ) − S 2 (K1∗ ) + S 2 (K2∗ ) ; • se G ≥ τ , essendo τ > 0 una tolleranza prefissata, allora eseguo lo scambio di diagonale (modifica della griglia corrente) e pongo swap = swap + 1; 4. se swap > 0 ritorno a Ciclo 0 e ripeto la procedura. Altrimenti la procedura termina. Si può verificare facilmente che questo algoritmo termina necessariamente in un numero finito di passi perché, ad ogni scambio di diagonale, la quantità positiva 2 K S (K), dove la somma si estende a tutti i triangoli della griglia corrente, si riduce della quantità discreta G (si noti che, sebbene la griglia venga modificata, ad ogni scambio di diagonale il numero di elementi e di lati rimane invariato). Osservazione 12.2 Non sempre è opportuno costruire la funzione di ottimalità S a livello di elemento. Algoritmi con caratteristiche analoghe a quello appena illustrato possono essere sviluppati considerando funzioni di ottimalità a livello di nodo o di lato di griglia. • La tecnica di scambio delle diagonali è anche alla base di un algoritmo molto utilizzato per la triangolazione di Delaunay (l’algoritmo di Lawson). Si può infatti dimostrare che a partire da qualunque triangolazione di un dominio convesso si può ottenere la sua triangolazione di Delaunay (che, ricordiamo, è unica) attraverso un numero finito di scambi di diagonale. Inoltre, il numero massimo di scambi necessari a tale scopo è determinabile a priori ed è funzione del numero dei vertici della griglia. La tecnica (e i risultati di convergenza) è estendibile a triangolazioni di Delaunay vincolate, attraverso una opportuna modifica dell’algoritmo. Dettagli possono essere trovati sulla letteratura specializzata, per esempio [GB98].
12.4.2 Movimento dei nodi Un altro metodo per migliorare la qualità della griglia consiste nel muovere i punti della stessa senza modificarne la topologia. Consideriamo un vertice interno P ed il poligono KP formato dalla unione degli elementi della griglia che lo contengono. KP è spesso chiamato “patch” di elementi associato a P ed è già stato considerato nella Sez. 3.5. Una tecnica di regolarizzazione, detta regolarizzazione laplaciana, o baricentrizzazione, consiste nello spostare P nel baricentro di K P , cioè nel calcolarne la nuova posizione x P nel modo seguente: −1 xP = |KP | xdx KP
(si veda la Fig. 12.12). Tale procedimento andrà ovviamente reiterato su tutti i vertici interni della reticolazione e ripetuto diverse volte. A convergenza, la griglia finale è quella che minimizza la quantità
12.4 Tecniche di regolarizzazione
401
P P
Figura 12.12. Movimento di un punto nel baricentro del poligono convesso formato dagli elementi ad esso adiacenti
P P
Figura 12.13. Modifica dell’algoritmo di regolarizzazione laplaciana per patch concavi. A sinistra il “patch” iniziale ed a destra la modifica dovuta alla regolarizzazione. Si è indicato con ombreggiatura il poligono concavo CP
P
KP
(xP − x)2 dx,
(12.4)
dove la somma si estende a tutti i vertici interni della griglia. La griglia finale in genere dipenderà dal modo in cui i vertici vengono percorsi. Si noti inoltre che tale procedura può fornire una griglia inaccettabile se K P è un poligono concavo in quanto x P può cadere fuori dal poligono. Si presenta qui una estensione della procedura per patch generici. Consideriamo la Fig. 12.13 che mostra un patch K P concavo. Definiamo C P il luogo dei punti di KP “visibili” da tutta la frontiera di K P , cioè l’insieme dei punti A ∈ K P tale per cui il segmento AB è completamente contenuto in K P , per ogni B ∈ ∂KP . È banale dimostrare che C P è sempre convesso. La modifica all’algoritmo di regolarizzazione consiste nel collocare P non nel baricentro di K P ma in quello di C P , come illustrato in Fig. 12.13. Chiaramente, nel caso di patch convessi, si ha C P = KP . La costruzione di CP può essere eseguita in maniera computazionalmente efficace usando opportuni algoritmi, la cui descrizione esula dallo scopo di questo libro. Un’altra possibilità consiste nello spostare il vertice nel baricentro del bordo di KP (o di CP nel caso di patch concavi), cioè di porre xP = |∂KP |−1 x dx. ∂KP
402
12 Generazione di griglie nel caso bidimensionale
Ciò è equivalente a minimizzare il quadrato della distanza del vertice P dai lati che formano il bordo del patch. Un’ulteriore tecnica che si trova sovente in letteratura consiste nel muovere ciascun vertice interno nel baricentro dei vertici appartenenti al patch associato, cioè di calcolare la nuova posizione di ciascun vertice interno P tramite 8 xP = xN 1 , N ∈KP N =P
N ∈KP N =P
dove la somma si estende su tutti i vertici N appartenenti al patch. Nonostante sia la metodologia più semplice, quest’ultima spesso non dà buoni risultati, in particolare se la distribuzione dei vertici all’interno del patch è molto irregolare. Inoltre è più difficile l’estensione a patch concavi. Sono quindi da preferirsi le due procedure descritte in precedenza. In Fig. 12.14 è presentato un esempio di applicazione successiva di entrambe le tecniche di regolarizzazione appena descritte. Si osservi che gli algoritmi di 2
2
1
1
0
0
−1
−1
−2
−2 −2
−1
0
1
2
−2
−1
0
1
2
Figura 12.14. Esempio di regolarizzazione attraverso scambio delle diagonali e movimento dei nodi
regolarizzazione qui presentati tendono ad uniformare la griglia e quindi a distruggere l’eventuale presenza di adattività. È tuttavia possibile modificarli per tenere conto di una spaziatura non uniforme. Per esempio, si può utilizzare una baricentrizzazione pesata, cioè porre −1 xP = μ(x) dx μ(x)xdx, KP
KP
dove la funzione peso μ è una funzione strettamente positiva che dipende dalla funzione di spaziatura della griglia. Nel caso di spaziatura non uniforme, μ assumerà valori più elevati nelle zone dove la griglia deve essere più fitta. Per esempio, si può prendere μ = H −1 ; in tal caso la griglia risultante dovrà minimizzare (in modo approssimato) 2 H−1 (x)(xP − x) dx, P
KP
dove la somma si estende ai vertici interni. Anche per quanto riguarda la procedura di scambio di diagonali si può tenere conto della spaziatura nella valutazione della configurazione “ottimale”, per esempio cambiando opportunamente la definizione della funzione S(K) in (12.3).
13 Il metodo dei volumi finiti
Il metodo dei volumi finiti è assai popolare nella discretizzazione di problemi differenziali in forma conservativa. Per una sua presentazione consigliamo la monografia di R.J. LeVeque [LeV02a]. Come paradigma per descrivere il metodo ed illustrarne le principali caratteristiche consideriamo la seguente equazione evolutiva, di tipo scalare: ∂t u + div(F(u)) = s(u),
x ∈ Ω, t > 0
(13.1)
dove u : (x, t) → R denota l’incognita, x ∈ Ω ⊂ R d (d = 1, 2, 3), ∂t indica la derivata parziale rispetto a t, F è una funzione vettoriale assegnata, lineare o non-lineare, detta flusso, s è una funzione scalare assegnata detta termine di sorgente. Se il flusso F contiene termini dipendenti dalle derivate prime di u, il problema differenziale è del second’ordine. È evidente che (13.1) deve essere completata dalla condizione iniziale u(x, 0) = u0 (x), x ∈ Ω per t = 0, nonché da opportune condizioni al contorno, su tutta la frontiera nel caso il problema (13.1) sia del second’ordine, oppure solo su un sotto-insieme ∂Ω in (la frontiera di inflow) nel caso di problemi del prim’ordine. Abbiamo già visto nei capitoli precedenti che equazioni differenziali di questo tipo sono dette leggi di conservazione. Il metodo ai volumi finiti opera su equazioni scritte in forma conservativa come la (13.1). Le equazioni di diffusione-trasporto-reazione studiate nel Cap. 5, quelle di puro trasporto studiate nei Cap. 7-9, quelle paraboliche esaminate nel Cap. 6, possono tutte essere considerate come casi particolari di (13.1). In effetti tutte le equazioni differenziali alle derivate parziali che derivano da leggi fisiche di conservazione possono essere messe in forma conservativa. Con un minimo sforzo supplementare possiamo naturalmente considerare il caso vettoriale, in cui u è una funzione vettoriale a p componenti, così come s, mentre il flusso F è ora un tensore di dimensione p × d. In particolare, le equazioni di NavierStokes considerate nel Cap. 10 possono anch’esse essere messe in forma conservativa, avendo l’accortezza di eliminare il termine di derivata temporale per l’equazione di continuità.
404
13 Il metodo dei volumi finiti ni1
ni2 ni3
Ωi ni5 ni4
Figura 13.1. Un volume di controllo
13.1 Alcuni principi elementari Il passo preliminare per una discretizzazione ai volumi finiti di (13.1) consiste nell’identificare un insieme di poliedri Ω i ⊂ Ω di diametro inferiore ad h, detti volumi (o celle di controllo), i = 1, . . . , M , tali che ∪ i Ω i = Ω (assumeremo qui per semplicità che il dominio Ω sia poligonale, in caso contrario ∪ i Ω i ne sarà una approssimazione). Si veda la Fig. 13.1 per un esempio in due dimensioni. Ipotizzeremo inoltre che le celle siano a due a due disgiunte, essendo questo il caso più comunemente usato, anche se questa restrizione non è in principio richiesta dal metodo. L’equazione (13.1) viene integrata su ogni Ω i (pertanto essi sono detti volumi di controllo), fornendo il sistema di equazioni ∂t
u dΩ +
Ωi
F(u) · ni dγ =
∂Ωi
s(u) dΩ,
i = 1, . . . , M.
(13.2)
Ωi
Abbiamo indicato con n i il versore normale esterno a ∂Ω i . In due dimensioni, se indichiamo con n ij , j = 1, . . . , Li , il versore normale esterno costante al lato l ij di ∂Ωi (e Li il numero di tali lati: in Fig. 13.1 L i = 5), la (13.2) si può riscrivere ∂t Ωi
u dΩ +
Li j=1 l
ij
F(u) · nij dγ =
s(u) dΩ,
i = 1, . . . , M.
(13.3)
Ωi
Tre generi di problemi si pongono immediatamente: -
come si rappresenta l’incognita u in ogni volume di controllo; come si approssimano gli integrali (di volume e di superficie); come si rappresenta il flusso F(u) su ogni lato, in funzione dei valori dell’incognita u sui volumi di controllo adiacenti al lato.
In generale, un metodo ai volumi finiti si caratterizza per la forma geometrica dei suoi volumi di controllo, nonché per la posizione delle incognite (ovvero dove vengono allocate le variabili) in ogni volume di controllo. Per quanto riguarda la costruzione dei volumi di controllo si parte usualmente da una triangolazione T h del dominio in elementi dello stesso genere, tipicamente triangoli
13.1 Alcuni principi elementari
∂Ω xi
xi
405
∂Ω
Figura 13.2. Volumi di controllo (indicati in grigio) generati da una partizione di un dominio Ω quadrato con elementi quadrati di lato h. Nella figura di sinistra si riporta il caso cell-centered, in quella di destra il caso vertex-centered
o quadrilateri in 2D, tetraedri o cubi in 3D. La griglia può essere strutturata, strutturata a blocchi (con blocchi disgiunti oppure sovrapponentisi), o non strutturata. Le griglie strutturate sono limitate a dominî di forma relativamente semplice, in modo che l’intero dominio, o ogni blocco in cui sia stato suddiviso, possa essere mappato in un rettangolo o in un cubo. Una volta triangolato il dominio si possono seguire due strade. Nel metodi cosidetti cell-centered, gli elementi della griglia T h fungono direttamente da volumi di controllo. Conseguentemente, le incognite sono collocate in un punto interno a ciascun elemento, tipicamente il baricentro, che chiamiamo nodo. Questa scelta apparentemente naturale dei volumi di controllo presenta però uno svantaggio: non essendovi nodi che giacciono sul bordo di Ω, l’imposizione delle condizioni al bordo essenziali richiederà degli accorgimenti particolari, che esamineremo in seguito. Per ovviare a tale inconveniente si possono costruire i volumi di controllo attorno ai vertici di Th , dove verranno quindi collocate le incognite. Questo dà luogo ai cosidetti schemi vertex-centered . Talvolta, in problemi a più campi che coinvolgono più variabili, entrambe le tecniche sono usate contemporaneamente per collocare le diverse incognite in nodi diversi. Si parla in questo caso di metodi su griglie sfalsate o staggered, ne accenneremo nella Sez. 13.6 dedicato alla discretizzazione delle equazioni di Navier-Stokes. Un esempio elementare su griglia strutturata quadrangolare è riportato in Fig. 13.2, dove sono indicati anche i volumi di controllo per schemi cell-centered e vertexcentered. Questi ultimi sono definiti dai quadrati Ω iV = {x ∈ Ω : x − xi ∞ < h/2}, Ωi = ΩiV ∩ Ω, essendo {xi } i vertici dei quadrati {K} della griglia di partenza Th , che coincidono in questo caso con i nodi dei volumi di controllo. Queste due scelte non esauriscono le possibilità che si incontrano in pratica. Talvolta le variabili sono collocate su ciascun lato (o faccia in 3D) della griglia T h , e il volume di controllo corrispondente è formato dagli elementi di T h adiacenti al lato (o alla faccia). In generale, un approccio a volumi finiti è semplice da implementare (e le celle della discretizzazione possono essere scelte di forma assai generale), la soluzione è
406
13 Il metodo dei volumi finiti
tipicamente considerata come una funzione costante in ogni volume di controllo, le condizioni al contorno di Neumann si impongono in modo naturale, e la formulazione stessa del problema esprime la conservazione locale della quantità Ωi u dΩ. Lo svantaggio potenziale è l’oggettiva difficoltà a disegnare schemi di ordine elevato, la necessità di dover trattare le condizioni al bordo essenziali in modo particolare (per i metodi cell-centered); infine, l’analisi matematica è meno semplice che nel caso dei metodi di Galerkin non potendosi applicare direttamente le tecniche variazionali come si fa per i metodi di Galerkin.
13.2 La costruzione dei volumi di controllo per schemi vertex-centered Nel caso di griglie non strutturate triangolari (tetraedriche in 3D) la costruzione dei volumi di controllo attorno ai vertici di T h non è ovvia. In teoria si potrebbe scegliere come volume di controllo Ω i l’insieme di tutti gli elementi che contengono il vertice xi . Questo però genererebbe dei volumi di controllo a intersezione non nulla. Come già detto, anche se in principio possibile, questa scelta non è desiderabile. Ci si può allora avvalere di alcuni concetti geometrici. Consideriamo a titolo di esempio un dominio bidimensionale Ω ⊂ R 2 , limitato, con frontiera poligonale, e sia {xi }i∈P un insieme di punti, che chiameremo nodi, di Ω. Tipicamente questi punti sono quelli in cui si intende fornire un’approssimazione della soluzione u. Qui P indica un insieme di indici. A ciascun nodo associamo il poligono ΩiV = {x ∈ R2 : |x − xi | < |x − xj |, ∀j = i},
(13.4)
con i ∈ P. L’insieme {Ω iV , i ∈ P} è detto diagramma, o anche tassellazione, di Voronoi associato all’insieme di punti {x i }i∈P ; ΩiV è chiamato i-esimo poligono di Voronoi. Per un esempio si veda la Fig. 13.3. I poligoni così ottenuti sono convessi, ma non necessariamente limitati (si considerino ad esempio quelli adiacenti la frontiera). I loro vertici sono detti vertici di Voronoi, e sono detti regolari quando sono punto d’incontro di tre poligoni di Voronoi, degeneri se ve ne convergono almeno quattro. Una tassellazione di Voronoi con tutti i vertici regolari è detta a sua volta regolare. ∂Ω
ΩiV
xi
Figura 13.3. Un diagramma di Voronoi
13.2 La costruzione dei volumi di controllo per schemi vertex-centered
407
Kj
Ωi Figura 13.4. Triangolazione di Delaunay (a destra) ottenuta a partire da diagramma di Voronoi (a sinistra). I pallini indicano i nodi {xi }i∈P
A questo punto possiamo definire i volumi di controllo Ω i introdotti nella precedente sezione come Ωi = ΩiV ∩ Ω, i ∈ P. (13.5) Per ogni i ∈ P, indichiamo con P i l’insieme degli indici dei nodi adiacenti a x i , ovvero Pi = {j ∈ P\{i} : ∂Ωi ∩ ∂Ωj = ∅}. Indichiamo inoltre con l ij = ∂Ωi ∩ ∂Ωj , j ∈ Pi , un lato della frontiera di Ω i condiviso da un volume di controllo adiacente, e con m ij la sua lunghezza. Se il diagramma di Voronoi è regolare si ha che m ij > 0. In questo caso, se congiungiamo ciascun nodo x i con i nodi di P i otteniamo una triangolazione di Ω che coincide con la triangolazione di Delaunay (si veda la Sez. 12.3.1) dell’inviluppo convesso dei nodi. Nel caso ci siano dei vertici degeneri nella tassellazione di Voronoi, da questa procedura si ottiene ancora una triangolazione di Delaunay operando una triangolazione opportuna dei poligoni Ω i costruiti intorno ai vertici degeneri. Chiaramente, se Ω è convesso il procedimento sopra descritto ne fornisce direttamente una triangolazione di Delaunay. Si veda per un esempio la Fig. 13.4. Il procedimento inverso è pure possibile, notando che i vertici del diagramma di Voronoi corrispondono ai centri dei cerchi circoscritti ai triangoli (circocentri) della triangolazione di Delaunay corrispondente. Gli assi dei triangoli formano quindi i lati della tassellazione. Ωi Kj
Figura 13.5. Diagramma di Voronoi (a destra) ottenuto a partire da una triangolazione di Delaunay (a sinistra)
408
13 Il metodo dei volumi finiti v2
Ω2,K Ω3,K
G
Ω1,K
v3
v1
Figura 13.6. Un triangolo K, il suo baricentro G =
1 (v1 3
+ v2 + v3 ) e i poligoni Ωi,K
Quest’ultima rappresenta quindi un possibile insieme di volumi di controllo associato ad una assegnata triangolazione di Delaunay (si veda per un esempio la Fig. 13.5). Il diagramma di Voronoi e la triangolazione di Delaunay sono in effetti in una relazione di dualitá: ad ogni vertice della tassellazione di Voronoi corrisponde biunivocamente un elemento (triangolo) della triangolazione di Delaunay e ogni vertice della triangolazione di Delaunay è in corrispondenza biunivoca con un poligono della tassellazione e quindi con un nodo. Vi sono due interessanti proprietà che vale la pena di sottolineare. La prima è che il centro del cerchio circoscritto ad un triangolo non ottuso K sta all’interno della chiusura di K. Pertanto se una triangolazione di Delaunay ha tutti gli angoli non ottusi, i vertici del diagramma di Voronoi corrispondente sono tutti contenuti in Ω. La seconda è che, se indichiamo con v i , i = 1, 2, 3, i vertici del triangolo non ottuso K, e con Ωi,K = Ωi ∩ K la porzione del volume di controllo Ω i inclusa in K, allora si hanno le seguenti disuguaglianze tra le misure di K e Ω i,K : 1 1 |K| ≤ |Ωi,K | ≤ |K|, i = 1, 2, 3. (13.6) 4 2 Un’alternativa alla costruzione basata sul diagramma di Voronoi che non necessita di una triangolazione di Delaunay, consiste nel partire da una triangolazione T h di Ω formata da triangoli qualunque, anche ottusi. Se K è il generico triangolo di T h di vertici vi , i = 1, 2, 3, definiamo ora Ωi,K = {x ∈ K : λj (x) < λi (x), j = i} dove λj sono le coordinate baricentriche rispetto a K. Si veda la Sez. 5.8.8 e il Cap. 12 per la definizione di coordinate baricentriche e la Fig. 13.6 per un esempio. A questo punto i volumi di controllo possono essere definiti nel modo seguente: , Ωi = int Ω i,K , i ∈ P, {K : vi ∈∂K}
dove int(D) denota l’interno dell’insieme chiuso D. La famiglia {Ω i , i ∈ P} definisce la cosiddetta “median dual grid” (più raramente detta diagramma di Donald). Si veda la Fig. 13.7 per un esempio. Conseguentemente si possono definire le quantità lij , mij e Pi come fatto per il diagramma di Voronoi. Gli elementi l ij non sono necessariamente segmenti rettilinei, ma poligonali in generale.
13.3 Discretizzazione di un problema di diffusione-trasporto-reazione
409
Ωi
Kj
Figura 13.7. Triangolazione del dominio (a sinistra) e median dual grid, o diagramma di Donald (a destra)
13.3 Discretizzazione di un problema di diffusione-trasporto-reazione Consideriamo a titolo d’esempio l’equazione (13.1) in cui F(u) = −μ∇u + b u,
s(u) = f − σ u.
(13.7)
Si tratta dunque di un problema evolutivo di tipo diffusione-trasporto-reazione scritto in forma conservativa, simile a quello descritto all’inizio del Cap. 5. Le funzioni f, μ, σ e b sono assegnate; per esse si faranno le ipotesi previste all’inizio del Cap. 5. Come nel caso del problema (5.1), anche qui si supporrà per semplicità che u soddisfi una condizione al bordo di tipo Dirichlet omogeneo, u = 0 su ∂Ω. Supponiamo che Ω sia partizionato da un diagramma di Voronoi e si consideri la corrispondente triangolazione di Delaunay (come indicato ad esempio in Fig. 13.4). Quanto segue è in realtà estendibile anche ad altre tipologie di volumi finiti. Sarà sufficiente considerare l’insieme dei soli indici interni, P int = {i ∈ P : xi ∈ Ω}, essendo u nulla al bordo. Integrando l’equazione assegnata sul volume di controllo Ω i come fatto in (13.3) ed usando il teorema della divergenza, troviamo: ∂t Ωi
u dΩ +
Li j=1 l
−μ
∂u + b · nij u dγ = ∂nij
ij
f − σ u dΩ,
◦
i = 1, . . . , M ,
Ωi
(13.8) ◦ avendo indicato con M l’insieme degli indici di P int . Al fine di approssimare gli integrali di linea, una strategia usuale consiste nell’approssimare le funzioni μ e b·n ij con costanti a tratti, precisamente: (13.9) μlij ∼ μij = cost > 0, b · nij lij ∼ bij = cost. Tali costanti possono rappresentare il valore della corrispondente funzione nel punto medio del segmento l ij , oppure il valor medio sullo stesso lato, ovvero μij =
1 mij
μ dγ, lij
bij =
1 mij
b · nij dγ, lij
se mij > 0.
410
13 Il metodo dei volumi finiti xj lij xi
Figura 13.8. Il segmento lij
Per quanto riguarda le derivate normali, una possibilità consiste nell’approssimarle con rapporti incrementali del tipo ∂u u(xj ) − u(xi ) ∼ ∂nij |xj − xi | (si veda per un esempio la Fig. 13.8). Naturalmente questa formula è esatta se u è lineare sul segmento congiungente x i e xj . Infine, per quanto concerne l’approssimazione dell’integrale di u su l ij , si sostituisce ulij con una costante ottenuta per combinazione lineare convessa, ovvero ul ρij u(xi ) + (1 − ρij ) u(xj ), ij
essendo ρij ∈ [0, 1] un parametro da definire. Operando le approssimazioni precedentemente introdotte ed indicando con u i l’approssimazione del valore u(x i ) dell’incognita, possiamo derivare dalla (13.8) le seguenti equazioni approssimate: mi
dui dt
+
Li j=1
mij {−μij
uj − ui + bij [ ρij ui + (1 − ρij ) uj ]} δij
+ mi σi ui = mi fi ,
(13.10)
◦
i = 1, . . . , M ,
avendo indicato con m i la misura di Ωi , con σi e fi i valori di σ e f in xi e con δij la distanza di xi da xj . Si noti che la (13.10) può essere scritta nella forma Li dui + mi mij Hij (ui , uj ) + mi σi ui = mi fi , dt j=1
(13.11)
dove Hij è il cosiddetto flusso numerico, che rappresenta il contributo dell’approssimazione del flusso attraverso il lato l ij . Il concetto di flusso numerico è già stato introdotto nei Cap. 7 e 9, nel contesto di schemi alle differenze finite per equazioni iperboliche. Anche alcune caratteristiche del flusso numerico si traducono in proprietà dello schema. Per esempio, per avere uno schema conservativo sarà necessario che Hij (ui , uj ) = −Hji (uj , ui ).
13.4 Analisi dell’approssimazione ai volumi finiti
411
13.4 Analisi dell’approssimazione ai volumi finiti Il sistema di equazioni (13.10) si può riscrivere nella forma di un problema variazio◦
nale discreto procedendo nel modo seguente. Per ogni i = 1, . . . , M , si moltiplica l’equazione i-esima per un numero reale v i , quindi si somma sull’indice i, ottenendo: ◦
M
dui mi vi dt i=1
◦
+
M i=1
vi
Li
mij {−μij
j=1
◦
+
M i=1
uj − ui + bij [ ρij ui + (1 − ρij ) uj ]} δij
◦
mi σi vi ui =
M
mi vi fi .
i=1
(13.12) Si indichi ora con V h lo spazio delle funzioni continue lineari a pezzi rispetto alla triangolazione T h di Delaunay, che si annullano al bordo (si veda la (3.15)). Da un insieme di valori vi possiamo ricostruire in modo univoco una funzione v h ∈ Vh che interpola tali valori nei nodi x i , ovvero vh ∈ Vh : vh (xi ) = vi ,
◦
i = 1, . . . , M .
In modo analogo, sia u h ∈ Vh la funzione interpolante i valori u i in xi . Allora la (13.12) si riscrive equivalentemente nella seguente forma “variazionale” discreta: per ogni t > 0, trovare u h = uh (t) ∈ Vh t.c. (∂t uh , vh )h + ah (uh , vh ) = (f, vh )h
∀vh ∈ Vh ,
(13.13)
◦ avendo posto (w h , vh )h = M i=1 mi vi wi ed avendo indicato con a h (uh , vh ) la forma bilineare che compare al primo membro della (13.12). Si è dunque interpretata l’approssimazione ai volumi finiti come un caso particolare del metodo di Galerkin generalizzato per il problema assegnato. Per quanto concerne la scelta dei coefficienti ρij della combinazione lineare, una possibilità è di usare ρ ij = 1/2, il che corrisponde ad usare una differenza finita di tipo centrato per il termine convettivo. Questa strategia è adeguata quando il numero di Péclet locale non è tanto grande, ovvero non vi è alcuna coppia di indici i, j per cui si verifica che μij |bij | δij . Quando invece ciò si verifichi si impone una scelta più oculata dei coefficienti ρ ij della combinazione convessa. In generale, ρ ij = ϕ(bij δij /μij ), dove ϕ è una funzione del numero di Péclet locale a valori in [0, 1] che può essere scelta come segue: se ϕ(z) = 1/2 [sign(z) + 1] avremo una stabilizzazione di tipo upwind, mentre scegliendo ϕ(z) = 1 − (1 − z/(ez − 1))/z si avrà una stabilizzazione di tipo fittingesponenziale. Con questa scelta si può mostrare che a h (·, ·) è una forma bilineare, è Vh -ellittica, uniformemente rispetto a h (nella consueta ipotesi che i coefficienti del problema soddisfino la condizione di positività 1/2 div(b) + σ ≥ β 0 = cost ≥ 0). Precisamente, supponendo μ ≥ μ 0 = cost > 0,
412
13 Il metodo dei volumi finiti
ah (vh , vh ) ≥ μ0 |vh |2H1 (Ω) + β0 (vh , vh )h . Essendo inoltre (vh , vh )h uniformemente equivalente al prodotto scalare esatto (v h , vh ) per funzioni di V h , ciò assicura la stabilità del problema (13.13). Infine, il metodo è convergente, linearmente rispetto ad h, precisamente ) ( u − uh H1 (Ω) ≤ C h uH2 (Ω) + |∇f |L∞ (Ω) nell’ipotesi che le norme a secondo membro siano limitate. Per la dimostrazione si veda, ad esempio, [KA00]. Rinviamo alla stessa referenza anche per l’analisi di altre proprietà del metodo, quali la conservatività e la monotonia.
13.5 Implementazione delle condizioni al bordo Come detto il problema differenziale considerato va completato con condizioni al bordo opportune. Per un problema scritto in forma conservativa le condizioni al bordo naturali consistono nell’imporre i flussi, ovvero F(u) · n = h
su ΓN ⊂ ∂Ω.
La loro implementazione nel contesto dei volumi finiti è immediata. Basta agire sul flusso numerico relativo ai lati di bordo, imponendo Hik = H(ui , uk ) = h(xik )
se lik ⊂ ΓN ,
dove xik è un punto opportuno contenuto in l ik , tipicamente il punto medio. Per quanto riguarda le condizioni di tipo essenziale, o di Dirichlet, della forma u=g
su ΓD ⊂ ∂Ω,
la loro applicazione è immediata nel contesto di schemi vertex-centered in quanto basta aggiungere l’equazione corrispondente per i nodi giacenti su Γ D . La questione è più delicata per schemi cell-centered, in quanto in questo caso non abbiamo nodi sul bordo. Quello che viene fatto di solito in questo caso è imporre le condizioni debolmente, in modo analogo a quanto già illustrato, in un contesto diverso, nel Cap. 7. Si tratta di modificare opportunamente i flussi numerici sui lati imponendo Hik = H(ui , g(xik ))
se lik ⊂ ΓD .
La Fig. 13.9 illustra la situazione per un volume di controllo cell-centered adiacente al bordo. Spesso tuttavia, nella pratica, la condizione al bordo di Dirichlet per i volumi finiti cell-centered viene implementata utilizzando i cosidetti nodi fantasma. In pratica per ogni lato l ik sul bordo si generano dei nodi addizionali, esterni al dominio, dove vengono attribuiti i valori al bordo corrispondenti. In questo modo il calcolo dei flussi numerici è formalmente identico anche per i lati al bordo.
13.6 Cenni alla discretizzazione delle equazioni di Navier-Stokes
xi
413
lik
Figura 13.9. Il flusso numerico sul lato lik appartenete al bordo di Dirichlet viene calcolato in modo da implementare la condizione al bordo
13.6 Cenni alla discretizzazione delle equazioni di Navier-Stokes Come già accennato, le tecniche sopra descritte si possono estendere al caso vettoriale. Un caso notevole riguarda le equazioni di Navier-Stokes incomprimibili, descritte nel Cap. 10. Qui, infatti, la natura di punto sella del problema rende la scelta dei volumi di controllo critica. La scelta più naturale, con i nodi di velocità e pressione coincidenti, può generare modi spuri di pressione. Il motivo è analogo a quanto già analizzato nel Cap. 10: gli spazi discreti che soggiacciono implicitamente alla scelta dei volumi di controllo devono soddisfare una condizione di compatibilità se vogliamo che il problema sia ben posto. Per questa ragione è d’uso adottare volumi di controllo, e conseguentemente nodi, differenti per velocità e pressione. Un esempio è illustrato in Fig. 13.10, dove si mostra una possibile scelta dei nodi per le componenti della velocità e di quelli per la pressione (sulla griglia sfalsata) nonché i corrispondenti volumi di controllo. I volumi di controllo relativi alla velocità vengono usati per la discretizzazione delle equazioni della quantità di moto, mentre quelli di pressione per l’equazione di continuità. Si rammenta che quest’ultima non contiene il termine di derivata temporale. Alternativamente, si possono adottare tecniche di stabilizzazione analoghe a quelle viste nel Cap. 10, che permettono di collocare i nodi di velocità e pressione nella stessa griglia. Il lettore interessato può consultare, per maggiori dettagli, le monografie [FP02], [Kro97], [Pat80] e [VM96]. u p
Figura 13.10. Una griglia sfalsata per la velocità e la pressione. A sinistra sono tratteggiati i volumi di controllo per l’equazione di continuità, a destra quelli usati per la quantità di moto
414
13 Il metodo dei volumi finiti
L’approccio a volumi finiti è largamente utilizzato a livello industriale ed accademico per la risoluzione di problemi descritti da equazioni differenziali, con applicazioni in diversi campi della fisica e dell’ingegneria. In particolare, i codici commerciali più utilizzati in campo fluidodinamico adottano schemi a volumi finiti per la soluzione delle equazioni di Navier-Stokes accoppiate a modelli di turbolenza, transizione, combustione, trasporto e reazione di specie chimiche. È qui riportata, a titolo di esempio, una simulazione del flusso idrodinamico attorno ad una barca a vela da competizione in navigazione di bolina, finalizzata allo studio dell’efficienza delle appendici (bulbo, chiglia e alette) (si veda Fig. 13.11, sinistra). La griglia di calcolo utilizzata in questo caso è di tipo ibrido, con elementi superficiali di forma triangolare e quadrangolare, ed elementi volumici di forma tetraedrica, esaedrica, prismatica e piramidale (si veda Fig. 13.11, destra). Il flusso idrodinamico attorno allo scafo è stato simulato risolvendo le equazioni di Navier–Stokes accoppiate ad un modello di turbolenza k − [MP94], tramite un approccio di tipo RANS (Reynolds Averaged Navier–Stokes). Le incognite del problema sono i valori delle variabili (velocità, pressione e quantità turbolente) al centro dei volumi di controllo, che in questo caso corrispondono agli elementi volumici della griglia. Le equazioni di Navier–Stokes sono risolte utilizzando uno schema fractional step come descritto in Sez. 10.7.3. Come precedentemente ricordato in questa sezione, la scelta di collocare pressione e velocità negli stessi punti rende necessario adottare una opportuna stabilizzazione delle equazioni di Navier–Stokes [RC83].
Figura 13.11. Geometria dello scafo e delle appendici (a sinistra) e dettaglio della griglia superficiale all’intersezione chiglia-bulbo (a destra)
Simulazioni di questo tipo possono richiedere griglie di dimensioni molto elevate, nei casi in cui si vogliano riprodurre fenomeni fluidodinamici complessi come il flusso turbolento su geometrie composite o la presenza di regioni di separazione di flusso. La griglia utilizzata in questo caso è composta da 5 milioni di celle e dà origine ad un sistema algebrico con 30 milioni di incognite. Problemi di questa taglia vengono
13.6 Cenni alla discretizzazione delle equazioni di Navier-Stokes
415
in genere risolti ricorrendo a tecniche di calcolo parallelo basate su schemi di tipo decomposizione di domini in modo da poter distribuire il calcolo su più processori. L’analisi delle distribuzioni di pressione e di sforzi tangenziali a parete, nonché la visualizzazione del flusso tridimensionale attraverso l’utilizzo di linee di flusso (si veda Fig. 13.12) risultano molto utili nella fase del progetto idrodinamico finalizzato all’ottimizzazione delle prestazioni della barca (si veda ad esempio [PQ05]).
Figura 13.12. Distribuzione superficiale di pressione (a sinistra) e linee di corrente attorno alle appendici (a destra)
Appendice A Richiami di analisi funzionale
In questa Appendice richiamiamo alcuni concetti usati estensivamente nel testo: funzionali e forme bilineari, distribuzioni, spazi di Sobolev, spazi L p . Per una lettura più approfondita il lettore può riferirsi ad esempio a [Sal04],[Yos74], [Bre86], [LM68], [Ada75].
A.1 Funzionali e forme bilineari Definizione A.1 Dato uno spazio funzionale V si dice funzionale su V un operatore che associa ad ogni elemento di V un numero reale: F : V → R. Spesso il funzionale si indica con la notazione F (v) =< F, v >, detta crochet. Un funzionale si dice lineare se è lineare rispetto all’argomento, ossia se F (λv + μw) = λF (v) + μF (w)
∀λ, μ ∈ R, ∀v, w ∈ V ;
Un funzionale lineare è limitato se ∃C > 0 tale che |F (v)| ≤ CvV
∀v ∈ V.
(A.1)
Dall’analisi funzionale sappiamo che per un operatore lineare la limitatezza è equivalente alla continuità. Definiamo quindi lo spazio V , detto duale di V , come l’insieme dei funzionali lineari e continui su V ovvero V ={F : V → R t.c. F è lineare e continuo }, e lo equipaggiamo della norma · V definita come F V =
|F (v)| . v∈V \{0} vV sup
(A.2)
418
A Richiami di analisi funzionale
È evidente quindi che la costante C che compare in (A.1) è maggiore o uguale a F V . Introduciamo ora la nozione di forma bilineare. Definizione A.2 Dato uno spazio funzionale normato V si dice forma un’applicazione a che associa ad ogni coppia di elementi di V un numero reale a : V × V → R. Una forma si dice bilineare se è lineare rispetto ad entrambi i suoi argomenti ovvero se a(λu + μw, v) = λa(u, v) + μa(w, v)
∀λ, μ ∈ R, ∀u, v, w ∈ V,
a(u, λw + μv) = λa(u, v) + μa(u, w) ∀λ, μ ∈ R, ∀u, v, w ∈ V ; continua se ∃M > 0 tale che |a(u, v)| ≤ M uV vV
∀u, v ∈ V ;
(A.3)
coerciva se ∃α > 0 tale che a(v, v) ≥ αv2V
∀v ∈ V.
(A.4)
A.2 Richiami sulle distribuzioni In questa sezione vogliamo richiamare le principali definizioni relative alla teoria delle distribuzioni e agli spazi di Sobolev, utili per una migliore comprensione degli argomenti introdotti nel testo. Per un approfondimento si vedano [Bre86], [Ada75] e [LM68]. Sia Ω un insieme aperto di R n e f : Ω → R. Definizione A.3 Per supporto di una funzione f si intende la chiusura dell’insieme in cui la funzione stessa assume valori diversi da zero: supp f = {x : f (x) = 0}. Una funzione f : Ω → R si dirà a supporto compatto in Ω se esiste un insieme compatto1 K ⊂ Ω tale che supp f ⊂ K. Possiamo a questo punto dare la seguente definizione: 1
Essendo Ω ⊂ Rn , un compatto è un insieme chiuso e limitato
A.2 Richiami sulle distribuzioni
419
Definizione A.4 D(Ω) è lo spazio delle funzioni infinitamente derivabili ed a supporto compatto in Ω, ovvero D(Ω)={f ∈ C ∞ (Ω) : ∃K ⊂ Ω, compatto : supp f ⊂ K}. Introduciamo la notazione a multi-indice per le derivate. Sia α = (α 1 , α2 , . . . , αn ) una ennupla di numeri interi non negativi (detta multi-indice) e sia f : Ω → R, con Ω ⊂ Rn , una funzione. Ne indicheremo le derivate con la notazione Dα f (x) =
∂ |α| f (x) , n . . . ∂xα n
α2 1 ∂xα 1 ∂x2
essendo |α| = α1 + α2 + · · · + αn la lunghezza del multi-indice (essa coincide con l’ordine di derivazione). Nello spazio D(Ω) si può introdurre la seguente nozione di convergenza: Definizione A.5 Data una successione {φ k } di funzioni di D(Ω) diremo che esse convergono in D(Ω) ad una funzione φ e scriveremo φ k −→ φ se: D(Ω)
1. i supporti delle funzioni φ k sono tutti contenuti in un compatto fissato K di Ω; 2. si ha convergenza uniforme delle derivate di tutti gli ordini, cioè Dα φk −→ Dα φ ∀α ∈ Nn . Siamo ora in grado di definire lo spazio delle distribuzioni su Ω: Definizione A.6 Sia T una trasformazione lineare da D(Ω) in R e denotiamo con < T, ϕ > il valore assunto da T sull’elemento ϕ ∈ D(Ω). Diciamo che T è continua se lim < T, ϕk >=< T, ϕ >, k→∞
dove {ϕk }∞ k=1 , è una successione arbitraria di D(Ω) che converge verso ϕ ∈ D(Ω). Si chiama distribuzione su Ω una qualunque trasformazione T da D(Ω) in R lineare e continua. Lo spazio delle distribuzioni su Ω è quindi dato dallo spazio D (Ω), duale di D(Ω). L’azione di una distribuzione T ∈ D (Ω) su una funzione φ ∈ D(Ω) verrà sempre indicata attraverso la notazione del crochet: < T, φ >.
420
A Richiami di analisi funzionale
Esempio A.1 Sia a un punto dell’insieme Ω. La delta di Dirac relativa al punto a e denotata con δa , è la distribuzione definita dalla relazione seguente ∀φ ∈ D(Ω).
< δa , φ >= φ(a)
Per un altro significativo esempio si veda l’Esercizio 4. Anche in D (Ω) si introduce una nozione di convergenza: Definizione A.7 Una successione di distribuzioni {T n } converge in D (Ω) ad una distribuzione T se risulta: lim < Tn , φ >=< T, φ >
n→∞
∀φ ∈ D(Ω).
A.2.1 Le funzioni a quadrato sommabile Consideriamo lo spazio delle funzioni a quadrato sommabile su Ω ⊂ R n , L2 (Ω)={f : Ω → R t.c.
f (x)2 dΩ < +∞}. Ω
Esso è uno spazio di Hilbert, il cui prodotto scalare è (f, g)L2 (Ω) =
f (x)g(x) dΩ.
Ω
La norma in L 2 (Ω) è quella associata al prodotto scalare ovvero 7 f L2 (Ω) = (f, g)L2 (Ω) . Ad ogni funzione f ∈ L 2 (Ω) si associa una distribuzione T f ∈ D (Ω) definita nel seguente modo: < Tf , φ > = f (x)φ(x) dx Ω
Vale il seguente risultato: Lemma A.1 Lo spazio D(Ω) è denso in L 2 (Ω).
∀φ ∈ D(Ω).
A.2 Richiami sulle distribuzioni
421
Grazie ad esso è possibile dimostrare che la corrispondenza fra f e T f è iniettiva, e dunque si può identificare L 2 (Ω) con un sottoinsieme di D (Ω), scrivendo: L2 (Ω) ⊂ D (Ω). Esempio A.2 Sia Ω = R e si indichi con χ[a,b] (x) la funzione caratteristica dell’intervallo [a, b], così definita: j 1 se x ∈ [a, b], χ[a,b] (x) = 0 altrimenti. Si consideri poi la successione di funzioni fn (x) =
n χ (x) 2 [−1/n,1/n]
n/2
-1/n
(si veda la Fig. A.1).
n
1/n
x
-1/n
1/n
x
Figura A.1. La funzione caratteristica dell’intervallo [−1/n, 1/n] (a sinistra) e la funzione triangolare fn a destra Vogliamo verificare che la successione {Tfn } delle distribuzioni ad esse associate converge alla distribuzione δ0 , ovvero la δ di Dirac relativa all’origine. Infatti, per ogni funzione φ ∈ D(Ω), si ha: Z < Tfn , φ >=
n fn (x)φ(x) dx = 2
R
1/n Z
φ(x) dx =
n [Φ(1/n) − Φ(−1/n)], 2
−1/n
essendo Φ una primitiva di φ. Se ora poniamo h = 1/n, possiamo scrivere < Tfn , φ >=
Φ(h) − Φ(−h) . 2h
Quando n → ∞, h → 0 e quindi, per definizione di derivata, si ha Φ(h) − Φ(−h) → Φ (0). 2h Per costruzione Φ = φ e perciò < Tfn , φ >→ φ(0) =< δ0 , φ >, avendo usato la definizione di δ0 (si veda l’Esempio A.1). Lo stesso limite si ottiene prendendo una successione di funzioni triangolari (si veda la Fig. A.1) o gaussiane, anziché rettangolari (purché siano sempre ad area unitaria). Facciamo infine notare come nelle metriche usuali tali successioni convergano invece ad una funzione quasi ovunque nulla.
422
A Richiami di analisi funzionale
A.2.2 Derivazione nel senso delle distribuzioni Sia T ∈ D (Ω) dove Ω ⊂ Rn . Le sue derivate nel senso delle distribuzioni sono definite nel modo seguente <
∂T ∂φ , φ >= − < T, > ∂xi ∂xi
∀φ ∈ D(Ω),
i = 1, . . . , n.
In maniera analoga si definiscono le derivate successive. Precisamente, per ogni multiindice α = (α1 , α2 , . . . , αn ), si ha: < Dα T, φ >= (−1)|α| < T, Dα φ >
∀φ ∈ D(Ω).
Esempio A.3 La funzione di Heaviside su R (si veda la Fig. A.2) è definita come j 1 se x > 0, H(x) = 0 se x ≤ 0. La derivata della distribuzione ad essa associata è la distribuzione di Dirac relativa all’origine (si veda l’Esempio A.1); identificando la funzione H con la distribuzione TH ad essa associata scriveremo dunque: dH = δ0 . dx
H(x)
1.8 1.6
1
1.4 1.2 1
0.5
0.8 0.5 0
0
x
0
−0.5
−0.5
Figura A.2. La funzione di Heaviside a sinistra. A destra, la funzione dell’Esempio A.6 con k = 1/3. Si noti il punto all’infinito nell’origine
La derivazione nell’ambito delle distribuzioni gode di alcune proprietà importanti che non risultano valide nell’ambito più ristretto della derivazione in senso classico per le funzioni. Proprietà A.1 L’insieme D (Ω) è chiuso rispetto all’operazione di derivazione (nel senso delle distribuzioni), cioè ogni distribuzione è infinitamente derivabile.
A.3 Gli spazi di Sobolev
423
Proprietà A.2 La derivazione in D (Ω) è un’operazione continua, nel senso che se Tn −→ T , per n → ∞, allora risulta anche D α Tn −→ Dα T , per n → ∞, D (Ω)
per ogni multi-indice α.
D (Ω)
Notiamo infine come la derivazione nel senso delle distribuzioni sia un’estensione della derivazione classica per le funzioni, in quanto se la funzione f è derivabile con continuità (in senso classico) su Ω, allora la derivata della distribuzione T f ad essa associata coincide con la distribuzione T f corrispondente alla derivata classica (si veda l’Esercizio 7). In queste note identificheremo le funzioni f di L 2 (Ω) con le corrispondenti distribuzioni Tf di d , scrivendo ancora f in luogo di T f . Similmente quando parleremo di derivate ci riferiremo sempre alle derivate nel senso delle distribuzioni.
A.3 Gli spazi di Sobolev Nel paragrafo A.2.1 abbiamo notato che le funzioni di L 2 (Ω) sono particolari distribuzioni. Non è detto, però, che anche le loro derivate (nel senso delle distribuzioni) siano ancora delle funzioni di L 2 (Ω), come mostra il seguente esempio. Esempio A.4 Sia Ω ⊂ R e sia [a, b] ⊂ Ω. Allora la funzione caratteristica dell’intervallo [a, b] (si veda l’Esempio A.2) appartiene a L2 (Ω), mentre la sua derivata dχ[a,b] /dx = δa − δb (si veda l’Esempio A.3) non vi appartiene.
È, quindi, ragionevole introdurre gli spazi seguenti: Definizione A.8 Sia Ω un aperto di R n e k un intero positivo. Si chiama spazio di Sobolev di ordine k su Ω lo spazio formato dalla totalità delle funzioni di L2 (Ω) aventi tutte le derivate (distribuzionali) fino all’ordine k appartenenti ad L2 (Ω): Hk (Ω)={f ∈ L2 (Ω) : Dα f ∈ L2 (Ω), ∀α : |α| ≤ k}. Risulta, ovviamente, H k+1 (Ω) ⊂ Hk (Ω) per ogni k ≥ 0 e l’immersione è continua. Lo spazio L2 (Ω) viene talvolta indicato come H 0 (Ω). Gli spazi di Sobolev Hk (Ω) risultano essere spazi di Hilbert rispetto al prodotto scalare seguente: (f, g)k = (Dαf )(Dαg) dΩ, |α|≤k Ω da cui discendono le norme
424
A Richiami di analisi funzionale
f H h (Ω)
9 : : = (f, f )k = ; (Dαf )2 dΩ. |α|≤k Ω
(A.5)
Si definiscono infine le seminorme |f |H k (Ω)
9 : : =; (Dαf )2 dΩ, |α|=k Ω
di modo che la (A.5) diventa f H k (Ω)
9 : k : =; f 2
H m (Ω) .
m=0
Esempio A.5 Per k = 1 si ha: Z (f, g)1 f 1 f H 1 (Ω)
=
(f, g)H1 (Ω) =
Z f g dΩ +
f g dΩ;
Ω vΩZ Z u q u 2 = t f 2 dΩ + f dΩ = f 2L2 (Ω) + f 2L2 (Ω) ;
=
f H1 (Ω)
=
Ω vZ u u t f 2 dΩ = f L2 (Ω) .
Ω
Ω
A.3.1 Regolarità degli spazi Hk (Ω) Vogliamo ora porre in relazione l’appartenenza di una funzione ad uno spazio H k (Ω) con le sue proprietà di continuità. Esempio A.6 Sia Ω ⊂ R2 un cerchio centrato nell’origine e di raggio r < 1. Allora la funzione seguente definita su Ω\{0}, rappresentata in Fig. A.2 a destra, ˛k ˛ ˛ ˛ 1 ˛ ˛ f (x1 , x2 ) = ˛ln p 2 (A.6) ˛ 2 ˛ x1 + x2 ˛ con 0 < k < 1/2 appartiene ad H1 (Ω), ma presenta una singolarità nell’origine e dunque non è continua.
Non tutte le funzioni di H 1 (Ω) sono dunque continue se Ω è un insieme aperto di R 2 . In generale, vale il seguente risultato:
A.3 Gli spazi di Sobolev
425
Proprietà A.3 Se Ω è un aperto di R n dotato di una frontiera “sufficientemente regolare”, allora Hk (Ω) ⊂ C m (Ω) se k > m +
n . 2
In particolare, in una dimensione spaziale (n = 1) le funzioni di H 1 (Ω) sono continue (esse sono in effetti assolutamente continue, si vedano [Sal04] e [Bre86]), mentre in due o tre dimensioni non lo sono necessariamente. Lo sono invece quelle di H2 (Ω).
A.3.2 Lo spazio H10 (Ω) Se Ω è limitato, lo spazio D(Ω) non è denso in H 1 (Ω). Si può allora dare la seguente definizione: Definizione A.9 Si indica con H 10 (Ω) la chiusura di D(Ω) nella topologia di H1 (Ω). Le funzioni di H 10 (Ω) godono della seguente proprietà: Proprietà A.4 (Disuguaglianza di Poincaré) Sia Ω un insieme limitato di R n ; allora esiste una costante C Ω tale che: vL2 (Ω) ≤ CΩ vH 1 (Ω)
∀v ∈ H10 (Ω).
(A.7)
Dimostrazione. Essendo Ω limitato possiamo sempre trovare una sfera S D = {x : |x−g| < D} di centro g contenente Ω. Dato che D(Ω) è denso in H 10 (Ω) basta dimostrare l’ineguaglianza per una funzione u ∈ D(Ω). Integrando per parti e sfruttando il fatto che div(x − g) = n u2L2 (Ω) = n−1 n · |u(x)|2 dx = −n−1 (x − g) · ∇(|u(x)|2 ) dx Ω Ω −1 −1 = −2n (x − g) · [u(x)∇u(x)] dx ≤ 2n x − gL∞ (Ω) uL2 (Ω) uH 1 (Ω) Ω
≤ 2n−1 DuL2 (Ω) uH 1 (Ω) . Nel caso generale in cui v ∈ H 10 (Ω) basterà costruire una successione u i ∈ D(Ω), i = 1, 2, . . . convergente a v nella norma di H 1 (Ω), applicare la disuguaglianza ai membri della successione e passare al limite. Come conseguenza immediata si ha che:
426
A Richiami di analisi funzionale
Proprietà A.5 La seminorma v H 1 (Ω) è sullo spazio H10 (Ω) una norma che risulta equivalente alla norma v H 1 (Ω) . Dimostrazione. Ricordiamo che due norme, · e | · |, si dicono equivalenti se esistono due costanti, c 1 = 0 e c2 < ∞, tali che c1 |v| ≤ v ≤ c2 |v| ∀v ∈ V. Poiché v1 = | v |21 +v20 è evidente che | v | 1 ≤ v1 . Viceversa, sfruttando la proprietà A.4, 7 7 2 | v |2 ≤ C ∗ | v | , v1 = | v |21 +v20 ≤ | v |21 +CΩ 1 Ω 1 da cui si deduce l’equivalenza delle due norme.
In maniera del tutto analoga si definiscono gli spazi H k0 (Ω) come la chiusura di D(Ω) nella topologia di H k (Ω).
A.3.3 Gli operatori di traccia Sia v ∈ H1 (Ω): le considerazioni svolte nella Sez. A.3.1 mostrano che non è semplice la definizione di “valore” di v sul bordo di Ω, valore che chiameremo la traccia di v su ∂Ω. Si sfrutta il seguente risultato: Teorema A.1 (di traccia) Sia Ω un aperto limitato di R n dotato di una frontiera ∂Ω “sufficientemente regolare” e k ≥ 1. Esiste una e una sola applicazione lineare e continua γ0 : Hk (Ω) → L2 (∂Ω), tale per cui γ0 v = v|∂Ω , ∀v ∈ H k ∩ C 0 (Ω). γ0 v è detta traccia di v su ∂Ω. La continuità di γ 0 implica che esista una costante C > 0 tale che γ0 vL2 (Γ ) ≤ CvHk (Ω) . Il risultato è ancora valido se si considera l’operatore di traccia γ Γ : Hk (Ω) → L2 (Γ ) su una porzione Γ sufficientemente regolare ed a misura non nulla della frontiera di Ω. Questo risultato permette di dare un senso alle condizioni al contorno di Dirichlet quando si ricerchino soluzioni v in H k (Ω), con k ≥ 1, purchè si interpreti il valore al bordo nel senso della traccia.
A.4 LospazioL∞ (Ω)eglispaziLp (Ω)con1 ≤ p < ∞
427
Osservazione A.1 L’ operatore di traccia γ Γ non è suriettivo su L 2 (Γ ). In particolare, l’insieme delle funzioni di L 2 (Γ ) che sono tracce di funzioni di H 1 (Ω) costituisce un sottospazio di L2 (Γ ) denotato con H 1/2 (Γ ) che risulta caratterizzato da proprietà di regolarità intermedie tra quelle di L 2 (Γ ) e quelle di H1 (Γ ). Più in generale, per ogni k ≥ 1 esiste un’unica applicazione lineare e continua γ 0 : Hk (Ω) → Hk−1/2 (Γ ) tale che γ0 v = v|Γ per ogni v ∈ Hk (Ω) ∩ C 0 (Ω). • Gli operatori di traccia consentono un’interessante caratterizzazione dello spazio H10 (Ω) (k ≥ 1) definito precedentemente, in virtù della proprietà seguente: Proprietà A.6 Sia Ω un aperto limitato di R n dotato di una frontiera ∂Ω sufficientemente regolare e sia γ 0 l’operatore di traccia da H 1 (Ω) in L2 (∂Ω). Si ha allora H10 (Ω) = Ker(γ0 ) = {v ∈ H1 (Ω) : γ0 v = 0} In altre parole, H 10 (Ω) è formato dalle funzioni di H 1 (Ω) aventi traccia nulla sul bordo. Analogamente, H 20 (Ω) è costituito dalle funzioni di H 2 (Ω) la cui traccia, insieme con la traccia della derivata normale, sono nulle al bordo.
A.4 Lo spazio L∞(Ω) e gli spazi Lp (Ω) con 1 ≤ p < ∞ Lo spazio L2 (Ω) può essere generalizzato nel modo seguente: per ogni numero reale p con 1 ≤ p < ∞ si possono definire gli spazi p L (Ω)={v : Ω → R t.c. |v(x)|p dΩ < ∞}. Ω
Essi sono spazi di Banach con norma data da ⎛ ⎞1/p vLp (Ω) = ⎝ |v(x)|p dΩ ⎠ . Ω p
Più precisamente, L (Ω) è lo spazio di classi di equivalenza di funzioni misurabili, essendo la relazione di equivalenza da intendersi nel senso seguente: v è equivalente a w se e solo se v e w sono uguali quasi ovunque ovvero differiscono al più su di un sottoinsieme di Ω di misura nulla. Ricordiamo che la notazione “quasi ovunque in Ω” (in breve, q.o. in Ω) significa esattamente “per tutti gli x ∈ Ω, salvo al più un insieme di punti di misura nulla”. Definiamo inoltre lo spazio L1loc (Ω)={f : Ω → R, f |k ∈ L1 (K) per ogni compatto K ⊂ Ω}. Se 1 ≤ p < ∞, allora D(Ω) è denso in L p (Ω). Nel caso in cui p = ∞, si definisce L∞ (Ω) lo spazio delle funzioni che sono limitate q.o. in Ω. La sua norma si definisce come segue
428
A Richiami di analisi funzionale
vL∞ (Ω)
=inf{C ∈ R : |v(x)| ≤ C, q.o. in Ω} = sup{|v(x)|, q.o. in Ω}.
(A.8)
Per 1 ≤ p ≤ ∞, gli spazi Lp (Ω), muniti della norma · Lp (Ω) , sono spazi di Banach (ovvero spazi vettoriali normati e completi). Ricordiamo la disuguaglianza di Hölder: date v ∈ L p (Ω) e w ∈ Lp (Ω) con 1 ≤ p ≤ ∞ e p1 + p1 = 1, allora vw ∈ L1 (Ω) e |v(x) w(x)|dΩ ≤ vp wp .
(A.9)
Ω
L’indice p si chiama coniugato di p. Se 1 < p < ∞, allora Lp (Ω) è uno spazio riflessivo: una forma lineare e continua ϕ : Lp (Ω) → R può essere identificata ad un elemento di L p (Ω), ovvero esiste un p unico g ∈ L (Ω) tale che ϕ(f ) = f (x)g(x) dΩ ∀ f ∈ Lp (Ω). Ω
Se p = 2, allora p = 2. Pertanto L2 (Ω) è uno spazio di Hilbert (ovvero uno spazio di Banach munito di prodotto scalare f (x)g(x)dΩ). In particolare la disuguaglianza Ω
di Hölder diventa: (v, w)L2 (Ω) ≤ vL2 (Ω) wL2 (Ω)
∀ v, w ∈ L2 (Ω) ,
(A.10)
ed è nota come disuguaglianza di Cauchy-Schwarz. Vale inoltre la disuguaglianza vwL2 (Ω) ≤ vL4 (Ω) wL4 (Ω)
∀v, w ∈ L4 (Ω).
(A.11)
Se Ω ⊂ R è un dominio limitato, se 1 ≤ p ≤ q ≤ ∞ n
Lq (Ω) ⊂ Lp (Ω) ⊂ L1 (Ω) ⊂ L1loc (Ω) . Se Ω non è limitato, si ha sempre Lp (Ω) ⊂ L1loc (Ω)
∀p≥1.
Infine, se Ω ⊂ Rn , con n ≥ 1 e il bordo ∂Ω è “poligonale” (più in generale, a continuità lipschitziana), abbiamo: se 0 < 2s < n
allora Hs (Ω) ⊂ Lq (Ω), ∀q t.c. 1 ≤ q ≤ q ∗ con q ∗ = 2n/(n − 2s);
se 2s = n
allora Hs (Ω) ⊂ Lq (Ω), ∀q t.c. 1 ≤ q < ∞;
se 2s > n
allora Hs (Ω) ⊂ C 0 (Ω). (A.12)
Tali inclusioni sono continue.
A.5 Esercizi
429
A.5 Esercizi 1. Sia Ω = (0, 1) e, per α > 0, f (x) = x−α . Per quale α si ha f ∈ Lp (Ω), 1 ≤ p < ∞ ? Esiste un α > 0 per cui f ∈ L∞ (Ω) ? 1 1 2. Sia Ω = (0, ) e f (x) = . Mostrare che f ∈ L1 (Ω). 2 x(ln x)2 3. Si dimostri che: • L1 (Ω) ⊂ L1loc (Ω). • Per quali α ∈ R si ha f ∈ L1loc (0, 1), se f (x) = x−α ? 4. Sia u ∈ L1loc (Ω). Si definisca Tu ∈ D (Ω) come segue: < Tu , ϕ >=
ϕ(x)u(x) dΩ. Ω
Si verifichi che T u è effettivamente una distribuzione, e che l’applicazione u → Tu è iniettiva. Si può dunque identificare u con T u , e concludere osservando che L1loc (Ω) ⊂ D (Ω). 5. Mostrare che la funzione definita come segue: 2
f (x) = e1/(x −1) se x ∈ (−1, 1) f (x) = 0 se x ∈] − ∞, −1] ∪ [1, +∞[ appartiene a D(R). 6. Si dimostri che per la funzione f definita in (A.6) si ha r f 2H1 (Ω)
r |logs| s ds + 2π k 2k
= 2π
2 2
0
e che dunque sta in H (Ω) purché 0 < k < 1
0
1 |logs|2k−2 ds s
1 2.
dϕ fatta in senso classico è ugua7. Sia ϕ ∈ C 1 (−1, 1). Si mostri che la derivata dx dϕ le a nel senso delle distribuzioni, dopo aver osservato che C 0 (−1, 1) ⊂ dx L1loc (−1, 1) ⊂ D (−1, 1). 8. Si dimostri che, se Ω = (a, b), la disuguaglianza di Poincaré (A.7) è vera con (b − a) CΩ = √ . 2 [Soluzione: osservare che, grazie alla disuguaglianza di Cauchy-Schwarz si ha ⎛ x ⎞1/2 ⎛ x ⎞1/2 x √ ≤ x − av L2 (a,b) ]. v(x) = v (t)dt ≤ ⎝ [v (t)]2 dt⎠ ⎝ 1dt⎠ a
a
a
Appendice B Algoritmi di risoluzione di sistemi lineari
Un sistema di m equazioni lineari in n incognite è un insieme di relazioni algebriche della forma n aij xj = bi , i = 1, . . . , m (B.1) j=1
essendo xj le incognite, aij i coefficienti del sistema e bi i termini noti. Il sistema (B.1) verrà più comunemente scritto nella forma matriciale Ax = b,
(B.2)
avendo indicato con A = (aij ) ∈ Rm×n la matrice dei coefficienti, con b=(bi ) ∈ Rm il vettore termine noto e con x=(xi ) ∈ Rn il vettore incognito. Si dice soluzione di (B.2) una qualsiasi n-upla di valori xi che verifichi la (B.1). Nelle prossime sezioni richiamiamo alcune tecniche numeriche per la risoluzione di (B.2) nel caso in cui m = n; supporremo ovviamente che A sia non-singolare, cioè che det(A) = 0. Rimandiamo per ulteriori approfondimenti a [QSS00], Cap. 3 e 4, e a [Saa96]. Facciamo presente che risolvere un sistema lineare con la regola di Cramer richiede un costo computazionale dell’ordine di (n + 1)! operazioni, del tutto inaccettabile in quanto anche su calcolatori in grado di effettuare 10 9 operazioni aritmetiche (nel seguito indicate con flops, floating point operations) al secondo, si impiegherebbero 9.6 · 1047 anni per risolvere un sistema lineare di sole 50 equazioni. Per questo motivo sono stati sviluppati metodi numerici alternativi alla regola di Cramer, che vengono detti diretti se conducono alla soluzione del sistema con un numero finito di operazioni, od iterativi se ne richiedono (teoricamente) un numero infinito.
B.1 Metodi diretti La risoluzione di un sistema lineare può essere effettuata tramite il metodo di eliminazione di Gauss (MEG) nel quale il sistema di partenza, Ax=b, viene ricondotto in n passi ad un sistema equivalente (avente cioè la stessa soluzione) della forma
432
B Algoritmi di risoluzione di sistemi lineari
A(n) x = b(n) dove A(n) = U è una matrice triangolare superiore non singolare e b (n) è un nuovo termine noto. Quest’ultimo sistema potrà essere risolto, con un costo computazionale dell’ordine di n 2 operazioni, con il seguente algoritmo delle sostituzioni all’indietro: xn = xi =
(n)
bn , unn⎛
⎞
n
1 ⎝ (n) uij xj ⎠ , i = n − 1, . . . , 1. bi − uii j=i+1
(B.3)
Indicando con A (1) x = b(1) il sistema originario, nel MEG il passaggio dalla matrice A(k) alla matrice A(k+1) si ottiene tramite le seguenti formule (k)
mik = (k+1)
aij
(k+1)
bi
aik
, i = k + 1, . . . , n, (k) akk (k) (k) = aij − mik akj , i, j = k + 1, . . . , n (k)
= bi
(k)
− mik bk ,
(B.4)
i = k + 1, . . . , n. (k+1)
Facciamo notare che in questo modo gli elementi a ij con i = k e j = k + 1, . . . , n (k+1) risultano nulli. La matrice A ha pertanto l’aspetto indicato in Fig. B.1. Gli ele(k) menti mik sono detti i moltiplicatori, mentre i denominatori a kk sono gli elementi pivotali. Ovviamente il MEG può essere condotto a buon fine solo se gli elementi pivotali risultano tutti non nulli. Matrici per le quali ciò avviene certamente sono, ad esempio, quelle simmetriche definite positive e le matrici a dominanza diagonale stretta. In generale occorrerà ricorrere alla tecnica di pivotazione (pivoting), ovvero alla scambio di righe (e/o colonne) di A (k) , in modo da assicurare che l’elemento (k) pivotale akk sia non nullo. Per portare a termine l’eliminazione di Gauss servono 2(n − 1)n(n + 1)/3 + n(n − 1) flops (floating point operations), cui vanno aggiunti n 2 flops per risolvere il sistema triangolare U x = b (n) con il metodo delle sostituzioni all’indietro. Servono dunque circa (2n3 /3 + 2n2 ) flops per risolvere il sistema lineare attraverso il MEG. Più semplicemente, trascurando i termini di ordine inferiore rispetto a n, si può dire che il processo di eliminazione gaussiana richiede 2n 3 /3 flops. Si può verificare che il MEG equivale a fattorizzare la matrice A ossia a scrivere A come il prodotto LU di due matrici. La matrice U, triangolare superiore, coincide con la matrice A(n) ottenuta al termine del processo di eliminazione. La matrice L è triangolare inferiore, i suoi elementi diagonali sono pari a 1 mentre sono uguali ai moltiplicatori nella restante porzione triangolare inferiore. Una volta note le matrici L ed U, la risoluzione del sistema lineare di partenza comporta semplicemente la risoluzione (in sequenza) dei due sistemi triangolari Ly = b, Ux = y.
B.1 Metodi diretti
k
433
(k)
akk
0 k
Figura B.1. La matrice A(k) nel metodo di eliminazione di Gauss
Ovviamente il costo computazionale del processo di fattorizzazione è lo stesso di quello richiesto dal MEG. I vantaggi di questa reinterpretazione sono palesi: poiché L ed U dipendono dalla sola A e non dal termine noto, la stessa fattorizzazione può essere utilizzata per risolvere diversi sistemi lineari sempre di matrice A, ma con termine noto b variabile (si pensi ad esempio alla discretizzazione di un problema parabolico lineare nel quale ad ogni passo temporale è necessario risolvere un sistema sempre con la stessa matrice, ma diverso termine noto). Di conseguenza, essendo il costo computazionale concentrato nella procedura di eliminazione (circa 2n 3 /3f lops), si ha in questo modo una considerevole riduzione del numero di operazioni qualora si vogliano risolvere più sistemi lineari aventi la stessa matrice. Se A è una matrice simmetrica definita positiva, la fattorizzazione LU può essere convenientemente specializzata. Esiste infatti un’unica matrice triangolare superiore H con elementi positivi sulla diagonale tale che A = HT H.
(B.5)
La (B.5) è la cosiddetta fattorizzazione di Cholesky. Gli elementi h ij di HT sono dati √ dalle formule seguenti: h 11 = a11 e, per i = 2, . . . , n ! j−1 hik hjk /hjj , j = 1, . . . , i − 1, hij = aij − k=1
hii =
aii −
i−1
h2ik
!1/2 .
k=1
Questo algoritmo richiede circa n 3 /3 flops con un risparmio, rispetto alla fattorizzazione LU, di un fattore 2 nel tempo di calcolo, e circa metà della memoria. Consideriamo ora il caso particolare di un sistema lineare con matrice tridiagonale non singolare A della forma
434
B Algoritmi di risoluzione di sistemi lineari
⎡
a1
⎢ ⎢ b2 ⎢ A=⎢ ⎢ ⎣
0
c1 a2 .. .
..
0 . cn−1
bn
⎤ ⎥ ⎥ ⎥ ⎥. ⎥ ⎦
an
In tal caso le matrici L ed U della fattorizzazione LU di A sono due matrici bidiagonali del tipo ⎡ ⎤ ⎡ ⎤ α1 c1 1 ⎢ ⎥ . ⎢ β2 1 ⎥ ⎢ ⎥ ⎢ α2 . . ⎥ ⎢ ⎥ ⎢ ⎥ .. .. L=⎢ , U = ⎢ ⎥. .. ⎥ . . ⎢ . ⎣ ⎦ cn−1 ⎥ ⎣ ⎦ βn 1 αn
0
0
0
0
I coefficienti αi e βi incogniti, possono essere calcolati facilmente tramite le seguenti equazioni: α1 = a1 , βi =
bi , αi = ai − βi ci−1 , i = 2, . . . , n. αi−1
Questo algoritmo prende il nome di algoritmo di Thomas e può essere visto come una particolare forma della fattorizzazione LU senza pivotazione.
B.2 Metodi iterativi I metodi iterativi mirano a costruire la soluzione x di un sistema lineare come limite di una successione {x(n) } di vettori. Per ottenere il singolo elemento della successione è richiesto il calcolo del residuo r (n) = b − Ax(n) del sistema. Nel caso in cui la matrice sia piena e di ordine n, il costo computazionale di un metodo iterativo è dunque dell’ordine di n 2 operazioni per ogni iterazione, costo che deve essere confrontato con le 2n3 /3 operazioni richieste approssimativamente da un metodo diretto. Di conseguenza, i metodi iterativi sono competitivi con i metodi diretti soltanto se il numero di iterazioni necessario per raggiungere la convergenza (nell’ambito di una tolleranza fissata) è indipendente da n o dipende da n in modo sublineare. Altre considerazioni nella scelta tra un metodo iterativo ed un metodo diretto entrano in gioco non appena la matrice è sparsa. Una strategia generale per costruire metodi iterativi è basata su una decomposizione additiva, detta splitting, della matrice A della forma A=P−N, dove P e N sono due matrici opportune e P è non singolare. Per ragioni che risulteranno evidenti nel seguito, P è detta anche matrice di precondizionamento o precondizionatore. Precisamente, assegnato x (0) , si ottiene x(k) per k ≥ 1 risolvendo i nuovi sistemi Px(k+1) = Nx(k) + b,
k≥0
(B.6)
B.2 Metodi iterativi
435
o, equivalentemente, x(k+1) = Bx(k) + P−1 b,
k≥0
(B.7)
avendo indicato con B = P −1 N la matrice di iterazione. Siamo interessati a metodi iterativi convergenti ossia tali che lim e(k) = 0 per k→∞
ogni scelta del vettore iniziale x (0) , avendo indicato con e (k) = x(k) − x l’errore. Poiché con un argomento ricorsivo si trova e(k) = Bk e(0) ,
∀k = 0, 1, . . .
(B.8)
Si può concludere che un metodo iterativo della forma (B.6) è convergente se e solo se ρ(B) < 1, essendo ρ(B) il raggio spettrale della matrice di iterazione B, ovvero il massimo modulo degli autovalori di B. La (B.6) può anche essere posta nella forma x(k+1) = x(k) + P−1 r(k) ,
(B.9)
r(k) = b − Ax(k)
(B.10)
avendo indicato con
il vettore residuo al passo k. La (B.9) esprime dunque il fatto che per aggiornare la soluzione al passo k+1, è necessario risolvere un sistema lineare di matrice P. Dunque P, oltre ad essere non singolare, dovrà essere invertibile con un basso costo computazionale se non si vuole che il costo complessivo dello schema aumenti eccessivamente (evidentemente, nel caso limite in cui P fosse uguale ad A e N=0, il metodo (B.9) convergerebbe in una sola iterazione, ma col costo di un metodo diretto). Vediamo ora come accelerare la convergenza dei metodi iterativi (B.6) sfruttando l’ultima forma introdotta. Indichiamo con RP = I − P−1 A la matrice di iterazione associata al metodo (B.9). La (B.9) può essere generalizzata introducendo un opportuno parametro di rilassamento (o di accelerazione) α. Si ottengono in tal modo i metodi di Richardson stazionari (detti più semplicemente di Richardson), della forma x(k+1) = x(k) + αP−1 r(k) ,
k ≥ 0.
(B.11)
Più in generale, supponendo α dipendente dall’indice di iterazione, si ottengono i metodi di Richardson non stazionari dati da x(k+1) = x(k) + αk P−1 r(k) ,
k ≥ 0.
La matrice di iterazione al passo k-esimo per tali metodi è data da R(αk ) = I − αk P−1 A,
(B.12)
436
B Algoritmi di risoluzione di sistemi lineari
(si noti che essa dipende da k). Nel caso in cui P=I, i metodi in esame si diranno non precondizionati. Possiamo riscrivere la (B.12) (e quindi anche la (B.11)) in una forma di grande interesse computazionale. Posto infatti z (k) = P−1 r(k) (il cosiddetto residuo precondizionato), si ha che x (k+1) = x(k) +αk z(k) e r(k+1) = b−Ax(k+1) = r(k) −αk Az(k) . Riassumendo, un metodo di Richardson non stazionario al passo k + 1-esimo richiede le seguenti operazioni: risolvere il sistema lineare Pz(k) = r(k) , calcolare il parametro di accelerazione α k , aggiornare la soluzione x (k+1) = x(k) + αk z(k) ,
(B.13)
aggiornare il residuo r (k+1) = r(k) − αk Az(k) , Per quanto riguarda la convergenza per il metodo di Richardson stazionario (per il quale αk = α, per ogni k ≥ 0) vale il seguente risultato: Proprietà B.1 Se P è una matrice non singolare, il metodo di Richardson stazionario (B.11) è convergente se e solo se 2Reλi >1 α|λi |2
∀i = 1, . . . , n,
(B.14)
essendo λi gli autovalori di P −1 A. Se inoltre si suppone che P −1 A abbia autovalori reali positivi, ordinati in modo che λ1 ≥ λ2 ≥ . . . ≥ λn > 0, allora, il metodo stazionario di Richardson (B.11) converge se e solo se 0 < α < 2/λ1 . Posto αopt =
2 λ1 + λn
(B.15)
il raggio spettrale della matrice di iterazione R α è minimo se α = αopt , con ρopt = min [ρ(Rα )] = α
λ1 − λn . λ1 + λn
(B.16)
Se P−1 A è simmetrica definita positiva, si può dimostrare che la convergenza del metodo di Richardson alle norme vettoriali · 2 e ·A . Ricordiamo n è monotona rispetto n che v2 = ( i=1 vi2 )1/2 e vA = ( i,j=1 vi aij vj )1/2 . In tal caso, grazie alla (B.16), possiamo mettere in relazione ρ opt con il numero di condizionamento introdotto nella Sez. 3.4.2 nel modo seguente: ρopt =
K2 (P−1 A) − 1 2A−1 P2 , α . = opt K2 (P−1 A) + 1 K2 (P−1 A) + 1
(B.17)
B.2 Metodi iterativi
437
Si comprende dunque quanto sia importante la scelta del precondizionatore P in un metodo di Richardson. Rimandiamo al Cap. 4 di [QSS00] per alcuni esempi di precondizionatori. L’espressione ottimale del parametro di accelerazione α, indicata in (B.15), risulta di scarsa utilità pratica, richiedendo la conoscenza degli autovalori massimo e minimo della matrice P−1 A. Nel caso particolare di matrici simmetriche definite positive, è tuttavia possibile valutare il parametro di accelerazione ottimale in modo dinamico, ossia in funzione di quantità calcolate dal metodo stesso al passo k, come indichiamo nel seguito. Osserviamo anzitutto che, nel caso in cui A sia una matrice simmetrica definita positiva, la risoluzione del sistema (B.2) è equivalente a trovare il punto di minimo x ∈ Rn della forma quadratica Φ(y) =
1 T y Ay − yT b, 2
detta energia del sistema (B.2). Il problema è dunque ricondotto a determinare il punto di minimo x di Φ partendo da un punto x (0) ∈ Rn e, conseguentemente, scegliere opportune direzioni lungo le quali muoversi per avvicinarsi, il più rapidamente possibile, alla soluzione x. La direzione ottimale, congiungente x (0) ed x, non è ovviamente nota a priori: dovremo dunque muoverci a partire da x (0) lungo un’altra direzione d (0) e su questa fissare un nuovo punto x(1) dal quale ripetere il procedimento fino a convergenza. Al generico passo k determineremo dunque x (k+1) come x(k+1) = x(k) + αk d(k) ,
(B.18)
essendo αk il valore che fissa la lunghezza del passo lungo d (k) . L’idea più naturale, che consiste nel prendere come direzione di discesa quella di massima pendenza per Φ, data da ∇Φ(x(k) ), conduce al metodo del gradiente o metodo steepest descent. Esso dà luogo al seguente algoritmo: dato x (0) ∈ Rn , per k = 0, 1, . . . fino a convergenza, si calcola r(k) = b − Ax(k) , T
αk =
r(k) r(k)
, T r(k) Ar(k) x(k+1) = x(k) + αk r(k) .
La sua versione precondizionata assume la forma seguente: r(k) = b − Ax(k) ,
P z(k) = r(k) ,
T
αk =
z(k) r(k) T
z(k) Az(k)
,
x(k+1) = x(k) + αk z(k) .
Per quanto riguarda le proprietà di convergenza del metodo del gradiente, vale il seguente risultato:
438
B Algoritmi di risoluzione di sistemi lineari
Teorema B.1 Sia A simmetrica e definita positiva, allora il metodo del gradiente converge per ogni valore del dato iniziale x (0) e e(k+1) A ≤
K2 (A) − 1 (k) e A , K2 (A) + 1
k = 0, 1, . . .
(B.19)
dove · A è la norma dell’energia precedentemente definita. Analogo risultato, con K 2 (A) sostituito da K2 (P−1 A), vale anche nel caso del metodo del gradiente precondizionato, pur di assumere che anche P sia simmetrica e definita positiva. Un’alternativa ancora più efficace consiste nell’utilizzare il metodo del gradiente coniugato nel quale le direzioni di discesa non coincidono più con il residuo. In particolare, posto p (0) = r(0) , si cercano direzioni della forma p(k+1) = r(k+1) − βk p(k) , k = 0, 1, . . .
(B.20)
dove i parametri β k ∈ R sono da determinarsi in modo che (Ap(j) )T p(k+1) = 0, j = 0, 1, . . . , k.
(B.21)
Direzioni di questo tipo si dicono A-ortogonali. Il metodo nel caso precondizionato assume allora la forma: dato x (0) ∈ Rn , posto r(0) = b − Ax(0) , z(0) = P−1 r(0) e p(0) = z(0) , la k-esima iterazione, con k = 0, 1 . . . , è T
p(k) r(k) , (Ap(k) )T p(k) x(k+1) = x(k) + αk p(k) ,
αk =
r(k+1) = r(k) − αk Ap(k) , Pz(k+1) = r(k+1) , βk =
(Ap(k) )T z(k+1)
p(k+1)
, T p(k) Ap(k) = z(k+1) − βk p(k) .
Si può dimostrare che il metodo del gradiente coniugato converge in aritmetica esatta al più in n passi e che 2ck e(k) A ≤ e(0) A , (B.22) 1 + c2k con K2 (P−1 A) − 1 c= . (B.23) K2 (P−1 A) + 1
B.2 Metodi iterativi
439
Si noti che la velocità di convergenza è più rapida di quella del metodo del gradiente (si veda la (B.19)). Generalizzazioni del metodo del gradiente nel caso in cui la matrice A non sia simmetrica conducono ai cosiddetti metodi di Krylov (fra i quali esempi notevoli sono costituiti dal metodo GMRES e dal metodo del bigradiente coniugato o BiCG). Rinviamo il lettore interessato a [Com95], [QSS00, Cap. 4], [QV99, Cap. 3], [Saa96] e [vdV03].
Riferimenti bibliografici
[Ada75] Adams R. A. (1975) Sobolev Spaces. Academic Press, New York. [AFG+ 00] Almeida R. C., Feijóo R. A., Galeão A. C., Padra C., and Silva R. S. (2000) Adaptive finite element computational fluid dynamics using an anisotropic error estimator. Comput. Methods Appl. Mech. Engrg. 182: 379–400. [Aki94] Akin J. E. (1994) Finite Elements for Analysis and Design. Academic Press, London. [AO00] Ainsworth M. and Oden J. T. (2000) A posteriori error estimation in finite element analysis. Pure and Applied Mathematics. John Wiley and Sons, New York. [Ape99] Apel T. (1999) Anisotropic Finite Elements: Local Estimates and Applications. Book Series: Advances in Numerical Mathematics. Teubner, Stuttgart. [AS55] Allen D. N. G. and Southwell R. V. (1955) Relaxation methods applied to determine the motion, in two dimensions, of a viscous fluid past a fixed cylinder. Quart. J. Mech. Appl. Math. 8: 129–145. [Aub67] Aubin J. P. (1967) Behavior of the error of the approximate solutions of boundary value problems for linear elliptic operators by Galerkin’s and finite difference methods. Ann. Scuola Norm. Sup. Pisa 21: 599–637. [AZT] www.cs.sandia.gov/CRF/aztec1.html. [Bab71] Babuška I. (1971) Error bounds for the finite element method. Numer. Math. 16: 322–333. [BDR92] Babuška I., Durán R., and Rodríguez R. (1992) Analysis of the efficiency of an a posteriori error estimator for linear triangular finite elements. SIAM J. Numer. Anal. 29(4): 947–964. [BE92] Bern M. and Eppstein D. (1992) Mesh generation and optimal triangulation. In Du D.-Z. and Hwang F. (eds) Computing in Euclidean Geometry. World Scientific, Singapore. [BF91] Brezzi F. and Fortin M. (1991) Mixed and Hybrid Finite Element Methods. SpringerVerlag, New York. R [BFHR97] Brezzi F., Franca L. P., Hughes T. J. R., and Russo A. (1997) b = g. Comput. Methods Appl. Mech. Engrg. 145: 329–339. [BG98] Bernardi C. and Girault V. (1998) A local regularisation operator for triangular and quadrilateral finite elements. SIAM J. Numer. Anal. 35(5): 1893–1916. [BGL05] Benzi M., Golub G. H., and Liesen J. (2005) Numerical solution of saddle-point problems. Acta Numer. 14: 1–137. [BIL06] Berselli L. C., Iliescu T., and Layton W. J. (2006) Mathematics of Large Eddy Simulation of Turbulent Flows. Springer, Berlin Heidelberg.
442
Riferimenti bibliografici
Bernardi C. and Maday Y. (1992) Approximations Spectrales de Problèmes aux Limites Elliptiques. Springer-Verlag, Berlin Heidelberg. [BMS04] Brezzi F., Marini L. D., and Süli E. (2004) Discontinuos Galerkin methods for firstorder hyperbolic problems. Math. Models Methods Appl. Sci. 14: 1893–1903. [Bre74] Brezzi F. (1974) On the existence, uniqueness and approximation of saddle-point problems arising from Lagrange multipliers. R.A.I.R.O. Anal. Numér. 8: 129–151. [Bre86] Brezis H. (1986) Analisi Funzionale. Liguori, Napoli. [BS94] Brenner S. C. and Scott L. R. (1994) The Mathematical Theory of Finite Element Methods. Springer-Verlag, New York. [CHQZ06] Canuto C., Hussaini M., Quarteroni A., and Zang T. A. (2006) Spectral Methods. Fundamentals in Single Domains. Springer-Verlag, Berlin Heidelberg. [CHQZ07] Canuto C., Hussaini M. Y., Quarteroni A., and Zang T. A. (2007) Spectral Methods. Evolution to Complex Geometries and Application to Fluid Dynamics. SpringerVerlag, Berlin Heidelberg. (to appear). [Cia78] Ciarlet P. G. (1978) The Finite Element Method for Elliptic Problems. North-Holland, Amsterdam. [CJRT01] Cohen G., Joly P., Roberts J. E., and Tordjman N. (2001) Higher order triangular finite elements with mass lumping for the wave equation. SIAM J. Numer. Anal. 38(6): 2047–2078 (electronic). [Clé75] Clément P. (1975) Approximation by finite element functions using local regularization. RAIRO, Anal. Numér 2 pages 77–84. [Coc98] Cockburn B. (1998) An introduction to the discontinuous Galerkin method for convection-dominated problems. In Quarteroni A. (ed) Advanced Numerical Approximation of Nonlinesr Hyperbolic Equations, volume 1697 of LNM, pages 151–268. Springer-Verlag, Berlin Heidelberg. [Col76] Colombo S. (1976) Les Équations aux Dérivées Partielles en Physique et en Mécanique des Milieux Continus. Masson, Paris. [Com95] Comincioli V. (1995) Analisi Numerica. Metodi Modelli Applicazioni. McGrawHill, Milano. [CP00] Cremonesi P. and Psaila G. (2000) Introduzione ragionata al C/C++. Progetto Leonardo, Esculapio, Bologna. [Dub91] Dubiner M. (1991) Spectral methods on triangles and other domains. J. Sci. Comput. 6: 345–390. [DV02] Darmofal D. L. and Venditti D. A. (2002) Grid adaptation for functional outputs: application to two-dimensional inviscid flows. J. Comput. Phys. 176: 40–69. [DV05] DiPietro D. A. and Veneziani A. (2005) Expression templates implementation of continuous and discontinuous Galerkin methods. sottoposto a Computing and Visualization in Science, vedere anche mox.polimi.it. [EG04] Ern A. and Guermond J. L. (2004) Theory and Practice of Finite Elements, volume 159 of Applied Mathematics Sciences. Springer-Verlag, New York. [EJ88] Eriksson E. and Johnson C. (1988) An adaptive method for linear elliptic problems. Math. Comp. 50: 361–383. [FMP04] Formaggia L., Micheletti S., and Perotto S. (2004) Anisotropic mesh adaptation in computational fluid dynamics: application to the advection-diffusion-reaction and the stokes problems. Appl. Numer. Math. 51(4): 511–533. [FP01] Formaggia L. and Perotto S. (2001) New anisotropic a priori error estimates. Numer. Math. 89: 641–667. [FP02] Ferziger J. H. and Peric M. (2002) Computational Methods for Fluid Dynamics. Springer, Berlino, III edition. [BM92]
Riferimenti bibliografici
443
[FSV05] Formaggia L., Saleri F., and Veneziani A. (2005) Applicazioni ed esercizi di modellistica numerica per problemi differenziali. Springer Italia, Milano. [Fun92] Funaro D. (1992) Polynomial Approximation of Differential Equations. SpringerVerlag, Berlin Heidelberg. [Fun97] Funaro D. (1997) Spectral Elements for Transport-Dominated Equations. SpringerVerlag, Berlin Heidelberg. [Fur97] Furnish G. (May/June 1997) Disambiguated glommable expression templates. Compuers in Physics 11(3): 263–269. [GB98] George P. L. and Borouchaki H. (1998) Delaunay Triangulation and Meshing. Editions Hermes, Paris. [GR96] Godlewski E. and Raviart P. A. (1996) Hyperbolic Systems of Conservations Laws, volume 118. Springer-Verlag, New York. [Gri76] Grisvard P. (1976) Behaviour of the solutions of an elliptic boundary value problem in a polygonal or polyhedral domain. Numerical Solution of Partial Differential Equations, III. Academic Press, New York. [GSV06] Gervasio P., Saleri F., and Veneziani A. (2006) Algebraic fractional-step schemes with spectral methods for the incompressible Navier-Stokes equations. J. Comput. Phys. 214(1): 347–365. [Hir88] Hirsh C. (1988) Numerical Computation of Internal and External Flows, volume 1. John Wiley and Sons, Chichester. [Hug00] Hughes T. J. R. (2000) The Finite Element Method. Linear Static and Dynamic Finite Element Analysis. Dover Publishers, New York. [HVZ97] Hamacher V. C., Vranesic Z. G., and Zaky S. G. (1997) Introduzione all’architettura dei calcolatori. Mc Graw Hill Italia, Milano. [Joh82] John F. (1982) Partial Differential Equations. Springer-Verlag, New York, IV edition. [Joh87] Johnson C. (1987) Numerical Solution of Partial Differential Equations by the Finite Element Method. Cambridge University Press, Cambridge. [KA00] Knabner P. and Angermann L. (2000) Numerical Methods for Elliptic and Parabolic Partial Differential Equations, volume 44 of TAM. Springer-Verlag, New York. [Kro97] Kroener D. (1997) Numerical Schemes for Conservation Laws. Wiley-Teubner, Chichester. [KS05] Karniadakis G. E. and Sherwin S. J. (2005) Spectral/hp Element Methods for Computational Fluid Dynamics. Oxford University Press, New York, II edition. [LeV02a] LeVeque R. J. (2002) Finite Volume Methods for Hyperbolic Problems. Cambridge Texts in Applied Mathematics. [LeV02b] LeVeque R. J. (2002) Numerical Methods for Conservation Laws. Birkhäuser Verlag, Basel, II edition. [LL00] Lippman S. B. and Lajoie J. (2000) C++ Corso di Programmazione. Addison Wesley Longman Italia, Milano, III edition. [LM68] Lions J. L. and Magenes E. (1968) Quelques Méthodes des Résolution des Problémes aux Limites non Linéaires. Dunod, Paris. [Mar95] Marchuk G. I. (1995) Adjoint Equations and Analysis of Complex Systems. Kluwer Academic Publishers, Dordrecht. [MP94] Mohammadi B. and Pironneau O. (1994) Analysis of the K-Epsilon Turbulence Model. John Wiley & Sons. [Nit68] Nitsche J. A. (1968) Ein kriterium für die quasi-optimalitat des Ritzchen Verfahrens. Numer. Math. 11: 346–348. [Pat80] Patankar S. V. (1980) Numerical Heat Transfer and Fluid Flow. Hemisphere, Washington.
444
Riferimenti bibliografici
Perot J. B. (1993) An analysis of the fractional step method. J. Comput. Phys. 108(1): 51–58. [Pet] www.mcs.anl.gov/petsc/. [PQ05] Parolini N. and Quarteroni A. (2005) Mathematical models and numerical simulations for the america’s cup. Comput. Methods Appl. Mech. Engrg. 194(9–11): 1001–1026. [Pro94] Prouse G. (1994) Equazioni Differenziali alle Derivate Parziali. Masson, Milano. [Pro97] Prohl A. (1997) Projection and Quasi-Compressibility Methods for Solving the Incompressible Navier-Stokes Equations. Advances in Numerical Mathematics. B.G. Teubner, Stuttgart. [Pru05] Prudhomme C. (2005) A domain specific embedded language in c++ for automatic differentiation, projection, integration and variational formulations. prossima pubblicazione su Scientific Computing. [PS91] Pagani C. D. and Salsa S. (1991) Analisi Matematica, volume II. Masson, Milano. [QSS00] Quarteroni A., Sacco R., and Saleri F. (2000) Matematica Numerica. SpringerVerlag, Milano, II edition. [QSV00] Quarteroni A., Saleri F., and Veneziani A. (2000) Factorization methods for the numerical approximation of Navier-Stokes equations. Comput. Methods Appl. Mech. Engrg. 188(1-3): 505–526. [Qua93] Quartapelle L. (1993) Numerical Solution of the Incompressible Navier-Stokes Equations. Birkhäuser Verlag, Basel. [QV94] Quarteroni A. and Valli A. (1994) Numerical Approximation of Partial Differential Equations. Springer, Berlin Heidelberg. [QV99] Quarteroni A. and Valli A. (1999) Domain Decomposition Methods for Partial Differential Equations. Oxford Science Publications, Oxford. [Ran99] Rannacher R. (1999) Error control in finite element computations. An introduction to error estimation and mesh-size adaptation. In Error control and adaptivity in scientific computing (Antalya, 1998), pages 247–278. Kluwer Acad. Publ., Dordrecht. [RC83] Rhie C. M. and Chow W. L. (1983) Numerical study of the turbulent flow past an airfoil with trailing edge separation. AIAA Journal 21(11): 1525–1532. [RR04] Renardy M. and Rogers R. C. (2004) An Introduction to Partial Differential Equations. Springer-Verlag, New York, II edition. [RST96] Ross H. G., Stynes M., and Tobiska L. (1996) Numerical Methods for Singularly Perturbed Differential Equations. Convection-Diffusion and Flow Problems. Springer-Verlag, Berlin Heidelberg. [Saa96] Saad Y. (1996) Iterative Methods for Sparse Linear Systems. PWS Publishing Company, Boston. [Sag06] Sagaut P. (2006) Large Eddy Simulation for Incompressible Flows: an Introduction. Springer-Verlag, Berlin Heidelberg, III edition. [Sal04] Salsa S. (2004) Equazioni a Derivate Parziali. Metodi, Modelli e Applicazioni. Springer-Verlag Italia, Milano. [Sch98] Schwab C. (1998) p and hp- Finite Element Methods. Oxford Science Publication, Oxford. [SF73] Strang G. and Fix G. J. (1973) An Analysis of the Finite Element Method. WellesleyCambridge Press, Wellesley, MA. [Str71] Stroud A. H. (1971) Approximate calculation of multiple integrals. Prentice-Hall, Inc., Englewood Cliffs, N.J. [Str89] Strickwerda J. C. (1989) Finite Difference Schemes and Partial Differential Equations. Wadworth & Brooks/Cole, Pacific Grove.
[Per93]
Riferimenti bibliografici
445
Strostroup B. (2000) C++ Linguaggio, Libreria Standard, Principi di Programmazione. Addison Welsey Longman Italia, Milano, III edition. [SV05] Saleri F. and Veneziani A. (2005) Pressure correction algebraic splitting methods for the incompressible Navier-Stokes equations. SIAM J. Numer. Anal. 43(1): 174–194. [Tri] software.sandia.gov/trilinos/. [TSW99] Thompson J. F., Soni B. K., and Weatherill N. P. (eds) (1999) Handook of Grid Generation. CRC Press. [TW05] Toselli A. and Widlund O. (2005) Domain Decomposition Methods - Algorithms and Theory. Springer-Verlag Berlin Heidelberg. [TWM85] Thompson J. F., Warsi Z. U. A., and Mastin C. W. (1985) Numerical Grid Generation, Foundations and Applications. North Holland. [UMF] www.cise.ufl.edu/research/sparse/umfpack/. [vdV03] van der Vorst H. A. (2003) Iterative Krylov Methods for Large Linear Systems. Cambridge University Press, Cambridge. [Vel95] Veldhuizen T. (1995) Expression templates. C++ Report Magazine 7(5): 26–31. see also the web page http://osl.iu.edu/ tveldhui . [Ven98] Veneziani A. (1998) A Mathematical and Numerical Modeling of Blood Flow Problems. Ph. D. Thesis, Università di Milano. [Ver96] Verführth R. (1996) A Review of a Posteriori Error Estimation and Adaptive Mesh Refinement Techniques. Wiley-Teubner, New York. [VM96] Versteeg H. and Malalasekra W. (1996) An Introduction to Computational Fluid Dynamics: the Finite Volume Method Approach. Prentice Hall. [Wes01] Wesseling P. (2001) Principles of Computational Fluid Dynamics. Springer-Verlag, Berlin Heidelberg New York. [Wil98] Wilcox D. C. (1998) Turbulence Modeling in CFD. DCW Industries, La Cañada, CA, II edition. [Yos74] Yosida K. (1974) Functional Analysis. Springer-Verlag, Berlin Heidelberg. [ZT00] Zienkiewicz O. C. and Taylor R. L. (2000) The Finite Element Method, Vol. 1, The Basis. Butterworth-Heinemann, Oxford, V edition.
[Str00]
Indice analitico
adattività a posteriori, 75 a priori, 73 di tipo h, 73 di tipo p, 47, 73 goal-oriented, 85, 179 algoritmo di Lawson, 400 di regolarizzazione laplaciana, 400 di scambio delle diagonali, 399 di Thomas, 434 analisi all’indietro, 237 di Von Neumann, 224, 244, 245 angolo di fase, 230, 246 assemblaggio, 344 element-oriented, 358 node-oriented, 358 baricentrizzazione, vedi algoritmo di regolarizzazione laplaciana base modale, 136 boundary adapted, 136, 138 caratteristiche, vedi linee caratteristiche CFL, vedi numero di CFL coefficiente di amplificazione, 225, 245 di dispersione, 245 di dissipazione, 229 condizione CFL, 220–222, 287 di ammissibilità di Lax, 299 di entropia, 283
di incomprimibilità, 302 di Rankine-Hugoniot, 282 inf-sup, 311, 322 condizioni al bordo di Dirichlet, 305 di Neumann, 305, 333 di Robin, 21 essenziali, 26 naturali, 26 trattamento debole, 253, 412 trattamento forte, 253 consistenza, 4, 219 forte, 4, 40, 165, 167 convergenza, 4, 40, 42, 192, 219 velocità di, 5 coordinate baricentriche, 350, 408 costo computazionale, 5 curve caratteristiche, vedi linee caratteristiche delta di Dirac, 13, 420 derivata conormale, 29, 30 d’interpolazione, 114, 115, 129 materiale, 331 nel senso delle distribuzioni, 422 normale, 12 differenze finite, 114, 150, 215 diffusione artificiale, 155 numerica, vedi diffusione artificiale dispersione, 229, 236 dissipazione, 229, 236 distribuzioni, 418
448
Indice analitico
disuguaglianza di Cauchy-Schwarz, 16, 22, 123 di Hölder, 304 di Korn, 35 di Poincaré, 142, 425 di Young, 170 inversa, 59, 112, 158, 168, 198 dominio di dipendenza, 212 numerico, 220 Donald diagramma di, 408 elementi finiti compatibili, 322 di Crouzeix-Raviart, 323 discontinui, 258, 264, 265, 267, 288 gerarchici, 46 implementazione, 343 isoparametrici, 367 lagrangiani, 43, 47 lineari, 43, 48 mini-element, 323 P1 -isoP2 , 323 quadratici, 45 spazio-temporali, 266 stabilizzati, 159 elemento di riferimento, 48 finito diametro, 54, 390 sfericità, 54, 390 entropia, 284 flusso di, 284 equazione del calore, 2, 3, 5, 186 del potenziale, 2, 5 del trasporto, 2, 3 delle onde, 2, 5, 9, 213 di Burgers, 2, 281–283, 293 di diffusione-trasporto, 5, 333 di Korteveg-de-Vries, 10 di Plateau, 9 di Poisson, 11 di stato, 296 di trasporto e reazione, 228 di viscosità, 285 discriminante di una, 5 ellittica, 5 iperbolica, 5
non lineare, 286 omogenea, 1 parabolica, 5 quasi-lineare, 1 semi-lineare, 1 equazioni di compatibilità, 277 di Eulero, 296, 299, 306 in forma conservativa, 297 di Navier-Stokes, 301, 413 forma ridotta, 307 formulazione debole, 305 per fluidi comprimibili, 296 variabili primitive, 303 di Stokes, 308 equivalenti, 233 errore di amplificazione, 229, 231, 250 di approssimazione, 41 stima a posteriori, 75, 78, 80, 84 stima a priori, 52, 68, 119, 172, 194, 198, 265, 318 di dispersione, 230, 231, 250 di interpolazione stima, 51, 65, 66, 106 di troncamento, 165, 219 fattorizzazione di Cholesky, 189, 433 LU, 432 tridiagonale, 433 flusso numerico, 215, 217, 218, 286, 410, 412 di Engquist-Osher, 289 di Gudonov, 289 di Lax-Friedrichs, 289 monotono, 288 turbolento, 306 viscoso, 297 flux limiters, 293 forma, 418 bilineare, 418 autofunzione, 195, 196 autovalore, 195 coerciva, 418 continua, 418 debolmente coerciva, 186 quadratica, 8 definita, 8
Indice analitico degenere, 8 indefinita, 8 quasi-lineare, 298 formula di Green, 22, 35, 303 formula di quadratura, 352 del punto medio composita, 353 del trapezio composita, 353 formulazione debole, 14 forte, 11 funzionale, 417 norma, 417 limitato, 417 lineare, 417 funzione a bolla, 46, 163, 175 a supporto compatto, 419 caratteristica, 421, 423 di base, 44, 46 di Bernoulli, 156 di Heaviside, 422 di spaziatura, 75, 397 gradi di libertà, 43, 45 elemento finito, 47 grado di esattezza, 107, 350 griglia, vedi anche triangolazione anisotropa, 54, 68 deraffinamento, 75 non strutturata, 395 raffinamento, 75 strutturata, 390, 392 identità di Parseval, 102 insieme unisolvente, 48 integrale generale, 3 particolare, 3 integrazione gaussiana di Gauss-Legendre, 104 esattezza, 105 di Gauss-Legendre-Lobatto, 105, 116 interpolante, 50, 61 interpolazione transfinita, 98 invarianti di Riemann, 213 legge di conservazione, 281, 297, 403 dell’entropia, 285
449
lemma di Bramble-Hilbert, 64 di Céa, 40, 144 di Deny-Lions, 64 di Gronwall, 191, 194, 211, 253 di Lax-Milgram, 31, 35, 37, 40 di regolarità ellittica, 69 di Strang, 118, 122, 161, 325 linee caratteristiche, 7, 207, 208, 212 dell’equazione di Burgers, 281 mass-lumping, 152, 181, 188, 245 matrice della derivata d’interpolazione, 115 di iterazione, 435 di massa, 188 di precondizionamento, 61, 434 di riflessione, 279 di rigidezza, 38, 57, 188 condizionamento, 59 di stiffness, vedi matrice di rigidezza grafo di, 353 pattern di sparsità, 353 simmetrica definita positiva, 437 Matrici sparse, formato MSR, 354 metodo a passi frazionari, 332 agli elementi spettrali, 98 BDF, 376 consistente, 4, 165, 219 convergente, 4, 219 dei volumi finiti, 403 cell-centered, 405 griglie-staggered, 405, 413 nodi fantasma, 412 stima a priori, 412 vertex-centered, 405 del fitting esponenziale, vedi metodo di Scharfetter e Gummel del gradiente, 437 coniugato, 438 delle caratteristiche, 208, 331 di Chorin-Temam, 334 di collocazione, 112 di Crank-Nicolson, 188 di decomposizione dei domini, 364, 415 di Douglas-Wang (DW), 167, 168 di Eulero
450
Indice analitico
all’indietro, 188, 242, 256, 262, 330 all’indietro/centrato, 217 esplicito, vedi metodo di Eulero in avanti implicito, vedi metodo di Eulero all’indietro in avanti, 188, 241, 246, 256, 329 in avanti/centrato, 216 in avanti/decentrato, vedi metodo upwind di fattorizzazione algebrica, 335 di Galerkin, 37, 39, 144, 146, 310 convergenza, 42 generalizzato, 109, 118, 159 Least Squares (GLS), 167–169, 324, 325 spettrale, 97, 108 di Lax-Friedrichs, 216, 222, 237 (FEM), 246 di Lax-Wendroff, 216, 218, 222, 237 (FEM), 246 di Newmark, 217 di Petrov-Galerkin, 159, 162 di proiezione, 333, 334 ortogonale, 41 di Richardson, 435 di Runge-Kutta del 2o ordine, 290 del 3o ordine, 291 di Scharfetter e Gummel, 156 di Taylor-Galerkin, 246 Discontinuous Galerkin (DG), 258 -SEM-NI, 272 stabilizzazione di salto, 266 G-NI, 108, 109, 112, 118, 127, 158, 201, 268 Leap-Frog, 217 MEG, 431 MES, 98, 100 MES-NI, 131 numerico limitato, 287 monotono, 287 stabile, 287 operator splitting, 332 di Yanenko, 332 semi-implicito, 330 streamline diffusion, 163 Streamline Upwind Petrov-Galerkin (SUPG), 167, 168, 324 upwind, 154, 216, 218, 222, 266 (FEM), 246
(FV), 411 modelli di turbolenza, 306 modi spuri di pressione, vedi problema di Stokes, soluzioni spurie norma A, 61 dell’energia, 41, 52, 61 discreta, 123 numero di CFL, 220, 230, 231, 246 di condizionamento, 58 di Péclet di griglia, vedi numero di Péclet locale globale, 145 locale, 147, 155, 411 di Reynolds, 306 operatore antisimmetrico, 165 bilaplaciano, 33 di interpolazione, 51, 61, 113 di Clément, 77 di Laplace, 2 di traccia, 426 lagrangiano, 309 pseudo-spettrale, 114 simmetrico, 165 partizione dell’unità, 153 polinomi di Jacobi, 135 di Legendre, 101, 104, 261 precondizionatore, 61, 434 SIMPLE, 337 principio dei lavori virtuali, 18 di massimo discreto, 223 problema aggiunto, 69, 70, 86 del calore, 204 del quart’ordine, 33, 204 dell’elasticità lineare, 34 di collocazione, 114 di diffusione-reazione, 124, 148, 379 di diffusione-trasporto, 141, 178, 182 di diffusione-trasporto-reazione, 183, 204, 409 di Dirichlet, 11, 21, 57
Indice analitico di Galerkin, vedi metodo di Galerkin di Neumann, 12, 19, 20 di Poisson, 39, 56 di Robin, 20 di Stokes approssimazione di Galerkin, 310 elementi finiti stabili, 322 elementi finiti stabilizzati, 324 forma debole, 308 formulazione algebrica, 320 generalizzato, 308 di trasporto, 207 di trasporto-reazione, 209, 252 ellittico, 37 generalizzato agli autovalori, 196 misto, 20 variazionale, 17, 23 prodotto scalare discreto, 108 tensoriale warped, 135 programmazione orientata agli oggetti, 347 punto-sella, 309 random walk, 141 residuo, 435 locale, 78 precondizionato, 436 ricostruzione del gradiente, 74 rilevamento del dato di bordo, 19, 26 elementi finiti, 57 schema, vedi metodo semi-discretizzazione, 187 seminorma, 426 serie di Legendre, 102 simbolo principale, 8 sistema iperbolico, 211, 214, 217 soluzione classica, 282 debole, 208, 282 entropica, 282, 287 dell’equazione di Burgers, 283 spazio delle distribuzioni, 419 di Sobolev, 16
duale, 417 splitting, 434 stabilità, 5, 40, 219 assoluta, 195, 202 strato limite, 141, 146 supporto di una funzione, 57 teorema dell’immagine chiusa, 314 della divergenza, 21 di equivalenza, 5, 221 di Helmholtz-Weyl, 334 di Riesz, 31 di Lax-Richtmyer, vedi teorema di equivalenza termine di trasporto, 301 di diffusione, 301 θ-metodo, 188, 194 traccia, 426 trasformazione di Gordon-Hall, 98 triangolazione, 390 avanzamento del fronte, 397 conforme, 390 di Delaunay, 395, 407 generalizzata, 396 vincolata, 396 median dual, 408 quasi uniforme, 59 regolare, 54, 390 trucco di Aubin-Nitsche, 71, 80 variabili caratteristiche, 211 velocità caratteristica, 286 verga sottile, 91 vibrante, 9 vertici, 43 viscosità artificiale, 160, 163, 164 numerica, vedi viscosità artificiale volume di controllo, 404 Voronoi diagramma di, 406 poligono di, 406 tassellazione di, 406 vertici di, 406
451
Collana Unitext - La Matematica per il 3+2 a cura di F. Brezzi C. Ciliberto B. Codenotti M. Pulvirenti A. Quarteroni G. Rinaldi W.J. Runggaldier
Volumi pubblicati A. Bernasconi, B. Codenotti Introduzione alla complessità computazionale 1998, X+260 pp. ISBN 88-470-0020-3 A. Bernasconi, B. Codenotti, G. Resta Metodi matematici in complessità computazionale 1999, X+364 pp, ISBN 88-470-0060-2 E. Salinelli, F. Tomarelli Modelli dinamici discreti 2002, XII+354 pp, ISBN 88-470-0187-0 S. Bosch Algebra 2003, VIII+380 pp, ISBN 88-470-0221-4 S. Graffi, M. Degli Esposti Fisica matematica discreta 2003, X+248 pp, ISBN 88-470-0212-5 S. Margarita, E. Salinelli MultiMath - Matematica Multimediale per l’Università 2004, XX+270 pp, ISBN 88-470-0228-1
A. Quarteroni, R. Sacco, F. Saleri Matematica numerica (2a Ed.) 2000, XIV+448 pp, ISBN 88-470-0077-7 2002, 2004 ristampa riveduta e corretta (1a edizione 1998, ISBN 88-470-0010-6) A partire dal 2004, i volumi della serie sono contrassegnati da un numero di identificazione. I volumi indicati in grigio si riferiscono a edizioni non più in commercio 13. A. Quarteroni, F. Saleri Introduzione al Calcolo Scientifico (2a Ed.) 2004, X+262 pp, ISBN 88-470-0256-7 (1a edizione 2002, ISBN 88-470-0149-8) 14. S. Salsa Equazioni a derivate parziali - Metodi, modelli e applicazioni 2004, XII+426 pp, ISBN 88-470-0259-1 15. G. Riccardi Calcolo differenziale ed integrale 2004, XII+314 pp, ISBN 88-470-0285-0 16. M. Impedovo Matematica generale con il calcolatore 2005, X+526 pp, ISBN 88-470-0258-3 17. L. Formaggia, F. Saleri, A. Veneziani Applicazioni ed esercizi di modellistica numerica per problemi differenziali 2005, VIII+396 pp, ISBN 88-470-0257-5 18. S. Salsa, G. Verzini Equazioni a derivate parziali - Complementi ed esercizi 2005, VIII+406 pp, ISBN 88-470-0260-5 19. C. Canuto, A. Tabacco Analisi Matematica I (2a Ed.) 2005, XII+448 pp, ISBN 88-470-0337-7 (1a edizione, 2003, XII+376 pp, ISBN 88-470-0220-6) 20. F. Biagini, M. Campanino Elementi di Probabilità e Statistica 2006, XII+236 pp, ISBN 88-470-0330-X
21. S. Leonesi, C. Toffalori Numeri e Crittografia 2006, VIII+178 pp, ISBN 88-470-0331-8 22. A. Quarteroni, F. Saleri Introduzione al Calcolo Scientifico (3a Ed.) 2006, X+306 pp, ISBN 88-470-0480-2 23. S. Leonesi, C. Toffalori Un invito all’Algebra 2006, XVII+432 pp, ISBN 88-470-0313-X 24. W.M. Baldoni, C. Ciliberto, G.M. Piacentini Cattaneo Aritmetica, Crittografia e Codici 2006, XVI+518 pp, ISBN 88-470-0455-1 25. A. Quarteroni Modellistica numerica per problemi differenziali (3a Ed.) 2006, XIV+452 pp, ISBN 88-470-0493-4 (1a edizione 2000, ISBN 88-470-0108-0) (2a edizione 2003, ISBN 88-470-0203-6)