Integrating Research into Numerical Modeling Classes
Marc Hesse, Geological Sciences, The University of Texas at AustinWhen I took over our departments class numerical modeling for upper division geophysics students, I decided to center the class around and ongoing research questions in my research group. Over the last four years we have worked on planetary science problems in heat conduction, viscous flow, and different types of multi-phase flow that have led to subsequent publications (https://mhesse.github.io/numerical_modeling/).
I believe this approach has several benefits. Most importantly it motivates the class material and illustrates how it is applied to scientific problem solving. Over the course of the semester the students gradually develop a relatively complex piece of software which provides a sense of achievement. It also deemphasizes specific numerical techniques and puts more emphasis on the overall integration of all components. For far student feedback has been positive, despite the broad range of student backgrounds in science and engineering.
The key to the course is a simple but modular approach to discretization that allows easy adaptation to different problems. The main idea is to build matrices that are discrete analogs to the standard linear operators in vector calculus (div, grad, curl). These can then be combined to solve the different partial differential equations arising from the particular research problem we are working on. For example, we may first work on heat conduction and later in the semester on Stokes flow, before combining both to study convection in planetary interiors. This demonstrates to the students how to combine the discrete operators to solve problems of their own.
While this approach could be used with any discretization, we choose a simple conservative finite difference discretization on a staggered mesh that is similar to a finite volume approach. This is intuitive to most students and requires no previous background in numerical analysis. On cartesian meshes higher dimensional operators can be obtained easily and efficiently using inbuilt functions for Kronecker products. For far, our projects have been limited to two-dimensional problems, but the approach extends naturally to three dimensions. Students are often surprised at the efficiency of the code and the problems we can solve in class. To achieve this this efficiency the generation and handling of sparse matrices is a central topic of the class and potentially the one most useful to students whose research is in entirely different fields.
This course also highlights what is now possible in an educational setting, due to the high-level programming language concept pioneered by Matlab. In the days of Fortran, it would just not have been possible to get this far this quick in a one semester course. Another very helpful tool in this class is Matlab grader, which has three crucial functions in my class: 1) It allows me to automate the grading for the homework; 2) Provides the students instant feedback on their work – this is something they have told me they value; 3) It ensures that students complete the coding assignments correctly, which is essential in because every new assignment builds on the previous work.