La décomposition de domaine
Transcription
La décomposition de domaine
Simulation multidomaine pour l’écoulement et le transport en milieu poreux. Application au stockage de déchets. Vincent Martin (Inria-Rocquencourt, Projet Estime, et Andra) J. Jaffré, J. Roberts, F. Clément, M. Kern, A. Sboui, A. Vodicka (Inria-Rocquencourt, projet Estime) R. Di Cosmo (Paris VII), P. Weis (INRIA-Rocquencourt, projet Cristal) F. Nataf (Ecole Polytechnique, Cmap) I. Faille, L. Saas, F. Willien (Ifp, Rueil Malmaison) First 1 Plan • Décomposition de domaines non conformes avec des conditions d’interface de type Robin. Couplage grâce à l’environnement parallèle OCamlP3l. • Etude théorique et numérique de deux méthodes de raccord d’ordre 1 en espace pour une équation de convection-diffusion. First 2 Motivations • Calcul sur de larges domaines • Division naturelle en sous-domaines physiques • Echelles de temps et d’espace très variables • Proposer à l’Andra des techniques modernes pour les calculs phénoménologiques et de sûreté La décomposition de domaines, un outil fondamental First 3 La décomposition de domaine sans recouvrement But : Découpe un problème en sous-problèmes plus simples et plus petits. • sépare the différentes couches géologiques suivant la physique. • divise chaque couche en problèmes plus petits. • facilite le parrallélisme, améliore le conditionnement. • permet l’utilisation de maillages non-conformes ? “zoom” autour du stockage. ? construction séparée des maillages des sous-domaines. First 4 La décomposition de domaine DDM basée sur des conditions de Robin : (cf. Arbogast, Yotov (97), Γ2 and Achdou, Japhet, Maday, Nataf Ω 2 Γ1, 2 (99)). Ω1 à l’interface: ~ n=~ n1 = −~ n2 Transmission Γ1 projection L2. Etant donné (λ01, λ02), résoudre itérativement: Résoudre (en parallèle) dans les sous-domaine: div uik uik −uik · ni + αpki = qi in Ωi, i = 1, 2 = −Ki∇pki = λk−1 i on Γ1, 2 Calculer : µki = uik · ni + αpki , i = 1, 2. Projeter µki sur l’interface du maillage voisin: λkj = Pi7→j µki , i 6= j First 5 Application au stockage dans l’argile 1m 40 m 20 m 10 m 40 m 10 m 2m 1020 m : 50 alveoles 20 m 40 m 100 m 40 m 1100 m • Sous domaine externe : 110 × 10 (mailles carrées : 10m × 10m). • Sous domaine interne : 4080 × 80 (mailles carrées : 0.25m × 0.25m). First 6 Expérience numérique BiCGStab: 34 itérations (en quelques minutes) pour 8528 inconnues d’interface et plus de 327 000 mailles. First 7 Le couplage de codes • coupler différents codes existants traitant différentes physiques. ? Ex.: Transport - Chimie ? Thermo - Mécanique... • coupler un code avec lui-même: décomposition de domaine. Les solutions actuelles : Corba, MPI Une solution nouvelle : utiliser OCamlP3L First 8 Le couplage de code avec OCamlP3L OCaml: un langage fonctionnel fonctionnel typé et sûr See http://www.ocaml.org OCamlP3L: un environnement de programmation fonctionnel parallèle: • modèle par squelettes (skeletons) : brève description de la structure parallèle du code. • codes plutôt simples et courts : couplage en 120 lignes. • compilation, debugage, tests en sequentiel. • recompilation et exécution parallèle!! • See http://www.ocamlp3l.org First 9 Résultats numériques: 3D résultats 3D avec le code C++ : LifeV • Elements Finis Mixtes Hybrides. • maillages généraux hexahédriques. • librairies pour l’algébre linéaire (UMFPack pour le solveur LU creux). • algorithme de Robin non-conforme. Tests: • avec des maillages réguliers. • opérateur : Laplacien. • sur un cluster: 16 Xeon biprocesseurs: 2.8 GHz, mémoire: 2 GB. First 10 INRIA-MODULEF Fortran 3D couleur 3.04 0.01s INRIA-MODULE 11 le 04:11:1903 a 18h 2 First Conclusions • OCamlP3L: moyen efficace et sûr de coupler des codes en parallèle ? ? ? ? parallelisation sûre! développement rapide. bonne efficacité. engorgement possible car les vecteurs d’interface sont transférés par 1 process • Difficultés liées au couplage : ? temps de développement pour modifier le code existant pour le rendre “couplable” ? bugs dans les parties non-OCaml des codes! First 12 Application au stockage: First 13 Pour la suite • Choix optimal de α (poster de Nataf). • Mise en œuvre du transport (poster de Sboui). • Ecoulement diphasique. First 14 Modéliser les fractures comme des interfaces Exemple : Kf anisotrope, non-constante Kf,τ = 200 Kf,ν = 1/200 d = 0.01 chute de pression le long de la fracture ξ = 1 1 1 0.9 0.8 0.8 0.6 0.7 0.6 0.4 0.5 0.2 0.4 0 1 0.3 2 1.5 0.5 1 0.5 0 0 Pression 0.2 0.1 0 0 0.5 1 1.5 2 Vitesse First 15 Analyse Numérique Raccord de maillages non conformes pour une méthode de volumes finis F. Nataf, travail en commun avec I. Faille, L. Saas et F. Willien (IFP) La méthode TPFA (Two Point Flux Approx.) est d’ordre 1/2. Travail réalisé: Etude théorique et tests numériques de deux méthodes de raccord d’ordre 1 en espace avec des conditions d’interface arbitraires pour une équation de convection-diffusion. • La première est basée sur des projections L2 sur des fonctions constantes par morceaux. Une interface doit être sous maillage de sa voisine. • La seconde est basée sur une reconstruction linéaire aux interfaces avant la phase de projection sur des fonctions linéaires par morceaux (et discontinues) First 16 La robustesse vis à vis du saut des coefficients est obtenue par l’introduction d’un troisième sous-domaine très fin entre les blocs non conformes. Une note au CRAS et un article dans SIAM Num. Anal. soumis. ε Ω1 Ω2 Ω1 Ω3 Ω2 First 17 Modèle de faille unidimensionnelle Travail en commun avec E. Flauraud, I. Faille et R. Masson (IFP) Obtention d’un modèle unidimensionnelle sans hypothèse sur les sauts de perméabilité. Tests numériques du modèle et d’une méthode de décomposition de domaine adaptée. Note au CRAS à paraître. First 18 Algèbre linéaire : Conditions d’interface optimisées pour les MDD F. Nataf, travail en commun avec E. Flauraud Construction algébrique de conditions d’interface (CI) optimisées pour des méthodes de décomposition de domaine de type Schwarz. 0 10 La courbe bid0 correspond à des conditions qui ne prennent pas en compte les sauts de perméabilité. Le plateau est dû à l’existence de très petites valeurs propres isolées. Un des remèdes classiques est l’utilisation de techniques de "deflation" qui nécessite le calcul -1 10 -2 10 opt0 -3 10 opt2 -4 10 -5 10 bid0 -6 10 -7 10 0 5 résidu vs. 10 15 20 25 30 nombre d’itérations des vecteurs propres associés. L’emploi de conditions optimisées d’ordre 2 (opt2) nécessite seulement le calcul de la plus petite valeur propre. First 19 Algorithme Phase d’initialisation: Calcule et factorise les matrices des sous domaines. Calcule le second membre d’interface. Calcule les matrices de projection L2. “Matrix-free” produit Matrice vecteur appelé par BiCGStab. Pour chaque sous domaine, faire en parallèle : 1. restriction aux interfaces. 2. résolution du problème de sous domaine. 3. projection L2 d’un sous domaine à son voisin. 4. prolongement d’une interface au vecteur complet. Domain Decomposition back First 20 OcamlP3L: Code à coupler Code externe (C++ solveur de sous-domaines : operateur Robin -> Robin): int main() { SubdomainPb.initialize(); while (true) { cin >> SubdomainPb.InputInterfaceVector; SubdomainPb.computeRHS(); // using InputInterfaceVector SubdomainPb.solveLinearSystem(); // direct solver SubdomainPb.computeOutputInterfaceVector(); cout << SubdomainPb.OutputInterfaceVector; } } Algorithm First 21 OcamlP3L: Code de Couplage Code de couplage (OcamlP3l): let subdomain_solver = ...;; let compute_all_sbd = parfun (mapvector (seq subdomain_solver, nbsbd));; pardo let x let let let (function () -> aax = (function x -> - projection (compute_all_sbd x)) in axpy,x0,b = ... in algorithm = bicgstab in result = algorithm axpy aax x0 b);; Algorithm First 22 Résultats numériques: 3D, cas Non Conforme Extensibilité: • Nombre de mailles par sous domaine ≈ 50 000 = Cst. • Nombre d’inconnues par sous domaine = ≈ 150 000 = Cst. • Charge constante par processeur. • Calculs sur 16 bi-processeurs (2 GB de mémoire chacun). • La factorisation nécessite ≈ 1.5 GB de mémoire. First 23 Résultats numériques: 3D, cas Non Conforme (Nx, Ny , Nz ) # SD CPU NC CPU Col Iter # tot. mailles 1×1×1 1 17020 17020 0 51 200 1×1×2 2 44029 26025 13 100 604 1×1×4 4 30050 25012 16 208 046 1×1×8 8 32036 25003 18 386 092 1 × 1 × 16 16 41008 29013 23 804 654 1×2×2 4 39033 29014 19 201 878 1×2×4 8 50053 27057 28 398 916 1×2×8 16 34013 32 816 904 1×4×4 16 37005 31028 26 785 496 2×2×2 8 37037 33025 30 421 691 2×2×4 16 45005 31000 31 812 194 First 24