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 `plaintext .. include:: ../LICENSE `

Modules

composite_vector_space

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. We currently support: - Greedy sampling for construction of reduced-basis ROMs - Random sampling for model exploitation - Coupling classes to Dakota for - Random sampling.