romtools#

Scope, Design and Philosophy#

The ROM tools and workflows Python library comprises a set of algorithms for constructing and exploiting ROMs. The library is designed internally in terms of abstract base classes that encapsulate all the information needed to run a given algorithm. The philosophy is that, for any given application, the user “simply” needs to create a class that meets the required API of the abstract base class. Once this class is complete, the user gains access to all of our existing algorithms.

Content#

The Python library, called romtools, contains abstract interfaces and functions required for, e.g.,

  • Constructing parameter spaces

  • Constructing vector subspaces

    • Reduced-basis methods

    • Proper orthogonal decomposition

      • Algorithms are all compatible with basis scaling, basis splitting for multistate problems, and orthogonalization in different inner products

  • Constructing and exploiting ROMs via outer loop workflows

    • ROM construction via reduced-basis greedy (RB-Greedy)

    • ROM/FOM exploitation via sampling

    • ROM/FOM exploitation via Dakota-driven sampling

Demos/tutorials#

Please see the Demos section of the documentation for demos and tutorials.

License#

See the license information.

Modules

composite_vector_space

hpc

Tools for running ROM workflows on HPC resources.

hyper_reduction

The hyper-reduction library comprises a set of routines for hyper-reduction.

linalg

This module defines the linear algebra functions used throughout the romtools library.

rom

vector_space

This module defines the API to work with a vector subspace.

workflows

The workflows module contains all of our "outerloop" workflows used for ROM construction and ROM exploitation.