Un sacco di intuizione può essere acquisita dall'esperienza, mi chiedevo solo se qualcuno ha visto qualcosa di simile prima. Il diagramma mostra la condizione iniziale (verde) per l'equazione di avanzamento-diffusione, quindi la soluzione all'iterazione 200 (blu) e quindi nuovamente all'iterazione 400 (rosso).
La soluzione dell'equazione avanzamento-diffusione esplode dopo alcune iterazioni. Il numero di Péclet e la condizione CFL è soddisfatta, C ≈ 0,0015 , quindi le equazioni dovrebbero essere stabili. Prevedo di avere un bug nel codice numerico.
Sfondo. La discretizzazione è la differenza centrale per entrambi i termini di avanzamento e diffusione. Credo che questo sia il primo ordine di avanzamento e il secondo ordine di diffusione. Ho implementato questo usando un approccio a volume finito (per la prima volta) in cui i valori dei coefficienti (coefficienti di velocità e diffusione) sulle facce delle celle si trovano per interpolazione lineare dalle medie cellulari. Applico la condizione al contorno di Robin sulle superfici sinistra e destra e azzerare il flusso ai limiti.
Come si esegue il debug del codice numerico? Qualcuno ha mai fatto una scena del genere prima d'ora, dove sarebbe un buon posto per iniziare a guardare?
Aggiornare
- Ecco le mie note personali sullo stile del "libro di laboratorio" sull'implementazione di un metodo di volume finito per l'equazione di diffusione-orientamento, http://danieljfarrell.github.io/FVM/
- Il codice sorgente di Python è disponibile qui, http://github.com/danieljfarrell/FVM.git
Aggiornare
La soluzione non potrebbe essere più semplice! Ho appena fatto un errore di segno sul termine di diffusione. È strano, sono sicuro che non l'avrei pubblicato, non avrei trovato l'errore! Se qualcuno vuole condividere suggerimenti su come eseguire il debug del proprio codice numerico, sono ancora interessato. Non ho un metodo, è un po 'incostante, continuo a provare cose per ottenere indizi, ma questo processo può richiedere settimane (a volte).
condizioni al contorno . Quindi al limite vediamo l'equilibrio tra il campo di velocità che spinge a destra e la diffusione che spinge a sinistra.