# PENNANT

## Description

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.

## Authorship

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 |