# Practical Lab WS 22/23 Efficient & User-friendly Parallel Implementation of Finite Difference Methods

## Efficient & User-friendly Parallel Implementation of Finite Difference Methods

*Wave equation on a dumbbell-like geometry using the finite difference code developed in this lab.*

*Heat equation in the mensa using the finite difference code developed in this lab.*

### Important

If you are interested in participating in this practical lab, please send an email to Lukas Troska answering the following questions:

- Do you have access to a computer on which you can code and install software?
- If yes, what type of computer is it and which operating system is it running?
- Do you need help installing software?
- Did you attend the lab “Programming Methods in Scientific Computing (P2E1)”?

### Dates

- Lecture
- Wednesdays, 14:15 - 16:00
- Location
- Seminar room 2.035 and 2.041, INS
- First meeting
- Wednesday, 12.10.2022, 15:15 - 16:00, seminar room 2.035, INS

### Content and goals of the lab

The lab will focus on the efficient parallel implementation of finite difference methods and will be loosely based and extend on the lab Programmiermethoden des Wissenschaftlichen Rechnens (P2E1). The end product of the lab will be a generic parallel library for finite difference methods where efficiency is attained via a C++ implementation and user-friendlyness is achieved via a Python interface.

### Overview of content

- Efficient programming in C++
- Interfacing C++ and Python
- Parallel programming using MPI
- Finite difference discretization of complex domains
- Efficient parallel solution of the resulting linear system
- Efficiency & scalability in the parallel setting

The lectures will alternate between a theoretical lecture, teaching the fundamentals, and a practical lecture, where individual questions concerning the exercise sheets will be answered.

The required software can easily be installed on your personal computer (Windows, macOS, Linux). Additionally modern workstations (Linux) and a large linux cluster are available for the participants.

### Requirements

- Basics of Python and/or C/C++ are helpful but not strictly necessary
- Basics of finite difference methods

### Exercise sheets

The lecture will not only contain a theoretical but also a practical part. The theoretical foundations will be taught in one week and programming exercises will be solved the next week. The exercise sheets will be available after each theoretical lecture. These sheets can be solved at home and in the practical lectures.

Depending on the exercise the exercise sheets will be solved alone or in groups of 3.

### Registration

The registration for the practical lab has to be done via Basis with the usual deadlines of the university (“Prüfungsan- und -abmeldung”). More information will be provided in the first meeting.

### Basis and eCampus

### Exam

All work during the practical lab will be taken into account for the final grade. Additionally there will be an oral exam at the end of the semester.