Skip to content

Multilithic Models #81

@shanemcq18

Description

@shanemcq18

Monolithic Models

The philosophy of the package is to specify model structure as a list of state/input operators that can be calibrated with Operator Inference. Roughly speaking, we currently support "monolithic" models of the form

$$ \frac{d}{dt}\mathbf{q}(t) = \mathbf{f}(\mathbf{q}(t), \mathbf{u}(t)), $$

in which $\mathbf{f}$ is comprised of operators that act on the entire state and/or the entire input.

Multilithic Models

In many applications, it is desirable to have more specific block structure, for example

$$ \begin{align*} \frac{d}{dt}\mathbf{q}_{0}(t) &= \mathbf{A}_{0,1}\mathbf{q}_{1}(t) + \mathbf{H}_{0,0}[\mathbf{q}_{0}(t) \otimes \mathbf{q}_{0}(t)] \\ \frac{d}{dt} \mathbf{q}_{1} (t) &= \mathbf{A}_{1,0}\mathbf{q}_{0}(t). \end{align*} $$

In this scenario, the right-hand side is made up of operators that act on only parts of the states and/or inputs. This issue is a follow-up to #48 for tracking efforts to implement models with block structure.

Vision and Roadmap

To do this, we need

  • multilithic operators, where the user specifies state/input subdimensions and indices, and
  • multilithic models, which are initialized with multilithic operators and state/input dimensions. These will have decoupled Operator Inference problems, one per subequation.

These models should be compatible with the existing ROM class, though we should add a warning if a multilithic model is used with a monolithic basis. The end result might be something like this:

model = opinf.models.ContinuousModelMulti(
    operators=[
        opinf.operators.LinearOperatorMulti(0, 1),      # A_{0, 1}
        opinf.operators.QuadraticOperatorMulti(0, 0),   # H_{0, 0}
        opinf.operators.LinearOperatorMulti(0, 0),      # A_{1, 0}
    ],
    substate_dimensions=(4, 6),
)

The ROM class should also be able to pass the substate_dimensions from a basis.BasisMulti to the model.

I have some initial code for this, but @bgzastrow will take the lead on the effort.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions