28
PetIGA A Framework for High Performance Isogeometric Analysis Lisandro Dalcin 1,3 , Nathaniel Collier 2 , Adriano Cˆ ortes 3 , Victor M. Calo 3 1 Consejo Nacional de Investigaciones Cient´ ıficas y T´ ecnicas (CONICET) Santa Fe, Argentina 2 Oak Ridge National Laboratory (ORNL), Knoxville, United States 3 King Abdullah University of Science and Technology (KAUST) Thuwal, Saudi Arabia Third International Workshop on Multiphysics, Multiscale, and Optimization Problems Bilbao, Spain – May 22-23, 2014 1 / 28

PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Embed Size (px)

Citation preview

Page 1: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

PetIGAA Framework for High Performance Isogeometric Analysis

Lisandro Dalcin1,3, Nathaniel Collier2,Adriano Cortes3, Victor M. Calo3

1Consejo Nacional de Investigaciones Cientıficas y Tecnicas (CONICET)Santa Fe, Argentina

2Oak Ridge National Laboratory (ORNL),Knoxville, United States

3King Abdullah University of Science and Technology (KAUST)Thuwal, Saudi Arabia

Third International Workshop onMultiphysics, Multiscale, and Optimization Problems

Bilbao, Spain – May 22-23, 2014

1 / 28

Page 2: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

What is PetIGA?

PetIGA is an implementation of isogeometric analysis built on topof PETSc (the Portable, Extensible Toolkit for ScientificComputation).

PetIGA = Pet (PETSc) + IGA (isogeometric analysis)

2 / 28

Page 3: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

IGA: FEM + B-Spline/NURBS

0 1 2 3 4 50.0

0.2

0.4

0.6

0.8

1.0

p=

2C

0

0 1 2 3 4 50.0

0.2

0.4

0.6

0.8

1.0

p=

2C

1

0 1 2 3 4 50.0

0.2

0.4

0.6

0.8

1.0

p=

3C

0

0 1 2 3 4 50.0

0.2

0.4

0.6

0.8

1.0

p=

3C

2

3 / 28

Page 4: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Portable, Extensible Toolkit for Scientific Computation

We base our framework on PETSc

I Eases development of large-scale scientific codes

I Provides a rich environment for prototyping

I Grants parallelism with little interaction with MPI

Solving time-dependent, nonlinear PDE-based problems

I Requires specification of two user-defined functions:

1. Residual (or Function) evaluation (Vec)2. Tangent (or Jacobian) evaluation (Mat)

I Rest is handled inside a hierarchy of solvers:I Timestepping loop (TS)I Nonlinear loop (SNES)I Linear loop (KSP)I Preconditioner (PC)

4 / 28

Page 5: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Timestepping Solvers (TS)

Preconditioners (PC)

Nonlinear Solvers (SNES)

Linear Solvers (KSP)

Function

EvaluationPostprocessing

Jacobian

Evaluation

Application

Initialization

Main Routine

PETSc

5 / 28

Page 6: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Parallel implementation

How it works . . .

• • • • • •• • • • • •• • • • • •• • • • • •• • • • • •• • • • • •

Structured grid

P2 P3

P0 P1

Processors

6 / 28

Page 7: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Parallel implementation

Natural vs. Global numbering

30 31 32 33 34 3524 25 26 27 28 2918 19 20 21 22 23

12 13 14 15 16 176 7 8 9 10 110 1 2 3 4 5

Natural numbering

24 25 26 33 34 3521 22 23 30 31 3218 19 20 27 28 29

6 7 8 15 16 173 4 5 12 13 140 1 2 9 10 11

Global numbering

7 / 28

Page 8: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Parallel implementation

Global vs. Local numbering: C 0 case

24 25 26 33 34 3521 22 23 30 31 3218 19 20 27 28 29

6 7 8 15 16 173 4 5 12 13 140 1 2 9 10 11

Global numbering

X X X X X XX X X X X X12 13 14 15 X X

8 9 10 11 X X4 5 6 7 X X0 1 2 3 X X

Local numbering

8 / 28

Page 9: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Parallel implementation

Global vs. Local numbering: C 1 case

24 25 26 33 34 3521 22 23 30 31 3218 19 20 27 28 29

6 7 8 15 16 173 4 5 12 13 140 1 2 9 10 11

Global numbering

X X X X X X20 21 22 23 24 X15 16 17 18 19 X

10 11 12 13 14 X5 6 7 8 9 X0 1 2 3 4 X

Local numbering

9 / 28

Page 10: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

PetIGA: basic usage

I Initialize the IGA context

IGA iga;

IGACreate(PETSC_COMM_WORLD,&iga);

IGASetDof(iga,1); // scalar problem

IGASetDim(iga,2); // in 2D

IGASetFromOptions(iga);

IGASetUp(iga);

10 / 28

Page 11: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

PetIGA: basic usage

I Set boundary conditions

PetscInt axis,side;

for (axis=0; axis<2; axis++)

for (side=0; side<2; side++)

IGASetBoundaryValue(iga,axis,side,0,0.0);

I Specify routine to evaluate at quadrature points.

IGASetFormSystem(iga,Poisson,NULL);

11 / 28

Page 12: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

PetIGA: basic usage

int Poisson(IGAPoint p,double K[],double F[],void *ctx)

{

int a,b,nen = p->nen;

double *N0 = (typeof(N0)) p->shape[0];

double (*N1)[2] = (typeof(N1)) p->shape[1];

for (a=0; a<nen; a++) {

for (b=0; b<nen; b++)

K[a*nen+b] = N1[a][0]*N1[b][0] +

N1[a][1]*N1[b][1];

F[a] = N0[a] * 1.0; // unit body force

}

return 0;

}

12 / 28

Page 13: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

PetIGA: basic usage

