Charm++ FEM Framework
Tutorial

Roadmap

"Why use FEM?"

Why use the FEM Framework?

Why not use the FEM Framework?

Scalability of FEM Framework

“Overhead” of Multipartitioning

Load balancer in action

FEM Framework Users: Frac3D

FEM Framework Users: CSAR

FEM Framework Users: DG

NetFEM Client: pretty pictures

"FEM Concepts"

FEM Basics

Serial FEM Mesh

Partitioned Mesh

FEM Parallel Model: Shared Nodes

FEM Mesh: Node Communication

FEM Parallel Model: Ghosts

FEM Mesh: Ghosts

FEM Program Structure

Parallelization

Parallel FEM Program

FEM Framework Program

init

driver

Structure of an FEM Application

A Serial Program

A Parallel Framework Program

Real Names of Pieces

FEM Mesh Access Calls

Old FEM Mesh Access Routines

New FEM Mesh Access Routine (!)

New Mesh Access: Example

New Mesh Access: Advantages

New Mesh Access: Disadvantages

FEM Communication Calls

Node Fields

Create a Field

Update Field: Shared Nodes

FEM Ghost Layers

Ghost Elements: Overview

Ghosts: 2D Example

Building Ghosts:

Building Ghosts:

Ghosts: Node adjacency

Ghosts: Edge adjacency

Extracting and Using Ghosts

Update Field: Ghosts

Ghost Example: Mesh

Ghost Example: Ghost Elements

FEM Installation

Where to Get It ?

How to Build It ?

How to Compile & Link ?

How to Run ?

Example

Advanced FEM Calls

Advanced: FEM Migration

Advanced: Complicated Fields

Node Fields

FEM_Create_Field

Create_field Example

Create_field Example

Advanced: Symmetry Ghosts

Ghosts and Symmetries

Symmetry Ghosts: 2D Example

Ghost Elements

Symmetry-Ghost Elements

Ghosts and Symmetries: Update

Advanced: FEM on MPI

Extra FEM Features

Collision Detection

Charm++ Collision Detection

Collision Detection Algorithm:

Serial Scaling

Parallel Scaled Problem

Mesh Adaptation

Parallel Mesh Refinement

IFEM: Iterative FEM
Linear Solver Interface

IFEM: Intro to Matrix-based FEM

106 Rows is a Big  Matrix

ILSI:  Iterative Linear Solver Interface

Matrix Example:

Matrix Example: 2 Elements

Matrix Example: Derivation

Matrix Example: FEM

IFEM: Bottom Line

NetFEM

NetFEM Client: pretty pictures

NetFEM: Easy Visualization

NetFEM: Easy visualization

NetFEM: Zoom in

NetFEM: Outline Elements

NetFEM: Point Nodes

NetFEM Server Side: Overview

NetFEM Server Side: Setup

NetFEM Server Side: Nodes

NetFEM: Node Displacement

NetFEM Server Side: Elements

NetFEM: Element Stress

NetFEM Server Side: Vectors

NetFEM: Element Velocity

NetFEM Server Side: Scalars

NetFEM Server Side: 2D Example

NetFEM: Conclusion

Conclusions: Charm++ FEM

Old FEM Mesh Routines

Framework Calls

FEM_*_Elem

FEM_*_Node

Element Connectivity

Additional Data for Nodes and Elements

Utility