+ All Categories
Home > Documents > Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost...

Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost...

Date post: 01-Oct-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
29
Advances in Feel++ : A Domain Specific Embedded Language in C++ for Partial Differential Equations A. Samaké * V. Chabannes * C. Daversin V. Doyeux M. Ismail G. Pena § C. Prud’homme C. Trophime S. Veys * ECCOMAS 2012 Vienna, September 12, 2012 * Université Grenoble 1 / CNRS, LJK LNCMI-G,CNRS- UJF-UPS-INSA Université LIPHY A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 1/1
Transcript
Page 1: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Advances in Feel++ :A Domain Specific EmbeddedLanguage in C++ for Partial

Differential Equations

A. Samaké∗

V. Chabannes∗

C. Daversin†

V. Doyeux‡

M. Ismail‡

G. Pena§

C. Prud’homme¶

C. Trophime†

S. Veys∗

ECCOMAS 2012Vienna, September 12, 2012

∗UniversitéGrenoble 1 / CNRS,LJK†LNCMI-G,CNRS-

UJF-UPS-INSA‡Université

Grenoble 1 / CNRS,LIPHY

§University ofCoimbra, CMUC¶Université de

Strasbourg / CNRS,IRMA

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 1 / 1

Page 2: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

FEEL++ Collaborators

S. Bertoluzza (IMATI/CNR/Pavia)V. Chabannes (UJF/LJK)R. Chakir (UPMC/LJLL)C. Daversin (CNRS/LNCMI)V. Doyeux (UJF/LIPHY)J.M. Gratien (IFPEN)M. Ismail (UJF/LIPHY)P. Jolivet (UPMC/LJLL)F. Nataf (UPMC/LJLL)

G. Pena (UC/CMUC)D. Di Pietro (IFPEN)A. Samake (UJF/LJK)M. Szopos (UDS/IRMA)R. Tarabay (UDS/IRMA)C. Trophime (CNRS/LNCMI)S. Veys (UJF/LJK)+ Master students

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 2 / 1

Page 3: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Outline

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 3 / 1

Page 4: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Motivations

Generative Programming and DS(E)L

Best expressivityusing high

level language

Best perfor-mance using lowlevel language

Complexity ofScientific Com-puting Software

PhysicalModels

AlgebraicMethods

ComputerScience

NumericalMethods

Complexity Types

AlgebraicNumericalModelsComputer science

Numerical and modelcomplexity are better treatedby a high level languageAlgebraic and computerscience complexity performoften better with low levellanguages

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 4 / 1

Page 5: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Motivations

Generative Programming and DS(E)L

Best expressivityusing high

level language

Best perfor-mance using lowlevel language

Complexity ofScientific Com-puting Software

PhysicalModels

AlgebraicMethods

ComputerScience

NumericalMethods

Domain Spe-cific Embedded

Languagefor Galerkin

Methods

Express

Generate

Generative paradigm

distribute/partition complexitydeveloper: The computerscience and algebraiccomplexityuser(s): The numerical andmodel complexity

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 4 / 1

Page 6: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Mathematical Framework

FEEL++: http://www.feelpp.orgFinite Element Embedded Library in C++ : A DS(E)L in C++ for PDEs

FeaturesGeneralized Galerkin (cG, dG) methods in 1D, 2D and 3DSupport for simplices, tensor products and high order ALESupport for various polynomial sets (modal, nodal) of arbitrary order (>=0)Support for parallel computating(Non-)Linear algebra using PETSc/SLEPc and TrilinosDomain specific language embedded in C++ for variational formulationsOperators, function spaces, elements of function spaces (also parallel) ...A computational framework that maps closely the mathematical oneA modern C++ library: use Boost library and C++11 as much as possible

This program is free software; you can redistribute it and/or modify it underthe terms of the GNU LGPL-3.Available in Debian/Ubuntu

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 5 / 1

Page 7: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Mathematical Framework

FEEL++: http://www.feelpp.org

Université de Grenoble: LIPHY and LJK

Dept. of Mathematics, U. Coimbra

CNRS: LNCMI

IFPEN

CNR: IMATI

Copyright (C) 2006-2012 Université de GrenobleCopyright (C) 2006-2012 CNRSCopyright (C) 2009-2012 U. CoimbraCopyright (C) 2005-2009 EPFL

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 6 / 1

Page 8: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Mathematical Framework

Architecture

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 7 / 1

Page 9: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Mathematical Framework

Seamless parallelisation

Hybrid architectures

