Willcox-Research-Group / rom-operator-inference-Python3

Operator Inference for data-driven, non-intrusive model reduction of dynamical systems.

Home Page:https://willcox-research-group.github.io/rom-operator-inference-Python3

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Shifted Operator Inference

shanemcq18 opened this issue · comments

New feature: Shifted Operator Inference from the paper Predicting solar wind streams from the inner-heliosphere to Earth via shifted operator inference by Opal Issan (@opaliss) and Boris Kramer (@bokramer). This strategy shifts the state snapshots to a moving coordinate frame. In the paper, this is notated in Eq. (16),

$$\mathbf{u}_{i} \approx u(\mathbf{x},t_{i}) \mapsto \tilde{u}(\tilde{\mathbf{x}}(\mathbf{x}, t_{i}), t_{i}) \approx \tilde{\mathbf{u}}_{i}$$

where

$$\tilde{\mathbf{x}}(\mathbf{x},t) = \mathbf{x} + \mathbf{c}(t).$$

@opaliss will take the lead on this. Essentially this will involve writing a new transformer class, perhaps WaveshiftTransformer? See opinf.pre._shiftscale.ShiftScaleTransformer for another transformer to compare to. Implementation steps:

  • Create a new file in /src/opinf/pre/.
  • Define the class so it inherits from opinf.pre.TransformerTemplate and implements fit(), transform(), and inverse_transform().
  • Import the new class in /src/opinf/pre/__init__.py.
  • Write unit tests for the new class in a new file in /tests/pre/.
  • Compile the docs (make docs) and check that the automatically generated documentation page looks good.
  • If possible, demonstrate using the class in a new Jupyter notebook tutorial in docs/source/tutorials/.