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