GitHub

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 https://pressio.github.io/rom-tools-and-workflows-demos for demos and tutorials

License

#
# ************************************************************************
#
#                         ROM Tools and Workflows
# Copyright 2019 National Technology & Engineering Solutions of Sandia,LLC
#                              (NTESS)
#
# Under the terms of Contract DE-NA0003525 with NTESS, the
# U.S. Government retains certain rights in this software.
#
# ROM Tools and Workflows is licensed under BSD-3-Clause terms of use:
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# 1. Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# 2. Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
#
# 3. Neither the name of the copyright holder nor the names of its
# contributors may be used to endorse or promote products derived
# from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.
#
# Questions? Contact Eric Parish (ejparis@sandia.gov)
#
# ************************************************************************
#



 1#
 2# ************************************************************************
 3#
 4#                         ROM Tools and Workflows
 5# Copyright 2019 National Technology & Engineering Solutions of Sandia,LLC
 6#                              (NTESS)
 7#
 8# Under the terms of Contract DE-NA0003525 with NTESS, the
 9# U.S. Government retains certain rights in this software.
10#
11# ROM Tools and Workflows is licensed under BSD-3-Clause terms of use:
12#
13# Redistribution and use in source and binary forms, with or without
14# modification, are permitted provided that the following conditions
15# are met:
16#
17# 1. Redistributions of source code must retain the above copyright
18# notice, this list of conditions and the following disclaimer.
19#
20# 2. Redistributions in binary form must reproduce the above copyright
21# notice, this list of conditions and the following disclaimer in the
22# documentation and/or other materials provided with the distribution.
23#
24# 3. Neither the name of the copyright holder nor the names of its
25# contributors may be used to endorse or promote products derived
26# from this software without specific prior written permission.
27#
28# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
29# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
30# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
31# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
32# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
33# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
34# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
35# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
36# HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
37# STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
38# IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
39# POSSIBILITY OF SUCH DAMAGE.
40#
41# Questions? Contact Eric Parish (ejparis@sandia.gov)
42#
43# ************************************************************************
44#
45
46'''
47# Scope, Design and Philosophy
48
49The ROM tools and workflows Python library comprises a set of algorithms for
50constructing and exploiting ROMs.
51The library is designed internally in terms of *abstract base classes* that encapsulate
52all the information needed to run a given algorithm.
53The philosophy is that, for any given application, the user "simply" needs to create
54a class that meets the required API of the abstract base class.
55Once this class is complete, the user gains access to all of our existing algorithms.
56
57# Content
58
59The Python library, called `romtools`, contains abstract interfaces and functions required for, e.g.,
60
61- Constructing parameter spaces
62
63- Constructing vector subspaces
64  - Reduced-basis methods
65  - Proper orthogonal decomposition
66    - Algorithms are all compatible with basis scaling, basis splitting for multistate problems, and orthogonalization
67      in different inner products
68
69- Constructing and exploiting ROMs via outer loop workflows
70
71  - ROM construction via reduced-basis greedy (RB-Greedy)
72  - ROM/FOM exploitation via sampling
73  - ROM/FOM exploitation via Dakota-driven sampling
74
75# Demos/tutorials
76
77Please see https://pressio.github.io/rom-tools-and-workflows-demos for demos and tutorials
78
79# License
80```plaintext
81.. include:: ../LICENSE
82```
83'''
84
85__all__ = ['vector_space', 'workflows', 'hyper_reduction','composite_vector_space']
86
87__docformat__ = "restructuredtext" # required to generate the license
88
89from romtools.vector_space import *
90from romtools.hyper_reduction import *
91from romtools.workflows import *
92from romtools.composite_vector_space import *
93from romtools.rom import *