Conservation d'une grandeur physique lors de l'utilisation des conditions aux limites de Neumann appliquées à l'équation d'advection-diffusion

25

Je ne comprends pas le comportement différent de l'équation d'advection-diffusion lorsque j'applique différentes conditions aux limites. Ma motivation est la simulation d'une grandeur physique réelle (densité de particules) sous diffusion et advection. La densité des particules doit être conservée à l'intérieur, sauf si elle s'écoule des bords. Par cette logique, si j'applique les conditions aux limites de Neumann aux extrémités du système telles que (sur les côtés gauche et droit) alors le système devrait être "fermé" c'est-à-dire si le flux à la frontière est nul, aucune particule ne peut s'échapper.ϕx=0

Pour toutes les simulations ci-dessous, j'ai appliqué la discrétisation de Crank-Nicolson à l'équation d'advection-diffusion et toutes les simulations ont des conditions aux limites . Cependant, pour les première et dernière lignes de la matrice (les lignes de conditions aux limites), je permets à d'être modifié indépendamment de la valeur intérieure. Cela permet aux points d'extrémité d'être totalement implicites.ϕx=0β

Ci-dessous, je discute de 4 configurations différentes, une seule d'entre elles est ce que j'attendais. À la fin, je discute de ma mise en œuvre.

Limite de diffusion uniquement

Ici, les termes d'advection sont désactivés en mettant la vitesse à zéro.

Diffusion uniquement, avec β = 0,5 (Crank-Niscolson) en tous points

Diffusion uniquement (limites de Neumann avec bêta = 0,5)

La quantité n'est pas conservée comme le montre la réduction de la zone d'impulsion.

Diffusion uniquement, avec = 0,5 (Crank-Niscolson) aux points intérieurs et = 1 (plein implicite) aux limitesβββ

