X. Antoine - ANR MicroWave

Transcription

X. Antoine - ANR MicroWave
Eléments finis en volume, solveurs itératifs et
préconditionneurs
Xavier Antoine
Institut Elie Cartan de Nancy (IECN), Nancy-Université
ANR MicroWave, INRIA-CORIDA Team
Journées ANR, Décembre 2009
1/26
Plan
2/26
1
Introduction générale
2
Rappel du problème de diffraction et son approximation
3/26
1
Introduction générale
2
Rappel du problème de diffraction et son approximation
Introduction générale
4/26
But ici
• Plus vous présenter la stratégie générale plutôt que des
résultats: prospectif
• Essayer certaines idées de ce qu’on a fait pour les équations
intégrales aux formulations en volume
• Réfléchir à une solution hybride algébrique/analytique
5/26
1
Introduction générale
2
Rappel du problème de diffraction et son approximation
Notre problème
6/26
Diffraction:

2

 (∆ + k )u = 0, dans Ω,
∂ u = g = −∂n u inc , sur Γ,
n

 SRC(u) = 0.
(2.1)
Passer à un domaine non borné
Approximation avec une CLA

2

 (∆ + k )u = 0, dans Ωb ,
∂ u = g = −∂ u inc , sur Γ,
n
n

 ∂ u + iΛu = 0sur Σ.
n
(2.2)
Approximation avec une PML

Sx
Sx2


