FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of...

19
FEniCS on a Moebius strip Solving PDEs over manifolds with FEniCS Marie E. Rognes Center for Biomedical Computing Simula Research Laboratory FEniCS ’13, March 18, 2013 Thanks to Colin J. Cotter, David A. Ham and Andrew McRae!

Transcript of FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of...

Page 1: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

FEniCS on a Moebius strip

Solving PDEs over manifolds with FEniCS

Marie E. Rognes

Center for Biomedical Computing

Simula Research Laboratory

FEniCS ’13, March 18, 2013

Thanks to Colin J. Cotter, David A. Ham and Andrew McRae!

Page 2: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

An old friend abroad

Poisson’s equation with homogenous Dirichlet bcs

Find u such that

−∆u = 1 in Ω,

u = 0 on ∂Ω.

Finite element variational form

Find uh ∈ Vh(Th) such that

〈∇uh,∇ v〉Ω = 〈1, v〉Ω

for all v ∈ Vh(Th).

We are interested in the case where Ω is embedded in Rn

but has topological dimension m with 1 ≤ m ≤ n ≤ 3.

2 / 19

Page 3: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

Given a mesh of your favorite manifold

[Moebius strip mesh generated by script provided by Harish Narayanan, 2009]

3 / 19

Page 4: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

The solver code is identical to the case where thegeometrical equals the topological dimension

from dolfin import *

# Input mesh

mesh = Mesh("Moebius2.xml.gz")

# Define and solve problem as usual on this mesh

V = FunctionSpace(mesh , "Lagrange", 1)

u = TrialFunction(V)

v = TestFunction(V)

a = inner(grad(u), grad(v))*dx

f = Constant(1.0)

L = f*v*dx

u = Function(V)

bc = DirichletBC(V, 0.0, "on_boundary")

solve(a == L, u, bc)

4 / 19

Page 5: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

The resulting solution seems plausible

[Available in DOLFIN trunk (bzr branch lp:dolfin) and in FEniCS 1.2]

5 / 19

Page 6: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

Interpreting UFL over manifolds

6 / 19

Page 7: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

Finite elements can be defined on simplicial cellswith differing geometric and topological dimension

# Define triangle cell embedded in R^3

cell = Cell("triangle", 3)

cell.geometric_dimension () == 3 # True

cell.topological_dimension () == 2 # True

# Define elements as usual

Q = FiniteElement("Lagrange", cell , 1)

RT = FiniteElement("RT", cell , 1)

# Define Lagrange vector element

# Value dimension default to geometric dimension

V = VectorElement("Lagrange", cell , 1)

# Arguments defined over V will have 3 components:

u = Coefficient(V)

u[0], u[1], u[2]

7 / 19

Page 8: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

The UFL gradient is defined via the naturaldefinition of the directional derivativeThe differential operators dx, Dx, div, rot, curl follows.

cell = Cell("triangle", 3)

V = FiniteElement("Lagrange", cell , 1)

u = Coefficient(V)

u.dx(2) # What does this mean?

Interpret

grad(u) := ∇u

Define

u.dx(i) = grad(u)[i]

Dx(u, i) = grad(u)[i]

Define ∇u(x) ∈ Rn via

∇u(x) · v = limε→0

u(x+ εv)− u(x)ε

for v in the tangent space.

8 / 19

Page 9: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

Measures are defined with reference to thetopological dimension of the mesh

I*dx :=∑T∈T

∫TI dx, I*ds :=

∑e∈Ee

∫eI ds, I*dS :=

∑e∈Ei

∫eI ds.

For a mesh of geometric dimension n and topological dimensionm, dx and ds refer to the standard integration measures on Rm

and Rm−1 respectively.

# Integrate 1 over the exterior facets of the mesh

I = Constant(1.0)

a = I*ds

A = assemble(a, mesh=mesh)

# Integrate 1 over the cells of the surface mesh

surface = BoundaryMesh(mesh , "exterior")

b = I*dx

B = assemble(b, mesh=surface)

9 / 19

Page 10: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

Compiling forms over manifolds

10 / 19

Page 11: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

Form code generation in FFC is based on pulling theform back to a reference element

(0, 1)

(0, 0) (1, 0)