Diffusion uniquement (limites de Neumann avec bêta = 0,5 pour l'intérieur, bêta = 1 totalement implicite) les limites

En utilisant une équation entièrement implicite sur les frontières, j'atteins ce que j'attends: aucune particule ne s'échappe . Vous pouvez le voir par la zone conservée lorsque la particule diffuse. Pourquoi le choix de aux points limites devrait - il influencer la physique de la situation? Est-ce un bug ou prévu?β

Diffusion et advection

Lorsque le terme d'advection est inclus, la valeur de aux limites ne semble pas influencer la solution. Cependant, dans tous les cas où les frontières semblent être "ouvertes", c'est-à-dire que les particules peuvent s'échapper des frontières. pourquoi est-ce le cas?β

Advection et diffusion avec = 0,5 (Crank-Niscolson) en tous pointsβ

Advection-Diffusion (limites de Neumann avec bêta = 0,5)

Advection et diffusion avec = 0,5 (Crank-Niscolson) aux points intérieurs, et = 1 (plein implicite) aux limitesβββ

Advection et diffusion (frontières de Neumann avec bêta = 0,5 pour l'intérieur, bêta = 1 totalement implicite) les frontières

Mise en œuvre de l'équation d'advection-diffusion

En commençant par l'équation d'advection-diffusion,

ϕt=D2ϕx2+vϕx

Écrire avec Crank-Nicolson donne,

ϕjn+1ϕjnΔt=D[1β(Δx)2(ϕj1n2ϕjn+ϕj+1n)+β(Δx)2(ϕj1n+12ϕjn+1+ϕj+1n+1)]+v[1β2Δx(ϕj+1nϕj1n)+β2Δx(ϕj+1n+1ϕj1n+1)]

Notez que = 0.5 pour Crank-Nicolson, = 1 pour entièrement implicite et = 0 pour entièrement explicite.β ββββ

Pour simplifier la notation, faisons la substitution,

s=DΔt(Δx)2r=vΔt2Δx

et déplacer la valeur connue de la dérivée temporelle vers la droite,ϕjn

ϕjn+1=ϕjn+s(1β)(ϕj1n2ϕjn+ϕj+1n)+sβ(ϕj1n+12ϕjn+1+ϕj+1n+1)+r(1β)(ϕj+1nϕj1n)+rβ(ϕj+1n+1ϕj1n+1)

La prise en compte des termes donne,ϕ

β(rs)ϕj1n+1+(1+2sβ)ϕjn+1β(s+r)ϕj+1n+1Aϕn+1=(1β)(sr)ϕj1n+(12s[1β])ϕjn+(1β)(s+r)ϕj+1nMϕn

que nous pouvons écrire sous forme de matrice sous la forme où,Aϕn+1=Mϕn

A=(1+2sββ(s+r)0β(rs)1+2sββ(s+r)β(rs)1+2sββ(s+r)0β(rs)1+2sβ)

M=(12s(1β)(1β)(s+r)0(1β)(sr)12s(1β)(1β)(s+r)(1β)(sr)12s(1β)(1β)(s+r)0(1β)(sr)12s(1β))

Application des conditions aux limites de Neumann

NB travaille à nouveau sur la dérivation, je pense avoir repéré l'erreur. J'ai supposé un schéma totalement implicite ( = 1) lors de l'écriture de la différence finie de la condition aux limites. Si vous supposez un schéma de Crank-Niscolson ici, la complexité devient trop grande et je n'ai pas pu résoudre les équations résultantes pour éliminer les nœuds qui sont en dehors du domaine. Cependant, cela semble possible, il y a deux équations avec deux inconnues, mais je n'ai pas pu le gérer. Cela explique probablement la différence entre les premier et deuxième graphiques ci-dessus. Je pense que nous pouvons conclure que seuls les tracés avec = 0,5 aux points limites sont valides.βββ

En supposant que le flux du côté gauche est connu (en supposant une forme entièrement implicite),

ϕ1n+1x=σL

L'écrire comme une différence centrée donne,

ϕ1n+1xϕ2n+1ϕ0n+12Δx=σL

par conséquent, ϕ0n+1=ϕ2n+12ΔxσL

Notez que cela introduit un nœud qui est en dehors du domaine du problème. Ce nœud peut être éliminé en utilisant une deuxième équation. Nous pouvons écrire le nœud comme,ϕ0n+1j=1

β(rs)ϕ0n+1+(1+2sβ)ϕ1n+1β(s+r)ϕ2n+1=(1β)(sr)ϕj1n+(12s[1β])ϕjn+(1β)(s+r)ϕj+1n

La substitution de la valeur de trouvée dans la condition aux limites donne le résultat suivant pour la ligne = 1,ϕ0n+1j

(1+2sβ)ϕ1n+12sβϕ2n+1=(1β)(sr)ϕj1n+(12s[1β])ϕjn+(1β)(s+r)ϕj+1n+2β(rs)ΔxσL

La même procédure pour la dernière ligne (à = ) donne,jJ

2sβϕJ1n+1+(1+2sβ)ϕJn+1=(1β)(sr)ϕJ1n+(12s(1β))ϕJn+2β(s+r)ΔxσR

Enfin, rendre les lignes de limite implicites (définition = 1) donne,β

(1+2s)ϕ1n+12sϕ2n+1=ϕj1n+1ϕjn+2(rs)ΔxσL

2sϕJ1n+1+(1+2s)ϕJn+1=ϕJn+2(s+r)ΔxσR

Par conséquent , avec des conditions aux limites de Neumann , on peut écrire l'équation de la matrice, ,Aϕn+1=Mϕn+bN

où,

A=(1+2s2s0β(rs)1+2sββ(s+r)β(rs)1+2sββ(s+r)02s1+2s)

M=(100(1β)(sr)12s(1β)(1β)(s+r)(1β)(sr)12s(1β)(1β)(s+r)001)

bN=(2(rs)ΔxσL002(s+r)ΔxσR)T

Ma compréhension actuelle

  • Je pense que la différence entre les premier et deuxième graphiques est expliquée en notant l'erreur décrite ci-dessus.

  • Concernant la conservation de la quantité physique. Je crois que la cause est que, comme indiqué ici , l'équation d'advection sous la forme que j'ai écrite ne permet pas la propagation dans le sens inverse, donc l'onde passe juste à travers même avec des conditions aux limites de flux nul . Mon intuition initiale concernant la conservation ne s'applique que lorsque le terme d'advection est nul (c'est la solution dans la parcelle numéro 2 où la zone est conservée).

  • Même avec les conditions aux limites de flux nul de Neumann la masse peut toujours quitter le système, car les conditions aux limites correctes dans ce cas sont des conditions aux limites de Robin dans lesquelles le flux total est spécifié . De plus la condition de Neunmann spécifie que la masse ne peut pas quitter le domaine par diffusion , elle ne dit rien sur l'advection. Essentiellement, nous avons entendu des conditions aux limites fermées à la diffusion et des conditions aux limites ouvertes à l'advection. Pour plus d'informations, voir la réponse ici, Implémentation du conditon de limite de gradient nul dans l'équation d'advection-diffusionϕx=0j=Dϕx+vϕ=0.

Accepteriez-vous?

boyfarrell
la source
Il semble que les conditions aux limites ne soient pas correctement mises en œuvre. Pourriez-vous nous montrer comment vous avez imposé les conditions aux limites?
David Ketcheson
OK, j'ai mis à jour l'implémentation et je pense avoir repéré l'erreur concernant l'application de = 0.5 aux lignes de limite uniquement. J'ai mis à jour ma "compréhension actuelle" au bas de la question. Avez-vous un commentaire? β
boyfarrell
Alors ... à quoi ressemble la discrétisation sur les frontières dans le cas des frontières Robin? Vous l'avez montré pour les limites de Neumann, mais pas pour les limites de Robin.

Réponses:

15

Je pense que l'un de vos problèmes est que (comme vous l'avez observé dans vos commentaires) les conditions Neumann ne sont pas les conditions que vous recherchez , en ce sens qu'elles n'impliquent pas la conservation de votre quantité. Pour trouver la bonne condition, réécrivez votre PDE en

ϕt=x(Dϕx+vϕ)+S(x,t).

Maintenant, le terme qui apparaît entre parenthèses, est le flux total et c'est la quantité que vous devez mettre à zéro sur les limites pour conserver . (J'ai ajouté par souci de généralité et pour vos commentaires.) Les conditions aux limites que vous devez imposer sont alors (en supposant que votre domaine spatial est )Dϕx+vϕ=0ϕS(x,t)(10,10)

Dϕx(10)+vϕ(10)=0

pour le côté gauche et

Dϕx(10)+vϕ(10)=0

pour le côté droit. Ce sont ce que l'on appelle la condition aux limites de Robin (notez que Wikipedia dit explicitement que ce sont les conditions isolantes pour les équations d'advection-diffusion).

