J'ai essayé de déboguer cette erreur ces derniers jours, je me suis demandé si quelqu'un avait des conseils sur la façon de procéder.
Je résous l'équation de Poisson pour une distribution de charge par étapes (un problème courant en électrostatique / physique des semi-conducteurs) sur un maillage de volume fini non uniforme où l'inconnu est défini sur les centres des cellules et les flux sur les faces des cellules.
le profil de charge (le terme source) est donné par:
et les conditions aux limites sont,
et le domaine est .
J'utilise du code développé pour résoudre l'équation d'advection-diffusion-réaction (je me suis écrit voir mes notes ici, http://danieljfarrell.github.io/FVM ). L'équation advection-diffusion-réaction est un cas plus général de l'équation de Poisson. En effet, l'équation de Poisson peut être récupérée en mettant la vitesse d'advection à zéro et en supprimant le terme transitoire.
Le code a été testé contre un certain nombre de situations pour des grilles uniformes, non uniformes et aléatoires et produit toujours des solutions raisonnables ( http://danieljfarrell.github.io/FVM/examples.html ) pour l'équation d'advection-diffusion-réaction.
Pour montrer où le code tombe en panne, j'ai fait l'exemple suivant. J'ai installé un maillage uniforme de 20 cellules, puis je l'ai rendu non uniforme en supprimant une seule cellule. Dans la figure de gauche, j'ai supprimé la cellule et dans la droite a été supprimée. La neuvième cellule couvre la région où le terme source (c'est-à-dire la charge) change de signe. Le bogue apparaît lorsque la grille n'est pas uniforme dans une région où le terme de réaction change de signe . Comme vous pouvez le voir ci-dessous.Ω 9
Des idées, quelle pourrait être la cause de ce problème? Faites-moi savoir si de plus amples informations concernant la discrétisation seraient utiles (je ne voulais pas ajouter trop de détails à cette question).