automating the finite element method - sintef · automating the finite element method anders logg...

28
The need for automation The finite element method for Poisson’s equation Automating the finite element method Lecture plan Automating the Finite Element Method Anders Logg [email protected] Toyota Technological Institute at Chicago Sixth Winter School in Computational Mathematics Geilo, March 5-10 2006 Anders Logg [email protected] Automating the Finite Element Method

Upload: ngokien

Post on 30-Aug-2018

230 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Automating the Finite Element Method

Anders [email protected]

Toyota Technological Institute at Chicago

Sixth Winter School in Computational MathematicsGeilo, March 5-10 2006

Anders Logg [email protected] Automating the Finite Element Method

Page 2: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Outline

The need for automation

The finite element method for Poisson’s equation

Automating the finite element method

Lecture plan

Anders Logg [email protected] Automating the Finite Element Method

Page 3: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Would you implement a Poisson solver like this?

...

for (dof_handler.begin_active(); cell! = dof_handler.end(); ++cell)

for (unsigned int i = 0; i < dofs_per_cell; ++i)

for (unsigned int j = 0; j < dofs_per_cell; ++j)

for (unsigned int q_point = 0; q_point < n_q_points; ++q_point)

cell_matrix(i, j) += (fe_values.shape_grad (i, q_point) *

fe_values.shape_grad (j, q_point) *

fe_values.JxW(q_point));

for (unsigned int i = 0; i < dofs_per_cell; ++i)

for (unsigned int q_point = 0; q_point < n_q_points; ++q_point)

cell_rhs(i) += (fe_values.shape_value (i, q_point) *

<value of right-hand side f> *

fe_values.JxW(q_point));

Anders Logg [email protected] Automating the Finite Element Method

Page 4: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Or would you implement it like this?

for (int i = 1; i <= nbf; i++)

for (int j = 1; j <= nbf; j++)

elmat.A(i, j) += (fe.dN(i, 1) * fe.dN(j, 1) +

fe.dN(i, 2) * fe.dN(j, 2) +

fe.dN(i, 3) * fe.dN(j, 3)) *

detJxW;

for (int i = 1; i <= nbf; i++)

elmat.b(i) += fe.N(i)*<value of f>*detJxW;

Anders Logg [email protected] Automating the Finite Element Method

Page 5: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Or maybe like this?

a = dot(grad(v), grad(U))*dx

L = v*f*dx

Anders Logg [email protected] Automating the Finite Element Method

Page 6: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Or perhaps like this?

−∆u = f in Ω ⊂ Rd

u = 0 on ∂Ω

Anders Logg [email protected] Automating the Finite Element Method

Page 7: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Differential equation

Poisson’s equation:

−∆u = f in Ω ⊂ Rd

u = 0 on ∂Ω

I Heat transfer: u is the temperature

I Electrostatics: u is the potential

I Appears in some form in most differential equations

Anders Logg [email protected] Automating the Finite Element Method

Page 8: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Variational problem

Multiply with a test function v ∈ V and integrate by parts:

∫Ω

−v ∆udx =

∫Ω

∇v · ∇udx −

∫∂Ω

v ∂nuds =

∫Ω

∇v · ∇udx

Find u ∈ V such that∫

Ω

∇v · ∇udx =

∫Ω

v f dx ∀v ∈ V

Suitable test and trial spaces:

V = V = H10 (Ω)

Anders Logg [email protected] Automating the Finite Element Method

Page 9: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Discrete variational problem

Find U ∈ Vh such that

∫Ω

∇v · ∇U dx =

∫Ω

v f dx ∀v ∈ Vh

I Vh ⊂ V and Vh ⊂ V is a pair of discrete function spaces

I Galerkin’s method: R(U) = −∆U − f ⊥ Vh

I FEM: Galerkin with piecewise polynomial spaces

Anders Logg [email protected] Automating the Finite Element Method

Page 10: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Finite element function spaces

PSfrag replacements

x

u(x)

U(x) ≈ u(x)

Anders Logg [email protected] Automating the Finite Element Method

Page 11: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Finite element function spaces

PSfrag replacements K

T = K

U(x) ≈ u(x)

Anders Logg [email protected] Automating the Finite Element Method

Page 12: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

The discrete system

Introduce bases for Vh and Vh:

Vh = spanφiNi=1

Vh = spanφiNi=1

Find U ∈ Vh such that∫

Ω

∇v · ∇U dx =

∫Ω

v f dx ∀v ∈ Vh

Find (Ui) ∈ RN such that

∫Ω

∇φi · ∇(

N∑j=1

Ujφj) dx =

