Introduction to Modeling
From GeoMod
This class will introduce graduate students to a variety of modeling techniques used in the Earth Sciences. Given the diverse interests of Earth Science students it will introduce a wide range of models applicable to physical processes and human/stochastic behavior.
Intro to Modeling redesign of the course based on the Cutting Edge workshop on course design.
Contents |
Spring 2008
- Student journals:
- Spring 2008 Example 1 - code for the falling ball
- Notes on Acceleration, velocity and distance
- Spring 2008 Session 2 - code for bouncing ball
- Assignments:
- Using the analytical solution for the falling ball, confirm that the model accurately predicts the motion of the ball.
- How much energy is lost when the ball bounces? Incorporate this into your model.
- Add an x-component to your initial ball velocity.
- Assignments:
- Spring 2008 Session 3 - anatomy of program, writing reports
- variables - integer versus floating point (be careful with division)
- Loops
- Logical statements
- Spring 2008 Session 4 - lists and arrays
- Session 10:
- Graph function: to plot a simple 1d graph
- 1d groundwater model
- Session 11:
- Temperature Model 1d Instructions - 1d, explicit, temperature model
- Assignment:
- Compare implicit and explicit solutions
- Create two graphs with both implicit and explicit 1d solutions for the transient temperature model where dt = 1000, K = 0.01, dx = 10 and
- t = 1000
- t = 20000.
- Do both methods give the same result?
- Change the timestep used in both models and determine what is the stability criteria for both models.
- Determine how many timesteps will be necessary to get to steady state using the explicit solution.
- What are the advantages and disadvantages of using the implicit and explicit models.
- Create two graphs with both implicit and explicit 1d solutions for the transient temperature model where dt = 1000, K = 0.01, dx = 10 and
- Compare implicit and explicit solutions
- Session 10:
- Mississippi Embayment Project
- 2d thermal expansion model: Smith
- 2D Erosion Model - Python: Bradshaw
- 2D diffusion equation temperature
- 2D First attempt at putting models together
- 2D Second attempt @ putting models together - w/ isostatic equation
- 2D Thermal Expansion with Erosion - updated T Boundaries and Isostatic Rebound
- MEP with controls - to change the hotspot velocity, temperature and the crustal thermal conductivity during the simulation.
- Mississippi Embayment Project
Student Projects
For student projects from previous semesters click Student Projects.
Prerequisites
There are no prerequisites for this class, except that I strongly recommend students who have taken a programming class (any programming class will do) should register for the 8000 level class and those without this background register for the 7000 version.
In addition to modeling student will learn to:
- Program using the Python programming language.
- This language is relatively easy to learn. The software and documentation are available on the web at www.python.org
- We will also use the Visual module for python which provides a nice visual display of the model www.vpython.org
- Students are expected to have an appropriate background in mathematics, specific to their dicipline. We will cover some calculus/differential equations and statistics in class as we discuss different models but students will need to understand the underlying math specific to their class project.
Course Outline
- In the first two weeks of class, students will learn to program some simple models in the Python programming language. This will serve as an introduction/refresher to programming, and an introduction to different modeling techniques.
- The key element of this class will be the development of individual models by students over the course of the semester.
- In the fourth week students will begin presentations about the problem they wish to solve with their class project. (If you don't have anything in mind please see me for suggestions).
- In the fifth week students will give presentation discussing the method they will employ to solve their problem. Specifically, why they chose that method and what alternative methods are available.
- In order to aid students in the development of their models and expose the entire class to different modeling methods, from the sixth week students will be required to
- post progress reports, including code, to this website.
- Each student will update a page on this website. (See me for a username and password)
- read the reports and post comments on their peers on the Discussion page (see the tabs at the top of the page).
- post progress reports, including code, to this website.
Topics
Some basics
- Week 1
- Introduction to physical modeling
- Learning to program models: Create a program showing a bouncing ball using VPython.
- The objective of this assignment is to introduce students to the basics of programing and demonstrate how physics equations can be translated into computer code.
- Week 2
- Distributed models - Dealing with spatial data in arrays
Other types of modeling
The order of the following topics is flexible. It will depend on the interests and priorities of the class
- Week 3
- Agent based models (Inspired by my love of the movie Matrix)
- Week 4
- Finite differences
- Lecture notes using groundwater flow as an example.
- Finite differences
- Week 5
- Finite elements
- Week 6
- Arm Wrestling Tournament for Title of Greatest Programmer
Assignments
- Adapt the bounce.py code to give the ball a horizontal component and make it bounce between two walls.
- Write a list of guidelines for programming in Python based on what we have covered in class.
- Agents assignment
Lecture Notes and References
- Basic Python References
- Introduction to programming with VPython
- Variable types
- Lists and Arrays
- Loops
- Logical statements - if, else, and, not etc.
- A 2D array of tiles
- Functions
- A list of built in Python Functions
- Basic matrix solvers - Jacobi, Gauss-Seidel, successive over-relaxation
- Classes
- Inheritance
- Tips for maximizing performance
Useful Classes
- Raster Class - for importing and displaying raster grids into arrays.
- User controls - useful slider bars and buttons to introduce user controls to your Python programs
- 1-D Finite difference code for Ground Water
Useful Functions
- Importing a raster file from GIS
- How to export a raster file from Arc/GIS? See
- Monica's instructions, or,
- Ryan Csontos' instructions
- How to export a raster file from Arc/GIS? See
Useful Snippets of code
- Setting the size of a window - useful for recording animations
Modules
Useful Programs for Reference
- Chertman - agent based anthropological application.
- Interactive Earth Science Models - Examples of VPython models with interactivity.
Interesting Papers
Crone and Wilcock, 2005 - Modeling the effects of tidal loading on mid-ocean ridge hydrothermal systems.
- poroelastic model of tidal effects on sub-seafloor hydrothermal systems.