many nodes, manycores, hybrid nodesMPI, multi-threads,GPU

MPI implementation :

mesh partitioningdof table partitioningPETSc interface

GPU

GPU

GPU

MPI MT SGPUmesh with

partitionning

nodes

cores

The parallelism is completely transparent (implicit use)It can also make explicit (control communications)

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 8 / 1

Page 10: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Mathematical Framework

Mesh(Parallel)

Figure 2.1: Mesh adaptation on3D L-shape

Convexes and associated geometrictransformation (PN, N = 1, 2, 3, 4, 5...)Support for high order ALE mapsGeometric entitites are stored usingBoost.MultiIndexElement-wise partitioning usingScotch/Metis, sorting over process idkeyMesh adaptation (isotropic versusanisotropic)

Example

elements(mesh [, processid]);markedfaces(mesh, marker [, processid]);markededges(mesh, marker [, processid]);

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 9 / 1

Page 11: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Mathematical Framework

Function Spaces(Parallel)

Product of N-function spaces (a mix of scalar,vectorial, matricial,differentbasis types, different mesh types, conforming and non-conforming)Use C++ Variadic templatesUse Boost.MPL and Boost.Fusion heavilyGet each function space and associated “component” spacesAssociated elements/functions of N products and associatedcomponents, can use backend (petsc/slepc)Support periodic and non-periodic spaces

Example

typedef FunctionSpace<Mesh,bases<Lagrange<2,Vectorial>,Lagrange<1,Scalar> > > space_t;

space_t Xh( mesh );auto Uh = Xh.functionSpace<0>();auto x = Xh.element();auto p = x.element<1>(); // view

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 10 / 1

Page 12: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Mathematical Framework

The dof table partitioning

Goal : create the local and global dof tables

local representation :proc0 0 1 2 3 4 5proc1 0 1 2 3 4 5

global representation :proc0 0 1 2 3 4 5proc1 6 7 8

localToGlobal mapping :proc0 0 1 2 3 4 5proc1 1 6 2 7 8 4

•0

•1

•2•

•3

•4

•5

••

(a) proc0

•0

•2•1

•5•

•3•4

(b) proc1

•0

•1

•2•6

•3

•4

•5

•7•8

(c) global

Step 1 : build the local dof table with ghostdofs

Step 2 : build the global dof table withoutghost dofs

the single global dof belongs to theprocess of smallest rankcommunication : update the id ofinterprocess dofs on the global table

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 11 / 1

Page 13: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Mathematical Framework

Operators and Forms (Parallel)

Linear Operators/ Bilinear Forms represented by full, blockwisematrices/vectors

Full matrix(A BT

B C

), Matrix Blocks A, BT , B, C

The link between the variational expression and the algebraicrepresentation

Example

X1 Xh; X2 Vh;auto u = Xh.element(); auto v = Vh.element();// operator T : X1 → X2auto T = LO( Xh, Vh [, backend] );T = integrate(elements(mesh), id(u)*idt(v) );// linear functional f : X2 → Rauto f = LF( Vh [, backend] );T.apply( u, f ); f.apply( v );

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 12 / 1

Page 14: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Mathematical Framework

Seamless Interpolation Tool(Parallel)

MotivationsInterpolation between differentmeshes (h) or function spaces (N)∀d = 1, 2, 3, ∀N,∀Ngeo at dof orquadrature nodesComputation of different operations( id, ∇, ∇·, ∇×,...)ILAGh , ICR

h , IRTh , I

Herh , ...

Some Applications

Multiphysics coupling (e.g. FSI)Fictitious domain meth. (e.g. FBM)Domain decomposition meth. (e.g.Schwartz)

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 13 / 1

Page 15: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Domain decomposition methods

FEEL++: First Strategy for Domain Decomposition

Implicit

Use PETSc parallel (implicit communications)Automatic mesh partitioning using gmsh (Scotch/Metis)FEEL++ data structures are parallel (e.g. Function Spaces...)Use parallel PETSc solvers and (sub-)preconditioners

Krylov SubSpace methods(KSP) and Direct solvers(MUMPS)Preconditioners : Block-Jacobi, ASM, GASM ...

Figure 3.1: Mesh partitioning using gmshA. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 14 / 1

Page 16: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Domain decomposition methods

FEEL++: Second Strategy for Domain Decomposition

Explicit

Make PETSc sequential even though the code is parallel (mpi communicators)

Send and receive complex data structure using Boost.MPI and Boost.Serialization

mesh data structureselements of functions space (traces)

Define Two different communicators