∫Ω

φi f dx, i = 1, 2, . . . , N

Anders Logg [email protected] Automating the Finite Element Method

Page 13: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

The discrete system

Find (Ui) ∈ RN such that

N∑j=1

Uj

∫Ω

∇φi · ∇φj dx =

∫Ω

φi f dx, i = 1, 2, . . . , N

Find (Ui) ∈ RN such that

AU = b

where

Aij =

∫Ω

∇φi · ∇φj dx

bi =

∫Ω

φi f dx

Anders Logg [email protected] Automating the Finite Element Method

Page 14: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Canonical form

Find U ∈ Vh such that

a(v, U) = L(v) ∀v ∈ Vh

Find (Ui) ∈ RN such that

AU = b

where

Aij = a(φi, φj)

bi = L(φi)

Anders Logg [email protected] Automating the Finite Element Method

Page 15: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Implementation

element = FiniteElement(...)

v = BasisFunction(element)

U = BasisFunction(element)

f = Function(element)

a = dot(grad(v), grad(U))*dx

L = v*f*dx

Anders Logg [email protected] Automating the Finite Element Method

Page 16: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Automating the finite element method

Compute the discrete system

AU = b

from a given discrete variational problem: Find U ∈ Vh such that

a(v, U) = L(v) ∀v ∈ Vh

Key steps:

I Automating the tabulation of basis functions

I Automating the computation of the element tensor

I Automating the assembly of the discrete system

Anders Logg [email protected] Automating the Finite Element Method

Page 17: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Automating the tabulation of basis functions

Anders Logg [email protected] Automating the Finite Element Method

Page 18: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Automating the computation of the element tensor

Anders Logg [email protected] Automating the Finite Element Method

Page 19: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Automating the assembly of the discrete system

PSfrag replacements

ι1K(1)

ι1K(2)

ι1K(3)

ι2K(1) ι2K(2) ι2K(3)

AK32

1

1

2

2

3

3

Anders Logg [email protected] Automating the Finite Element Method

Page 20: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

The Automation of CMM

PSfrag replacements

A(u) = f

TOL > 0

U ≈ u

Anders Logg [email protected] Automating the Finite Element Method

Page 21: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Key steps

(i)

(iii)

(iv)

(ii)PSfrag replacements

A(u) = f

TOL > 0

U ≈ u

U ≈ u

U ≈ u

tol > 0

A(u) = f + g(u)

(Vh, Vh)

F (x) = 0 X ≈ x

Anders Logg [email protected] Automating the Finite Element Method

Page 22: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Sunday March 5

I 16.40–17.25Automating the Finite Element Method

I 17.30–18.15Hoffman: Navier–Stokes

Anders Logg [email protected] Automating the Finite Element Method

Page 23: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Monday March 6

I 09.00–10.30Hoffman: Navier–Stokes

I 15.45–16.30Survey of Current Finite Element Software

I 17.00–18.30The Finite Element Method

Anders Logg [email protected] Automating the Finite Element Method

Page 24: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Tuesday March 7

I 09.00–10.30Automating Basis Functions and Assembly

I 15.45–16.30Hoffman: Navier–Stokes

I 17.00–18.30Hoffman: Navier–Stokes

Anders Logg [email protected] Automating the Finite Element Method

Page 25: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Wednesday March 8

I 09.00–10.30Hoffman: Navier–Stokes

I 15.45–16.30Automating and Optimizing theComputation of the Element Tensor

I 17.00–18.30Automating and Optimizing theComputation of the Element Tensor (cont’d)

Anders Logg [email protected] Automating the Finite Element Method

Page 26: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Thursday March 9

I 09.00–10.30FEniCS and the Automation of CMM

I 15.45–16.30Hoffman: Navier–Stokes

I 17.00–18.30Hoffman: Navier–Stokes

Anders Logg [email protected] Automating the Finite Element Method

Page 27: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Friday March 10

I 09.00–10.30Hoffman: Navier–Stokes

I 11.00–12.30FEniCS Demo Session (laptops ready!)

Anders Logg [email protected] Automating the Finite Element Method

Page 28: Automating the Finite Element Method - SINTEF · Automating the Finite Element Method Anders Logg logg@tti-c.org Toyota Technological Institute at Chicago ... Would you implement

The need for automationThe finite element method for Poisson’s equation

Automating the finite element methodLecture plan

Homework ;-)

Download and install:

I FIAT version 0.2.3

I FFC version 0.3.0

I DOLFIN version 0.6.0

http://www.fenics.org/

Anders Logg [email protected] Automating the Finite Element Method