dymad.sako.rals

Functions

estimate_pseudospectrum(grid, estimator[, ...])

Estimate pseudospectrum over a grid.

resolvent_analysis(z[, return_vec, A, B, U, ord])

Standalone, naive implementation of resolvent analysis, mainly for sanity check and suitable for small-scale problems.

Classes

RALowRank(U, T, V[, dt])

Resolvent analysis for low-rank linear systems

class dymad.sako.rals.RALowRank(U, T, V, dt=1.0)

Bases: object

Resolvent analysis for low-rank linear systems

For continuous-time system,

dot{x} = Ax+Bu

Resolvent operator H(s) = (sI-A)^{-1} B

Following cases are considered:

  1. Low-dimensional full-order systems

(1.1) Regular resolvent

argmax || H(s)u || / ||u||, H(s) = (sI-A)^{-1} B

(1.2) Constrained resolvent, where input & output are in subspace U

argmax || UH_r(s)a || / ||Ua||, H_r(s) = (sI-PAU)^{-1}

where PU=I_r. B is ignored. An alternative view for constrained resolvent is to think as

argmax || YH(s)Ua || / ||Ua|| = || Q^HH(s)Qg || / ||g||, U=QR, Ra=g

where Y=QQ^H is the projector onto U.

  1. High-dimensional low-rank systems, where A = UTV^H, with V^H U = I_r The formulation is essentially the constrained resolvent, with subspace U,

    argmax || UH_r(s)a || / ||Ua||, H_r(s) = (sI-T)^{-1} = || RH_r(s)R^{-1}g || / ||g||, U=QR, Ra=g

In mode=’disc’, discrete-time matrix will be used Ad = U exp(T*dt) V^H

Parameters:
  • U (np.ndarray) – Left orthogonal factor of A

  • T (np.ndarray) – Eigen block of A

  • V (np.ndarray) – Right orthogonal factor of A

  • dt (float) – Time step for discrete-time systems, default is 1.0

dymad.sako.rals.estimate_pseudospectrum(grid, estimator, return_vec=False, **kwargs)

Estimate pseudospectrum over a grid.

Parameters:
  • grid (np.ndarray) – List of points on complex plane

  • estimator (Callable) – Function to evaluate gain and I/O modes at a point Args: complex point, return_vec, kwargs

  • verbose (bool) – Whether to print info.

  • return_vec (bool) – If return I/O modes

  • kwargs – Args for estimator

dymad.sako.rals.resolvent_analysis(z, return_vec=False, A=None, B=None, U=None, ord=1)

Standalone, naive implementation of resolvent analysis, mainly for sanity check and suitable for small-scale problems. Uses SVD to compute resolvent of A at a given point z, and return the first ord modes and gains.

Parameters:
  • z (np.ndarray) – Point at which to compute resolvent

  • return_vec (bool) – If return I/O modes

  • A (np.ndarray) – The linear operator

  • B (np.ndarray) – The input matrix, only used if U is None

  • U (np.ndarray) – The constraining subspace

  • ord (int) – Number of modes and gains to return

Return type:

ndarray | tuple[ndarray, ndarray, ndarray]