M. T. Homer Reid MIT Home Page
Physics Problems Research teaching My Music About Me Miscellany


Here's a collection of codes that I have put together for computational physics applications. These are all designed to run in a standard scientific computing environment (i.e. on an x86-based Linux platform), although they could perhaps be coaxed to work on Windows or Mac machines.

These codes are written in C++, but the style is probably closest in spirit to that of plain-old C with some use of the most obvious and convenient C++ extensions (a style sometimes known as "C+").

Thus, you don't have to be a C++ programmer to use these codes. In many cases you don't even have to be a C programmer; most codes come with standalone application versions that you can just run from the command line, and in some cases interfaces to python or other programming environments are available.


scuff-em is a comprehensive suite of codes that implements the boundary-element method (also known as the "method of moments") of classical electromagnetism to solve a variety of problems in computational physics and engineering, including electromagnetic scattering, Casimir physics, radiative heat transfer, and RF/microwave engineering.

For more information, see the scuff-em home page.

Quantum Chemistry Codes

Quantum chemistry (by which I mean solving the many-body Schroedinger equation in a basis of atom-centered contracted-gaussian-type orbitals) bears a striking resemblance to boundary-element modeling of engineering systems in one respect: In both cases, you have to go through a lot of tedious setup, involving complicated multidimensional integrals, before you can get to the fun part. In the quantum chemistry case, these integrals are the matrix elements of the one- and two-body terms in the Hamiltonian, and, although many of the integrals can be evaluated analytically in closed form for gaussian-type orbitals (which is the whole reason for using GTOs in the first place), and although excellent codes for carrying out these calculations already exist, getting everything organized and in the format you need it can still be quite a hassle.

libhqc is a C/C++ programming library designed to automate all that hassle -- leaving you free to work on the interesting parts of the problems. (More extensive documentation under construction).

General-Purpose Numerical Libraries

All of the above application-specific codes make use of various general-purpose numerical algorithms for tasks such as interpolation and numerical integration. In such cases I tend to bundle the general-purpose code into its own little library, which may then be used and re-used in various different settings.

Here's a compendium of little numerical libraries like this.

Homer Reid's Research Codes Page, by Homer Reid
Last Modified: 11/16/16