Enzo-E/Cello Documentation

Cello is a highly scalable, fully-distributed array-of-octree parallel adaptive mesh refinement (AMR) framework, and Enzo-E is a scalable branch of the ENZO parallel astrophysics and cosmology application that has been ported to use Cello. Enzo-E / Cello is currently funded by the National Science Foundation (NSF) grant OAC-1835402, with previous funding through NSF grants PHY-1104819, AST-0808184, and SI2-SSE-1440709.

Two fundamental differences between Enzo-E and ENZO are their AMR design and code parallelization. Cello implements array of octree AMR, which has demonstrated scalability to date through 256K floating-point cores of the NSF Blue Waters supercomputer at the National Center for Supercomputing Applications. Unlike ENZO, which is parallelized using MPI, Enzo-E/Cello is parallelized using Charm++, an OOP parallel programming system, targeting the development of Exascale software applications, and actively developed at the Parallel Programming Laboratory at the University of Illinois, Urbana-Champaign.

Enzo-E currently has three hyperbolic solvers: PPM, an enhanced piecewise parabolic method solver that was migrated to Enzo-E from the ENZO code base, PPML, an ideal compressible MHD solver originally implemented in serial Fortran, and VL+CT, a dimensionally-unsplit compressible MHD solver implemented specifically for Enzo-E in C++. More recently, physics and infrastructure capabilities have been developed for particle methods, including an implementation of ENZO’s CIC particle-mesh gravity solver, and cosmological expansion with comoving coordinates. Currently we are collaborating with Prof. Daniel Reynolds on developing and implementing a highly scalable multigrid-based linear solver.

Getting started

The Getting started using Enzo-E section should cover everything one needs to know to download Enzo-E / Cello and its dependent software, configure, build, and run a small example test problem.


The Enzo-E / Cello parameter reference section is a reference page for all Enzo-E and Cello parameters, which are used to write parameters files defining simulations to run.

How parameters are organized within a parameter file is described in Parameter files, which covers parameter groups, subgroups, parameters, and data types recognized.

An example parameter file is described in detail in Parameter file example.

Using and developing Enzo-E / Cello

The new Using Enzo-E section will describe in detail how to use Enzo-E, including what methods, fields, particle types etc. are available. While only an outline exists now, we are working on getting this section completed soon.

The new Developing with Cello section will describe how to add new functionality to an application such as Enzo-E built on Cello, including adding new computational methods, initial conditions, and refinement criteria. As with the Using Enzo-E section, this documentation is under active development, and is mostly an outline at this point.

PDF User and Developer Guide (depreciated)

An Enzo-E / Cello User and Developer Guide is available from the link below. Warning, it’s big (0.2GB), and currently written as a presentation, and some sections are somewhat outdated. This document, while currently still useful, is being phased out in favor of the above online content.

Presentations given at the 2018 Enzo Days Workshop are also available below. They are more up-to-date, but are also still rather large.

Indices and tables