∂x1 u) + ∂x2 ( 1 ∂x2 u) + k 2 u = 0,
 ∂x1 (
Sx1
Sx2
dans ΩPML = (Ω ∪ couche),



inc
∂n u = g = −∂n u
7/26
, sur Γ.
(2.3)
Forme faible
8/26
Formulation variationnelle CLA (Version similaire pour les
PML)
Trouver u dans le domaine borné telle que


pour touteZ fct-test v, a(u, v) = L(v), Z




2
a(u, v) =
(∇u · ∇v − k uv)dΩb +
Z Ωb




 L(v) =
gvdΓ
Γ
Σ
ΛuvdΣ,
(2.4)
Forme faible discrétisée
9/26
Formulation variationnelle CLA (Version similaire pour les
PML)
Trouver uh ∈ Vh approximation éléments finis par exemple telle
que

pour toute vecteur-test
vh ∈ Vh , ah (uh , vv ) = Lh (vh ),


Z




ah (uh , vh ) =
(∇h uh · ∇h vh − k 2 uh vh )dΩb,h



Ωb,h
Z




Z




 Lh (vh ) =
+
Λh uh vh dΣh ,
(2.5)
Σh
gh vh dΓh
Γh
La dimension de Vh est égale au nombre de degrés de liberté de la
méthode = noeuds du maillage en éléments finis P1 .
Forme faible discrétisée
10/26
Formulation variationnelle CLA (Version similaire pour les
PML)
Comme on est en haute fréquence, on doit mailler (h) en
fonction de la longueur d’onde λ = 2π/k, nh = densité de
points par longueur d’onde, h = λ/nh . Donc la taille devient
très grande. Effet de pollution numérique empirent la
situation (cf. le point "éléments finis HF").
On a un système linéaire à résoudre: Ah uh = bh
La matrice est complexe, creuse et non défini positive:
solution par une méthode itérative: peu diverger: exemples
Exemple 1
1
2
0.8
0
0.6
Residual history (log)
Imaginary part
n = 100
n = 1000
−2
0.4
0.2
0
−0.2
−4
−6
−8
−0.4
−10
−0.6
−0.8
−1
−12
0
0.2
0.4
0.6
0.8
1
Real part
(a) A1 : Eigenvalues distribution (n = 100)
−14
0
200
400
600
Iteration
1000
1200
(b) A1 : Convergence history
Figure: A1 = diag(1/ℓ2 )1≤ℓ≤n .
11/26
800
Exemple 2
12/26
0.9
1.02
1
0.7
0.98
0.6
0.96
Residual history (log)
Imaginary part
n = 100
0.8
0.5
0.4
0.3
0.94
0.92
0.9
0.2
0.88
0.1
0.86
0
−0.1
−0.2
0.84
−0.1
0
0.1
0.2
0.3
Real part
0.4
0.5
0.6
(a) A2 : Eigenvalues distribution (n =
100)
0.82
0
0.5
1
1.5
Iteration
2
2.5
3
5
x 10
(b) A2 : Convergence history
Figure: A2 = diag(e iℓ /ℓ2 )1≤ℓ≤n .
Exemple 3
1
2
0.8
0
0.6
−2
Residual history (log)
Imaginary part
0.4
0.2
0
−0.2
n = 100
n = 1000
−4
−6
−8
−0.4
−10
−0.6
−12
−0.8
−1
−1
−0.5
0
Real part
0.5
1
(a) A3 : Eigenvalues distribution (n =
1000)
−14
0
0.5
1
2
2.5
3
5
x 10
(b) A3 : Convergence history
Figure: A3 = diag(e iℓ )1≤ℓ≤n .
13/26
1.5
Iteration
Exemples 4 et 5
14/26
2
0
0
−2
−2
Residual history (log)
Residual history (log)
2
−4
−6
n = 100
n = 1000
−8
−10
−4
−6
−8
−10
−12
−14
n = 100
n = 1000
−12
0
0.5
1
1.5
Iteration
2
2.5
3
5
x 10
(a) A4 : Convergence history
−14
0
10
20
30
40
Iteration
50
60
70
80
(b) A5 : Convergence history
Figure: A4 = diag(1 + e iℓ )1≤ℓ≤n , A5 = diag(1.5 + e iℓ )1≤ℓ≤n .
Exemple 6
2
1.2
n = 100
n = 1000
0
1
−2
Residual history (log)
Imaginary part
0.8
0.6
0.4
−4
−6
−8
0.2
−10
0
−0.2
−12
0.8
1
1.2
Real part
1.4
1.6
−14
0
5
10
Iteration
15
20
(a) A6 : Eigenvalues distribution (n = (b) A6 : Convergence history (n =
100)
100)
Figure: A6 = diag(1 + e iℓ /ℓ)1≤ℓ≤n .
15/26
Exemple 7
0.9
2
0.8
0
n = 100
n = 1000
0.7
−2
Residual history (log)
Imaginary part
0.6
0.5
0.4
0.3
−4
−6
−8
0.2
−10
0.1
−12
0
−0.1
0.8
0.9
1
1.1
1.2
1.3
Real part
1.4
1.5
1.6
(a) A7 : Eigenvalues distribution (n =
100)
−14
0
2
4
6
Iteration
10
12
(b) A7 : Convergence history
Figure: A7 = diag(1 + e iℓ /ℓ2 )1≤ℓ≤n .
16/26
8
Si on revient à Hemholtz: exemple en 1D: ]0; 1[, k = 100,
nh = 100
0
2
−0.05
Linear FEM
−0.1
Imaginary part
Residual history (log)
0
−2
−4
−0.2
Full matrix
Real part of the matrix
−0.25
−6
−0.3
−8
−10
−0.15
0
0.5
1
1.5
2
2.5
Iterations
3
3.5
4
4.5
(a) Ah : Convergence history
5
4
x 10
−0.35
−8000
−6000
−4000
−2000
Real part
2000
(b) Ah : Eigenvalues distribution
Figure: Matrix Ah = (Sh − k 2 Mh − ikBh ).
17/26
0
Préconditionneur algébrique
Il y a pas mal de papier sur des préconditionneurs algébriques
Incomplete LU factorization: P ≈ LU ou on enlève des
coefficients dans la factorisation si par exemple ils sont "trop
petits", ou si on en veut pas de plus de tant par (ligne,
colonne)
SParse Approximate Inverse: minimiser une norme ||PA − I ||
ou ||AP − I || pour trouver P
Il existe d’autres extensions de type multi-niveaux ainsi que
d’autres types de préconditionneurs
On retrouve aussi ces techniques en équations intégrales
Marche plutôt pas mal mais les algorithmes divergent quand
même assez vite dès qu’on monte en fréquence k
18/26
Questions
Il y a pas mal de papier sur des préconditionneurs algébriques
En fait, aucun papier n’explique profondément les problèmes:
par exemple: dépendance par rapport à la géométrie, au type
de CLA/PML, paramètres physiques (milieux hétérogènes),
discrétisation → c’est un travail à faire
L’idée serait de passer au calcul pseudo pour nous aider à
proposer des alternative de type analytique, quitte à coupler
après avec des idées algébriques (préconditionneurs hybrides)
19/26
Une première piste
20/26
LU analytique (idée un peu initée par F. Nataf et M. Gander
En fait, on pourrait partir sur une factorisation pour les CLA
A = (∂n + iΛ− )(∂n + iΛ+ ) = LU
et quelque chose de similaire pour les PML (il n’y a plus le
probleme vraiment de la frontiere artificielle, peut etre plus
commode car on sait faire des factorisations avec operateurs a
coefficients variables)
quand je dis "∂n ", ce n’est pas clair: on pourrait penser à
faire les choses localement sur le triangle éléments finis,
globalement sur le domaine de calcul...
Remarquez qu’il faut a priori trouver un opérateur pour les
problème aux limites: donc il faut peut etre investiguer les
théories pseudos pour les problèmes aux limites (je crois qu’il
y a des trucs de Boutet de Monvel?)
Une deuxième piste
21/26
Méthode de " shifted Laplace operators" ( initée par Bayliss,
Goldberg, Turkel et améliorée par plusieurs auteurs
récemment)
L’idée de départ est de préconditionner par ∆−1 ce qui donne
∆−1 A = ∆−1 (∆ + k 2 ) = 1 + k 2 ∆−1
En terme de symbole (valeur propre dans Fourier par
diagonalisation) on voit qu’on obtient 1 − k 2 /||ξ||2 comme
valeur propre. On on a une sorte de cluster autour de 1 pour
l’opérateur Laplacien (attention, ni la condition aux limites ni
celle artificielle ne sont inclues à ce moment). La CLA ou
PML nous emmène dans le plan complexe pour les valeurs
propres. Ce truc marche pas trop mal en basse/moyenne
fréquence car k n’est pas trop grand: çà ressemble à du
Laplace: déconne complet en HF
Une deuxième piste
22/26
Méthode de "Laplace shifted operators" (idée initée Bayliss,
Goldberg, Turkel et améliorée par plusieurs auteurs récemment
Si on fait le parallèle avec ce dont a parlé Marion, on voir
qu’on corrige les hautes fréquences spatiales ||ξ|| grand, soit
ce qui dépend de la discrétisation
∆−1 n’est pas résolu exactement mais de façon approchée
avec des solveurs itératifs. Comme c’est un Laplacien, un
préconditionneur algébrique mache pas trop mal
Une idée qui solutionne partiellement le problème est un shift:
P = (∆ + αk 2 )−1 , où α est à fixer. En pratique, les gens ont
dit que α = 1 + (0.5, 1)i est un bon choix
Une deuxième piste
Pourquoi en fait çà marche: explication en termes de pseudos
Si on fait le shift, le symbole principal de
(∆ + αk 2 )−1 (∆ + αk 2 ), qui correspond en fait à une
approximation des valeurs propres, est
ξ ∈ R2 → −
(1 − ||ξ||2 /k 2 )
(α − ||ξ||2 /k 2 )
C’est en fait la transformation homographique qui à
z = −||ξ/k|| ∈ R− associe
(1 + z)
(α + z)
et qui transforme la droite négative en portion de cercle qui se
trouve du bon côté du plan complexe (selon α) (j’ai fait tous
les calculs analytiques mais je ne les retrouve pas encore)
23/26
Une deuxième piste: et un deuxième petit dessin
24/26
0.5
0.4
0.3
0.2
0.1
0
alpha = 1 + i, z = [−100:0]
−0.1
−0.2
−0.3
−0.4
−0.5
0
0.2
0.4
0.6
0.8
1
Figure: Effet de l’homographie.
Une deuxième piste: et un deuxième petit dessin
25/26
0.5
0.4
0.3
0.2
0.1
k = 50, n_h = 50, alpha = 1 + i
0
−0.1
−0.2
−0.3
−0.4
−0.5
0
0.2
0.4
0.6
0.8
Figure: Un exemple en 1d.
1
Ce qu’on peut faire
26/26
Pour commencer
C’est déjà justifier tout cela par le pseudo, étendre à des choses plus
générales, coefficients variables
Passer à des dimensions supérieures
On peut penser à faire des choses du type racine carrée:
√
−1 √
−1
PA = ∆ + k 2 A ∆ + k 2 pour agir sur la partie propagative
avec Padé complexe (bon pour les solveurs car on ajoute de la
positivité). On peut coupler cela à certaines techniques appelées
préconditionneurs rationnels (Saad)
Passer à Maxwell (voire l’élasticité), du non linéaire (Schrödinger)
Préconditionner des formulations couplées Equations Intégrales pour
le problème extérieur + préconditionneur de ces types pour
Helmholtz intérieur inhomogène
Collaborations: Y. Saad, E. Turkel... pour faire avancer ces
techniques + des couplages avec des choses plus algébriques