a global one for communication between subdomainsa local one (sub-communicator) that activates only theFEEL++ and PETSc see only the local one and thinks the computations aresequential

Operator interpolation (already available in sequential)

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 15 / 1

Page 17: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Domain decomposition methods

Tools for Substructuring Preconditioners (e.g mortar)

Listing 1: Mass matrix on wirebasket

auto Xh = space_type::New( _mesh=mesh );auto wirebasket = createSubmesh( mesh, markededges(mesh,"WireBasket") );auto Wh = trace_trace_space_type::New( _mesh=wirebasket );auto w = Wh->element();auto z = Wh->element();auto M = M_backend->newMatrix( _test=Wh, _trial=Wh );form2( _trial=Wh, _test=Wh, _matrix=M ) =

integrate(_range=elements(wirebasket), _expr=idt(w)*id(z) );

Listing 2: Jump matrix on interfaces

auto Xh = space_type::New( _mesh=mesh );lag_mesh = mesh->trace( markedfaces( mesh, "marker" ) );auto Lh = trace_space_type::New( lag_mesh );auto u = Xh->element();auto mu = Lh->element();auto B = M_backend->newMatrix( _trial=Xh, _test=Lh );form2( _trial=Xh, _test=Lh, _matrix=B ) =

integrate( elements(lag_mesh), idt(u)*id(mu) );

Extract trace mesh (TDim=RDim-1)

Extract trace of trace mesh (TDim=RDim-2)

Assembly mass matrix on wirebasket

Assembly stiffness matrices on all faces

Assembly jump matrices on all non-mortar sides

Operators trace and lift (hamonic/by constant)

Ω1

Ω2

Γ

(a) mesh 2D (b) mortar in 2D (c) mortar in 3D

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 16 / 1

Page 18: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Fluid-Structure interaction

FEEL++ FSI framework

Strategy :Partionned methodImplicit and Semi-implicit schemesFixed point with Aitken relaxation

Models developped :Fluid model : incompressible Navier-Stokes with ALE framework

ρf∂uf∂t

∣∣∣∣x∗

+ ρf (uf −wf · ∇)uf −∇ · σf = ff

∇ · uf =

with wf the mesh velocity, At ALE map and x = At(x∗)

Structure model : hyper-elastic and compressible with Lagragian framework

ρs∂2ηs∂t2

−∇ · (FsΣs) = fs, Σs = λs (trEs) I + 2µsEs.

FSI coupling conditions : uf = ηs and σf~nf + JAFsΣsFA~ns = 0

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 17 / 1

Page 19: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Fluid-Structure interaction

FSI applications : Pressure pulse propagating in blood flow

Geometry order 2 :

(d) Fluid pressure(disp magnified 10times)

(e) Structure displacement(disp magni-fied 10 times)

Realistic meshes :

(f) Fluid pressure in aorta (216proc) (g) Fluid pressure in artery(108proc)A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 18 / 1

Page 20: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Fluid-Structure interaction

FSI applications : FBMGoal : take into account elastic particles in a fluidflow

Fluid solver use fictitious method domain: FBMFBM principle : Transform the original probleminto several sub problem :

one on the global meshseveral on the local domain(around theperforations)

Figure 4.1: Particle displacement in aflow (parabolic inlet)

Figure 4.2: Particledisplacement in a shearflow

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 19 / 1

Page 21: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Fluid-Structure interaction

Another strategy : FSI with level set methods

Goal : simulate the behavior of inextensible membranes in a fluid flow

Strategy :interface between fluids captured by a level set function φinterfacial forces are projected on the region where |φ| < ε

Lagrange multiplier used to impose inextensibility

Model :Fluid equations : Navier Stokes with ρ(φ), µ(φ),f(φ)Level Set advected by fluid velocity

∂φ

∂t+ u · ∇φ = 0

Figure 4.3: Tanktreading µin = µout

(a) t=100 (b) t=110 (c) t=600

Figure 4.4: Tumbling motion µin >> µout

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 20 / 1

Page 22: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

FEEL++ Reduced Basis Framework

Usage context for reduced basis methods

Parametrized PDEInput-parameter examples : geometric configuration, physical properties,boundary conditions, sources.Output examples : mean temperature over a subdomain, flux on aboundary, etc.

Motivation : rapid and reliable evaluation of input-output relationships

Real-time : parameter-estimation, control...Many-query : sensitivity analysis, optimization....

Objectives

Develop a generic frameworkApplication to industrial problems (when possible, e.g. (non-)linearmultiphysics problems)

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 21 / 1

