Finite difference modeling of hillslope diffusion

Dylan Mikesell
Boise State University,
Author Profile


This activity introduces students to the finite difference solution of the hill-slope diffusion PDE. The students derive partial derivatives from Taylor Series expansions of the 2D topography function z(x,t). After deriving the finite difference solution to this PDE, students implement this solution in MATLAB to model hillslope evolution in time using constant material properties and time steps.

Used this activity? Share your experiences and modifications

Learning Goals

MATLAB is used as the programming tool that allows students to implement the finite-difference solution. MATLAB is also used to visualize results.

Currently there is no data analysis in this activity. The goal is to get students comfortable with the ideas of 1) approximating derivatives and 2) using finite differences to solve PDEs. There is no error analysis built into this activity. It is simply, approximate the derivative and then implement the solution. Error analysis in this numerical method can be studied later.

There are a number of short answer questions at the end of the activity to make students think a little deeper about what they have just done and relate the physical parameters of the system to the physical parameters of the Earth (e.g. tilted rock layers).

Context for Use

I use this activity in my junior/senior level course entitled "Computing for Geoscientists". This activity builds on a previous SERC activity on hillslope modeling. The difference in this activity is that I require the students to derive the finite difference solution to the hillslope diffusion PDE. We study finite difference approximations in class, and in this lab the students get their first opportunity to solve a PDE with finite differences and then implement this solution.
Students should have some background about approximating derivatives with finite differences. After this lab, I discuss the errors and limitations of finite differences in class. The students ought to have some familiarity with MATLAB and loops, but this lab is built for first time MATLAB users. I assign this activity around week 4 or 5. By then the students are comfortable with loops, variables, matrices and plotting.
This is the first activity where I introduce the idea of a model domain and we think about discretizing space. I try to give some Q/A time in lecture after the students have had a chance to look at this activity.

Description and Teaching Materials

This activity is fairly self contained. There are some references to background reading for geologic examples and some textbooks that cover finite difference approximations in more detail. The same exercise without the the finite differences can be found here:

Please email me if you would like the solutions to this exercise.
Lab handout (Acrobat (PDF) 200kB Oct5 16)

Teaching Notes and Tips

I ask students to complete this on their own as far as they can. Then they get into groups and discuss and write up the results. I find that having them work in groups helps them figure out different ways to implement different things in MATLAB.


The code parts all have points. I then ask the students questions about their results and have them use their working model to explore the parameter space and see how variations in the physical properties of the system change the model output.

References and Resources