



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 x86based 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 plainold 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.
scuffem is a comprehensive suite of codes that implements the boundaryelement 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 scuffem home page.
Quantum chemistry (by which I mean solving the manybody Schroedinger equation in a basis of atomcentered contractedgaussiantype orbitals) bears a striking resemblance to boundaryelement 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 twobody terms in the Hamiltonian, and, although many of the integrals can be evaluated analytically in closed form for gaussiantype 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).
All of the above applicationspecific codes make use of various generalpurpose numerical algorithms for tasks such as interpolation and numerical integration. In such cases I tend to bundle the generalpurpose code into its own little library, which may then be used and reused 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 