CME 380: Constructing Scientific Simulation Codes

Announcements

The first lecture is on Wed, April 2nd at 3PM. See Lectures for viewing instructions.

The disk image for the VMware player is now available on the resources page.

Course Description

This course leverages the instructor’s 25 years of designing and implementing scientific simulation codes. The course gives practical advice about the day-to-day care and feeding of these codes. We’ll talk about simple and easy to apply techniques for the code management and testing. We’ll look at techniques for implementing code sharing including modularization and shared source repositories. We’ll talk about the mechanisms for the build processes for your code and how they affect portability and the ease with which others can use your codes. We’ll learn about scripting: both for manipulating, digesting, and analyzing your code input/outputs and for setup of your code in an easy to use wrapper. The course will end with some thoughts on parallelization at extreme scales.

Prerequisites

The course has no real prerequisites and is designed to cover a lot of ground. There is some programming, so you should be familiar with basic UNIX commands and have passable working knowledge of an editor like VI or EMACS. The simulation codes we will discuss are simple proxy applications (acoustic wave propagation and hydrodynamics) that are intended to illustrate principles without getting bogged down in methods. This allows students from any of the many contributing CME disciplines to get the most possible from this class. This implies that you don’t need deep understanding of the physical discipline of the simulation in order to make important contributions to it! The emphasis is on practical, hands on techniques that will make you a better and more effective computational scientist while leveraging the contributions of others.