Imposer les conditions de compatibilité pour la méthode des éléments finis mixtes dans l'équation de Stokes

13

Supposons que nous ayons l'équation du modèle de flux de Stokes suivante:

{div(νu)+p=fdivu=0
où la viscosité ν(x) est une fonction, pour l'élément fini mixte standard, disons que nous utilisons la paire stable: espace de Crouzeix-Raviart Vh pour la vitesse u et espace constant par élément Sh pour la pression p , nous avons la forme variationnelle suivante:

L([u,p],[v,q])=Ωνu:v-Ωqjevu-Ωpjevv=ΩFvv×qVh×Sh

et nous savons que puisque le multiplicateur de Lagrange p peut être déterminé jusqu'à une constante, la matrice finalement assemblée devrait avoir un espace nul 1 , pour contourner cela, nous pourrions faire en sorte que la pression p sur un certain élément soit nulle, de sorte que nous n'avons pas à résoudre un système singulier.

Voici donc ma question 1:

  • (Q1) Existe-t-il un autre moyen que d'appliquer p=0 sur un élément pour éliminer le noyau des éléments finis mixtes standard? ou, par exemple, n'importe quel solveur capable de résoudre le système singulier pour obtenir une solution compatible? (ou certaines références sont les bienvenues)

Et à propos de la compatibilité, pour (1) ce devrait être et le petit truc sympa est de calculer être le nous avons obtenu de la solution de le système linéaire soustrait par sa moyenne pondérée: ˜ p p ˜ p = p - ν

Ων-1p=0
p~p
(2)p~=p-ν|Ω|Ων-1p

Cependant, récemment, je viens de mettre en œuvre un élément fini mixte stabilisé pour l'équation de Stokes par Bochev, Dohrmann et GunzbergerP1-P0˜ L ([u,p],[v,q])= L ([u,p],[v,q])-Ω (p- Π 1 p)(q- Π 1 q)=Ω fv , dans lequel ils ont ajouté un terme stabilisé à la formulation variationnelle (1): où est la projection de l'espace constant par morceaux vers continu par morceaux , et le noyau constant de l'élément fini mélangé d'origine a disparu, cependant, des choses étranges se sont produites, (2) doesn ne fonctionne plus, j'ai inventé le problème de test de

L~([u,p],[v,q])=L([u,p],[v,q])-Ω(p-Π1p)(q-Π1q)=ΩFvv×qVh×Sh
Π1P0P1un problème d'interface pour l'équation de diffusion , c'est ce que j'ai obtenu pour la pression , celle de droite est la vraie solution et celle de gauche est l'approximation numérique:p

Test de Stokes 1

cependant si est une constante, le problème de test fonctionne très bien: νTest de Stokes 2

Je suppose que c'est parce que la façon dont j'impose la condition de compatibilité, car elle est liée à la stabilité inf-sup de tout le système, voici ma deuxième question:

  • (Q2): existe-t-il un moyen autre que (2) d'imposer la compatibilité pour la pression ? ou en inventant le problème du test, quel type de dois-je utiliser?pp
Shuhao Cao
la source
MathML ne fonctionne pas?
Shuhao Cao du
Nous utilisons MathJaX sur StackExchange, tout ce que vous avez publié s'affiche magnifiquement, merci pour la question détaillée.
Aron Ahmadia

Réponses:

8

La condition de compatibilité concerne la vitesse, pas la pression. Il indique que si vous ne disposez que des conditions aux limites de Dirichlet pour la vitesse, celles-ci doivent être compatibles avec la contrainte sans divergence, c'est-à-dire avec la limite de la domaine de calcul (pas la cellule).ΩΩun=0Ω

Dans ce cas, ne peut pas être distingué de avec une constante arbitraire car vous n'avez pas de condition aux limites sur pour fixer la constante. Il existe donc une infinité de solutions pour la pression et pour comparer les solutions, une convention est nécessaire. Les mathématiciens préfèrent choisir tel que (car ils peuvent s'intégrer) tandis que le physicien préfère (car ils peuvent mesurer dans un point). Si est votre équivalent discret de , cela implique que( p + c ) c p c ¯ p = p r e f p ( x r e f ) = p r e f B p p Bp(p+c)cpcp¯=preFp(XreF)=preFBppB a un espace nul composé du vecteur d'identité.

Les méthodes du sous-espace Krylov peuvent résoudre un système singulier en supprimant l'espace nul du sous-espace Krylov dans lequel elles recherchent la solution. Cependant, cela ne signifie pas que vous obtiendrez la solution qui correspond à une convention donnée, vous devrez toujours déterminer la constante vous-même dans une étape de post-traitement, aucun solveur ne peut le faire pour vous.p

Voici quelques suggestions pour résoudre votre problème:

  • L'équation (2) semble étrange. Si est fonction de comment peut-il être en dehors de l'intégrale?xνX
  • Votre champ de vitesse satisfait-il à la contrainte de compatibilité?
  • Essayez de ne rien faire pour la pression, laissez simplement le solveur libérer pour trouver un , puis regardez . Est-ce une constante?pp-peXunect
  • Sinon, êtes-vous sûr que l'espace nul de est bien le vecteur d'identité et rien de plus? À la fois sur papier et dans le code? Le problème semble suffisamment petit pour réellement calculer l'espace nul.B
chris
la source
2

Comme pour (Q1), vous pouvez choisir un solveur pour les problèmes de point de selle qui calcule une solution des moindres carrés pour votre système. Ensuite, une condition supplémentaire peut être imposée au multiplicateur, comme fixer un degré de liberté spécifique, imposer une moyenne spécifique.

En général, et je pense que cela répond (Q1), vous pouvez utiliser une contrainte linéaire qui peut distinguer différentes constantes.

Cette contrainte peut être imposée dans une étape de post-traitement, ou par un choix approprié de l'espace d'essai (par exemple, si vous omettez un degré de liberté).

shuhalo
la source