X1

X0

x

GT

X

Define element transformation GT : T0 → T and its rectangularJacobian JT

x = GT (X), JT (X) =∂GT (X)

∂X=

∂x

∂X11 / 19

Page 12: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

The Gram determinant is the appropriategeneralized determinant of rectangular Jacobians

Map for scalar fields (and affine vector fields):

φ(x) = Φ(X)

The transform of the mass matrix follows:∫Tφ(x)ψ(x) dx =

∫T0

Φ(X) Ψ(X) |J | dX,

using the Gram determinant

|J | = det(JTJ)1/2.

12 / 19

Page 13: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

The Moore-Penrose pseudoinverse is the appropriatepseudoinverse of rectangular Jacobians

The natural transform for gradients:

∇x φ(x) = (J†)T ∇X Φ(X)

uses the Moore-Penrose pseudo-inverse:

J† =(JTJ

)−1JT .

The transform of the stiffness matrix follows∫T∇φ · ∇ψ dx =

∫T0

((J†)T ∇Φ

)·(

(J†)T ∇Ψ)|J | dX.

13 / 19

Page 14: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

H(curl) and H(div) elements map as usual with thegeneralized geometry definitionsBut cell orientation can not be determined locally

Map H(curl) functions via the covariant Piola:

φ(x) = (J†)T Φ(X).

Map H(div) functions via the contravariant Piola:

φ(x) = ±|J |−1J Φ(X).

In flat space, the sign of the Jacobian determinantensures that contravariant Piola elements are mappedcorrectly. In contrast, the Gram determinant carries nosign. Sign is therefore (and must be) determined bycombining local and global information.

14 / 19

Page 15: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

Ocean modelling on the sphere

[Numerical experiments thanks to Andrew McRae/Colin J. Cotter]

15 / 19

Page 16: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

Mixed Poisson on the sphere: H(div)× L2

How to provide global orientation information

Find (σ, u, r) ∈ Σ× V ×R = W ⊂ H(div)× L2 × R such that

〈σ, τ〉+ 〈div σ, v〉+ 〈div τ, u〉+ 〈r, v〉+ 〈t, u〉 = 〈g, v〉for all (τ, v, t) ∈W .

10-2 10-1 100

h

10-5

10-4

10-3

10-2

|u−uexact| 0

RT1 ×DG0

BDM1 ×DG0

BDFM2 ×DG1

BDM2 ×DG1

mesh = Mesh("sphere.xml.gz")

global_normal = Expression (("x[0]", "x[1]", "x[2]"))

mesh.init_cell_orientations(global_normal)

16 / 19

Page 17: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

Mixed Poisson on the sphere: L2 ×H1

How to force a vector-field into the tangent space via a Lagrange multiplier

Find (σ, u, l, r) ∈W ⊂ L2 ×H1 × L2 × R such that

〈σ, τ〉+〈τ,∇u〉−〈σ,∇ v〉−〈l, τ ·n〉+〈k, σ·n〉+〈r, v〉+〈t, u〉 = −〈g, v〉

for all (τ, v, k, t) ∈W . Take W = DG31 × CG2 ×DG1 × R.

10-2 10-1 100

h

10-6

10-5

10-4

10-3

10-2

|u−uexact|0|u−uexact|1

17 / 19

Page 18: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

Shallow water equations over the surface of theearth

Find the velocity u and the depth perturbation D, given gravity gand base layer depth H

ut + fu⊥ + g∇D = 0

Dt +H div(u) = 0

0 20 40 60 80 100t

0.00

0.05

0.10

0.15

0.20

Ek

Ep

ET

18 / 19

Page 19: FEniCS on a Moebius strip · but has topological dimension mwith 1 m n 3. 2/19. Given a mesh of your favorite manifold [Moebius strip mesh generated by script provided by Harish Narayanan,

Current status

Anything that works for meshes with geometric andtopological dimension n for n = 1, 2, 3, should also workfor the case of topological dimension m and geometricdimension n for 1 ≤ m ≤ n ≤ 3.

Limitations

I No mixed spaces on cells of differing dimensions (still): cannotcombine spaces on facets with spaces on cells for instance.

I No curved elements (still): linear tessellations only

19 / 19