This page lists some software that I've written or co-wrote, and is available for download. It is intended to be useful for research or teaching purposes.

# Astronomy Education

Introductory astronomy codes and animations
A set of introductory astronomy animations (Spiral Arms, Doppler shifts, parallax, ...) coded in python.

# Numerical Examples

Constant Coefficient Helmholtz Equation
Fortran 95 code to solve the 1D constant coefficient Helmholtz equation: a*phi - b*phi'' = f for a given f and two boundary conditions on phi. Dirichlet and Neumann boundary conditions are supported in addition to having Dirichlet on one boundary and Neumann on the other. This routine uses the same linear algebra module that appears in the linear_algebra_test.f90 code.

helmholtz_test.tar
Python code to do Classical Runge Kutta and Adaptive Runge Kutta integrations, both are 4th order schemes. The code can solve vector systems of the form ydot = f(y, t) where y and ydot are vectors and t is the independent variable. Users specify the function f(y,t) and the appropriate initial conditions along with integration limits and the required relative error tolerance (adaptive scheme only). There is a simple example code that uses the Runge Kutta code to solve the chaotic pendulum problem.

Runge_Kutta_4.py

chaotic_pendulum.py
Determinant
Fortran 95 code to calculate the determinant of a matrix by LU decomposition. The LU decomposed matrix is not returned.

determinant.f90
Linear Algebra
Fortran 95 code to solve matrix systems of the form A.x = b where A is a NxN matrix and b is a Nx1 length vector. Currently only two routines are included: Tridiagonal Solve and Gaussian elimination (using pivoting).

linear_algebra_test.f90

# Other Examples

Wx Python GUI
I have developed a few python GUIs to help analyze my data. These GUIs use the Wx Python module.
Python Command Line Options
A code to introduce command line options in python. Nearly half of the lines in the code are devoted to comments to teach what is happening.

command_line_options.py
Python/Makefile Color Printing
A simple code to show how to print to the screen using different colors from within Python and from within a Makefile.

colors.py

make_colors
Bash Overwrite Previous Line
Simple code to illustrate how to overwrite the previous line when printing from a shell script. This trick can be used to show percentage complete progress bars that only take up one line of output, instead of 100 lines.

update_line.sh
Introduction to Python
Simple code to illustrate the fun things Python can do. This is meant to be an educational code to help beginning programmers learn the basic python operations. I include numpy functions, string slicing, lists, dictionaries, importing your own python modules and plotting with pylab. It does not cover object-oriented programming using classes.

intro2python.py

epsilon_dx.dat (example datafile)

# Utilities

Fortran 95 build system
A simple collection of python scripts and supporting makefile scripts to automatically build Fortran 95 source files. Runtime parameters and command line arguments are supported and the files to define these capabilities are automatically generated.

BuildSystem.tar.bz
Movie Script
A simple python script to string a bunch of PNG images into a movie. Generates both mp4 and avi formats.

mkmovie.py

updated  •