I Get matrix and vectors from the IGA context

Mat A;

IGACreateMat(iga,&A);

Vec x,b;

IGACreateVec(iga,&x);

IGACreateVec(iga,&b);

I Assemble LHS matrix and RHS vector

IGAComputeSystem(iga,A,b);

13 / 28

Page 14: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

PetIGA: basic usage

I Create and setup linear solver

KSP ksp;

IGACreateKSP(iga,&ksp);

KSPSetOperators(ksp,A,A);

KSPSetFromOptions(ksp);

I Solve linear system

KSPSolve(ksp,b,x);

I Write geometry and solution to disk

IGAWrite(iga,"PoissonGeometry.dat");

IGAWriteVec(iga,x,"PoissonSolution.dat");

14 / 28

Page 15: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Runtime algorithm selection

$ mpiexec -n 4 ./CahnHilliard2D \

-ts_type alpha -ts_max_time 0.1 \

-snes_type ls -snes_rtol 1e-6 \

-ksp_type gmres -ksp_rtol 1e-6 -pc_type asm \

-ts_monitor -snes_monitor -ksp_monitor

...

31 TS dt 7.50892e-07 time 7.54659e-06

0 SNES Function norm 2.839767350239e+02

0 KSP Residual norm 7.948198342027e-01

1 KSP Residual norm 3.279005904241e-01

...

13 KSP Residual norm 6.203582124561e-07

1 SNES Function norm 1.975161638445e+00

0 KSP Residual norm 2.422239626041e-03

1 KSP Residual norm 1.097760701769e-03

...

14 KSP Residual norm 1.107439178464e-09

2 SNES Function norm 1.373097430896e-04

32 TS dt 6.76995e-07 time 8.29748e-06

...

15 / 28

Page 16: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Runtime monitoring solution evolution

PETSc has basic 2D visualization capabilities to aid debugging

$ mpiexec -n 4 ./NSK2D -ts_monitor_solution

Plot control variables on control mesh (no spline interpolation)

16 / 28

Page 17: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Practical approach to nonlinear problems

PETSc can approximate Jacobians

1. Code residual function (Gauss point evaluation)

2. Approximate Jacobian with finite differences2.1 Use a matrix free approach (-snes mf)

I Allows checking bug-free residual function implementationI Potentially slow, no black-box preconditioner available

2.2 Use colored finite differences (-snes fd color)I Computes sparse matrix with approximate Jacobian explicitlyI This alternative allows black-box preconditioningI Still slow for large problems

17 / 28

Page 18: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Practical approach to nonlinear problems

PETSc can check hand-coded Jacobians

1. Code residual function (Gauss point evaluation)

2. Code Jacobian function (Gauss point evaluation)

3. Check Jacobian correctness using built-in facilitiesI Approximate Jacobian with matrix-free (-snes mf operator)I Invert computed Jacobian as a preconditioner (-pc type lu)

If Jacobian is correct, KSP converges in one iteration

18 / 28

Page 19: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Geometry handling

Creation of initial (simple?) geometries is a nontrivial task

I Volume NURBS representations are cumbersome and are(mostly) developed manually

I Bridging the CAD/CAE gap is on going

Geometry handling made easier by:

1. Running in parametric mode if possible – avoid mappingcubes into cubes

2. Creating Python interfaces to low-level NURBS routines (knotinsertion, degree elevation) – Python scripting is very flexible

3. Using binary files that PETSc reads/writes in parallelI Sidesteps issue of parallel I/OI No need to manually partition the domain

19 / 28

Page 20: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Geometry preparation

from igakit.cad import *

C0 = circle(radius=1)

C1 = circle(radius=2)

annulus = ruled(C0, C1)

pipe = extrude(annulus,

displ=3.0, axis=2,

).reverse(2)

elbow = revolve(annulus,

point=(3,0,0),

axis=(0,-1,0),

angle=Pi/2)

bentpipe = join(pipe, elbow, axis=2)

20 / 28

Page 21: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Solver Scalability

I Incompressible Navier–Stokes with VMS turbulence modeling

I 10 time steps × 2 Newton steps × 30 GMRES iterations

I B-spline space: p = 2, C 1; geometrical mapping: identity

Parallel efficiency, single node (Lonestar, TACC)Number of cores

mesh 1 2 4 6 8 10 12

323 100% 98% 91% 84% 85% 77% 81%643 100% 93% 85% 77% · 79% 77%

Parallel efficiency, multiple node (Lonestar, TACC)Number of cores

mesh 64 216 512 1000 1728 4104

1203 100% 102% 100% 97% 87% ·1683 · 100% 90% 91% 93% 74%

21 / 28

Page 22: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Applications: Elasticity

22 / 28

Page 23: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Applications: Navier-Stokes + VMS

23 / 28

Page 24: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Applications: Cahn-Hilliard equation

24 / 28

Page 25: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Applications: Navier-Stokes-Korteweg equation

25 / 28

Page 26: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Applications: Phase-Field Crystal equation

26 / 28

Page 27: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Conclusions

I Propose framework for solving problems using IGA

I Reuse PETSc data structures to simplify parallelism

I Acceptable scaling up to 4K processors

I Ongoing work: support for H-div/H-curl conforming spaces

I To do: extend to multipatch domains

27 / 28

Page 28: PetIGA - A Framework for High Performance Isogeometric Analysis · PDF fileA Framework for High Performance Isogeometric Analysis Lisandro Dalcin1;3, Nathaniel Collier2, Adriano C^ortes3,

Source code:

I https://bitbucket.org/dalcinl/petiga

I https://bitbucket.org/dalcinl/igakit

Tutorial (in development):

I https://petiga-igakit.readthedocs.org/

Questions & Comments:

I [email protected]

I [email protected]

I [email protected]

28 / 28