CITA - ICAT
About the Institute
Research @ CITA
Working @ CITA
Events & Calendar
Directory
Contact & Visitor Info
Internal
 
 
 
Directory
[Safety First]
Wear proper safety equipment when building a new code.
Jonathan Dursi
Code Development

For both experimentalists and computational scientists, doing new science sometimes means building your own equipment. I have been one of the developers — having checked in code well over 600 times, touching almost every module — of the FLASH code, a multi-physics, highly parallel, astrophysical fluids code that has won a Gordon Bell prize.

Doing the next big project also always requires adding one more tool. In parallel with computational projects using tools already at my disposal, over the next five years I plan to develop all-speed hydrodynamic solvers (already in use in other disciplines) for use in publicly available codes, to make accessible regimes unavailable to the current generation of astrophysical solvers. In testing such a solver, collaboration with experimentalists will be essential, and can generate interesting science in its own right.

In the shorter term, my development projects involve re-writing the FLASH multigrid solver from scratch, and re-writing its hdf5 output routines to write many individual files (this is helpful on clusters without a parallel file system.)

Easily the hardest and most morale-sapping aspect of code development is debugging; I've put together a lecture on debugging that I try to slip into introductory computing courses whenever possible.

I do much of my computation these days on CITA's McKenzie cluster, and maintain a list of codes that run on McKenzie and how to get them up and running.

On smaller scale code development, here you can also find:

  • Source code for doing one-zone ignition and steady-state detonation structure calculations, used in a recent paper;
  • Sometimes getting MPI built on your laptop for your favourite compilers just isn't worth it. Here is a `null' MPI implementation with just enough MPI `functionality' to be able to compile and run FLASH on a single processor without installing a real MPI implementation. Other MPI codes will doubtless require other functions to be written; some just stubs, and some that actually have to do something.