  This work introduces Pressio, an open-source project aimed at enabling
leading-edge projection-based reduced order models (ROMs) for large-scale
nonlinear dynamical systems in science and engineering. Pressio provides
model-reduction methods that can reduce both the number of spatial and temporal
degrees of freedom for any dynamical system expressible as a system of
parameterized ordinary differential equations (ODEs). We leverage this simple,
expressive mathematical framework as a pivotal design choice to enable a
minimal application programming interface (API) that is natural to dynamical
systems. The core component of Pressio is a C++11 header-only library that
leverages generic programming to support applications with arbitrary data types
and arbitrarily complex programming models. This is complemented with Python
bindings to expose these C++ functionalities to Python users with negligible
overhead and no user-required binding code. We discuss the distinguishing
characteristics of Pressio relative to existing model-reduction libraries,
outline its key design features, describe how the user interacts with it, and
present two test cases -- including one with over 20 million degrees of freedom
-- that highlight the performance results of Pressio and illustrate the breath
of problems that can be addressed with it.
