Ho cercato di eseguire il debug di questo errore negli ultimi giorni, mi chiedevo se qualcuno avesse dei consigli su come procedere.
Sto risolvendo l'equazione di Poisson per una distribuzione della carica a gradino (un problema comune nella fisica elettrostatica / dei semiconduttori) su una maglia a volume finito non uniforme in cui l'ignoto è definito sui centri cellulari e i flussi sulle facce delle cellule.
il profilo di addebito (il termine di origine) è dato da,
e le condizioni al contorno sono,
e il dominio è .
Sto usando il codice sviluppato per risolvere l'equazione di reazione-diffusione-reazione (mi sono scritto vedere i miei appunti qui, http://danieljfarrell.github.io/FVM ). L'equazione di reazione-diffusione-reazione è un caso più generale dell'equazione di Poisson. In effetti l'equazione di Poisson può essere recuperata impostando la velocità di avanzamento su zero e rimuovendo il termine transitorio.
Il codice è stato testato per una serie di situazioni per griglie uniformi, non uniformi e casuali e produce sempre soluzioni ragionevoli ( http://danieljfarrell.github.io/FVM/examples.html ) per l'equazione avanzamento-diffusione-reazione.
Per mostrare dove si rompe il codice ho fatto il seguente esempio. Ho impostato una mesh uniforme di 20 celle e quindi la ho resa non uniforme rimuovendo una singola cella. Nella figura a sinistra ho rimosso la cella e nella destra è stato rimosso. La nona cella copre la regione in cui il termine sorgente (ovvero la carica) cambia segno. Il bug appare quando la griglia non è uniforme in una regione in cui il termine di reazione cambia segno . Come puoi vedere di seguito.Ω 9
Qualche idea su cosa potrebbe causare questo problema? Fammi sapere se sarebbero utili ulteriori informazioni sulla discretizzazione (non volevo inserire troppi dettagli in questa domanda).