Si vous configurez ces conditions aux limites, vous obtenez les propriétés de conservation que vous recherchiez. En effet, en intégrant sur le domaine spatial, nous avons

ϕtdx=x(Dϕx+vϕ)dx+S(x,t)dx

En utilisant l' intégration par parties sur le côté droit, nous avons

ϕtdx=(Dϕx+vϕ)(10)(Dϕx+vϕ)(10)+S(x,t)dx

Maintenant, les deux termes centraux disparaissent grâce aux conditions aux limites. En intégrant dans le temps, on obtient

0Tϕtdxdt=0TS(x,t)dxdt

et si nous sommes autorisés à changer les deux premières intégrales ,

ϕ(x,T)dxϕ(x,0)dx=0TS(x,t)dx

Cela montre que le domaine est isolé de l'extérieur. En particulier, si , on obtient la conservation de .ϕS=0ϕ

Dr_Sam
la source
Je comprends maintenant pourquoi cela ne fonctionnait que lorsque = 0; car cela impliquerait la conservation suivant votre approche ci-dessus. Quelle serait la conséquence de l'utilisation de cette condition aux limites ci-dessus, l'onde se refléterait-elle? Je pensais que ce ne serait pas possible car il n'y a rien dans l'équation qui me donnerait une vitesse négative? v
boyfarrell
La meilleure façon de le savoir est probablement d'essayer! Mais si cela se comporte correctement (et l'OMI le fait), vous devriez voir une certaine quantité de qui commence à s'accumuler sur le côté gauche du domaine: l'advection pousse dans cette direction mais la frontière est fermée. L'accumulation s'arrête lorsque la diffusion est suffisamment importante pour l'équilibrer. Donc non, il ne devrait pas y avoir d’onde réfléchie. ϕϕϕ
Dr_Sam
@DrSam Juste une question concernant la mise en œuvre. Je comprends votre point sur la façon de rendre la quantité nulle sur le côté gauche. Mais quand vous dites "à droite juste un terme limite" qu'est-ce que cela signifie? Je pensais que les conditions aux limites devraient être soit Neumann ou Dirichlet (ou un mélange des deux)?
boyfarrell
@boyfarrell La gauche / droite dans la réponse faisait référence à une dérivation des conditions aux limites correctes, pas à la façon dont elle est mise en œuvre (modifiée pour plus de clarté). Les conditions de Robin sont des conditions classiques, bien qu'elles soient moins connues que Dirichlet et Neumann.
Dr_Sam
Donc, en ce qui concerne la mise en œuvre, pensez-vous que je devrais dériver les conditions aux limites de Robin pour les deux limites? De plus, si l'équation a un terme de réaction (par exemple la condition aux limites doit-elle également inclure ce terme?
ϕt=x(Dϕx+vϕ)+S(x,t)
boyfarrell