MODELLIZZAZIONE E CALCOLO.
- La modellizzazione tramite equazioni. La discretizzazione delle equazioni. L’implementazione effettiva. Le difficoltà e le sfide scientifiche. Bibliografia
Le esigenze in termini di simulazione numerica sono in notevole aumento. Esse interessano l’ingegneria (prospezione petrolifera, aeronautica, opere pubbliche ecc.) così come le scienze naturali (meteorologia, astrofisica, chimica ecc.). La simulazione numerica si può sostituire a molti esperimenti e test di costo elevato o che presentano pericoli, permette di esplorare regioni dello spazio fisico solo parzialmente o totalmente non accessibili (altissime temperature o pressioni, alto vuoto), di realizzare ottimizzazioni parametriche su prodotti industriali, o ancora calcolare parametri di controllo (per es., nell’industria spaziale). Si presentano qui le fasi principali della simulazione numerica, illustrandone le sfide scientifiche e tecnologiche, e i progressi recenti.
La modellizzazione tramite equazioni. – Si vuole trasformare una situazione del mondo reale in un sistema di equazioni le cui incognite siano quantità fisiche: si tratta di una matematizzazione della realtà. Così, se si desidera simulare lo scorrimento dell’aria intorno a un aereo per conoscerne le caratteristiche aerodinamiche, si cercheranno equazioni per incognite che possono essere la densità e la velocità dell’aria in ogni punto dello spazio. Questa fase necessita una buona conoscenza dei processi fisici in atto. Bisogna in effetti conservare soltanto i processi che hanno un impatto reale su ciò che si cerca di simulare: nell’esempio precedente non si considererà la dissociazione delle molecole di ossigeno, perché questa è trascurabile per le velocità raggiunte dagli aerei (ma diviene importante nell’ambito del rientro in atmosfera di una navetta spaziale). Ugualmente, non si prende in considerazione che un dominio limitato dello spazio: sempre nell’esempio precedente, lo scorrimento dell’aria situata a chilometri di distanza dall’aereo non ha bisogno di essere conosciuto.
Le equazioni ottenute appartengono nella maggior parte dei casi alle grandi classi di equazioni della fisica matematica (equazioni di Eulero o di Navier-Stokes della meccanica dei fluidi, equazioni dell’elasticità, equazioni delle onde o di Maxwell per l’elettromagnetismo, equazioni del trasporto radiativo ecc.). Queste possono essere equazioni differenziali ordinarie, equazioni alle derivate parziali, equazioni integrali, o combinazioni di questi vari tipi di equazione. In molti dispositivi industriali complessi, più fenomeni fisici distinti sono importanti e interagiscono tra loro, cosa che porta a un accoppiamento delle equazioni relative a ogni fenomeno: si parla allora di modellizzazione multifisica. Così, per fare un modello di un motore a combustione interna, sarà necessario accoppiare la meccanica dei fluidi (il moto e la termodinamica dei fluidi) con le reazioni chimiche (la combustione); analogamente, per fare il modello di una stella bisognerà accoppiare la meccanica dei fluidi, il trasporto radiativo e le reazioni nucleari.
Le equazioni ottenute debbono essere nella maggior parte dei casi accompagnate da condizioni al contorno. Queste sono condizioni supplementari che appaiono unicamente sulla frontiera del dominio di calcolo che viene considerato. Le frontiere sono di due tipi: da un lato, le frontiere fisiche (per es., la parete di un aereo), dall’altro le frontiere artificiali del dominio di calcolo. Stabilire condizioni al contorno adatte al problema considerato è spesso uno dei punti più delicati della modellizzazione.
La modellizzazione tramite equazioni conduce necessariamente a errori (talvolta detti errori di modellizzazione), causati dal non aver considerato numerosi fenomeni e dall’imperfetta conoscenza dei parametri che intervengono nel modello: questa cattiva conoscenza può essere legata a difficoltà sperimentali (impossibilità di posizionare rivelatori in determinati siti) oppure a una complessità inerente il fenomeno considerato (presenza di turbolenza, geometria frattale ecc.). Tali errori possono talvolta essere stimati da altre simulazioni (che includono fenomeni trascurati nella modellizzazione considerata), ma sono di fatto in prevalenza stimati mediante la comparazione con risultati sperimentali.
La discretizzazione delle equazioni. – Le equazioni che emergono al termine della fase di modellizzazione non possono quasi mai essere risolte esplicitamente con l’ausilio di funzioni usuali, o anche tramite funzioni speciali della fisica matematica. In effetti, nella maggior parte dei casi, i sistemi di equazioni sono troppo complessi, oppure i domini nei quali le equazioni sono definite non sono insiemi geometrici semplici. Conviene dunque cercarne soluzioni approssimate. Per questo, si sostituiscono le incognite, che sono in generale funzioni di più variabili (tipicamente della variabile temporale t, e di tre variabili spaziali x, y, z) con incognite discrete, cioè tabelle di numeri reali (uno per funzione incognita), indicizzati da una successione di tempi e dai punti di un sottoinsieme finito dello spazio a tre dimensioni, detto griglia di calcolo. Queste nuove incognite verificano equazioni discrete, dette schemi numerici, che approssimano le equazioni (per es., alle derivate parziali) verificate dalle incognite iniziali.
Diamo un esempio molto semplice: se si vuole discretizzare un’incognita u(t, x) definita su un intervallo [0,T] di tempo, e su un insieme monodimensionale [−L, L] dello spazio, si può assegnare un passo temporale dt, e un passo spaziale dx, in maniera tale che T=Ndt, dove N è un numero intero (numero di passi temporali), e 2L=Kdx, dove K è un numero intero (numero di passi spaziali). Si rimpiazza allora u(t, x), per t in [0,T], e x in [−L, L], con dei numeri u{n, k}, per n=0,.., N, e k=−L, −L+1,.., L che siano approssimazioni di u(ndt, kdx). L’insieme dei kx, per k=−L, −L+1,.., L costituisce la griglia di calcolo dello spazio. Dato che esiste una corrispondenza semplice tra un intervallo dell’insieme degli interi relativi e i punti della griglia di calcolo, si dice che quest’ultima è strutturata. Quando i punti di una griglia di calcolo non sono strutturati (si presenta spesso questo caso quando gli oggetti che si desidera simulare hanno una geometria complessa), conviene costruirla con un programma specializzato, detto generatore di griglie di calcolo. Le tecniche di costruzione delle griglie sono state considerabilmente sviluppate negli ultimi anni. Esse permettono ora di ottenere delle griglie per oggetti in tre dimensioni complesse (talvolta definite a partire dalla progettazione assistita dall’elaboratore). Queste griglie possono essere a maglie serrate nelle zone del dominio di calcolo, dove ci si attende variazioni importanti delle quantità d’interesse, e più rade nelle zone nelle quali queste quantità variano poco. Nelle versioni più evolute dei codici di calcolo, la griglia può persino adattarsi nel corso dell’evoluzione del calcolo (ALE, Arbitrary Langrangian Eulerian mesh).
Gli schemi numerici sono versioni approssimate delle equazioni provenienti dalla modellizzazione, che possiedono la proprietà fondamentale di poter essere risolti (talvolta approssimativamente) in un numero finito di fasi di calcolo. Storicamente, gli schemi detti alle differenze finite hanno svolto un ruolo importante nella simulazione numerica. Si tratta di una discretizzazione diretta delle derivate parziali su una griglia strutturata. Nel calcolo scientifico contemporaneo, i diversi possibili schemi numerici possono essere raggruppati in grandi famiglie: volumi finiti, elementi finiti, metodi a particelle, metodi spettrali e così via. Lo studio di queste famiglie, e del loro uso per le equazioni della fisica matematica, costituisce una sottodisciplina della matematica applicata, denominata analisi numerica. Si può infine osservare che alcuni metodi non necessitano dell’uso di una griglia di calcolo (per la maggior parte metodi a particelle) e sono divenuti oggetto di interesse crescente.
La trasformazione delle equazioni in equazioni discrete è una fonte di errori (detti errori di discretizzazione). Lo studio di questi errori è uno degli obiettivi principali dell’analisi numerica. Si vorrebbe che l’errore tra la soluzione del problema iniziale e quella del problema discreto divenisse arbitrariamente piccolo (convergesse a 0) quando il passo di discretizzazione (temporale e spaziale) diviene esso stesso arbitrariamente piccolo. Una tale proprietà, detta di convergenza, dello schema numerico, può talvolta essere dimostrata rigorosamente, ma si presenta raramente per i problemi complessi provenienti dall’industria o dalle scienze naturali. In questi ultimi casi ci si accontenta più spesso di uno studio di consistenza, nel quale a essere stimata è la differenza tra i problemi e non la differenza tra le soluzioni. Quando tale differenza è proporzionale al passo di discretizzazione, si parla di schema di ordine 1, quando è proporzionale al quadrato del passo di discretizzazione, si parla di schema di ordine 2 e così via.
Al di là della nozione di ordine, un elemento decisivo della qualità della discretizzazione è la stabilità dello schema numerico. Questa è la tendenza della soluzione dell’equazione discretizzata a verificare le stesse proprietà qualitative delle soluzioni dell’equazione iniziale (principio del massimo, non crescenza o conservazione di date quantità aventi un significato fisico ecc.). Questa stabilità è nella maggior parte dei casi nettamente migliore per gli schemi nei quali a ogni passo temporale bisogna risolvere un’equazione (per es., un’equazione algebrica) – si parla allora di schemi impliciti – rispetto agli schemi che permettano di ottenere in modo diretto la soluzione discretizzata al passo temporale n+1 partendo dalla soluzione nota al tempo n – si parla allora di schemi espliciti –, che possono esser visti come semplici successioni per ricorrenza.
L’esperienza mostra che nell’ambito dell’uso di schemi espliciti (più semplici da programmare) la stabilità non può in generale aversi che a date condizioni, dette di Courant-Friedrichs-Levy, che legano il passo temporale dt e il passo spaziale dx. Così, nei problemi iperbolici di ordine 1 (quali l’equazione di transporto in un campo di velocità assegnato), bisogna che dt/dx non sia troppo grande, nei problemi parabolici di ordine 2 (quali l’equazione del calore, o diffusione), è la quantità d2t/dx2 che non deve essere troppo grande. Nei due casi, si vede che per aumentare la precisione, dato che conviene ridurre il passo spaziale, il passo temporale deve essere anch’esso ridotto, cosicché il costo del calcolo può aumentare considerevolmente ottenendo un aumento (di precisione) limitato.
In pratica, come è stato già visto, la convergenza degli schemi è raramente dimostrabile rigorosamente quando i problemi considerati sono complessi. Ci si accontenta allora di verificare attraverso esperimenti numerici, modificando la griglia di calcolo (e la discretizzazione temporale), che le soluzioni ottenute sembrino effettivamente avvicinarsi a un limite (quando il passo di discretizazione tende a 0). In molti casi, l’ultima fase della discretizzazione porta a risolvere sistemi lineari di grandi dimensioni (che includono talvolta matrici piene, e più spesso matrici sparse). Il miglioramento del trattamento di questi grandi sistemi (analisi numerica matriciale) mobilita molti ricercatori in tutto il mondo, tanto essi intervengono in un numero considerevole di problemi di calcolo scientifico.
L’implementazione effettiva. – Una volta scelto lo schema numerico, lo si implementa su un elaboratore sotto la forma di un programma che utilizza numeri a virgola mobile. La sostituzione di numeri reali con tali numeri arrotondati genera un nuovo errore, detto errore di arrotondamento. Questo molto raramente è superiore all’errore di discretizzazione, cosicché in molti casi lo si trascura; quasi mai diventa importante e lo si gestisce utilizzando, per es., numeri a virgola mobile di tipo a doppia precisione o anche con precisione superiore.
Il programma informatico che riproduce lo schema numerico considerato, detto anch’esso codice, può essere scritto in linea di principio in molti linguaggi di programmazione. Il nucleo numerico dei programmi è comunque spesso scritto in Fortran (linguaggio storico del calcolo scientifico), il resto (ingresso/uscita, interfaccia utente), oltre che in Fortran, anche in altri linguaggi (come il C). I programmi utilizzati nell’ambito industriale sono talvolta estremamente lunghi (centinaia di migliaia di linee), cosicché il controllo degli errori di programmazione (debugging) è lontano dall’essere un problema semplice. Software specifici o opzioni di compilazione dedicate possono aiutare nel debugging.
Per ottenere una buona precisione di calcolo, gli utenti dei codici di simulazione numerica vorrebbero poter utilizzare passi di discretizzazione piccoli, ossia con le griglie di calcolo che hanno molti punti (tipicamente, milioni, nel caso di una simulazione in tre dimensioni spaziali). I problemi relativi alla quantità di memoria occupata e al tempo di calcolo (costo del calcolo) diventano allora essenziali.
Malgrado il miglioramento costante della velocità di elaborazione dei processori, il calcolo scientifico moderno necessita dell’uso di numerosi processori in parallelo. La programmazione deve essere fatta provando a utilizzare al meglio le capacità di parallelismo dell’elaboratore usato, che può condurre a codici specifici per un’architettura assegnata di macchine, con una portabilità limitata. Le tendenze più recenti nel calcolo scientifico portano a un uso del parallelismo sempre più diffuso (high performance computing) e all’introduzione delle carte grafiche (GPU, Graphics Processing Unit) nei calcoli. L’obiettivo in questo campo è quello di raggiungere l’exascala negli anni 2020, cioè un ordine di grandezza di 1 exaflop (1018 operazioni in virgola mobile per secondo) in termini di intensità di calcolo.
I risultati non elaborati si presentano sotto la forma di immensi file di numeri, che sono difficilemente utilizzabili come tali. L’elaborazione di questi dati può richiedere software specifici di visualizzazione dei risultati, in particolare quando i calcoli sono effettuati in tre dimensioni spaziali. Nell’ambito dei problemi provenienti dall’industria, conviene talvolta utilizzare in modo iterativo un codice di calcolo numerico, per ottimizzare un criterio in un problema che dipende da parametri (avere, per es., la resistenza fluidodinamica minore possibile per un oggetto volan te). Si parla allora di ottimizzazione parametrica.
Le difficoltà e le sfide scientifiche. – Il calcolo scientifico è divenuto un elemento centrale del lavoro di centinaia di migliaia di ingegneri, matematici, informatici e ricercatori di scienze naturali, nel mondo intero. Alcuni sono semplici utenti dei codici di simulazione numerica, altri ne sono gli ideatori, oppure ne fanno la manutenzione. Tutti lavorano per migliorare la precisione delle simulazioni, intervenendo su diversi aspetti: 1) considerare un sempre maggior numero di fenomeni fisici e il miglioramento della qualità dei dati relativi a tali fenomeni; 2) ideare nuovi schemi numerici, che uniscano al massimo le qualità di consistenza e di stabilità, come nel progresso recente dell’analisi numerica che consiste nel mettere a punto discretizzazioni (schemi numerici) che continuino a funzionare quando un para metro piccolo tende a 0 in un sistema di equazioni (si parla allora di ‘schemi numerici che conservano l’asintotica’; 3) implementare schemi su elaboratori massicciamente paralleli, provando a sfruttare al meglio le architetture.
In molti casi, lo stato dell’arte non permette ancora di simulare convenientemente i dispositivi industriali nel loro complesso, e ancor meno di simularli in tempo reale. Non di meno, i progressi nella direzione di una simulazione sempre più realistica dei fenomeni fisici sono stati notevoli in questi ultimi anni, come mostra, per es., il miglioramento dell’affidabilità delle previsioni meteorologiche (basate in gran parte sulla simulazione numerica). Ci si aspetta, dunque, in un prossimo futuro un’estensione importante della simulazione numerica, sia nel mondo industriale sia in quello della ricerca accademica.
Bibliografia: S. Jin, Z.P. Xin, The relaxation schemes for systems of conservation laws in arbitrary space dimensions, «Communications on pure and applied mathematics», 1995, 48, pp. 235-76; A. Quarteroni, Modellistica numerica per problemi differenziali, Milano 20125.