patricksanan.org | trip reports | music | academic | misc. | links | CV | contact feed

Teaching, Research, and Open Source Software

I currently work as a software engineer; previously, I was a computational mathematician and scientific software developer. I worked with the Geophysical Fluid Dynamics group in the Institute of Geophysics at ETH Zurich. I'm interested in applied mathematics, computational geometry, scientific software, parallel algorithms, and physical simulation. These interests fit well with cross-disciplinary work, and I have touched on many fields of application and collaboration. These include electroacoustic and computer music, geometry processing and graphics, scientific and high-performance computing, and computational Earth science. Recent research interests include computational methods and software for large parallel geodynamic simulations modelling the long-term evolution of the Earth and other rocky planets, pipelined Krylov solvers, scientific application testing, and narrow-stencil discretization on adaptive meshes for the Stokes equations.

Publications and Talks

See My CV or Google Scholar.

Open Source Software

Software I've contributed to includes

Teaching

Using PETSc with GPUs

Very short introduction for the CIG Developer's workshop, February 2022. Slides and examples.

Introduction to Finite Element Modelling in Geosciences

Block course at ETH Zurich.

2021 Website

Previous years: 2020 2019 2018 2017 2016

StagBL Tutorial

A tutorial on DMStag and StagBL, as part of a Staggered Grid Geodynamics Workshop at ETH Zurich, March 2020.

Slides and exercise

Practices for Scientific Computation

A short lecture on some general principles, corollaries, and simple applications for working with the basic tools of computational science. Given at the University of Bern CSH in Fall 2019.

Slides

Valgrind Tutorial

A short tutorial on the basics of Valgrind, with some simple examples. Given to the ETH D-ERDW GFD group in April 2017 and the university of Bern CSH in Fall 2019.

Slides and examples

HPC Libraries and PETSc Tutorial

Lectures given as part of the CSCS Summer School, covering numerical libraries for HPC, and a dedicated PETSc tutorial.

Materials 2017

Materials 2016

Materials 2015

Git Tutorial

A short tutorial on the basics of Git and web-based services like GitLab/Bitbucket/GitHub, given to the ETH D-ERDW Geophysical Fluid Dynamics and Seismology and Wave Physics groups in March 2016, the USI HPC course in September 2016, and the University of Bern CSH in Fall 2019.

Slides

Introduction to Software Engineering for Computational Science

A course taught at USI Lugano in Fall 2015, intended for Masters students in Computational Science with a wide range of backgrounds. It provides an introduction to C++ as well as the practical usage of version control, compilers, shells, debuggers, and other low-level tools.

Course materials

Introduction to MATLAB and Mathematica

A course taught at Caltech as ACM 11 in Spring 2013. It provides an introduction to the usage of MATLAB and Mathematica, aimed at undergraduates in Applied and Computational Mathematics.

Course materials