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