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.
翻译:这项工作引入了Pressio,这是一个开放源码项目,旨在为科学和工程大规模非线性动态系统提供大型非线性动态系统最前沿的投影降序模型(ROMs)。Pressio提供模型削减方法,可以减少任何动态系统的空间和时间自由度,作为参数化普通差异方程式(ODEs)的系统。我们利用这个简单、表达式的数学框架作为关键设计选择,使最起码的应用编程界面(API)成为动态系统所特有的。Pressio的核心组成部分是一个C++11只用主机图书馆,利用通用编程支持任意数据类型和任意复杂编程模型的应用。这与Python捆绑在一起,使这些C+D功能暴露给拥有微不足道的间接费用和没有用户要求约束码的Python用户。我们讨论了Python与现有减少型图书馆的区别特征,概述了其关键设计特征,描述用户如何与它互动,并提出了两个测试案例 -- 包括一个有2 000多万度自由度的测试案例 -- 以突出Pressio的绩效并展示可以解决的问题。