• Aucun résultat trouvé

4.4 Conclusion sur l’indicateur a posteriori basé sur un opérateur Λ

5.1.3 Implémentation des indicateurs Λ

La principale difficulté des indicateurs ηΛ est de trouver un moyen d’appliquer l’opérateur

Λ associé. On présente les méthodes pour les cas où Λ est sous forme intégrale (simulations 2D exclusivement !) ou sous forme de puissance d’opérateur (cas général).

Opérateur Λ sous forme intégrale – 2D

Dans le cas où l’opérateur Λ est donné sous forme intégrale, la méthode la plus simple est d’assembler la matrice de la formulation variationnelle correspondante. On commence par calculer une approximation du résidu sous la forme d’une projectionL2sur un espace polynomial

d’ordre plus élevé Pk0(Th) que celui de l’espace de résolution Pk(Th). On assemble ensuite la

matrice de la formulation variationnelle associée à Λ. On calcule un simple produit matrice– vecteur. Finalement, on multiplie par l’inverse de la masse L2 M

L2 associée à l’espace de

projection. La séquence de calcul est résumée sur la Figure 5.2. Il faut néanmoins apporter

quelques précisions selon qu’on s’intéresse à ΛS0 ou bien ΛN0.

Λ intégral – Equation Skw On cherche à calculer la double intégrale non-singulière

Iτ1,τ2 = Z τ1∈Γ Z τ2∈Γ ∇Γvhp|x − y| ∇Γrhdγxdγy

où vh et rh sont des fonctions polynomiales. Dans le cas où τ1 = τ2, on utilise une formule

analytique. Si τ1 6= τ2, on utilise une méthode de quadrature classique.

On constate numériquement que si on se contente d’effectuer la projection du résidu sur Pk0

(Th), la valeur de l’indicateur ηΛ n’est pas bonne au sens qu’elle ne correspond pas à la

solution exacte. Dans ce choix d’implémentation, il faut en fait projeter le résidu sur un maillage raffiné uniformément tel queΠuh ∈ Pk

0

(Th

8). Cela vient du fait que la projection du résidu ne

permet pas de restituer correctement son comportement. On applique de même l’opérateur sur ce même maillage raffiné.

Λ intégral – Equation Nkw On cherche à calculer la double intégrale faiblement singulière

Iτ1,τ2 = Z τ1∈Γ Z τ2∈Γ vh(x) rh(y) p|x − y| dγxdγy

où vh et rh sont des fonctions polynomiales. Dans le cas où τ1 = τ2, on utilise une formule

analytique. Dans le cas contraire, et ce bien que l’intégrale soit singulière, on utilise une méthode de quadrature classique suffisamment riche pour "stabiliser" la valeur de l’indicateur. Au contraire du cas Skw, il n’est pas nécessaire de raffiner le maillage de projection.

Opérateur Λ comme puissance d’opérateurs différentiels classiques – 2D et 3D Le problème ici se présente sous la forme générale : calculer

En ce qui concerne le résidu, on effectue la même projection que pour le cas de la forme intégrale (avec raffinement du maillage quand il est nécessaire !). Il faut ensuite appliquer l’opérateur à cette projection.

On considère une première approche (brutale) qui consiste à assembler la matrice l de la forme bilinéaire

l(vh, uh) =h(I − ∆) vh, uhi, uh, vh ∈ Vh.

En posant encore ML2 la matrice de masse L2 associée à l’espace de projection, la matrice de

l’opérateur discrétisé I − ∆ est

L = M−1L2 l.

Finalement, la matrice de l’opérateur Λ discrétisé est Λ = M−1L2l

α .

Toute la difficulté est concentrée dans le calcul d’une puissance de matrice. Les techniques les plus courantes sont

— le calcul direct : on effectue un changement de base pour exprimer Λ dans la base des vecteurs propres où elle est diagonale, notée Λ0. On pose P la matrice de changement

de base de la base canonique à la base des vecteurs propres. Ainsi,

L = PΛ0PT, Λ = P(Λ0)αPT

