NERSCPowering Scientific Discovery Since 1974



PENNANT is a mini-app intended for use in advanced architecture research.  It has data structures for manipulating 2-D unstructured finite element meshes containing arbitrary polygons.  It implements staggered-mesh Lagrangian hydrodynamics, subzonal pressure treatment, and artificial viscosity.

PENNANT implements a Lagrangian staggered-grid hydrodynamics algorithm on a 2-D unstructured finite-volume mesh composed of arbitrary polygons with arbitrary connectivity. "Staggered-grid" means that some state variables are defined on mesh points, while others are defined on zones. Because of the unstructured and staggered-grid nature of the algorithm, irregular memory access patterns will be used frequently.

PENNANT implements parallelism at two levels.  MPI parallelism is supported using geometric domain decomposition, with a gather-sum-scatter operation on point data implemented across processors using MPI calls.  PENNANT also supports threaded parallelism using OpenMP or CUDA by dividing the mesh into processing chunks which are nearly independent and can be processed in parallel, using an OpenMP parallel for or a CUDA kernel launch with one grid block per chunk.

More detailed documentation can be found in the doc directory of the PENNANT distribution.

Required Problem Sets

For PENNANT, small, medium and large problems have been defined. Refer to the README.APEX file in the source distribution for details. The leblancx16 problem (large) will be used as the reference problem in the calculation of SSI. The target problem for SSI is leblancx64 (grand challenge).

Source Distribution

Source and problem sets can be downloaded here.

How to Build, Run and Verify

Refer to the README.APEX file in the source distribution.


PENNANT was developed at Los Alamos National Laboratory Richard P. Feynman Center for Innovation.

Change Log

3/4/2016 Energy check diagnostic added to code for verification purposes.
Minor changes to source, only affecting startup and shutdown.
Grand challenge test problem added.  Other problem definitions
are unchanged.  Documentation and sample outputs are updated
to reflect the above.
2/9/2016 Sample outputs updated in source distribution. Source and problem definitions remain unchanged.
12/21/2015 Source distribution link created
10/30/2015 Initial release