Skip to content

Linear algebra module #33

Description

@jcallaham

When working with projection-based modeling and modal analysis, it would be nice to have some expanded linear algebra functionality. This would ideally look something like a combination of the VectorSpaceHandles in Modred and the LinearOperator in Scipy. So you would probably have three fundamental objects:

  1. A Vector-type class (possibly the same as the implementation of the Modred VectorHandle, currently called Snapshot, or maybe with a Function as the underlying object...). Should support basic vector algebra operations
  2. An Operator class which is composable, ideally just inheriting from the Scipy version, but without assuming that the underlying vectors are actually numpy arrays.
  3. A Basis or Subspace, which is a collection of Vectors (and optionally adjoints) that supports creation of projection and orthogonal projection Operators

With these, you could do things like:

  • Apply an Operator to a Vector and get a new Vector (e.g. timestepping as a sequence of linear solves)
  • Project an Operator onto a Subspace to get a reduced-order approximation
  • Compose an Operator with projection onto the complement of a Subspace, for instance to do balanced POD in the stable subspace of a linearized Navier-Stokes operator

Other ideas and thoughts:

  • How would you handle parallel I/O from different sources? See Snapshot handling #31 for more discussion
  • Replace explicit dependence on flow in modal analysis with a set of callbacks for the snapshots
  • Hide all references to Snapshot and only use mr.VectorHandle, then hide all references to this to avoid confusion with the new Vector objects

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions