Condizione CFL

Indice dei contenuti

    La condizione CFL, dal nome di Courant, Friedrichs e Lewy, è il vincolo che lega passo temporale, passo spaziale e velocità di propagazione in molti schemi numerici per equazioni iperboliche. La sua idea centrale è geometrica: il dominio di dipendenza numerico deve contenere il dominio di dipendenza fisico. Se la soluzione esatta riceve informazione da una certa regione, lo schema discreto deve usare abbastanza punti della griglia per rappresentare quella stessa propagazione.

    Nel caso monodimensionale più semplice, con velocità di propagazione costante c, si definisce il numero di Courant:

    \nu= \dfrac{\lvert c\rvert\,\Delta t}{\Delta x}.

    Qui \Delta t è il passo temporale e \Delta x è il passo spaziale. In molti schemi espliciti elementari per trasporto e onde la condizione assume la forma:

    \nu\leq 1.

    Questa soglia non è una legge universale: dipende dall’equazione, dallo schema, dalla dimensione spaziale, dallo stencil e dal trattamento dei bordi. Il principio generale, però, è stabile: durante un passo temporale il segnale fisico non deve attraversare più informazione di quanta lo stencil numerico possa comunicare.

    Significato dei simboli

    SimboloSignificato
    \Delta tpasso temporale della simulazione
    \Delta xpasso spaziale della griglia in una dimensione
    cvelocità caratteristica o velocità di propagazione fisica
    \nunumero di Courant, cioè distanza percorsa in un passo misurata in celle
    \nu\leq C_{\max}forma pratica del vincolo, con C_{\max} dipendente dallo schema

    Se \nu=0{,}5, un fronte che viaggia a velocità \lvert c\rvert percorre mezza cella in un passo temporale. Se \nu=1, percorre una cella. Se \nu>1, il fronte fisico può saltare oltre i punti che lo schema usa per aggiornare la soluzione, e l’algoritmo può generare oscillazioni, crescita artificiale o propagazione numerica nella direzione sbagliata.

    Lettura geometrica

    Per l’equazione del trasporto lineare:

    u_t+c\,u_x=0,

    le informazioni viaggiano lungo le caratteristiche:

    x-ct=\text{costante}.

    In una griglia discreta, il valore u_i^{n+1} viene calcolato a partire da alcuni valori al tempo precedente, per esempio u_{i-1}^n, u_i^n e u_{i+1}^n. Questi punti definiscono un dominio di dipendenza numerico. La condizione CFL richiede che la caratteristica fisica che arriva al punto (x_i,t_{n+1}) cada dentro quel dominio numerico.

    Per l’equazione delle onde:

    u_{tt}=c^2u_{xx},

    le caratteristiche sono:

    x-ct=\text{costante}, \qquad x+ct=\text{costante}.

    Il valore in un punto dipende dai dati dentro il cono caratteristico. Lo stencil numerico deve quindi essere abbastanza largo, oppure il passo temporale abbastanza piccolo, perché il cono numerico contenga quello fisico.

    Schema upwind per il trasporto

    La CFL si vede bene nello schema upwind esplicito per:

    u_t+c\,u_x=0, \qquad c>0.

    Uno schema di primo ordine è:

    u_i^{n+1} = u_i^n-\nu\left(u_i^n-u_{i-1}^n\right), \qquad \nu=\dfrac{c\,\Delta t}{\Delta x}.

    Per questo schema, la stabilità richiede tipicamente:

    0\leq\nu\leq1.

    La forma dell’aggiornamento mostra perché. Si può riscrivere:

    u_i^{n+1} = (1-\nu)u_i^n+\nu u_{i-1}^n.

    Quando 0\leq\nu\leq1, il nuovo valore è una combinazione convessa dei due valori precedenti. Se \nu>1, il coefficiente 1-\nu diventa negativo: lo schema può amplificare oscillazioni e perdere monotonia.

    Schemi e soglie diverse

    La frase “la CFL è \nu\leq1” è una scorciatoia didattica. La forma generale è:

    \Delta t \leq C_{\max}\,\dfrac{\Delta x}{s_{\max}},

    dove s_{\max} è la massima velocità caratteristica rilevante e C_{\max} è il numero CFL massimo ammesso dallo schema. Per uno schema esplicito semplice può essere vicino a 1; per schemi di ordine superiore, multidimensionali o con ricostruzioni particolari può essere più piccolo.

    In più dimensioni, se le velocità caratteristiche nelle direzioni coordinate sono a_1,\ldots,a_d, una forma tipica è:

    \Delta t \left( \dfrac{\lvert a_1\rvert}{\Delta x_1} +\dfrac{\lvert a_2\rvert}{\Delta x_2} +\cdots +\dfrac{\lvert a_d\rvert}{\Delta x_d} \right) \leq C_{\max}.

    Su griglie non uniformi o mesh non strutturate, il passo temporale globale è spesso determinato dalla cella più piccola e dalla velocità caratteristica più alta. Per questo una sola cella molto sottile può rendere costosa tutta una simulazione esplicita.

    Iperbolico, parabolico e stiff

    La CFL classica riguarda equazioni iperboliche, cioè problemi in cui l’informazione si propaga con velocità finita: onde, trasporto, acustica, gasdinamica, shallow water, elastodinamica. In questi casi il vincolo ha una chiara interpretazione causale.

    Per equazioni paraboliche, come l’equazione del calore, compaiono vincoli di stabilità simili ma con scala diversa. Per uno schema esplicito elementare della diffusione:

    u_t=\alpha u_{xx},

    si incontra spesso:

    \dfrac{\alpha\,\Delta t}{\Delta x^2} \leq \dfrac{1}{2}.

    Questo non è lo stesso meccanismo geometrico della CFL iperbolica: la diffusione ideale ha dominio di dipendenza istantaneamente globale. Tuttavia, dal punto di vista pratico, anche qui il passo temporale esplicito è limitato dalla griglia.

    Nei problemi stiff e dissipativi, il vincolo sul passo può essere interpretato tramite stabilità assoluta: il metodo esplicito deve rimanere dentro la propria regione di stabilità. Per questo metodi impliciti o semi-impliciti sono spesso preferiti quando la CFL esplicita sarebbe troppo restrittiva.

    Necessaria, non sempre sufficiente

    La condizione CFL è spesso necessaria per la convergenza degli schemi espliciti per problemi iperbolici, ma non è sempre sufficiente. Uno schema può rispettare la CFL e restare comunque inadatto se è inconsistente, se introduce troppa dispersione, se non conserva le grandezze richieste o se tratta male le condizioni al contorno.

    In pratica, la stabilità di uno schema dipende da più elementi:

    ElementoRuolo
    CFLlimita il passo temporale rispetto alla propagazione fisica
    stencildetermina il dominio di dipendenza numerico
    consistenzagarantisce che lo schema approssimi l’equazione corretta
    dissipazione numericasmorza o altera onde e discontinuità
    dispersione numericamodifica la velocità di fase delle onde
    condizioni al contornopossono introdurre riflessioni o instabilità artificiali

    La CFL è quindi un filtro minimo: se è violata, molti schemi espliciti falliscono; se è rispettata, resta comunque necessario validare lo schema.

    Uso operativo nelle simulazioni

    Nelle simulazioni ingegneristiche il passo temporale viene spesso scelto in forma automatica:

    \Delta t = \text{CFL}_{\text{target}} \min_i \dfrac{\Delta x_i}{s_i},

    dove i scorre sulle celle, \Delta x_i rappresenta una lunghezza locale caratteristica e s_i è la massima velocità di propagazione locale. Nei flussi comprimibili, per esempio, s_i include la velocità del flusso e la velocità delle onde acustiche.

    In fluidodinamica computazionale, aerodinamica, idraulica e propagazione ondosa, la CFL scelta non è solo un parametro tecnico: controlla costo di calcolo, robustezza, accuratezza temporale e capacità di seguire fronti ripidi. Una CFL troppo alta può far divergere il calcolo; una CFL troppo bassa può rendere la simulazione inutilmente lenta.

    Errori comuni

    Il primo errore è usare \nu\leq1 come regola universale. È una soglia tipica per alcuni schemi, non per tutti. La soglia corretta va letta dalla stabilità dello schema o dalla documentazione del solutore.

    Il secondo errore è ignorare il valore assoluto della velocità. Nel trasporto monodimensionale conta la distanza percorsa in un passo, quindi si usa \lvert c\rvert; il segno serve invece a scegliere lo stencil upwind corretto.

    Il terzo errore è confondere stabilità e accuratezza. Un passo che rispetta la CFL può essere stabile ma troppo grande per descrivere bene onde, fronti o transitori.

    Il quarto errore è dimenticare le celle piccole. In una mesh non uniforme, il passo temporale stabile è spesso imposto dagli elementi più piccoli o peggio condizionati.

    Il quinto errore è applicare la lettura iperbolica classica a problemi diffusivi senza distinguere la diversa scala del vincolo. Nei problemi parabolici espliciti il passo spesso scala come \Delta x^2, non come \Delta x.

    Voci correlate

    Ultimo aggiornamento: