The paper on Eilmer v4 is out. Go read it!

Posted October 8, 2022 by Rowan Gollan ‐ 6 min read

In an academic career, one hopes to contribute to many papers that provide knowledge and value to the community. Of that many, there are some papers that stand above others for the individual. Our recently published paper on Eilmer is one such paper for me. I am pleased and proud to announce that our paper has been published in Computer Physics Communications.1

There are several reasons that I’m particularly proud of this paper. Ironically, it’s not actually the paper itself that is the source of pride, but rather what it represents and the work that went into the project. This paper represents a gamble — albeit a calculated one — on use of a programming language that is essentially unheard of in the scientific computing world: the D programming language. (We wrote about our experience with D for building simulation codes on the official D blog.) This paper represents the growth in activity for the GDTk project over the past few years. The list of authors on the paper alone shows how the core development team has doubled in size in recent years. This paper represents a commitment to developing the next-generation of simulation code builders. This is at a time when simulation code builders are becoming a rare breed in Australian academia.

Indulge me a little while I share a portion of the history of the Eilmer project; it will convey this idea of the gamble we took. The gamble I talk of is not only the switch to the D programming language but also the fact that we would take a hit in research outputs while switching to an intense development phase. Here “intense development phase” essentially means an entire rewrite of the code. The beginnings of Eilmer v4.0 can be traced back to some code that boot-strapped from Eilmer3. Here is the log message from that first commit related to Eilmer written in D that occurred on an auspicious Friday the 13th.

changeset:   1638:11231d1d94b8
user:        Peter Jacobs <p.jacobs@uq.edu.au>
date:        Fri Jun 13 10:58:48 2014 +1000
files:       dlang/README dlang/eilmer4/README dlang/gas/README dlang/geom/README dlang/nm/README dlang/nm/makefile dlang/nm/ridder.d dlang/nm/ridder_demo.d
description:
Let's start the migration of Eilmer to D.

Don't panic!  Rowan and PJ are just playing with D as the programming language
for our computational tools.  Eventually, we might like new core development
to be done in D but, for the moment, the C++/Python/Lua codes will continue to
be maintained and extended.

It’s unlikely that our users did panic, but certainly it was time for me when I took to carrying a towel. I had the success of a fellowship riding on the outcome of this experiment in development.

Hitchhiker’s Guide to the Galaxy meme: “don’t panic and carry a towel”

Over time, our activities on Eilmer3 wound down. At first we stopped extending functionality and later we halted active maintenance on Eilmer3. We didn’t make a deliberate decision on that end of maintenance date, rather, it happened organically. The last feature added to Eilmer3 was Jimmy-John Hoste’s implementation of the Eddy-dissipation model on the eighth of June 2018. The last example added to the collection for Eilmer3 was by Wilson Chan on the second of March 2020. However, core developer activity had mostly stopped several years prior. One marker in the history to show we were serious about the new code, written in D, was the conference paper we wrote and presented at the 2015 Australasian Conference on Computational Mechanics.

That gamble has paid off, in my opinion. It’s now 2022, so that has been about 8 years since we started on the rewrite. That actually puts us 2 years ahead of one accepted life cyle for large-scale scientific codes: a decade to build it, a decade to use it. Here are some measures of success:

  1. One PhD thesis developing, extending and applying the code: Kyle Damm’s work on adjoint-based optimisation for hypersonic aerodynamics.
  2. Several other PhD theses using Eilmer v4 as a primary analysis tool.
  3. Many undergraduate projects using and extending Eilmer v4.
  4. Introduction of Eilmer v4 into the classroom (in the UQ CFD course) from 2017.
  5. 10+ journal articles using Eilmer v4 for analysis, including the Hornung paper where Eilmer v4 served as replacement wind tunnel in some 300+ simulations to investigate flow over double cones.

I mentioned that another aspect that makes me proud of this paper is that it represents the growth of the developer and user community for GDTk. In recent years, we peaked at 5 what I would call core developers of the code. We have also maintained and grown the contributions from our research students. We began monthly in-person Eilmer user meetings on 11 April 2019, and we’ve been mostly successful at keeping that series of meetings going. During the pandemic, those meetings moved online. That gave us the opportunity to extend the invite to join to our international collaborators. We now hold the meetings on an alternating time schedule month-by-month: in one month, we use a time that is convenient for collaborators in the Americas, and in the subsequent month, we pick a Euro-friendly meeting time. It is a good social event to catch-up with colleagues around the world, as much as it is a technical meeting.

So, this published work is more than just a technical paper to me and that’s why I am proud. I encourage you to read it, but, more importantly, I encourage you to make use of our work. I think the utility of papers on computational science is summarised nicely by the words of Buckheit and Donoho (1995)2:

an article about a computational result is advertising, not scholarship. The actual scholarship is the full software environment, code and data, that produced the result.

On that note, go download the code and start exploring. The github icon in the top-right corner of this page will take you to the project source. However, I think our particular piece of advertising (ie. the journal article itself) will give you a good flavour of what the Eilmer code is and how we use it. You can go read the full paper at this link:

https://authors.elsevier.com/c/1fsPB2OInkAiF

I’d like to thank my co-authors Peter, Kyle and Nick for their efforts on this work. The lion’s share of thanks goes to Nick for his efforts on writing the vast majority of the article, and leading and coordinating the efforts of the rest of the team. It was some time back when Nick and I had a coffee conversation about writing this paper. I’m optimistic the sense of reward has outstripped the effort.


  1. Gibbons, N. N., Damm, K. A., Jacobs, P. A., and Gollan, R. J. (2023) Eilmer: an Open-Source Multi-Physics Hypersonic Flow Solver. Computer Physics Communications. Volume 282, 108551. https://doi.org/10.1016/j.cpc.2022.108551 ↩︎

  2. Buckheit and Donoho (1995) Wavelab and Reproducible Research in Wavelets and statistics. pp. 55-81. Springer. New York. ↩︎