August 2, 2019: Enzo 2.6 has been released. View the Release Notes!
Enzo is a community-developed adaptive mesh refinement simulation code, designed for rich, multi-physics hydrodynamic astrophysical calculations.
Enzo is freely available, developed in the open, with a strong support structure for assistance. Simulations conducted with Enzo have been featured in numerous refereed journal articles, and it is capable of running on computers from laptop to Top500.
Image credit:
Enzo can be obtained in several places, corresponding to the degree of stability and development accessibility.
There are several places to get help with Enzo, from mailing lists to documentation to online tutorials and recordings of workshop presentations.
Enzo is developed in the open by a community of developers from different institutions. Contributions, fixes, and changes are all welcomed!
There are several places to get help with Enzo, from mailing lists to documentation to online tutorials and recordings of workshop presentations.
The easiest way to get up and running with Enzo is to follow our Enzo Boot Camp, which walks you through installation, running test problems, and making some simple images.
Enzo is provided through several channels: a public repository of code that is under active development, as well as a stable channel that is carefully curated and that corresponds to releases. Have a look at the Release Notes, if you're interested in what features have recently made it into the stable version. Tarfiles of stable releases are also available, but are discouraged. If you want to use the development version, it's probably a good idea to check out the development guide.
The simplest way to get a copy of the current stable source code is to clone the repository using git:
$ git clone https://github.com/enzo-project/enzo-dev
Makefiles are provided for many commonly-used supercomputers, clusters and operating systems. If you're interested in helping package up the Enzo source code and its dependencies for a platform, get in touch!
Using Enzo effectively can be a bit challenging at times -- but there is plently of assistance available, thanks to the broad community of users and developers. There are a number of tutorials in the documentation, including example problems in the current source tree. For more narrative descriptions of how to use Enzo, there are a number of videos from the 2010 Enzo Users' Workshop.
But, in addition to prepared materials, there are also several forums available to get in touch with people who may be able to help you out with problems using or developing Enzo. There's both a user-centeric mailing list as well as a mailing list more suited for development issues.
If you've already familiarized yourself with the code base, the best way to get started developing is to create a fork of Enzo and then issue a pull request with your contributed changes.
The Enzo Project is built on the contributed code of dozens of computational astrophysicists -- in the form of physics modules, star formation prescriptions, infrastructure, initial conditions, and on and on. We welcome contributions from users and developers alike, and we are endeavoring to make it as easy as possible to contribute code.
To facilitate this, we provide not only a developer guide, but we also host our code on Github, where we invite you to fork the project, make changes, and then issue a "Pull Request" so that your changes can be reviewed, accepted, and incorporated into the next released version.
If you're going to be developing, you should definitely join the developer mailing list, where you should feel free to ask questions if you get stuck. It might also be a good idea to familiarize yourself with Git and to browse the development version of the Enzo source.
Enzo users and developers are, on the whole, a pretty active community. We are endeavoring to hold biannual developer workshops, with users' workshops every other year or so. We're passionate about ensuring physical fidelity of the simulation code, enabling scientific progress through both large- and small-scale simulations, and encouraging reproducibility of results in the literature.
There are a couple ways to get involved with the Enzo community. The first, and easiest, is just to sign up for both the users' and developers' mailing lists, and trying to help out people with questions or just sharing with others what you've been working on.
Mostly, though, we encourage you to talk to other people in the community; speak up if you have problems, ideas or suggestions; and get involved by contributing fixes and changes if you want to. And then, come to a workshop! They're usually quite accessible for new and experienced developers, and it's an excellent way to put faces with names on the mailing list. We had one at Stanford in the Summer of 2019, and it was productive, informative, and fun.