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.

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

- 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 - Adaptive 4th Order Runge Kutta
- 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

- 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

read_datafile.py (example of "your own python module" used by intro2python)

epsilon_dx.dat (example datafile)

- 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