introduction to freefem - with an emphasis on parallel...

214
INTRODUCTION TO FREEFEM WITH AN EMPHASIS ON PARALLEL COMPUTING Pierre Jolivet http://jolivet.perso.enseeiht.fr/FreeFem-tutorial Browser shortcuts: Ctrl + f fit to width/height Ctrl + g go to a page # Ctrl + PgDwn next page Ctrl + PgUp previous page v2020.07

Upload: others

Post on 09-Feb-2021

2 views

Category:

Documents


0 download

TRANSCRIPT

  • INTRODUCTION TO FREEFEMWITH AN EMPHASIS ON PARALLEL COMPUTING

    Pierre Jolivethttp://jolivet.perso.enseeiht.fr/FreeFem-tutorial

    Browser shortcuts: ◦ Ctrl + f fit to width/height

    ◦ Ctrl + g go to a page #

    ◦ Ctrl + PgDwn next page

    ◦ Ctrl + PgUp previous page

    v2020.07

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial

  • INTRODUCTION

  • ACKNOWLEDGEMENTS I

    ◦ University of Tsukuba, Tokyo, Japan◦ Institute of Mathematics, University of Seville, Spain◦ CMAP, École Polytechnique, France

    1

  • ACKNOWLEDGEMENTS II

    ◦ FreeFEM BDFL Frédéric Hecht◦ contributions from Christopher M. Douglas◦ HPDDM feedbacks

    • Pierre-Henri Tournier• Pierre Marchand

    ◦ PETSc/SLEPc feedbacks• Johann Moulin• Julien Garaud

    2

  • PREREQUISITES (THE MORE THE BETTER)

    ◦ FreeFEM [Hecht 2012] https://github.com/FreeFem/FreeFem-sources◦ Gmsh [Geuzaine and Remacle 2009] http://gmsh.info◦ ParaView https://www.paraview.org◦ MPI https://www.mpi-forum.org◦ HPDDM [Jolivet, Hecht, Nataf, et al. 2013] https://github.com/hpddm/hpddm◦ PETSc [Balay et al. 1997] https://gitlab.com/petsc/petsc◦ SLEPc [Hernandez et al. 2005] https://gitlab.com/slepc/slepc

    3

    https://github.com/FreeFem/FreeFem-sourceshttp://gmsh.infohttps://www.paraview.orghttps://www.mpi-forum.orghttps://github.com/hpddm/hpddmhttps://gitlab.com/petsc/petschttps://gitlab.com/slepc/slepc

  • PROGRAM OF THE LECTURE

    1. Introduction

    2. Finite elements

    3. FreeFEM

    4. Shared-memory parallelism

    5. Distributed-memory parallelism

    6. Overlapping Schwarz methods

    7. Substructuring methods

    8. PETSc

    9. SLEPc

    10. Applications

  • FINITE ELEMENTS

  • MODEL PROBLEM

    −∆u = f in Ω

    u = gD on ΓD∂nu = gN on ΓN

    x

    y

    ◦ essential boundary conditions◦ natural boundary conditions

    5

  • MODEL PROBLEM

    −∆u = f in Ωu = gD on ΓD

    ∂nu = gN on ΓN

    ΓD

    x

    y

    ◦ essential boundary conditions

    ◦ natural boundary conditions

    5

  • MODEL PROBLEM

    −∆u = f in Ωu = gD on ΓD

    ∂nu = gN on ΓN

    ΓD

    ΓN

    x

    y

    ◦ essential boundary conditions◦ natural boundary conditions

    5

  • VARIATIONAL FORMULATION

    Green’s theoremFind u ∈ H1(Ω) such that∫

    ∇u · ∇v =∫Ω

    f v+∫ΓN

    gN v, ∀v ∈ H1ΓD(Ω)

    u = gD on ΓD

    ◦ unknown function u◦ test function v

    6

  • VARIATIONAL FORMULATION

    Green’s theoremFind u ∈ H1(Ω) such that∫

    ∇u · ∇v =∫Ω

    f v+∫ΓN

    gN v, ∀v ∈ H1ΓD(Ω)

    u = gD on ΓD

    ◦ unknown function u◦ test function v

    6

  • MESH AND FINITE ELEMENTS

    ◦ Ω discretized by Ωh with nh elements◦ u discretized by uh =

    ∑Nhi=1 uh(i)φi, smooth w.r.t. Ωh

    uh ∈ H1(Ωh) ⇐⇒ uh is continuous◦ basis functions {φi}Nhi=1

    7

  • MESH AND FINITE ELEMENTS

    ◦ Ω discretized by Ωh with nh elements◦ u discretized by uh =

    ∑Nhi=1 uh(i)φi, smooth w.r.t. Ωh

    uh ∈ H1(Ωh) ⇐⇒ uh is continuous

    ◦ basis functions {φi}Nhi=1

    7

  • MESH AND FINITE ELEMENTS

    ◦ Ω discretized by Ωh with nh elements◦ u discretized by uh =

    ∑Nhi=1 uh(i)φi, smooth w.r.t. Ωh

    uh ∈ H1(Ωh) ⇐⇒ uh is continuous◦ basis functions {φi}Nhi=1

    7

  • ASSEMBLY PROCEDURES

    Matrix

    ∀(i, j) ∈ J1;NhK2,Aij = ∫Ωh

    ∇φj · ∇φi

    =⇒ only integrate in the intersection of both supports

    Right-hand side

    ∀i ∈ J1;NhK,bi = ∫Ωh

    f φi +∫ΓhN

    gN φi

    =⇒ numerical integration using quadrature rules

    8

  • ASSEMBLY PROCEDURES

    Matrix

    ∀(i, j) ∈ J1;NhK2,Aij = ∫Ωh

    ∇φj · ∇φi

    =⇒ only integrate in the intersection of both supports

    Right-hand side

    ∀i ∈ J1;NhK,bi = ∫Ωh

    f φi +∫ΓhN

    gN φi

    =⇒ numerical integration using quadrature rules

    8

  • ESSENTIAL BOUNDARY CONDITIONS

    GD subset of unknowns associated to Dirichlet BC

    ◦ nonsymmetric elimination

    Ax =[AGDGD AGDGD0 IGDGD

    ][xGDxGD

    ]=

    [bGDgD

    ]

    ◦ symmetric elimination

    Ax =[AGDGD 00 IGDGD

    ][xGDxGD

    ]=

    [bGD − AGDGDgD

    gD

    ]

    ◦ penalization

    Ax =[AGDGD AGDGDAGDGD AGDGD + 10

    30IGDGD

    ][xGDxGD

    ]=

    [bGD

    1030gD

    ]

    9

  • ESSENTIAL BOUNDARY CONDITIONS

    GD subset of unknowns associated to Dirichlet BC

    ◦ nonsymmetric elimination

    Ax =[AGDGD AGDGD0 IGDGD

    ][xGDxGD

    ]=

    [bGDgD

    ]

    ◦ symmetric elimination

    Ax =[AGDGD 00 IGDGD

    ][xGDxGD

    ]=

    [bGD − AGDGDgD

    gD

    ]

    ◦ penalization

    Ax =[AGDGD AGDGDAGDGD AGDGD + 10

    30IGDGD

    ][xGDxGD

    ]=

    [bGD

    1030gD

    ]

    9

  • ESSENTIAL BOUNDARY CONDITIONS

    GD subset of unknowns associated to Dirichlet BC

    ◦ nonsymmetric elimination

    Ax =[AGDGD AGDGD0 IGDGD

    ][xGDxGD

    ]=

    [bGDgD

    ]

    ◦ symmetric elimination

    Ax =[AGDGD 00 IGDGD

    ][xGDxGD

    ]=

    [bGD − AGDGDgD

    gD

    ]

    ◦ penalization

    Ax =[AGDGD AGDGDAGDGD AGDGD + 10

    30IGDGD

    ][xGDxGD

    ]=

    [bGD

    1030gD

    ]9

  • FREEFEM

    [LINK TO THE EXAMPLES]

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_3

  • HISTORY

    1987 MacFem/PCFem by Pironneau1992 FreeFem by Pironneau, Bernardi, Hecht, and Prud’homme1996 FreeFem+ by Pironneau, Bernardi, and Hecht1998 FreeFem++ by Hecht, Pironneau, and Ohtsuka2008 version 32014 version 3.34 with distributed-memory parallelism2018 moving to GitHub2019 version 4, rebranded as FreeFEM

    10

  • INSTALLATION

    ◦ packages available for most OSes• Windows• macOS• Debian

    ◦ compilation from the sources for more flexibility• custom PETSc/SLEPc installation• develop branch

    ◦ on the cloud• https://www.rescale.com• http://qarnot.com

    =⇒ https://community.freefem.org

    11

    https://www.rescale.comhttp://qarnot.comhttps://community.freefem.org

  • INSTALLATION

    ◦ packages available for most OSes• Windows• macOS• Debian

    ◦ compilation from the sources for more flexibility• custom PETSc/SLEPc installation• develop branch

    ◦ on the cloud• https://www.rescale.com• http://qarnot.com

    =⇒ https://community.freefem.org11

    https://www.rescale.comhttp://qarnot.comhttps://community.freefem.org

  • STANDARD COMPILATION PROCESS I

    ◦ remove any previous instance of FreeFEM◦ install gcc/clang and gfortran◦ make sure you have a working MPI implementation

    12

  • STANDARD COMPILATION PROCESS II

    > git clone https://github.com/FreeFem/FreeFem-sources> cd FreeFem-sources> git checkout develop> autoreconf -i> ./configure --enable-download --disable-iohdf5--with-hdf5=no --prefix=${PWD}

    > cd 3rdparty/ff-petsc> make petsc-slepc> cd -> ./reconfigure> make

    12

  • BINARIES

    ◦ FreeFem++◦ FreeFem++-mpi◦ ffglut◦ ffmedit◦ ff-c++

    Basic parameters◦ -ns◦ -nw/-wg◦ -v 0

    script not printedgraphical output deactivatedlevel of verbosity

    13

  • mesh AND mesh3 [EXAMPLE2.EDP]

    Structured meshes◦ in 2D, square◦ in 3D, cube

    Unstructured meshes◦ buildmesh◦ interface with Gmsh, TetGen [Si 2013], and MMG

    Online visualization◦ mostly for debugging purposes◦ prefer medit over plot in 3D

    14

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_3/example2.edp

  • fespace [EXAMPLE3.EDP]

    ◦ formal relationship between a mesh and a FE◦ one accessible member .ndof◦ may be used to define finite element functions

    15

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_3/example3.edp

  • fespace [EXAMPLE3.EDP]

    ◦ formal relationship between a mesh and a FE◦ one accessible member .ndof◦ may be used to define finite element functions

    15

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_3/example3.edp

  • varf AND on [EXAMPLE4.EDP]

    ◦ bilinear forms◦ linear forms◦ boundary conditions◦ dynamic definition◦ instantiated to assemble matrices or vectors◦ qforder to change integration rules

    16

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_3/example4.edp

  • varf AND on [EXAMPLE4.EDP]

    ◦ bilinear forms◦ linear forms◦ boundary conditions◦ dynamic definition◦ instantiated to assemble matrices or vectors◦ qforder to change integration rules

    16

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_3/example4.edp

  • matrix AND set [EXAMPLE5.EDP]

    ◦ assemble a varf using a pair of fespaces◦ variable sym to assemble the upper triangular part◦ matrix–vector products◦ specify a solver for linear systems with set

    Essential boundary conditions◦ tgv = -1 for nonsymmetric elimination◦ tgv = -2 for symm. elim. (careful about the RHS)◦ tgv = 1e+30 for penalization

    17

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_3/example5.edp

  • matrix AND set [EXAMPLE5.EDP]

    ◦ assemble a varf using a pair of fespaces◦ variable sym to assemble the upper triangular part◦ matrix–vector products◦ specify a solver for linear systems with set

    Essential boundary conditions◦ tgv = -1 for nonsymmetric elimination◦ tgv = -2 for symm. elim. (careful about the RHS)◦ tgv = 1e+30 for penalization

    17

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_3/example5.edp

  • real[int] AND OTHER ARRAYS [EXAMPLE6.EDP]

    ◦ real[int,int]◦ real[int][int]◦ complex[int]◦ matrix[int], string[int]◦ formal array of finite element functions

    Common members and methods◦ .n and .m◦ .resize◦ =, +=, /=

    18

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_3/example6.edp

  • ADDITIONAL PLUGINS [EXAMPLE7.EDP]

    ◦ keyword load◦ load "something" =⇒ ff-c++ -auto something.cpp◦ FreeFEM objects manipulated in C++/Fortran

    19

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_3/example7.edp

  • func [EXAMPLE7.EDP]

    ◦ user-defined functions◦ may be passed to external codes◦ useful for matrix-free computations◦ LinearCG, EigenValue

    20

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_3/example7.edp

  • macro [EXAMPLE7.EDP]

    ◦ evaluated when parsing input files◦ defined on the command line -DmacroName=value◦ conditional statements using IFMACRO

    21

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_3/example7.edp

  • SUBMESH [EXAMPLE8.EDP]

    ◦ trunc optional parameter new2old◦ + restrict to go from one fespace to another◦ useful to avoid (costly) interpolations◦ meshes in multiphysics, e.g., solid + fluid domains

    22

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_3/example8.edp

  • SHARED-MEMORY PARALLELISM

    [LINK TO THE EXAMPLES]

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_4

  • MOTIVATION

    Meshgeneration

    Right-handside

    assembly

    Matrixassembly

    Linear solve

    Solutionexporting

    0

    20

    40

    60

    80

    Time(s)

    23

  • MOTIVATION

    Meshgeneration

    Right-handside

    assembly

    Matrixassembly

    Linear solve

    Solutionexporting

    0

    20

    40

    60

    80

    Time(s)

    Parallelism is key for performance23

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Shared-memory parallelism (pthreads, OpenMP)◦ global address space◦ minimize critical sections◦ mostly suited to small-scale architectures

    24

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_4/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Shared-memory parallelism (pthreads, OpenMP)◦ global address space◦ minimize critical sections◦ mostly suited to small-scale architectures

    24

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_4/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Shared-memory parallelism (pthreads, OpenMP)◦ global address space◦ minimize critical sections◦ mostly suited to small-scale architectures

    Color #1: 10 triangles

    24

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_4/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Shared-memory parallelism (pthreads, OpenMP)◦ global address space◦ minimize critical sections◦ mostly suited to small-scale architectures

    Color #1: 10 trianglesColor #2: 11 triangles

    24

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_4/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Shared-memory parallelism (pthreads, OpenMP)◦ global address space◦ minimize critical sections◦ mostly suited to small-scale architectures

    Color #1: 10 trianglesColor #2: 11 trianglesColor #3: 8 triangles

    24

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_4/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Shared-memory parallelism (pthreads, OpenMP)◦ global address space◦ minimize critical sections◦ mostly suited to small-scale architectures

    Color #1: 10 trianglesColor #2: 11 trianglesColor #3: 8 trianglesColor #4: 10 triangles

    24

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_4/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Shared-memory parallelism (pthreads, OpenMP)◦ global address space◦ minimize critical sections◦ mostly suited to small-scale architectures

    Color #1: 10 trianglesColor #2: 11 trianglesColor #3: 8 trianglesColor #4: 10 trianglesColor #5: 9 triangles

    24

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_4/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Shared-memory parallelism (pthreads, OpenMP)◦ global address space◦ minimize critical sections◦ mostly suited to small-scale architectures

    Color #1: 10 trianglesColor #2: 11 trianglesColor #3: 8 trianglesColor #4: 10 trianglesColor #5: 9 trianglesColor #6: 8 triangles

    24

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_4/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Shared-memory parallelism (pthreads, OpenMP)◦ global address space◦ minimize critical sections◦ mostly suited to small-scale architectures

    Color #1: 10 trianglesColor #2: 11 trianglesColor #3: 8 trianglesColor #4: 10 trianglesColor #5: 9 trianglesColor #6: 8 trianglesColor #7: 4 triangles

    24

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_4/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Shared-memory parallelism (pthreads, OpenMP)◦ global address space◦ minimize critical sections◦ mostly suited to small-scale architectures

    Color #1: 10 trianglesColor #2: 11 trianglesColor #3: 8 trianglesColor #4: 10 trianglesColor #5: 9 trianglesColor #6: 8 trianglesColor #7: 4 trianglesColor #8: 6 triangles

    24

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_4/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Shared-memory parallelism (pthreads, OpenMP)◦ global address space◦ minimize critical sections◦ mostly suited to small-scale architectures

    Color #1: 10 trianglesColor #2: 11 trianglesColor #3: 8 trianglesColor #4: 10 trianglesColor #5: 9 trianglesColor #6: 8 trianglesColor #7: 4 trianglesColor #8: 6 trianglesColor #9: 1 triangle

    24

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_4/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Shared-memory parallelism (pthreads, OpenMP)◦ global address space◦ minimize critical sections◦ mostly suited to small-scale architectures

    Color #1: 10 trianglesColor #2: 11 trianglesColor #3: 8 trianglesColor #4: 10 trianglesColor #5: 9 trianglesColor #6: 8 trianglesColor #7: 4 trianglesColor #8: 6 trianglesColor #9: 1 triangleColor #10: 1 triangle

    24

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_4/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Shared-memory parallelism (pthreads, OpenMP)◦ global address space◦ minimize critical sections◦ mostly suited to small-scale architectures

    Color #1: 10 trianglesColor #2: 11 trianglesColor #3: 8 trianglesColor #4: 10 trianglesColor #5: 9 trianglesColor #6: 8 trianglesColor #7: 4 trianglesColor #8: 6 trianglesColor #9: 1 triangleColor #10: 1 triangle

    24

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_4/example1.edp

  • OTHER KERNELS

    ◦ efficient assembly is hard (especially for low-order FE)◦ linear algebra◦ exact factorizations (LU or LDLH)

    25

  • DIRECT SOLVERS AND BLAS

    ◦ three options• MKL PARDISO, Intel [EXAMPLE2.EDP]• Dissection [Suzuki and Roux 2014]• MUMPS_seq

    ◦ MKL for dense linear algebra [EXAMPLE3.EDP]◦ be careful with OMP_NUM_THREADS

    26

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_4/example2.edphttp://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_4/example3.edp

  • DISTRIBUTED-MEMORY PARALLELISM

    [LINK TO THE EXAMPLES]

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_5

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Distributed-memory parallelism (MPI)◦ local address space◦ distribute data efficiently to minimize communication◦ orthogonal to shared-memory parallelism

    27

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_5/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Distributed-memory parallelism (MPI)◦ local address space◦ distribute data efficiently to minimize communication◦ orthogonal to shared-memory parallelism

    27

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_5/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Distributed-memory parallelism (MPI)◦ local address space◦ distribute data efficiently to minimize communication◦ orthogonal to shared-memory parallelism

    Subdomain #1: 17 triangles

    27

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_5/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Distributed-memory parallelism (MPI)◦ local address space◦ distribute data efficiently to minimize communication◦ orthogonal to shared-memory parallelism

    Subdomain #1: 17 trianglesSubdomain #2: 17 triangles

    27

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_5/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Distributed-memory parallelism (MPI)◦ local address space◦ distribute data efficiently to minimize communication◦ orthogonal to shared-memory parallelism

    Subdomain #1: 17 trianglesSubdomain #2: 17 trianglesSubdomain #3: 17 triangles

    27

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_5/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Distributed-memory parallelism (MPI)◦ local address space◦ distribute data efficiently to minimize communication◦ orthogonal to shared-memory parallelism

    Subdomain #1: 17 trianglesSubdomain #2: 17 trianglesSubdomain #3: 17 trianglesSubdomain #4: 17 triangles

    27

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_5/example1.edp

  • IMPACT ON THE FINITE ELEMENT METHOD [EXAMPLE1.EDP]

    Distributed-memory parallelism (MPI)◦ local address space◦ distribute data efficiently to minimize communication◦ orthogonal to shared-memory parallelism

    Subdomain #1: 17 trianglesSubdomain #2: 17 trianglesSubdomain #3: 17 trianglesSubdomain #4: 17 triangles

    27

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_5/example1.edp

  • MESSAGE PASSING INTERFACE [EXAMPLE2.EDP]

    FreeFem++-mpi◦ just like FreeFem++, but with MPI◦ a friendly approach to message passing (like mpi4py)◦ some new types like mpiComm or mpiRequest◦ no problem with mesh, matrix, arrays

    28

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_5/example2.edphttps://mpi4py.readthedocs.io/en/stable/

  • ASSEMBLY AND DIRECT SOLVERS

    ◦ naive approach to distributed computing◦ assuming some global variables may be replicated

    Legacy interfaces

    ◦ MUMPS [Amestoy et al. 2001]◦ PaStiX [Hénon et al. 2002]◦ SuperLU_DIST [Li 2005]

    29

  • ASSEMBLY AND DIRECT SOLVERS

    ◦ naive approach to distributed computing◦ assuming some global variables may be replicated

    Legacy interfaces

    ◦ MUMPS [Amestoy et al. 2001]◦ PaStiX [Hénon et al. 2002]◦ SuperLU_DIST [Li 2005]

    29

  • ASSEMBLY AND DIRECT SOLVERS

    ◦ naive approach to distributed computing◦ assuming some global variables may be replicated

    Legacy interfaces

    ◦ MUMPS [Amestoy et al. 2001]◦ PaStiX [Hénon et al. 2002]◦ SuperLU_DIST [Li 2005]

    29

  • ASSEMBLY AND DIRECT SOLVERS

    ◦ naive approach to distributed computing◦ assuming some global variables may be replicated

    Legacy interfaces⇐ use at your OWN RISK!

    ◦ MUMPS [Amestoy et al. 2001]◦ PaStiX [Hénon et al. 2002]◦ SuperLU_DIST [Li 2005]

    29

  • PARAVIEW

    ◦ more powerful postprocessing tool◦ handle distributed solutions◦ generate movies if needed◦ savevtk("sol.vtu",Th,sol)

    30

  • EXAMPLE 3: HEAT EQUATION [EXAMPLE3.EDP]

    AimSolve the transient PDE

    ∂u∂t −∆u = 1 in Ω× [0; T]

    u(x, y, z, 0) = 1 in Ωu(x, y, z, t) = 1 on Γ× [0; T]

    Implicit Euler scheme∫Ω

    un+1 − undt w+∇u

    n∇w =∫Ω

    w

    =⇒

    (M+ dt · A)un+1 = Mun + dt · b

    31

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_5/example3.edp

  • EXAMPLE 3: HEAT EQUATION [EXAMPLE3.EDP]

    AimSolve the transient PDE

    ∂u∂t −∆u = 1 in Ω× [0; T]

    u(x, y, z, 0) = 1 in Ωu(x, y, z, t) = 1 on Γ× [0; T]

    Implicit Euler scheme∫Ω

    un+1 − undt w+∇u

    n∇w =∫Ω

    w

    =⇒

    (M+ dt · A)un+1 = Mun + dt · b

    31

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_5/example3.edp

  • EXAMPLE 3: HEAT EQUATION [EXAMPLE3.EDP]

    AimSolve the transient PDE

    ∂u∂t −∆u = 1 in Ω× [0; T]

    u(x, y, z, 0) = 1 in Ωu(x, y, z, t) = 1 on Γ× [0; T]

    Implicit Euler scheme∫Ω

    un+1 − undt w+∇u

    n∇w =∫Ω

    w

    =⇒

    (M+ dt · A)un+1 = Mun + dt · b31

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_5/example3.edp

  • OVERLAPPING SCHWARZ METHODS

    [LINK TO THE EXAMPLES]

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_6

  • HISTORY

    ◦ initially focused on domain decomposition methods◦ new developments around iterative methods [Jolivetand Tournier 2016]

    ◦ only interfaced with FreeFEM at first◦ low-level languages (C/C++, Fortran, Python)

    ◦ first commit in late 2011◦ open-sourced in late 2014◦ https://github.com/hpddm/hpddm◦ integrated in PETSc in 2019

    32

    https://github.com/hpddm/hpddm

  • HISTORICAL METHOD

    ◦ due to Schwarz (1870)◦ how to solve Poisson equation on “complex” geometries?

    ◦ by using solvers that work on simpler subdomains

    33

  • HISTORICAL METHOD

    ◦ due to Schwarz (1870)◦ how to solve Poisson equation on “complex” geometries?

    Ω2Ω1

    ◦ by using solvers that work on simpler subdomains

    33

  • DISCRETIZED MODEL PROBLEM [EXAMPLE1.EDP]

    ◦ no need for the complete mesh◦ neighboring numberings on the overlaps

    34

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_6/example1.edp

  • DISCRETIZED MODEL PROBLEM [EXAMPLE1.EDP]

    ◦ no need for the complete mesh◦ neighboring numberings on the overlaps

    34

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_6/example1.edp

  • DISCRETIZED MODEL PROBLEM [EXAMPLE1.EDP]

    ◦ no need for the complete mesh◦ neighboring numberings on the overlaps

    34

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_6/example1.edp

  • DISCRETIZED MODEL PROBLEM [EXAMPLE1.EDP]

    R1 R2

    ◦ no need for the complete mesh◦ neighboring numberings on the overlaps

    34

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_6/example1.edp

  • DISCRETIZED MODEL PROBLEM [EXAMPLE1.EDP]

    R1 R2

    RT2RT1

    ◦ no need for the complete mesh◦ neighboring numberings on the overlaps

    34

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_6/example1.edp

  • DISCRETIZED MODEL PROBLEM [EXAMPLE1.EDP]

    R1 R2

    RT2RT1

    ◦ no need for the complete mesh◦ neighboring numberings on the overlaps

    34

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_6/example1.edp

  • UNPRECONDITIONED ITERATIVE METHODS

    ◦ partition of unity I =N∑i=1

    RTi DiRi

    ◦ scalar product (u, v) =N∑i=1

    (Riu,DiRiv)

    ◦ matrix–vector product RiAu = RiN∑j=1

    RTj RjARTj DjRju

    =⇒ subdomains only require “local data” [EXAMPLE2.EDP]

    35

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_6/example2.edp

  • UNPRECONDITIONED ITERATIVE METHODS

    ◦ partition of unity I =N∑i=1

    RTi DiRi

    ◦ scalar product (u, v) =N∑i=1

    (Riu,DiRiv)

    ◦ matrix–vector product RiAu = RiN∑j=1

    RTj RjARTj DjRju

    =⇒ subdomains only require “local data” [EXAMPLE2.EDP]

    35

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_6/example2.edp

  • UNPRECONDITIONED ITERATIVE METHODS

    ◦ partition of unity I =N∑i=1

    RTi DiRi

    ◦ scalar product (u, v) =N∑i=1

    (Riu,DiRiv)

    ◦ matrix–vector product RiAu = RiN∑j=1

    RTj RjARTj DjRju

    =⇒ subdomains only require “local data” [EXAMPLE2.EDP]

    35

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_6/example2.edp

  • UNPRECONDITIONED ITERATIVE METHODS

    ◦ partition of unity I =N∑i=1

    RTi DiRi

    ◦ scalar product (u, v) =N∑i=1

    (Riu,DiRiv)

    ◦ matrix–vector product RiAu = RiN∑j=1

    RTj RjARTj DjRju

    =⇒ subdomains only require “local data” [EXAMPLE2.EDP]

    35

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_6/example2.edp

  • OVERLAPPING PRECONDITIONERS [EXAMPLE3.EDP]

    ◦ additive Schwarz

    M−1ASM =N∑i=1

    RTi(RiARTi

    )−1 Ri

    ◦ restricted additive Schwarz [Cai et al. 2003]

    M−1RAS =N∑i=1

    RTi Di(RiARTi

    )−1 Ri◦ optimized restricted additive Schwarz [St-Cyr et al. 2007]

    M−1ORAS =N∑i=1

    RTi DiB−1i Ri

    36

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_6/example3.edp

  • OVERLAPPING PRECONDITIONERS [EXAMPLE3.EDP]

    ◦ additive Schwarz

    M−1ASM =N∑i=1

    RTi(RiARTi

    )−1 Ri◦ restricted additive Schwarz [Cai et al. 2003]

    M−1RAS =N∑i=1

    RTi Di(RiARTi

    )−1 Ri

    ◦ optimized restricted additive Schwarz [St-Cyr et al. 2007]

    M−1ORAS =N∑i=1

    RTi DiB−1i Ri

    36

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_6/example3.edp

  • OVERLAPPING PRECONDITIONERS [EXAMPLE3.EDP]

    ◦ additive Schwarz

    M−1ASM =N∑i=1

    RTi(RiARTi

    )−1 Ri◦ restricted additive Schwarz [Cai et al. 2003]

    M−1RAS =N∑i=1

    RTi Di(RiARTi

    )−1 Ri◦ optimized restricted additive Schwarz [St-Cyr et al. 2007]

    M−1ORAS =N∑i=1

    RTi DiB−1i Ri

    36

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_6/example3.edp

  • SOME UTILITY ROUTINES

    ◦ exchange for consistency in the overlap◦ statistics to get some metrics about the DD◦ A(u,v) to compute weighted dot products◦ ChangeOperator to update a local matrix

    37

  • COARSE GRID PRECONDITIONERS

    ◦ convergence independently of the decomposition

    x

    u(x)

    ◦ AttachCoarseOperator not always trivial to define

    38

  • COARSE GRID PRECONDITIONERS

    ◦ convergence independently of the decomposition

    0.0

    −d2udx2 = 1

    u(0) = 0Zero initial guess

    x

    u(x)

    ◦ AttachCoarseOperator not always trivial to define

    38

  • COARSE GRID PRECONDITIONERS

    ◦ convergence independently of the decomposition

    0.8

    Iteration #1

    x

    u(x)

    ◦ AttachCoarseOperator not always trivial to define

    38

  • COARSE GRID PRECONDITIONERS

    ◦ convergence independently of the decomposition

    1.1

    Iteration #2

    x

    u(x)

    ◦ AttachCoarseOperator not always trivial to define

    38

  • COARSE GRID PRECONDITIONERS

    ◦ convergence independently of the decomposition

    1.6

    Iteration #3

    x

    u(x)

    ◦ AttachCoarseOperator not always trivial to define

    38

  • COARSE GRID PRECONDITIONERS

    ◦ convergence independently of the decomposition

    1.9

    Iteration #4

    x

    u(x)

    ◦ AttachCoarseOperator not always trivial to define

    38

  • COARSE GRID PRECONDITIONERS

    ◦ convergence independently of the decomposition

    2.4

    Iteration #5

    x

    u(x)

    ◦ AttachCoarseOperator not always trivial to define

    38

  • COARSE GRID PRECONDITIONERS

    ◦ convergence independently of the decomposition

    16.6

    Iteration #50

    x

    u(x)

    ◦ AttachCoarseOperator not always trivial to define

    38

  • COARSE GRID PRECONDITIONERS

    ◦ convergence independently of the decomposition

    27.8

    Iteration #100

    x

    u(x)

    ◦ AttachCoarseOperator not always trivial to define

    38

  • COARSE GRID PRECONDITIONERS

    ◦ convergence independently of the decomposition

    35.3

    Iteration #150

    x

    u(x)

    ◦ AttachCoarseOperator not always trivial to define

    38

  • COARSE GRID PRECONDITIONERS

    ◦ convergence independently of the decomposition

    40.2

    Iteration #200

    x

    u(x)

    ◦ AttachCoarseOperator not always trivial to define

    38

  • COARSE GRID PRECONDITIONERS

    ◦ convergence independently of the decomposition

    43.5

    Iteration #250

    x

    u(x)

    ◦ AttachCoarseOperator not always trivial to define

    38

  • COARSE GRID PRECONDITIONERS

    ◦ convergence independently of the decomposition

    45.7

    Iteration #300

    x

    u(x)

    ◦ AttachCoarseOperator not always trivial to define

    38

  • COARSE GRID PRECONDITIONERS

    ◦ convergence independently of the decomposition

    47.1

    Iteration #350

    x

    u(x)

    ◦ AttachCoarseOperator not always trivial to define

    38

  • COARSE GRID PRECONDITIONERS

    ◦ convergence independently of the decomposition

    50.0

    Exact solution

    x

    u(x)

    ◦ AttachCoarseOperator not always trivial to define

    38

  • COARSE GRID PRECONDITIONERS

    ◦ convergence independently of the decomposition

    50.0

    Exact solution

    x

    u(x)

    ◦ AttachCoarseOperator not always trivial to define38

  • EXAMPLE 4: GENEO COARSE OPERATOR [EXAMPLE4.EDP]

    Aim

    ◦ robust DDM [Spillane et al. 2013]◦ ∼ incompressible elasticity [Haferssas et al. 2017]◦ highly parametrizable [Jolivet, Hecht, Nataf, et al. 2013]◦ scalable [Al Daas et al. 2019]

    ◦ -hpddm_schwarz_method [asm|ras|osm]◦ -hpddm_geneo_nu n◦ -hpddm_level_2_p p

    39

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_6/example4.edp

  • EXAMPLE 4: GENEO COARSE OPERATOR [EXAMPLE4.EDP]

    Aim

    ◦ robust DDM [Spillane et al. 2013]◦ ∼ incompressible elasticity [Haferssas et al. 2017]◦ highly parametrizable [Jolivet, Hecht, Nataf, et al. 2013]◦ scalable [Al Daas et al. 2019]

    ◦ -hpddm_schwarz_method [asm|ras|osm]◦ -hpddm_geneo_nu n◦ -hpddm_level_2_p p

    39

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_6/example4.edp

  • SUBSTRUCTURING METHODS

    [LINK TO THE EXAMPLES]

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_7

  • ALGEBRAIC DECOMPOSITION

    A =

    A11 0 A1Γ0 A22 A2ΓAΓ1 AΓ2 AΓΓ

    b =b1b2bΓ

    =⇒(AΓΓ − AΓ1A−111 A1Γ − AΓ2A−122 A2Γ

    )xΓ = bΓ − AΓ1A−111 b1 − AΓ2A−122 b2

    = gΓ = g(1)Γ + g(2)Γ

    Schur complement(s)

    Sp = A(1)ΓΓ − AΓ1A−111 A1Γ + A(2)ΓΓ − AΓ2A−122 A2Γ

    = S(1)p + S(2)p

    40

  • ALGEBRAIC DECOMPOSITION

    A =

    A11 0 A1Γ0 A22 A2ΓAΓ1 AΓ2 AΓΓ

    b =b1b2bΓ

    =⇒(AΓΓ − AΓ1A−111 A1Γ − AΓ2A−122 A2Γ

    )xΓ = bΓ − AΓ1A−111 b1 − AΓ2A−122 b2

    = gΓ = g(1)Γ + g(2)Γ

    Schur complement(s)

    Sp = A(1)ΓΓ − AΓ1A−111 A1Γ + A(2)ΓΓ − AΓ2A−122 A2Γ

    = S(1)p + S(2)p40

  • CONDENSED SYSTEM

    Preconditioning SpxΓ = gΓ

    S(1)p = S(2)p =⇒ M−1 =14

    (S(1)p

    −1+ S(2)p

    −1)

    A(i) =[Aii AiΓAΓi A(i)ΓΓ

    ]

    =

    [I 0

    AΓiAii−1 I

    ][I 00 S(i)p

    ][I A(i)ΓΓ

    −1AiΓ

    0 I

    ]

    41

  • CONDENSED SYSTEM

    Preconditioning SpxΓ = gΓ

    S(1)p = S(2)p =⇒ M−1 =14

    (S(1)p

    −1+ S(2)p

    −1)

    A(i) =[Aii AiΓAΓi A(i)ΓΓ

    ]

    =

    [I 0

    AΓiAii−1 I

    ][I 00 S(i)p

    ][I A(i)ΓΓ

    −1AiΓ

    0 I

    ]

    41

  • GENERAL NOTATIONS

    Ω1

    Ω2Ω3

    [Gosselet and Rey 2006] Subdomain tearing

    42

  • GENERAL NOTATIONS

    Ω1

    Ω2Ω3

    1(1)

    2(1)3(1)

    4(1)5(1)1(2)

    2(2)3(2)

    4(2)5(2)

    6(2)1(3)

    2(3)

    3(3)

    4(3)

    5(3)6(3)

    7(3)

    [Gosselet and Rey 2006] Local numbering

    A(i) =[Aii AiΓAΓi A(i)ΓΓ

    ]42

  • GENERAL NOTATIONS

    Ω1

    Ω2Ω3

    1(1)Γ 3(1)Γ2(1)Γ

    4(1)Γ

    1(2)Γ3(2)Γ2

    (2)Γ

    4(2)Γ3(3)Γ

    1(3)Γ

    2(3)Γ

    [Gosselet and Rey 2006] Elimination of interior d.o.f.S(i)p = A(i)ΓΓ − AΓiA−1ii AiΓ

    42

  • GENERAL NOTATIONS

    1(1)Γ 3(1)Γ2(1)Γ

    4(1)Γ

    1(2)Γ3(2)Γ2

    (2)Γ

    4(2)Γ3(3)Γ

    1(3)Γ

    2(3)Γ 1 3

    4

    5

    2

    Jump operators {B(i)}3i=1 Primal constraints[Mandel 1993]

    42

  • GENERAL NOTATIONS

    1(1)Γ 3(1)Γ2(1)Γ

    4(1)Γ

    1(2)Γ3(2)Γ2

    (2)Γ

    4(2)Γ3(3)Γ

    1(3)Γ

    2(3)Γ 12

    4

    53

    6

    7

    Jump operators {B(i)}3i=1 Dual constraints[Farhat and Roux 1991]

    42

  • CONDENSED SYSTEM

    ∀i ∈ J1;NK, S(i)p x(i)Γ = g(i)Γ + λ(i)Γ

    R(i)ΓTλ(i)Γ = 0

    N∑i=1

    B(i)x(i)Γ = 0

    N∑i=1

    B(i)λ(i)Γ = 0

    43

  • CONDENSED SYSTEM

    ∀i ∈ J1;NK, S(i)p x(i)Γ = g(i)Γ + λ(i)Γ

    R(i)ΓTλ(i)Γ = 0

    N∑i=1

    B(i)x(i)Γ = 0

    N∑i=1

    B(i)λ(i)Γ = 0

    43

  • CONDENSED SYSTEM

    ∀i ∈ J1;NK, S(i)p x(i)Γ = g(i)Γ + λ(i)Γ

    R(i)ΓTλ(i)Γ = 0

    N∑i=1

    B(i)x(i)Γ = 0

    N∑i=1

    B(i)λ(i)Γ = 0

    43

  • CONDENSED SYSTEM

    ∀i ∈ J1;NK, S(i)p x(i)Γ = g(i)Γ + λ(i)ΓR(i)Γ

    Tλ(i)Γ = 0

    N∑i=1

    B(i)x(i)Γ = 0

    N∑i=1

    B(i)λ(i)Γ = 0

    43

  • PRIMAL METHODS

    Unique displacement/eliminated reactions

    ◦ unknown xΓ =⇒ x(i)Γ = B(i)TxΓ

    ◦ system of equationsN∑i=1

    B(i)S(i)p B(i)TxΓ =

    N∑i=1

    B(i)g(i)Γ

    ◦ preconditioner

    M−1 =N∑i=1

    B(i)D(i)p S(i)p†D(i)p B(i)

    T

    applied to vectors in Im(Sp)

    44

  • PRIMAL METHODS

    Unique displacement/eliminated reactions

    ◦ unknown xΓ =⇒ x(i)Γ = B(i)TxΓ

    ◦ system of equationsN∑i=1

    B(i)S(i)p B(i)TxΓ =

    N∑i=1

    B(i)g(i)Γ

    ◦ preconditioner

    M−1 =N∑i=1

    B(i)D(i)p S(i)p†D(i)p B(i)

    T

    applied to vectors in Im(Sp)

    44

  • PRIMAL METHODS

    Unique displacement/eliminated reactions

    ◦ unknown xΓ =⇒ x(i)Γ = B(i)TxΓ

    ◦ system of equationsN∑i=1

    B(i)S(i)p B(i)TxΓ =

    N∑i=1

    B(i)g(i)Γ

    ◦ preconditioner

    M−1 =N∑i=1

    B(i)D(i)p S(i)p†D(i)p B(i)

    T

    applied to vectors in Im(Sp)

    44

  • PRIMAL METHODS

    Unique displacement/eliminated reactions

    ◦ unknown xΓ =⇒ x(i)Γ = B(i)TxΓ

    ◦ system of equationsN∑i=1

    B(i)S(i)p B(i)TxΓ =

    N∑i=1

    B(i)g(i)Γ

    ◦ preconditioner

    M−1 =N∑i=1

    B(i)D(i)p S(i)p†D(i)p B(i)

    T

    applied to vectors in Im(Sp)

    44

  • BALANCING DOMAIN DECOMPOSITION [EXAMPLE2.EDP]

    Balanced residualN∑i=1

    R(i)ΓTD(i)p B(i)

    TrΓ = 0

    Projection

    RΓ =[B(1)D(1)p R(1)Γ · · · B(N)D

    (N)p R(N)Γ

    ]Sp =

    N∑i=1

    B(i)S(i)p B(i)T

    =⇒

    RTΓSpP = 0 with P = I− RΓ(RTΓSpRΓ

    )−1 RTΓSp

    45

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_7/example2.edp

  • BALANCING DOMAIN DECOMPOSITION [EXAMPLE2.EDP]

    Balanced residualN∑i=1

    R(i)ΓTD(i)p B(i)

    TrΓ = 0

    Projection

    RΓ =[B(1)D(1)p R(1)Γ · · · B(N)D

    (N)p R(N)Γ

    ]Sp =

    N∑i=1

    B(i)S(i)p B(i)T

    =⇒

    RTΓSpP = 0 with P = I− RΓ(RTΓSpRΓ

    )−1 RTΓSp

    45

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_7/example2.edp

  • BALANCING DOMAIN DECOMPOSITION [EXAMPLE2.EDP]

    Balanced residualN∑i=1

    R(i)ΓTD(i)p B(i)

    TrΓ = 0

    Projection

    RΓ =[B(1)D(1)p R(1)Γ · · · B(N)D

    (N)p R(N)Γ

    ]Sp =

    N∑i=1

    B(i)S(i)p B(i)T

    =⇒

    RTΓSpP = 0 with P = I− RΓ(RTΓSpRΓ

    )−1 RTΓSp45

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_7/example2.edp

  • DUAL METHODS [EXAMPLE3.EDP]

    Unique reaction/eliminated displacements

    ◦ unknown λΓ =⇒ λ(i)Γ = B(i)TλΓ

    ◦ dual Schur complements S(i)d = S(i)p

    ◦ system of equations∀i ∈ J1;NK, x(i)Γ = S(i)d (g(i)Γ + B(i)TλΓ) + R(i)Γ α(i)

    0 = R(i)ΓT(g(i)Γ + B(i)

    TλΓ)

    ◦ saddle-point formulation[Sd RΓRTΓ 0

    ][λΓα

    ]=

    [−bd−gΓ

    ]

    46

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_7/example3.edp

  • DUAL METHODS [EXAMPLE3.EDP]

    Unique reaction/eliminated displacements

    ◦ unknown λΓ =⇒ λ(i)Γ = B(i)TλΓ

    ◦ dual Schur complements S(i)d = S(i)p

    ◦ system of equations∀i ∈ J1;NK, x(i)Γ = S(i)d (g(i)Γ + B(i)TλΓ) + R(i)Γ α(i)

    0 = R(i)ΓT(g(i)Γ + B(i)

    TλΓ)

    ◦ saddle-point formulation[Sd RΓRTΓ 0

    ][λΓα

    ]=

    [−bd−gΓ

    ]

    46

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_7/example3.edp

  • DUAL METHODS [EXAMPLE3.EDP]

    Unique reaction/eliminated displacements

    ◦ unknown λΓ =⇒ λ(i)Γ = B(i)TλΓ

    ◦ dual Schur complements S(i)d = S(i)p

    ◦ system of equations∀i ∈ J1;NK, x(i)Γ = S(i)d (g(i)Γ + B(i)TλΓ) + R(i)Γ α(i)

    0 = R(i)ΓT(g(i)Γ + B(i)

    TλΓ)

    ◦ saddle-point formulation[Sd RΓRTΓ 0

    ][λΓα

    ]=

    [−bd−gΓ

    ]

    46

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_7/example3.edp

  • SIMILAR UTILITY ROUTINES

    ◦ exchange◦ statistics◦ renumber

    47

  • PETSC

    [LINK TO THE EXAMPLES]

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8

  • INTRODUCTION

    ◦ Portable, Extensible Toolkit for Scientific Computation◦ suite of data structures

    • Vec and Mat• PC and KSP• SNES, TS, and Tao

    ◦ useful for compiling other libraries (MUMPS, hypre)◦ https://www.mcs.anl.gov/petsc◦ https://gitlab.com/petsc/petsc◦ interfaced with HPDDM

    48

    https://www.mcs.anl.gov/petschttps://gitlab.com/petsc/petsc

  • DATA DISTRIBUTION

    Operators follow a 1D row-wise contiguous distribution

    process #0

    process #1

    process #2

    process #3

    =⇒ accessible via GlobalNumbering

    49

  • DATA DISTRIBUTION

    Operators follow a 1D row-wise contiguous distribution

    process #0

    process #1

    process #2

    process #3

    =⇒ accessible via GlobalNumbering49

  • PETSC MATRIX [EXAMPLE1.EDP]

    Setting up a Mat◦ same input parameters as HPDDM types◦ simplified macro createMat(Th,A,Pk)◦ Mat for complex-valued problems

    Switching between numberings

    ◦ ChangeNumbering(Mat,K[int])◦ optional parameters

    • inverse to go from PETSc to FreeFEM• exchange to update ghost values

    50

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example1.edp

  • PETSC MATRIX [EXAMPLE1.EDP]

    Setting up a Mat◦ same input parameters as HPDDM types◦ simplified macro createMat(Th,A,Pk)◦ Mat for complex-valued problems

    Switching between numberings

    ◦ ChangeNumbering(Mat,K[int])◦ optional parameters

    • inverse to go from PETSc to FreeFEM• exchange to update ghost values

    50

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example1.edp

  • Mat LINEAR OPERATIONS [EXAMPLE2.EDP]

    Just as with FreeFEM matrix◦ matrix–vector product A * x◦ matrix transpose–vector product A' * x◦ linear solve Aˆ-1 * x◦ transposed linear solve A'ˆ-1 * x

    ◦ native operations with vectors in PETSc numbering• KSPSolve• MatMatMult• more at Mat manual pages

    51

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example2.edphttps://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/index.html

  • BASIC PRECONDITIONING [EXAMPLE3.EDP]

    ◦ default to BJacobi with ILU(0) as a subdomain solver◦ attach a KSP using set and sparams◦ -ksp_type, -pc_type◦ -help generated dynamically

    Updating a Mat◦ Mat = matrix if same pattern or first update◦ Mat = Mat if different pattern

    52

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example3.edp

  • DIRECT FACTORIZATIONS

    ◦ -pc_type [lu|cholesky]◦ -pc_factor_mat_solver_type [mumps|superlu]◦ -help for fine-tuning a solver◦ e.g., -mat_mumps_icntl_4 2

    53

  • SCHWARZ METHODS

    ◦ -pc_type [asm|gasm]◦ -pc_asm_overlap n◦ -pc_asm_type [basic|restrict|interpolate|none]◦ -sub_pc_type, -sub_ksp_type◦ more at PCASM manual page

    54

    https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/PC/PCASM.html

  • EXAMPLE 4: LIOUVILLE–BRATU–GELFAND EQUATION

    AimSolve the nonlinear PDE

    ∆u+ λ expu = 0 in Ωu(x, y) = cos πx cos πy on Γ

    Newton method

    un+1 = un + w such that F(un) + dwF(un) = 0with dwF(un) = ∆w+ λ expu

    n w

    [EXAMPLE4_SEQ.EDP] + [EXAMPLE4.EDP]

    55

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example4_seq.edphttp://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example4.edp

  • EXAMPLE 4: LIOUVILLE–BRATU–GELFAND EQUATION

    AimSolve the nonlinear PDE

    ∆u+ λ expu = 0 in Ωu(x, y) = cos πx cos πy on Γ

    Newton method

    un+1 = un + w such that F(un) + dwF(un) = 0with dwF(un) = ∆w+ λ expu

    n w

    [EXAMPLE4_SEQ.EDP] + [EXAMPLE4.EDP]

    55

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example4_seq.edphttp://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example4.edp

  • BLOCK MATRICES

    Limitations of monolithic formulations◦ single varf◦ single fespace

    Alternative◦ “decoupled” fespace and multiple varf◦ PETSc MatNest to match FreeFEM block syntax

    Solving linear systems with MatNest◦ no explicit representation⇒ no LU, BJacobi◦ automatic convertion or MatConvert

    56

  • BLOCK MATRICES

    Limitations of monolithic formulations◦ single varf◦ single fespace

    Alternative◦ “decoupled” fespace and multiple varf◦ PETSc MatNest to match FreeFEM block syntax

    Solving linear systems with MatNest◦ no explicit representation⇒ no LU, BJacobi◦ automatic convertion or MatConvert

    56

  • BLOCK MATRICES

    Limitations of monolithic formulations◦ single varf◦ single fespace

    Alternative◦ “decoupled” fespace and multiple varf◦ PETSc MatNest to match FreeFEM block syntax

    Solving linear systems with MatNest◦ no explicit representation⇒ no LU, BJacobi◦ automatic convertion or MatConvert

    56

  • EXAMPLE 5: POISSON EQ. WITH NEUMANN BC [EXAMPLE5.EDP]

    Aim◦ indefinite system with no essential BC

    ◦ additional constraint∫Ω

    u = 0

    [A ccT 0

    ][uλ

    ]=

    [b0

    ]◦ written as Mat N = [[A,c],[c',0]];◦ A is a Mat and c follows PETSc numbering◦ use either ˆ-1 or MatConvert + KSPSolve◦ λ stored only on the process with the lowest rank

    57

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example5.edp

  • EXAMPLE 5: POISSON EQ. WITH NEUMANN BC [EXAMPLE5.EDP]

    Aim◦ indefinite system with no essential BC

    ◦ additional constraint∫Ω

    u = 0

    [A ccT 0

    ][uλ

    ]=

    [b0

    ]◦ written as Mat N = [[A,c],[c',0]];◦ A is a Mat and c follows PETSc numbering◦ use either ˆ-1 or MatConvert + KSPSolve◦ λ stored only on the process with the lowest rank

    57

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example5.edp

  • RECTANGULAR MATRICES [EXAMPLE6.EDP]

    ◦ some FreeFEM matrix are not square◦ matrix Loc = varf(Ph, Vh); // Loc.n = Vh.ndof◦ coupling 2D and 3D problems

    fespaces defined with the same partitioning◦ one square Mat A for distributing Vh◦ one square Mat B for distributing Ph◦ one Mat C(A,B,Loc);

    =⇒ buildDmesh(Th) + createMat(A|B)

    58

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example6.edp

  • RECTANGULAR MATRICES [EXAMPLE6.EDP]

    ◦ some FreeFEM matrix are not square◦ matrix Loc = varf(Ph, Vh); // Loc.n = Vh.ndof◦ coupling 2D and 3D problems

    fespaces defined with the same partitioning◦ one square Mat A for distributing Vh◦ one square Mat B for distributing Ph◦ one Mat C(A,B,Loc);

    =⇒ buildDmesh(Th) + createMat(A|B)

    58

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example6.edp

  • EXAMPLE 7: STOKES EQUATION [EXAMPLE7.EDP]

    AimSolve with a Poiseuille inflow the system

    −∆u+∇p = 0 in Ω∇ · u = 0

    ◦ two varfs◦ two fespace distributions◦ two assembled Mats A and B◦ coupled system Mat N = [[A,B],[B',0]];◦ transposed operators not formed explicitly

    59

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example7.edp

  • EXAMPLE 7: STOKES EQUATION [EXAMPLE7.EDP]

    AimSolve with a Poiseuille inflow the system

    −∆u+∇p = 0 in Ω∇ · u = 0

    ◦ two varfs◦ two fespace distributions◦ two assembled Mats A and B◦ coupled system Mat N = [[A,B],[B',0]];◦ transposed operators not formed explicitly

    59

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example7.edp

  • MULTIGRID METHODS

    ◦ point-wise aggregation• hypre (--download-hypre) [Falgout and Yang 2002]• AMS [Hiptmair and Xu 2007]

    ◦ smoothed aggregation• GAMG [Adams et al. 2004]• ML (--download-ml) [Gee et al. 2006]

    Systems of equations◦ matrix block size◦ MatNullSpace, e.g., rigid body modes

    60

  • EXAMPLE 8: SYSTEM OF LINEAR ELASTICITY [EXAMPLE8.EDP]

    AimSolve the system

    −div σ = f in Ωu = 0 on ΓD

    Tools◦ vectorial fespace◦ block size of three◦ MatNullSpace with the rigid body modes

    • translations (1, 0, 0) (0, 1, 0) (0, 0, 1)• rotations (y,−x, 0) (−z, 0, x) (0, z,−y)

    61

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example8.edp

  • EXAMPLE 8: SYSTEM OF LINEAR ELASTICITY [EXAMPLE8.EDP]

    AimSolve the system

    −div σ = f in Ωu = 0 on ΓD

    Tools◦ vectorial fespace◦ block size of three◦ MatNullSpace with the rigid body modes

    • translations (1, 0, 0) (0, 1, 0) (0, 0, 1)• rotations (y,−x, 0) (−z, 0, x) (0, z,−y)

    61

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example8.edp

  • EXAMPLE 9: GEOMETRIC MULTIGRID [EXAMPLE9.EDP]

    AimSolve the complex-valued system

    curl curl E− k2E = f in Ω(curl E)× n− ik(E× n)× n = 0 on ΓR

    Tools◦ Nédélec edge elements◦ Schwarz smoothers◦ buildMatEdgeRecursive◦ more at PCMG manual page

    62

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example9.edphttps://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/PC/PCMG.html

  • EXAMPLE 9: GEOMETRIC MULTIGRID [EXAMPLE9.EDP]

    AimSolve the complex-valued system

    curl curl E− k2E = f in Ω(curl E)× n− ik(E× n)× n = 0 on ΓR

    Tools◦ Nédélec edge elements◦ Schwarz smoothers◦ buildMatEdgeRecursive◦ more at PCMG manual page

    62

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example9.edphttps://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/PC/PCMG.html

  • FIELDSPLIT PRECONDITIONERS [EXAMPLE10.EDP]

    ◦ separate preconditioners for each field◦ unknowns are interleaved◦ underlying IS◦ fespace Vh(Pk,Pq,Pt) ⇒ Vh [u,v,w] = [1,2,3]◦ new option prefixes -fieldsplit_%d_

    Optional parameters

    ◦ prefixes customizable with a string[int]◦ approximate Schur complement

    Examples for Stokes equations [Knepley 2013]

    A =[C BBT 0

    ]≈ pcA=

    [ ]-ksp_type gmres

    -fieldsplit_velocity_pc_type

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example10.edp

  • FIELDSPLIT PRECONDITIONERS [EXAMPLE10.EDP]

    ◦ separate preconditioners for each field◦ unknowns are interleaved◦ underlying IS◦ fespace Vh(Pk,Pk,Pq) ⇒ Vh [u,v,p] = [1,1,2]◦ new option prefixes -fieldsplit_%d_

    Optional parameters

    ◦ prefixes customizable with a string[int]◦ approximate Schur complement

    Examples for Stokes equations [Knepley 2013]

    A =[C BBT 0

    ]≈ pcA=

    [C−1 00 I

    ] -ksp_type gmres -pc_fieldsplit_type additive-fieldsplit_velocity_pc_type lu

    -fieldsplit_pressure_pc_type jacobi

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example10.edp

  • FIELDSPLIT PRECONDITIONERS [EXAMPLE10.EDP]

    ◦ separate preconditioners for each field◦ unknowns are interleaved◦ underlying IS◦ fespace Vh(Pk,Pk,Pq) ⇒ Vh [u,v,p] = [1,1,2]◦ new option prefixes -fieldsplit_%d_

    Optional parameters

    ◦ prefixes customizable with a string[int]◦ approximate Schur complement

    Examples for Stokes equations [Knepley 2013]

    A =[C BBT 0

    ]≈ pcA=

    [kspC 00 I

    ] -ksp_type fgmres -pc_fieldsplit_type additive-fieldsplit_velocity_pc_type gamg

    -fieldsplit_pressure_pc_type jacobi

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example10.edp

  • FIELDSPLIT PRECONDITIONERS [EXAMPLE10.EDP]

    ◦ separate preconditioners for each field◦ unknowns are interleaved◦ underlying IS◦ fespace Vh(Pk,Pk,Pq) ⇒ Vh [u,v,p] = [1,1,2]◦ new option prefixes -fieldsplit_%d_

    Optional parameters

    ◦ prefixes customizable with a string[int]◦ approximate Schur complement

    Examples for Stokes equations [Knepley 2013]

    A =[C BBT 0

    ]≈ pcA=

    [kspC B0 I

    ] -ksp_type fgmres -pc_fieldsplit_type multiplicative-fieldsplit_velocity_pc_type gamg

    -fieldsplit_pressure_pc_type jacobi

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example10.edp

  • FIELDSPLIT PRECONDITIONERS [EXAMPLE10.EDP]

    ◦ separate preconditioners for each field◦ unknowns are interleaved◦ underlying IS◦ fespace Vh(Pk,Pk,Pq) ⇒ Vh [u,v,p] = [1,1,2]◦ new option prefixes -fieldsplit_%d_

    Optional parameters

    ◦ prefixes customizable with a string[int]◦ approximate Schur complement

    Examples for Stokes equations [Knepley 2013]

    A =[C BBT 0

    ]≈ pcA=

    [kspC 00 −kspS

    ] -ksp_type fgmres -pc_fieldsplit_type schur-fieldsplit_velocity_pc_type gamg-fieldsplit_pressure_pc_type jacobi

    -pc_fieldsplit_schur_factorization_type diag

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example10.edp

  • FIELDSPLIT PRECONDITIONERS [EXAMPLE10.EDP]

    ◦ separate preconditioners for each field◦ unknowns are interleaved◦ underlying IS◦ fespace Vh(Pk,Pk,Pq) ⇒ Vh [u,v,p] = [1,1,2]◦ new option prefixes -fieldsplit_%d_

    Optional parameters

    ◦ prefixes customizable with a string[int]◦ approximate Schur complement

    Examples for Stokes equations [Knepley 2013]

    A =[C BBT 0

    ]≈ pcA=

    [kspC 0BT kspS

    ] -ksp_type fgmres -pc_fieldsplit_type schur-fieldsplit_velocity_pc_type gamg-fieldsplit_pressure_pc_type jacobi

    -pc_fieldsplit_schur_factorization_type lower

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example10.edp

  • FIELDSPLIT PRECONDITIONERS [EXAMPLE10.EDP]

    ◦ separate preconditioners for each field◦ unknowns are interleaved◦ underlying IS◦ fespace Vh(Pk,Pk,Pq) ⇒ Vh [u,v,p] = [1,1,2]◦ new option prefixes -fieldsplit_%d_

    Optional parameters

    ◦ prefixes customizable with a string[int]◦ approximate Schur complement

    Examples for Stokes equations [Knepley 2013]

    A =[C BBT 0

    ]≈ pcA=

    [C−1 B0 kspS

    ] -ksp_type gmres -fieldsplit_pressure_ksp_max_its 1-pc_fieldsplit_type schur -fieldsplit_velocity_pc_type lu

    -fieldsplit_pressure_ksp_type richardson-pc_fieldsplit_schur_factorization_type upper

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example10.edp

  • MATRIX-FREE OPERATORS

    MatShell◦ user-provided routines (MatMult, MatMultTranspose)◦ (user-provided) preconditioning less intuitive◦ func passed to PETSc

    ◦ must use PETSc numbering◦ KSP is oblivious to a Mat type◦ underlying PCSHELL

    64

  • MATRIX-FREE OPERATORS

    MatShell◦ user-provided routines (MatMult, MatMultTranspose)◦ (user-provided) preconditioning less intuitive◦ func passed to PETSc

    ◦ must use PETSc numbering◦ KSP is oblivious to a Mat type◦ underlying PCSHELL

    64

  • EXAMPLE 11: 1D FINITE DIFFERENCES [EXAMPLE11.EDP]

    AimSecond-order centered scheme

    n2

    2 −1−1 2 −1

    . . . . . . . . .−1 2

    x =11...1

    ◦ useful monitoring, e.g., -ksp_view_singularvalues◦ variable precon to supply a PCSHELL◦ 1D meshL

    65

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example11.edp

  • EXAMPLE 11: 1D FINITE DIFFERENCES [EXAMPLE11.EDP]

    AimSecond-order centered scheme

    n2

    2 −1−1 2 −1

    . . . . . . . . .−1 2

    x =11...1

    ◦ useful monitoring, e.g., -ksp_view_singularvalues◦ variable precon to supply a PCSHELL◦ 1D meshL

    65

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example11.edp

  • NONLINEAR SOLVERS SNES

    ◦ easy-to-use interface to (quasi-)Newton methods◦ solve F(u) = b◦ handle variational inequalities on u◦ must provide two funcs

    • to evaluate residuals stored as K[int]• to update a Jacobian stored as Mat

    ◦ ChangeNumbering to go from PETSc to FreeFEM vectors

    ⇒ solver for the linearized systems configured via set

    66

  • NONLINEAR SOLVERS SNES

    ◦ easy-to-use interface to (quasi-)Newton methods◦ solve F(u) = b◦ handle variational inequalities on u◦ must provide two funcs

    • to evaluate residuals stored as K[int]• to update a Jacobian stored as Mat

    ◦ ChangeNumbering to go from PETSc to FreeFEM vectors

    ⇒ solver for the linearized systems configured via set

    66

  • EXAMPLE 12: NEWTON METHOD [EXAMPLE12.EDP]

    AimSolve

    ∇J(u) = 0 in Ω

    with J(u) =∫Ω

    12 f

    (||∇u||2

    )− cu

    subject to ulower ⩽ u ⩽ uupper in Cand f : x 7→ (1+ a)x− log(1+ x)

    ◦ compute constant term from F(u) = b◦ assemble residuals and update the Jacobian◦ additional parameters in SNESSolve for the bounds◦ no automatic differentiation

    67

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example12.edp

  • EXAMPLE 12: NEWTON METHOD [EXAMPLE12.EDP]

    AimSolve

    ∇J(u) = 0 in Ω

    with J(u) =∫Ω

    12 f

    (||∇u||2

    )− cu

    subject to ulower ⩽ u ⩽ uupper in Cand f : x 7→ (1+ a)x− log(1+ x)

    ◦ compute constant term from F(u) = b◦ assemble residuals and update the Jacobian◦ additional parameters in SNESSolve for the bounds◦ no automatic differentiation

    67

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example12.edp

  • EXAMPLE 13: SOLUTION RECONSTRUCTION [EXAMPLE13.EDP]

    AimDistributed local functions to a global function◦ mesh adaptation◦ centralized postprocessing

    ◦ buildDmesh additional macro N2O◦ + restrict to go from local to global◦ global reduction needed to sum contributions

    68

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example13.edp

  • EXAMPLE 13: SOLUTION RECONSTRUCTION [EXAMPLE13.EDP]

    AimDistributed local functions to a global function◦ mesh adaptation◦ centralized postprocessing

    ◦ buildDmesh additional macro N2O◦ + restrict to go from local to global◦ global reduction needed to sum contributions

    68

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example13.edp

  • EXAMPLE 14: SYSTEMS WITH MULTIPLE RHS [EXAMPLE14.EDP]

    AimSolve the complex-valued system

    ∆u+ k2u = fi in Ωu · n = 0 on Γ

    with multiple point sources {fi}i=1,2,...

    ◦ KSPSolve + complex[int,int]◦ use PETSc numbering◦ single solve with an exact factorization◦ block GMRES from HPDDM

    69

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example14.edp

  • EXAMPLE 14: SYSTEMS WITH MULTIPLE RHS [EXAMPLE14.EDP]

    AimSolve the complex-valued system

    ∆u+ k2u = fi in Ωu · n = 0 on Γ

    with multiple point sources {fi}i=1,2,...

    ◦ KSPSolve + complex[int,int]◦ use PETSc numbering◦ single solve with an exact factorization◦ block GMRES from HPDDM

    69

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_8/example14.edp

  • END-USER PERSPECTIVES

    ◦ timesteppers TS manual pages◦ optimizers Tao manual pages◦ easy composability between PETSc objects

    70

    https://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/TS/index.htmlhttps://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Tao/index.html

  • SLEPC

    [LINK TO THE EXAMPLES]

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_9

  • INTRODUCTION

    ◦ Scalable Library for Eigenvalue Problem Computations◦ built on top of PETSc◦ suite of additional data structures

    • EPS• ST

    ◦ useful for compiling other libraries (ARPACK)◦ http://slepc.upv.es◦ https://gitlab.com/slepc/slepc

    71

    http://slepc.upv.eshttps://gitlab.com/slepc/slepc

  • INTERFACE

    Parameters◦ one Mat or two for generalized eigenproblems◦ arrays for eigenvalues/eigenvectors

    • FreeFEM numbering• PETSc numbering for MatNest

    ◦ careful with --with-scalar-type

    Spectral transformations◦ improve convergence for some eigenproblems◦ underlying KSP configured via set

    72

  • INTERFACE

    Parameters◦ one Mat or two for generalized eigenproblems◦ arrays for eigenvalues/eigenvectors

    • FreeFEM numbering• PETSc numbering for MatNest

    ◦ careful with --with-scalar-type

    Spectral transformations◦ improve convergence for some eigenproblems◦ underlying KSP configured via set

    72

  • INTERFACE

    Parameters◦ one Mat or two for generalized eigenproblems◦ arrays for eigenvalues/eigenvectors

    • FreeFEM numbering• PETSc numbering for MatNest

    ◦ careful with --with-scalar-type

    Spectral transformations◦ improve convergence for some eigenproblems◦ underlying KSP configured via set

    72

  • MISCELLANEOUS

    Matrix-free operators◦ just as with KSPSolve with a MatShell◦ PETSc numbering◦ limited number of ST

    Periodic boundary conditionsCustom partitioning that may be imbalanced

    HPDDM Krylov methods◦ -ksp_type hpddm◦ -st_ksp_type hpddm

    73

  • MISCELLANEOUS

    Matrix-free operators◦ just as with KSPSolve with a MatShell◦ PETSc numbering◦ limited number of ST

    Periodic boundary conditionsCustom partitioning that may be imbalanced

    HPDDM Krylov methods◦ -ksp_type hpddm◦ -st_ksp_type hpddm

    73

  • MISCELLANEOUS

    Matrix-free operators◦ just as with KSPSolve with a MatShell◦ PETSc numbering◦ limited number of ST

    Periodic boundary conditionsCustom partitioning that may be imbalanced

    HPDDM Krylov methods◦ -ksp_type hpddm◦ -st_ksp_type hpddm

    73

  • EXAMPLE 1: STEKLOV–POINCARÉ OPERATOR [EXAMPLE1.EDP]

    AimFind the eigenvectors of the operator

    DtN : ΓN → Rg 7→ ∂nv

    where v satisfies −∆v = 0 in Ωv = 0 on ΓDv = g on ΓN

    ◦ equivalent to finding (λ,u) s.t. Au = λBu◦ shift-and-invert spectral transformation◦ same Mat distribution for A and B using Mat B(A,Loc);

    74

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_9/example1.edp

  • EXAMPLE 1: STEKLOV–POINCARÉ OPERATOR [EXAMPLE1.EDP]

    AimFind the eigenvectors of the operator

    DtN : ΓN → Rg 7→ ∂nv

    where v satisfies −∆v = 0 in Ωv = 0 on ΓDv = g on ΓN

    ◦ equivalent to finding (λ,u) s.t. Au = λBu◦ shift-and-invert spectral transformation◦ same Mat distribution for A and B using Mat B(A,Loc);

    74

    http://jolivet.perso.enseeiht.fr/FreeFem-tutorial/section_9/example1.edp

  • APPLICATIONS

  • AUGMENTED LAGRANGIAN FOR STABILITY ANALYSIS

    [Moulin et al. 2019]

    ◦ https://github.com/prj-/moulin2019al◦ Nonlinear-solver.edp

    • -gamma (0.1)• -mesh (FlatPlate3D.mesh)

    • -Re (50)

    ◦ Eigensolver.edp• -shift_real (10−6)• -shift_imag (0.6)

    • -nev (5)• -recycle (0)

    75

    https://github.com/prj-/moulin2019al

  • BASEFLOW

    76

  • LEADING UNSTABLE EIGENVECTOR

    77

  • THANK YOU!

    QUESTIONS?

    77

  • OPTIMAL COMPILATION PROCESS I GENERAL VARIABLES

    ◦ remove any previous instance of FreeFEM◦ install gcc/clang and gfortran◦ make sure you have a working MPI implementation> export FF_DIR=${PWD}/FreeFem-sources> export PETSC_DIR=${PWD}/petsc> export PETSC_ARCH=arch-FreeFem> export PETSC_VAR=${PETSC_DIR}/${PETSC_ARCH}

    1

  • OPTIMAL COMPILATION PROCESS II CLONING THE REPOSITORIES

    > git clone https://github.com/FreeFem/FreeFem-sources> git clone https://gitlab.com/petsc/petsc

    1

  • OPTIMAL COMPILATION PROCESS III COMPILATION FOR REAL SCALARS

    > cd ${PETSC_DIR} && ./configure --download-mumps--download-parmetis --download-metis--download-hypre --download-superlu--download-slepc --download-hpddm--download-ptscotch --download-suitesparse--download-scalapack --download-tetgen--with-fortran-bindings=no --with-scalar-type=real--with-debugging=no

    > make

    1

  • OPTIMAL COMPILATION PROCESS IV COMPILATION FOR COMPLEX SCALARS, OPTIONAL

    > export PETSC_ARCH=arch-FreeFem-complex> ./configure --with-mumps-dir=arch-FreeFem--with-parmetis-dir=arch-FreeFem--with-metis-dir=arch-FreeFem--with-superlu-dir=arch-FreeFem --download-slepc--download-hpddm--with-ptscotch-dir=arch-FreeFem--with-suitesparse-dir=arch-FreeFem--with-scalapack-dir=arch-FreeFem--with-tetgen-dir=arch-FreeFem--with-fortran-bindings=no--with-scalar-type=complex --with-debugging=no

    > make1

  • OPTIMAL COMPILATION PROCESS V FINAL COMPILATION

    > cd ${FF_DIR}> git checkout develop> autoreconf -i> ./configure --without-hdf5 --disable-iohdf5--with-petsc=${PETSC_VAR}/lib--with-petsc_complex=${PETSC_VAR}-complex/lib

    ◦ if PETSc is not detected, overwrite MPIRUN> make -j4> export PATH=${PATH}:${FF_DIR}/src/mpi> export PATH=${PATH}:${FF_DIR}/src/nw◦ setup ~/.freefem++.pref or define FF_INCLUDEPATHand FF_LOADPATH

    1

  • REFERENCES I

    Adams, Mark, Harun H. Bayraktar, Tony M. Keaveny, and Panayiotis Papadopoulos(2004). “Ultrascalable Implicit Finite Element Analyses in Solid Mechanics with overa Half a Billion Degrees of Freedom”. In: Proceedings of the 2004 ACM/IEEEConference on Supercomputing. SC04. IEEE Computer Society, 34:1–34:15.

    Al Daas, Hussam, Laura Grigori, Pierre Jolivet, and Pierre-Henri Tournier (2019). “AMultilevel Schwarz Preconditioner Based on a Hierarchy of Robust Coarse Spaces”.In: Journal of Scientific Computing, submitted for publication. URL:https://github.com/prj-/aldaas2019multi.

    Amestoy, Patrick, Iain Duff, Jean-Yves L’Excellent, and Jacko Koster (2001). “A fullyasynchronous multifrontal solver using distributed dynamic scheduling”. In: SIAMJournal on Matrix Analysis and Applications 23.1, pp. 15–41. URL:http://mumps.enseeiht.fr.

    Balay, Satish, William D. Gropp, Lois Curfman McInnes, and Barry F. Smith (1997).“Efficient management of parallelism in object-oriented numerical softwarelibraries”. In: Modern Software Tools in Scientific Computing, pp. 163–202.

    2

    https://github.com/prj-/aldaas2019multihttp://mumps.enseeiht.fr

  • REFERENCES II

    Cai, Xiao-Chuan, Maksymilian Dryja, and Marcus Sarkis (2003). “Restricted additiveSchwarz preconditioners with harmonic overlap for symmetric positive definitelinear systems”. In: SIAM Journal on Numerical Analysis 41.4, pp. 1209–1231.

    St-Cyr, Amik, Martin Gander, and Stephen Thomas (2007). “Optimized multiplicative,additive, and restricted additive Schwarz preconditioning”. In: SIAM Journal onScientific Computing 29.6, pp. 2402–2425.

    Falgout, Robert and Ulrike Yang (2002). “hypre: A library of high performancepreconditioners”. In: Computational Science—ICCS 2002, pp. 632–641.

    Farhat, Charbel and François-Xavier Roux (1991). “A method of finite element tearingand interconnecting and its parallel solution algorithm”. In: International Journalfor Numerical Methods in Engineering 32.6, pp. 1205–1227.

    Gee, Michael W., Christopher M. Siefert, Jonathan J. Hu, Ray S. Tuminaro, andMarzio G. Sala (2006). ML 5.0 Smoothed Aggregation User’s Guide. Tech. rep.SAND2006-2649. Sandia National Laboratories. URL:https://trilinos.github.io/ml.html.

    3

    https://trilinos.github.io/ml.html

  • REFERENCES III

    Geuzaine, Christophe and Jean-François Remacle (2009). “Gmsh: A 3-D finite elementmesh generator with built-in pre- and post-processing facilities”. In: InternationalJournal for Numerical Methods in Engineering 79.11, pp. 1309–1331. URL:http://geuz.org/gmsh.

    Gosselet, Pierre and Christian Rey (2006). “Non-overlapping domain decompositionmethods in structural mechanics”. In: Archives of Computational Methods inEngineering 13.4, pp. 515–572.

    Haferssas, Ryadh, Pierre Jolivet, and Frédéric Nataf (2017). “An additive Schwarzmethod type theory for Lions’s algorithm and a Symmetrized Optimized RestrictedAdditive Schwarz Method”. In: Journal on Scientific Computing 39.4, A1345–A1365.

    Hecht, Frédéric (2012). “New development in FreeFem++”. In: Journal of NumericalMathematics 20.3-4, pp. 251–266.

    Hénon, Pascal, Pierre Ramet, and Jean Roman (2002). “PaStiX: a high-performanceparallel direct solver for sparse symmetric positive definite systems”. In: ParallelComputing 28.2, pp. 301–321. URL: http://pastix.gforge.inria.fr.

    4

    http://geuz.org/gmshhttp://pastix.gforge.inria.fr

  • REFERENCES IV

    Hernandez, Vicente, Jose E. Roman, and Vicente Vidal (2005). “SLEPc: A scalable andflexible toolkit for the solution of eigenvalue problems”. In: ACM Transactions onMathematical Software 31.3, pp. 351–362. URL: https://slepc.upv.es.

    Hiptmair, Ralf and Jinchao Xu (2007). “Nodal auxiliary space preconditioning in H(curl)and H(div) spaces”. In: SIAM Journal on Numerical Analysis 45.6, pp. 2483–2509.

    Jolivet, Pierre, Frédéric Hecht, Frédéric Nataf, and Christophe Prud’homme (2013).“Scalable Domain Decomposition Preconditioners for Heterogeneous EllipticProblems”. In: Proceedings of the International Conference on High PerformanceComputing, Networking, Storage and Analysis, SC13. ACM.

    Jolivet, Pierre and Pierre-Henri Tournier (2016). “Block Iterative Methods and Recyclingfor Improved Scalability of Linear Solvers”. In: Proceedings of the 2016 InternationalConference for High Performance Computing, Networking, Storage and Analysis.SC16. IEEE.

    Knepley, Matthew (2013). Nested and Hierarchical Solvers in PETSc. URL:https://www.caam.rice.edu/~mk51/presentations/SIAMCSE13.pdf.

    5

    https://slepc.upv.eshttps://www.caam.rice.edu/~mk51/presentations/SIAMCSE13.pdf

  • REFERENCES V

    Li, Xiaoye (2005). “An Overview of SuperLU: Algorithms, Implementation, and UserInterface”. In: ACM Transactions on Mathematical Software 31.3, pp. 302–325. URL:http://crd-legacy.lbl.gov/~xiaoye/SuperLU.

    Mandel, Jan (1993). “Balancing domain decomposition”. In: Communications inNumerical Methods in Engineering 9.3, pp. 233–241.

    Moulin, Johann, Pierre Jolivet, and Olivier Marquet (2019). “Augmented LagrangianPreconditioner for Large-Scale Hydrodynamic Stability Analysis”. In: ComputerMethods in Applied Mechanics and Engineering 351, pp. 718–743. URL:https://github.com/prj-/moulin2019al.

    Schwarz, Hermann (1870). “Über einen Grenzübergang durch alternierendes Verfahren”.In: Vierteljahrsschrift der Naturforschenden Gesellschaft in Zürich 15, pp. 272–286.

    Si, Hang (2013). TetGen: A Quality Tetrahedral Mesh Generator and 3D DelaunayTriangulator. Tech. rep. 13. URL: http://wias-berlin.de/software/tetgen.

    6

    http://crd-legacy.lbl.gov/~xiaoye/SuperLUhttps://github.com/prj-/moulin2019alhttp://wias-berlin.de/software/tetgen

  • REFERENCES VI

    Spillane, Nicole, Victorita Dolean, Patrice Hauret, Frédéric Nataf, Clemens Pechstein,and Robert Scheichl (2013). “Abstract robust coarse spaces for systems of PDEs viageneralized eigenproblems in the overlaps”. In: Numerische Mathematik 126.4,pp. 741–700.

    Suzuki, Atsushi and François-Xavier Roux (2014). “A dissection solver with kerneldetection for symmetric finite element matrices on shared memory computers”. In:International Journal for Numerical Methods in Engineering 100.2, pp. 136–164.

    7

  • INDEX I

    -D option to predefine a macro. 38-help PETSc help. 143, 144-ksp_type PETSc KSP type. 143, 187–189-ns no script. 27-nw no window. 27-pc_type PETSc PC type. 143–145-v verbosity. 27-wg with graphics. 27.m number of columns of arrays. 35.n leading dimensions of arrays. 35.ndof number of degrees of freedom of a fespace. 29, 30.resize method to resize arrays. 35

    AttachCoarseOperator setup a multilevel domain decomposition preconditioner. 93–108

    buildDmesh distribute a global mesh. 153, 154, 177, 178buildMatEdgeRecursive create a hierarchy of Mats with respective prolongation operators.

    160, 161

    8

  • INDEX II

    buildmesh unstructured 2D mesh. 28

    ChangeNumbering switch between FreeFEM and PETSc numberings. 140, 141, 173, 174ChangeOperator change the numerical values of a Mat. 92complex[int,int] complex-valued 2D array. 179, 180complex[int] complex-valued 1D array. 35createMat create a distributed Mat. 140, 141, 153, 154cube structured 3D cube. 28

    EigenValue eigenvalue problem solver using a reverse communication inter-face. 37

    EPS SLEPc eigenvalue problem solver. 183exchange communicate values associated to duplicated unknowns. 92, 135

    fespace finite element space. 29, 30, 33, 34, 39, 148–150, 153–156, 158, 159,162–168, 208, 213

    func function. 37, 169, 170, 173, 174

    9

  • INDEX III

    GlobalNumbering generate a global numbering of the unknowns. 138, 139

    IFMACRO conditional statement using a macro. 38IS PETSc index set. 162–168

    KSP PETSc Krylov subspace method. 137, 143, 169, 170, 184–186, 208KSPSolve PETSc linear solve. 142, 151, 152, 179, 180, 187–189

    LinearCG conjugate gradient using a reverse communication interface. 37load instruction to load additional plugins. 36

    macro definition of macro. 38, 208Mat PETSc matrix. 137, 142, 169, 170, 208, 209, 211Mat distributed real-valued matrix wrapping a PETSc matrix. 140–143,

    153–156, 173, 174, 184–186, 190, 191, 209, 213Mat distributed complex-valued matrix wrapping a PETSc matrix. 140,

    141

    10

  • INDEX IV

    MatConvert convert a MatNest into a more standard format. 148–152MatMatMult PETSc matrix–matrix product. 142MatMult PETSc matrix–vector product. 169, 170MatMultTranspose PETSc matrix transpose–vector product. 169, 170MatNest PETSc format for storing nested submatrices stored indepen-

    dently. 148–150, 184–186, 211MatNullSpace Mat that removes a null space from a vector. 157–159matrix real-valued sparse matrix. 33, 34, 66, 142, 143, 153, 154, 213matrix[int] array of sparse matrices. 35MatShell PETSc format for user-defined matrix types. 169, 170, 187–189medit 3D visualization. 28mesh 2D mesh. 28–30, 66mesh3 3D mesh. 28meshL 1D mesh. 171, 172mpiComm MPI communicator. 66mpiRequest MPI request. 66

    11

  • INDEX V

    new2old numbering to go from a new to an old mess when using trunc.39, 213

    OMP_NUM_THREADS number of OpenMP threads. 57on impose Dirichlet boundary conditions on given labels. 31, 32

    PC PETSc preconditioner. 137, 208PCASM PETSc Schwarz methods. 145PCMG PETSc multigrid methods. 160, 161PCSHELL PETSc abstract preconditioner. 169–172plot basic visualization. 28

    qforder order of numerical integration. 31, 32

    real[int,int] real-valued 2D array. 35real[int] real-valued 1D array. 35real[int][int] real-valued array of arrays. 35

    12

  • INDEX VI

    renumber permute amatrix so that its interior unknowns are numbered first.135

    restrict numbering to go from a new to an old fespace when usingnew2old. 39, 177, 178

    savevtk export data to ParaView. 71set supply options to a matrix or Mat. 33, 34, 143, 173, 174, 184–186SNES PETSc nonlinear solver. 137, 173, 174SNESSolve solve a nonlinear system of equations. 175, 176square structured 2D square. 28ST SLEPc spectral transformation. 183, 187–189statistics print domain decomposition statistics. 92, 135string[int] array of strings. 35, 162–168sym Boolean flag for assembling a symmetric matrix. 33, 34

    Tao PETSc optimizer. 137, 181tgv value for imposing essential boundary conditions. 33, 34

    13

  • INDEX VII

    trunc filter a mesh using a Boolean expression. 39, 212TS PETSc timestepper. 137, 181

    varf variational formulation. 31–34, 148–150, 155, 156Vec PETSc vector. 137

    14

    IntroductionFinite elementsFreeFEMShared-memory parallelismDistributed-memory parallelismOverlapping Schwarz methodsSubstructuring methodsPETScSLEPcApplicationsAppendix