Page 23: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

FEEL++ Reduced Basis Framework

Reduced basis framework

Offline/OnlineDatabase handling

Auto. diff.

SpecificationsGeometry,

PDE,...µ0, µ1, ..., µP

Affine de-composition

to be automatedCode generator

ParametricFEM

CRB

SCM

EIM

NIRB

Cmd line

Python

...

Octave

Work in progress

Sensitivity analysis

OpenTURNS‖ can be used and is interfaced with python scripts.

‖http://www.openturns.orgA. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 22 / 1

Page 24: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

FEEL++ Scalability

PETSC/gasm Solver: Time and IterationsSkip

10−1.6 10−1.4 10−1.2 10−1 10−0.8

10−1

100

101

102

P1(64)P2(64)P1(512)P2(512)

(a) solver time vs h

10−1.6 10−1.4 10−1.2 10−1 10−0.8101.2

101.4

101.6

101.8

102

102.2

P1(64)P2(64)P1(512)P2(512)

(b) solver iterations vs h

103 104 105 106

10−1

100

101

102

P1(64)P2(64)P1(512)P2(512)

(c) solver time vs ndof

103 104 105 106101.2

101.4

101.6

101.8

102

102.2

P1(64)P2(64)P1(512)P2(512)

(d) solver iterations vs ndof

104 105 106 107 108

10−1

100

101

102

P1(64)P2(64)P1(512)P2(512)

(e) solver time vs nnz

104 105 106 107 108101.2

101.4

101.6

101.8

102

102.2

P1(64)P2(64)P1(512)P2(512)

(f) solver iterations vs nnz

Figure 6.1: Laplacian in 3D P1 and P2 using the PETSC/gasm solver with lu in thesubdomains from 64 to 512 processorsA. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 23 / 1

Page 25: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

FEEL++ Scalability

Strong Scalability

100 200 300 400 500

100

101

102

P1P2

(a) solver time vs proc

100 200 300 400 500

20

30

40

50

60

P1P2

(b) rel. time vs proc

100 200 300 400 500

80

100

120

P1P2

(c) solver iterations vs proc

100 200 300 400 500

1

1.1

1.2

1.3

P1P2

(d) rel. iterations vs proc

101.8 102 102.2 102.4 102.6

10−1

10−0.8

10−0.6

10−0.4

P1P2

(e) assembly(matrix) vs proc

101.8 102 102.2 102.4 102.610−1

100

P1P2

(f) assembly(vector) vs proc

Figure 6.2: Laplacian in 3D P1 and P2 using the PETSC/gasm solver with lu in thesubdomains from 64 to 512 processors

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 24 / 1

Page 26: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

FEEL++ Scalability

Weak Scalability

100 200 300 400 500

10−1

100

101 P1P2

(a) solver time vs proc

100 200 300 400 500

20

40

60

80

100

120

140

P1P2

(b) solver iterations vs proc

100 200 300 400 500

1

2

3

4

5

P1P2

(c) rel. iterations vs proc

100 200 300 400 500

5 · 10−2

0.1

0.15

0.2

0.25P1P2

(d) assembly(matrix) vs proc

100 200 300 400 500

0.1

0.15

0.2

0.25

0.3 P1P2

(e) assembly(vector) vs proc

Figure 6.3: Laplacian in 3D P1 and P2 using the PETSC/gasm solver with lu in thesubdomains from 64 to 512 processors

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 25 / 1

Page 27: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Conclusions and Perspectives

Conclusions and Perspectives

ConclusionsParallelisation of Feel++ (almost) doneFirst scalability results (almost) okDomain decomposition framework (Schwarz, mortar, three fields)Generative programming for PDE works thanks to C++ (GCC andC++11) and compilation time improves (not there yet but better)Feedback: fast prototyping(at least for methodology), domain specificlanguage, devil lurks in the details (interpolation, ...), used by physicist inmicro-fluidicWide range of applications

Perspectives

New preconditioners (e.g. substructuring one for mortar in 2D and 3D)Exploit hybrid architectures (CPU/GPGPU)Application to multi-physics/multiscale problems

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 26 / 1

Page 28: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Conclusions and Perspectives

References I

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 27 / 1

Page 29: Advances in Feel++ : A Domain Specific Embedded Language ......A modern C++ library: use Boost library and C++11 as much as possible This program is free software; you can redistribute

Thank you !

A. SAMAKÉ and al. (LJK and al.) DSEL FEEL++ September 12, 2012 28 / 1


Recommended