pymor.reductors.spectral_factor

Module Contents

class pymor.reductors.spectral_factor.SpectralFactorReductor(fom, mu=None)[source]

Bases: pymor.core.base.BasicObject

Passivity preserving model reduction via spectral factorization.

See [BU22] (Algorithm 4).

Note

The reductor uses dense computations and converts the full-order model to dense matrices.

Parameters

fom

The passive full-order LTIModel to reduce. The full-order model must be minimal and asymptotically stable.

mu

Parameter values.

Methods

reduce

Reduce system by reducing its spectral factor.

reduce(r_fn, X=None, compute_errors=False, check_stability=True)[source]

Reduce system by reducing its spectral factor.

Parameters

r_fn

A callable which takes two arguments

and returns a reduced-order LTIModel for the supplied spectral factor.

For example, a possible choice to obtain a reduced-order model of order 10 is:

lambda spectral_factor, mu: IRKAReductor(spectral_factor, mu).reduce(10)

or:

lambda spectral_factor, mu: BTReductor(spectral_factor, mu).reduce(10)

The method should preserve asymptotic stability.

X

A solution to the KYP inequality

[ATXXACTXBCBTXD+DT]0.

as a NumPy array, which in turn is used for computation of the spectral factor.

If None, it is assumed that D+DT is nonsingular, where D is the feed-through matrix of the full-order model. A minimal solution to the KYP inequality is then obtained internally by computing the minimal solution of the Riccati equation

ATXE+ETXA+(CTETXB)(D+DT)1(CBTXE)=0.

In the case that D+DT is singular, one can add a small perturbation, see [BU22] (Section 2.2.2).

compute_errors

If True, the relative H2 error of the reduced spectral factor is computed.

check_stability

If True, the stability of the reduced spectral factor is checked. The stability is required to guarantee a positive definite solution to the Lyapunov equation in [BU22] in equation (21).

Returns

rom

Reduced passive LTIModel model.