Je ne connais pas très bien les schémas de discrétisation courants pour les PDE. Je sais que Crank-Nicolson est un schéma populaire pour discrétiser l'équation de diffusion. Est également un bon choix pour le terme d'advection?
Je suis intéressé par la résolution de l'équation Réaction-Diffusion-Advection ,
où est le coefficient de diffusion de la substance et est la vitesse.
Pour mon application spécifique, l'équation peut être écrite sous la forme,
Voici le schéma Crank-Nicolson que j'ai appliqué,
Remarquez les termes et . Cela permet au schéma de se déplacer entre:
- Crank-Niscolson,
- c'est totalement implicite
- c'est totalement explicite
Les valeurs peuvent être différentes, ce qui permet au terme de diffusion d'être Crank-Nicolson et au terme d'advection d'être autre chose. Quelle est l'approche la plus stable, que recommanderiez-vous?
la source
De manière générale, vous voudrez utiliser une méthode implicite pour les équations paraboliques (la partie diffusion) - les schémas explicites pour la PDE parabolique doivent avoir un pas de temps très court pour être stable. Inversement, pour la partie hyperbolique (advection), vous aurez besoin d'une méthode explicite car elle est moins chère et ne perturbe pas la symétrie du système linéaire que vous devez résoudre en utilisant un schéma implicite de diffusion. Dans ce cas, vous voulez éviter les différences centrées comme et passer aux différences unilatérales pour des raisons de stabilité.(uj+1−uj−1)/2Δt (uj−uj−1)/Δt
Je vous suggère de consulter le livre de Randy Leveque ou le livre de Dale Durran pour "l'analyse de stabilité de von Neumann". C'est une approche générale pour déterminer la stabilité de votre schéma de discrétisation, à condition que vous ayez des conditions aux limites périodiques. (Il y a aussi un bon article wiki ici .)
L'idée de base est de supposer que votre approximation discrète peut s'écrire une somme d'ondes planes , où est le nombre d'onde et la fréquence. Vous entassez une onde plane dans votre approximation du PDE et priez pour qu'elle ne explose pas. Nous pouvons réécrire l'onde plane en et nous voulons nous assurer que .ei(kjΔx−ωnΔt) k ω ξneikjΔx |ξ|≤1
À titre d'illustration, considérons l'équation de diffusion ordinaire avec une différenciation totalement implicite:
Si nous substituons dans une onde plane, puis divisons par et , nous obtenons l'équationξn eikjΔx
Nettoyez-le un peu maintenant et nous obtenons:
C'est toujours moins d'un, donc vous êtes en clair. Essayez d'appliquer ceci pour le schéma explicite et centré de l'équation d'advection:
et voir ce que vous. (Il y aura une partie imaginaire cette fois.) Vous trouverez que , ce qui est triste. D'où mon avertissement que vous ne l'utilisez pas. Si vous pouvez le faire, vous ne devriez pas avoir beaucoup de mal à trouver un schéma stable pour l'équation d'advection-diffusion complète.ξ |ξ|2>1
Cela dit, j'utiliserais un schéma totalement implicite pour la partie diffusion. Remplacez la différenciation dans la partie advection par si et si et choisissez un pas de temps pour que . (Il s'agit de la condition Courant-Friedrichs-Lewy .) Elle n'est précise qu'au premier ordre, vous pouvez donc rechercher des schémas de discrétisation d'ordre supérieur si cela vous concerne. v > 0 u j - u j + 1 v < 0 V Δ t / Δ x ≤ 1uj−uj−1 v>0 uj−uj+1 v<0 VΔt/Δx≤1
la source