où (Λ0)α correspond à la matrice diagonale dont les termes sont les puissances α-ièmes

des termes de Λ0. C’est une méthode coûteuse car elle nécessite le calcul de toutes les valeurs propres et les vecteurs propres associés. L’avantage principal est qu’on obtient alors exactement Λ.

— les algorithmes itératifs. On ne donne pas d’exemple ici, mais ils sont généralement basés sur une décomposition LU de L et des produits matrice–matrice. En plus du coût de la décomposition LU , on prend le risque de générer des matrices pleines. Cette classe de méthodes n’est donc pas non plus adaptée pour notre cadre d’utilisation où les problèmes discrets ont plusieurs dizaines/centaines de milliers de degrés de liberté.

On utilise préférentiellement l’algorithme proposé dans [46], Method 2. Il est basé sur la formule intégrale de Cauchy pour les fonctions holomorphes

f (z) = 1 2iπ Z Γ f (ξ) ξ− zdz. On utilise une quadrature adaptée afin de calculer

f (L) = 1 2iπ

Z

Γ

f (z) (zI− L)−1 dz (5.5) avec dans notre cas f (z) = zα.

Le calcul de la quadrature nécessite une estimation des valeurs propres minimum et maxi- mum de L. La valeur propre maximum peut être estimée par une méthode itérative du type power iteration [47]. Le calcul de la valeur propre minimum peut être plus coûteux. Cependant, pour la matrice L on la connaît a priori, elle vaut toujours λmin

L = 1 ! L’ordre de quadrature

doit être d’autant plus élevé que le conditionnement de L est mauvais. Ensuite, la méthode converge géométriquement avec l’ordre de quadrature !

La formule (5.5) nécessite l’inversion de zI− L. Cependant, il s’agit d’une matrice creuse pour laquelle il existe des bibliothèques comme MUMPS3 permettant de réaliser l’inversion de

manière performante. On peut donc calculer ΛΠrh à la volée.

Remarque 5.1.1. Pour utiliser l’opérateur Λ sous forme d’une puissance sur une surface ouverte, il est nécessaire de définir son comportement aux bords du domaine. Cela se fait d’une manière équivalent à ce qu’on ferait pour I − ∆Γ. La méthode la plus simple est alors, lors

de l’assemblage de la matrice de la formulation variationnelle associée à I − ∆Γ, d’utiliser un

espace de test conforme H1 0(Γ).

L’intérêt de cette méthode est la simplicité de mise en œuvre puisque — il suffit d’assembler une seule fois la matrice L,

— on ne manipule que des matrice creuses,

— le coût du calcul de l’intégrale est faible par rapport à celui d’un assemblage/résolution BEM,

— le calcul de l’indicateur est fait à la volée. Les deux désavantages principaux sont :

— l’approximation de la plus grande valeur propre par une méthode itérative dont la conver- gence dépend du conditionnement4,

— il faut être certain que la quadrature est suffisamment précise. Dans le cas contraire, le caractère "demi-dérivatif" ou "demi-intégrateur" de l’opérateur Λ est mal restitué. Là encore l’ordre de quadrature dépend du conditionnement. Cette difficulté peut être partiellement contournée en adaptant, au fur et à mesure des raffinements de maillage, l’ordre de quadrature Nquad de sorte à maintenir le rapport

Nquad

log(Λmax/Λmin)

constant (voir [46], formule (3.5)) où Λmax/min sont les estimations des valeurs propres maximum

et minimum.

Au niveau du calcul de l’indicateur, le gain est important puisque le coût de l’application de Λ ne dépend plus que du nombre de degrés de liberté indépendamment de l’équation qui a été résolue. De plus, on peut encapsuler le calcul de la puissance de matrice dans une bibliothèque afin d’en faire quelque chose de purement générique : l’utilisateur n’a plus qu’à fournir la matrice dont il veut calculer la puissance et le vecteur auquel il veut l’appliquer ! Cette facilité d’utilisation en fait la méthode privilégiée pour les cas 3D.