pymor.reductors package¶
Submodules¶
basic module¶

class
pymor.reductors.basic.
DelayLTIPGReductor
(fom, W, V, E_biorthonormal=False)[source]¶ Bases:
pymor.reductors.basic.ProjectionBasedReductor
PetrovGalerkin projection of an
LinearDelayModel
.Parameters
Methods
DelayLTIPGReductor
build_rom
,extend_basis
,project_operators
,project_operators_to_subbasis
,reconstruct
ProjectionBasedReductor
assemble_estimator
,assemble_estimator_for_subbasis
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

class
pymor.reductors.basic.
InstationaryRBReductor
(fom, RB=None, product=None, initial_data_product=None, product_is_mass=False, check_orthonormality=None, check_tol=None)[source]¶ Bases:
pymor.reductors.basic.ProjectionBasedReductor
Galerkin projection of an
InstationaryModel
.Parameters
 fom
 The full order
Model
to reduce.  RB
 The basis of the reduced space onto which to project. If
None
an empty basis is used.  product
 Inner product
Operator
w.r.t. whichRB
is orthonormalized. IfNone
, the the Euclidean inner product is used.  initial_data_product
 Inner product
Operator
w.r.t. which theinitial_data
offom
is orthogonally projected. IfNone
, the Euclidean inner product is used.  product_is_mass
 If
True
, no mass matrix for the reducedModel
is assembled. Set toTrue
ifRB
is orthonormal w.r.t. themass
matrix offom
.  check_orthonormality
 See
ProjectionBasedReductor
.  check_tol
 See
ProjectionBasedReductor
.
Methods
InstationaryRBReductor
build_rom
,project_operators
,project_operators_to_subbasis
ProjectionBasedReductor
assemble_estimator
,assemble_estimator_for_subbasis
,extend_basis
,reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

class
pymor.reductors.basic.
LTIPGReductor
(fom, W, V, E_biorthonormal=False)[source]¶ Bases:
pymor.reductors.basic.ProjectionBasedReductor
PetrovGalerkin projection of an
LTIModel
.Parameters
Methods
LTIPGReductor
build_rom
,extend_basis
,project_operators
,project_operators_to_subbasis
,reconstruct
ProjectionBasedReductor
assemble_estimator
,assemble_estimator_for_subbasis
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

class
pymor.reductors.basic.
ProjectionBasedReductor
(fom, bases, products={}, check_orthonormality=True, check_tol=0.001)[source]¶ Bases:
pymor.core.interfaces.BasicInterface
Generic projection based reductor.
Parameters
 fom
 The full order
Model
to reduce.  bases
 A dict of
VectorArrays
of basis vectors.  products
 A dict of inner product
Operators
w.r.t. which the corresponding bases are orthonormalized. A value ofNone
corresponds to orthonormalization of the basis w.r.t. the Euclidean inner product.  check_orthonormality
 If
True
, check if bases which have a corresponding entry in theproducts
dict are orthonormal w.r.t. the given inner product. After eachbasis extension
, orthonormality is checked again.  check_tol
 If
check_orthonormality
isTrue
, the numerical tolerance with which the checks are performed.
Methods
ProjectionBasedReductor
assemble_estimator
,assemble_estimator_for_subbasis
,build_rom
,extend_basis
,project_operators
,project_operators_to_subbasis
,reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

class
pymor.reductors.basic.
SOLTIPGReductor
(fom, W, V, M_biorthonormal=False)[source]¶ Bases:
pymor.reductors.basic.ProjectionBasedReductor
PetrovGalerkin projection of an
SecondOrderModel
.Parameters
Methods
SOLTIPGReductor
build_rom
,extend_basis
,project_operators
,project_operators_to_subbasis
,reconstruct
ProjectionBasedReductor
assemble_estimator
,assemble_estimator_for_subbasis
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

class
pymor.reductors.basic.
StationaryRBReductor
(fom, RB=None, product=None, check_orthonormality=None, check_tol=None)[source]¶ Bases:
pymor.reductors.basic.ProjectionBasedReductor
Galerkin projection of a
StationaryModel
.Parameters
 fom
 The full order
Model
to reduce.  RB
 The basis of the reduced space onto which to project. If
None
an empty basis is used.  product
 Inner product
Operator
w.r.t. whichRB
is orthonormalized. IfNone
, the Euclidean inner product is used.  check_orthonormality
 See
ProjectionBasedReductor
.  check_tol
 See
ProjectionBasedReductor
.
Methods
StationaryRBReductor
build_rom
,project_operators
,project_operators_to_subbasis
ProjectionBasedReductor
assemble_estimator
,assemble_estimator_for_subbasis
,extend_basis
,reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid
bt module¶

class
pymor.reductors.bt.
BRBTReductor
(fom, gamma=1, solver_options=None)[source]¶ Bases:
pymor.reductors.bt.GenericBTReductor
Bounded Real (BR) Balanced Truncation reductor.
See [A05] (Section 7.5.3) and [OJ88].
Parameters
 fom
 The fullorder
LTIModel
to reduce.  gamma
 Upper bound for the norm.
 solver_options
 The solver options to use to solve the positive Riccati equations.
Methods
BRBTReductor
error_bounds
GenericBTReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

class
pymor.reductors.bt.
BTReductor
(fom)[source]¶ Bases:
pymor.reductors.bt.GenericBTReductor
Standard (Lyapunov) Balanced Truncation reductor.
See Section 7.3 in [A05].
Parameters
 fom
 The fullorder
LTIModel
to reduce.
Methods
BTReductor
error_bounds
GenericBTReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

class
pymor.reductors.bt.
GenericBTReductor
(fom)[source]¶ Bases:
pymor.core.interfaces.BasicInterface
Generic Balanced Truncation reductor.
Parameters
 fom
 The fullorder
LTIModel
to reduce.
Methods
GenericBTReductor
error_bounds
,reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

reduce
(r=None, tol=None, projection='bfsr')[source]¶ Generic Balanced Truncation.
Parameters
 r
 Order of the reduced model if
tol
isNone
, maximum order iftol
is specified.  tol
 Tolerance for the error bound if
r
isNone
.  projection
Projection method used:
'sr'
: square root method'bfsr'
: balancingfree square root method (default, since it avoids scaling by singular values and orthogonalizes the projection matrices, which might make it more accurate than the square root method)'biorth'
: like the balancingfree square root method, except it biorthogonalizes the projection matrices (usinggram_schmidt_biorth
)
Returns
 rom
 Reducedorder model.

class
pymor.reductors.bt.
LQGBTReductor
(fom, solver_options=None)[source]¶ Bases:
pymor.reductors.bt.GenericBTReductor
Linear Quadratic Gaussian (LQG) Balanced Truncation reductor.
See Section 3 in [MG91].
Parameters
 fom
 The fullorder
LTIModel
to reduce.  solver_options
 The solver options to use to solve the Riccati equations.
Methods
LQGBTReductor
error_bounds
GenericBTReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid
coercive module¶

class
pymor.reductors.coercive.
CoerciveRBEstimator
(residual, residual_range_dims, coercivity_estimator)[source]¶ Bases:
pymor.core.interfaces.ImmutableInterface
Instantiated by
CoerciveRBReductor
.Not to be used directly.
Methods
CoerciveRBEstimator
estimate
,restricted_to_subbasis
ImmutableInterface
generate_sid
,with_
,__setattr__
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors

class
pymor.reductors.coercive.
CoerciveRBReductor
(fom, RB=None, product=None, coercivity_estimator=None, check_orthonormality=None, check_tol=None)[source]¶ Bases:
pymor.reductors.basic.StationaryRBReductor
Reduced Basis reductor for
StationaryModels
with coercive linear operator.The only addition to
StationaryRBReductor
is an error estimator which evaluates the dual norm of the residual with respect to a given inner product. For the reduction of the residual we useResidualReductor
for improved numerical stability [BEOR14].Parameters
 fom
 The
Model
which is to be reduced.  RB
VectorArray
containing the reduced basis on which to project. product
 Inner product for the orthonormalization of
RB
, the projection of theOperators
given byvector_ranged_operators
and for the computation of Riesz representatives of the residual. IfNone
, the Euclidean product is used.  coercivity_estimator
None
or aParameterFunctional
returning a lower bound for the coercivity constant of the given problem. Note that the computed error estimate is only guaranteed to be an upper bound for the error when an appropriate coercivity estimate is specified.
Methods
CoerciveRBReductor
assemble_estimator
,assemble_estimator_for_subbasis
StationaryRBReductor
build_rom
,project_operators
,project_operators_to_subbasis
ProjectionBasedReductor
extend_basis
,reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

class
pymor.reductors.coercive.
SimpleCoerciveRBEstimator
(estimator_matrix, coercivity_estimator)[source]¶ Bases:
pymor.core.interfaces.ImmutableInterface
Instantiated by
SimpleCoerciveRBReductor
.Not to be used directly.
Methods
SimpleCoerciveRBEstimator
estimate
,restricted_to_subbasis
ImmutableInterface
generate_sid
,with_
,__setattr__
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors

class
pymor.reductors.coercive.
SimpleCoerciveRBReductor
(fom, RB=None, product=None, coercivity_estimator=None, check_orthonormality=None, check_tol=None)[source]¶ Bases:
pymor.reductors.basic.StationaryRBReductor
Reductor for linear
StationaryModels
with affinely decomposed operator and rhs.Note
The reductor
CoerciveRBReductor
can be used for arbitrary coerciveStationaryModels
and offers an improved error estimator with better numerical stability.The only addition is to
StationaryRBReductor
is an error estimator, which evaluates the norm of the residual with respect to a given inner product.Parameters
 fom
 The
Model
which is to be reduced.  RB
VectorArray
containing the reduced basis on which to project. product
 Inner product for the orthonormalization of
RB
, the projection of theOperators
given byvector_ranged_operators
and for the computation of Riesz representatives of the residual. IfNone
, the Euclidean product is used.  coercivity_estimator
None
or aParameterFunctional
returning a lower bound for the coercivity constant of the given problem. Note that the computed error estimate is only guaranteed to be an upper bound for the error when an appropriate coercivity estimate is specified.
Methods
SimpleCoerciveRBReductor
assemble_estimator
,assemble_estimator_for_subbasis
StationaryRBReductor
build_rom
,project_operators
,project_operators_to_subbasis
ProjectionBasedReductor
extend_basis
,reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid
h2 module¶

class
pymor.reductors.h2.
IRKAReductor
(fom)[source]¶ Bases:
pymor.core.interfaces.BasicInterface
Iterative Rational Krylov Algorithm reductor.
Parameters
 fom
 The fullorder
LTIModel
to reduce.
Methods
IRKAReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

reduce
(r, sigma=None, b=None, c=None, rom0=None, tol=0.0001, maxit=100, num_prev=1, force_sigma_in_rhp=False, projection='orth', conv_crit='sigma', compute_errors=False)[source]¶ Reduce using IRKA.
See [GAB08] (Algorithm 4.1) and [ABG10] (Algorithm 1).
Parameters
 r
 Order of the reduced order model.
 sigma
Initial interpolation points (closed under conjugation).
If
None
, interpolation points are logspaced between 0.1 and 10. Ifsigma
is anint
, it is used as a seed to generate it randomly. Otherwise, it needs to be a onedimensional arraylike of lengthr
.sigma
androm0
cannot both be notNone
. b
Initial right tangential directions.
If
None
, if is chosen as all ones. Ifb
is anint
, it is used as a seed to generate it randomly. Otherwise, it needs to be aVectorArray
of lengthr
fromfom.B.source
.b
androm0
cannot both be notNone
. c
Initial left tangential directions.
If
None
, if is chosen as all ones. Ifc
is anint
, it is used as a seed to generate it randomly. Otherwise, it needs to be aVectorArray
of lengthr
fromfom.C.range
.c
androm0
cannot both be notNone
. rom0
Initial reduced order model.
If
None
, thensigma
,b
, andc
are used. Otherwise, it needs to be anLTIModel
of orderr
and it is used to constructsigma
,b
, andc
. tol
 Tolerance for the convergence criterion.
 maxit
 Maximum number of iterations.
 num_prev
 Number of previous iterations to compare the current iteration to. Larger number can avoid occasional cyclic behavior of IRKA.
 force_sigma_in_rhp
 If
False
, new interpolation are reflections of the current reduced order model’s poles. Otherwise, only poles in the left halfplane are reflected.  projection
Projection method:
'orth'
: projection matrices are orthogonalized with respect to the Euclidean inner product'biorth'
: projection matrices are biorthogolized with respect to the E product'arnoldi'
: projection matrices are orthogonalized using the Arnoldi process (available only for SISO systems).
 conv_crit
Convergence criterion:
'sigma'
: relative change in interpolation points'h2'
: relative distance of reducedorder models
 compute_errors
Should the relative errors of intermediate reduced order models be computed.
Warning
Computing errors is expensive. Use this option only if necessary.
Returns
 rom
 Reduced
LTIModel
model.

class
pymor.reductors.h2.
OneSidedIRKAReductor
(fom, version)[source]¶ Bases:
pymor.core.interfaces.BasicInterface
OneSided Iterative Rational Krylov Algorithm reductor.
Parameters
 fom
 The fullorder
LTIModel
to reduce.  version
Version of the onesided IRKA:
'V'
: Galerkin projection using the input Krylov subspace,'W'
: Galerkin projection using the output Krylov subspace.
Methods
OneSidedIRKAReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

reduce
(r, sigma=None, b=None, c=None, rd0=None, tol=0.0001, maxit=100, num_prev=1, force_sigma_in_rhp=False, projection='orth', conv_crit='sigma', compute_errors=False)[source]¶ Reduce using onesided IRKA.
Parameters
 r
 Order of the reduced order model.
 sigma
Initial interpolation points (closed under conjugation).
If
None
, interpolation points are logspaced between 0.1 and 10. Ifsigma
is anint
, it is used as a seed to generate it randomly. Otherwise, it needs to be a onedimensional arraylike of lengthr
.sigma
andrd0
cannot both be notNone
. b
Initial right tangential directions.
If
None
, if is chosen as all ones. Ifb
is anint
, it is used as a seed to generate it randomly. Otherwise, it needs to be aVectorArray
of lengthr
fromfom.B.source
.b
andrd0
cannot both be notNone
. c
Initial left tangential directions.
If
None
, if is chosen as all ones. Ifc
is anint
, it is used as a seed to generate it randomly. Otherwise, it needs to be aVectorArray
of lengthr
fromfom.C.range
.c
andrd0
cannot both be notNone
. rd0
Initial reduced order model.
If
None
, thensigma
,b
, andc
are used. Otherwise, it needs to be anLTIModel
of orderr
and it is used to constructsigma
,b
, andc
. tol
 Tolerance for the largest change in interpolation points.
 maxit
 Maximum number of iterations.
 num_prev
 Number of previous iterations to compare the current iteration to. A larger number can avoid occasional cyclic behavior.
 force_sigma_in_rhp
 If ‘False`, new interpolation are reflections of reduced order model’s poles. Otherwise, they are always in the right halfplane.
 projection
Projection method:
'orth'
: projection matrix is orthogonalized with respect to the Euclidean inner product,'Eorth'
: projection matrix is orthogonalized with respect to the E product.
 conv_crit
Convergence criterion:
'sigma'
: relative change in interpolation points,'h2'
: relative distance of reduced order models.
 compute_errors
Should the relative errors of intermediate reduced order models be computed.
Warning
Computing errors is expensive. Use this option only if necessary.
Returns
 rom
 Reduced
LTIModel
model.

class
pymor.reductors.h2.
TFIRKAReductor
(fom)[source]¶ Bases:
pymor.core.interfaces.BasicInterface
Realizationindependent IRKA reductor.
See [BG12].
Parameters
 fom
 The fullorder
Model
witheval_tf
andeval_dtf
methods.
Methods
TFIRKAReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

reduce
(r, sigma=None, b=None, c=None, rom0=None, tol=0.0001, maxit=100, num_prev=1, force_sigma_in_rhp=False, conv_crit='sigma')[source]¶ Reduce using TFIRKA.
Parameters
 r
 Order of the reduced order model.
 sigma
Initial interpolation points (closed under conjugation).
If
None
, interpolation points are logspaced between 0.1 and 10. Ifsigma
is anint
, it is used as a seed to generate it randomly. Otherwise, it needs to be a onedimensional arraylike of lengthr
.sigma
androm0
cannot both be notNone
. b
Initial right tangential directions.
If
None
, if is chosen as all ones. Ifb
is anint
, it is used as a seed to generate it randomly. Otherwise, it needs to be aNumPy array
of shape(m, r)
.b
androm0
cannot both be notNone
. c
Initial left tangential directions.
If
None
, if is chosen as all ones. Ifc
is anint
, it is used as a seed to generate it randomly. Otherwise, it needs to be aNumPy array
of shape(p, r)
.c
androm0
cannot both be notNone
. rom0
Initial reduced order model.
If
None
, thensigma
,b
, andc
are used. Otherwise, it needs to be anLTIModel
of orderr
and it is used to constructsigma
,b
, andc
. tol
 Tolerance for the convergence criterion.
 maxit
 Maximum number of iterations.
 num_prev
 Number of previous iterations to compare the current iteration to. Larger number can avoid occasional cyclic behavior of TFIRKA.
 force_sigma_in_rhp
 If
False
, new interpolation are reflections of the current reduced order model’s poles. Otherwise, only the poles in the left halfplane are reflected.  conv_crit
Convergence criterion:
'sigma'
: relative change in interpolation points'h2'
: relative distance of reducedorder models
Returns
 rom
 Reduced
LTIModel
model.

class
pymor.reductors.h2.
TSIAReductor
(fom)[source]¶ Bases:
pymor.core.interfaces.BasicInterface
TwoSided Iteration Algorithm reductor.
Parameters
 fom
 The fullorder
LTIModel
to reduce.
Methods
TSIAReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

reduce
(rom0, tol=0.0001, maxit=100, num_prev=1, projection='orth', conv_crit='sigma', compute_errors=False)[source]¶ Reduce using TSIA.
See [XZ11] (Algorithm 1) and [BKS11].
In exact arithmetic, TSIA is equivalent to IRKA (under some assumptions on the poles of the reduced model). The main difference in implementation is that TSIA computes the Schur decomposition of the reduced matrices, while IRKA computes the eigenvalue decomposition. Therefore, TSIA might behave better for nonnormal reduced matrices.
Parameters
 rom0
 Initial reduced order model.
 tol
 Tolerance for the convergence criterion.
 maxit
 Maximum number of iterations.
 num_prev
 Number of previous iterations to compare the current iteration to. Larger number can avoid occasional cyclic behavior of TSIA.
 projection
Projection method:
'orth'
: projection matrices are orthogonalized with respect to the Euclidean inner product'biorth'
: projection matrices are biorthogolized with respect to the E product
 conv_crit
Convergence criterion:
'sigma'
: relative change in interpolation points'h2'
: relative distance of reducedorder models
 compute_errors
Should the relative errors of intermediate reduced order models be computed.
Warning
Computing errors is expensive. Use this option only if necessary.
Returns
 rom
 Reduced
LTIModel
.

pymor.reductors.h2.
_convergence_criterion
(data, conv_crit)[source]¶ Compute the convergence criterion for given data.
interpolation module¶

class
pymor.reductors.interpolation.
DelayBHIReductor
(fom)[source]¶ Bases:
pymor.reductors.interpolation.GenericBHIReductor
Bitangential Hermite interpolation for
LinearDelayModels
.Parameters
 fom
 The fullorder
LinearDelayModel
to reduce.
Methods
GenericBHIReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

class
pymor.reductors.interpolation.
GenericBHIReductor
(fom)[source]¶ Bases:
pymor.core.interfaces.BasicInterface
Generic bitangential Hermite interpolation reductor.
This is a generic reductor for reducing any linear
InputStateOutputModel
with the transfer function which can be written in the generalized coprime factorization as in [BG09]. The interpolation here is limited to only up to the first derivative. Hence, interpolation points are assumed to be pairwise distinct.Parameters
 fom
 The fullorder
Model
to reduce.
Methods
GenericBHIReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

reduce
(sigma, b, c, projection='orth')[source]¶ Bitangential Hermite interpolation.
Parameters
 sigma
 Interpolation points (closed under conjugation), list of length
r
.  b
 Right tangential directions,
VectorArray
of lengthr
fromself.fom.input_space
.  c
 Left tangential directions,
VectorArray
of lengthr
fromself.fom.output_space
.  projection
Projection method:
'orth'
: projection matrices are orthogonalized with respect to the Euclidean inner product'biorth'
: projection matrices are biorthogolized with respect to the E product
Returns
 rom
 Reducedorder model.

class
pymor.reductors.interpolation.
LTIBHIReductor
(fom)[source]¶ Bases:
pymor.reductors.interpolation.GenericBHIReductor
Bitangential Hermite interpolation for
LTIModels
.Parameters
 fom
 The fullorder
LTIModel
to reduce.
Methods
LTIBHIReductor
reduce
GenericBHIReductor
reconstruct
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

reduce
(sigma, b, c, projection='orth')[source]¶ Bitangential Hermite interpolation.
Parameters
 sigma
 Interpolation points (closed under conjugation), list of length
r
.  b
 Right tangential directions,
VectorArray
of lengthr
fromself.fom.input_space
.  c
 Left tangential directions,
VectorArray
of lengthr
fromself.fom.output_space
.  projection
Projection method:
'orth'
: projection matrices are orthogonalized with respect to the Euclidean inner product'biorth'
: projection matrices are biorthogolized with respect to the E product'arnoldi'
: projection matrices are orthogonalized using the Arnoldi process (available only for SISO systems).
Returns
 rom
 Reducedorder model.

class
pymor.reductors.interpolation.
SOBHIReductor
(fom)[source]¶ Bases:
pymor.reductors.interpolation.GenericBHIReductor
Bitangential Hermite interpolation for
SecondOrderModels
.Parameters
 fom
 The fullorder
SecondOrderModel
to reduce.
Methods
GenericBHIReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

class
pymor.reductors.interpolation.
TFBHIReductor
(fom)[source]¶ Bases:
pymor.core.interfaces.BasicInterface
Loewner bitangential Hermite interpolation reductor.
See [BG12].
Parameters
 fom
 The
Model
witheval_tf
andeval_dtf
methods.
Methods
TFBHIReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

reduce
(sigma, b, c)[source]¶ Realizationindependent tangential Hermite interpolation.
Parameters
 sigma
 Interpolation points (closed under conjugation), list of length
r
.  b
 Right tangential directions,
NumPy array
of shape(fom.input_dim, r)
.  c
 Left tangential directions,
NumPy array
of shape(fom.output_dim, r)
.
Returns
 lti
 The reducedorder
LTIModel
interpolating the transfer function offom
.
parabolic module¶

class
pymor.reductors.parabolic.
ParabolicRBEstimator
(residual, residual_range_dims, initial_residual, initial_residual_range_dims, coercivity_estimator)[source]¶ Bases:
pymor.core.interfaces.ImmutableInterface
Instantiated by
ParabolicRBReductor
.Not to be used directly.
Methods
ParabolicRBEstimator
estimate
,restricted_to_subbasis
ImmutableInterface
generate_sid
,with_
,__setattr__
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors

class
pymor.reductors.parabolic.
ParabolicRBReductor
(fom, RB=None, product=None, coercivity_estimator=None, check_orthonormality=None, check_tol=None)[source]¶ Bases:
pymor.reductors.basic.InstationaryRBReductor
Reduced Basis Reductor for parabolic equations.
This reductor uses
InstationaryRBReductor
for the actual RBprojection. The only addition is the assembly of an error estimator which bounds the discrete l2in time / energyin space error similar to [GP05], [HO08] as follows:Here, denotes the norm induced by the problem’s mass matrix (e.g. the L^2norm) and is an arbitrary energy norm w.r.t. which the space operator is coercive, and is a lower bound for its coercivity constant. Finally, denotes the implicit Euler timestepping residual for the (fixed) time step size ,
where denotes the mass operator and the source term. The dual norm of the residual is computed using the numerically stable projection from [BEOR14].
Parameters
 fom
 The
InstationaryModel
which is to be reduced.  RB
VectorArray
containing the reduced basis on which to project. product
 The energy inner product
Operator
w.r.t. which the reduction error is estimated andRB
is orthonormalized.  coercivity_estimator
None
or aParameterFunctional
returning a lower bound for the coercivity constant offom.operator
w.r.t.product
.
Methods
ParabolicRBReductor
assemble_estimator
,assemble_estimator_for_subbasis
InstationaryRBReductor
build_rom
,project_operators
,project_operators_to_subbasis
ProjectionBasedReductor
extend_basis
,reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid
residual module¶

class
pymor.reductors.residual.
ImplicitEulerResidualOperator
(operator, mass, rhs, dt, name=None)[source]¶ Bases:
pymor.operators.basic.OperatorBase
Instantiated by
ImplicitEulerResidualReductor
.Methods
Attributes

apply
(U, U_old, mu=None)[source]¶ Apply the operator to a
VectorArray
.Parameters
 U
VectorArray
of vectors to which the operator is applied. mu
 The
Parameter
for which to evaluate the operator.
Returns
VectorArray
of the operator evaluations.


class
pymor.reductors.residual.
ImplicitEulerResidualReductor
(RB, operator, mass, dt, rhs=None, product=None)[source]¶ Bases:
pymor.core.interfaces.BasicInterface
Reduced basis residual reductor with mass operator for implicit Euler timestepping.
Given an operator, mass and a functional, the concatenation of residual operator with the Riesz isomorphism is given by:
riesz_residual.apply(U, U_old, mu) == product.apply_inverse(operator.apply(U, mu) + 1/dt*mass.apply(U, mu)  1/dt*mass.apply(U_old, mu)  rhs.as_vector(mu))
This reductor determines a lowdimensional subspace of the image of a reduced basis space under
riesz_residual
usingestimate_image_hierarchical
, computes an orthonormal basisresidual_range
of this range space and then returns the PetrovGalerkin projectionprojected_riesz_residual == riesz_residual.projected(range_basis=residual_range, source_basis=RB)
of the
riesz_residual
operator. Given reduced basis coefficient vectorsu
andu_old
, the dual norm of the residual can then be computed asprojected_riesz_residual.apply(u, u_old, mu).l2_norm()
Moreover, a
reconstruct
method is provided such thatresidual_reductor.reconstruct(projected_riesz_residual.apply(u, u_old, mu)) == riesz_residual.apply(RB.lincomb(u), RB.lincomb(u_old), mu)
Parameters
 operator
 See definition of
riesz_residual
.  mass
 The mass operator. See definition of
riesz_residual
.  dt
 The time step size. See definition of
riesz_residual
.  rhs
 See definition of
riesz_residual
. IfNone
, zero righthand side is assumed.  RB
VectorArray
containing a basis of the reduced space onto which to project. product
 Inner product
Operator
w.r.t. which to compute the Riesz representatives.
Methods
ImplicitEulerResidualReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

class
pymor.reductors.residual.
NonProjectedImplicitEulerResidualOperator
(operator, mass, rhs, dt, product)[source]¶ Bases:
pymor.reductors.residual.ImplicitEulerResidualOperator
Instantiated by
ImplicitEulerResidualReductor
.Not to be used directly.
Methods
Attributes

apply
(U, U_old, mu=None)[source]¶ Apply the operator to a
VectorArray
.Parameters
 U
VectorArray
of vectors to which the operator is applied. mu
 The
Parameter
for which to evaluate the operator.
Returns
VectorArray
of the operator evaluations.


class
pymor.reductors.residual.
NonProjectedResidualOperator
(operator, rhs, riesz_representatives, product)[source]¶ Bases:
pymor.reductors.residual.ResidualOperator
Instantiated by
ResidualReductor
.Not to be used directly.
Methods
Attributes

apply
(U, mu=None)[source]¶ Apply the operator to a
VectorArray
.Parameters
 U
VectorArray
of vectors to which the operator is applied. mu
 The
Parameter
for which to evaluate the operator.
Returns
VectorArray
of the operator evaluations.


class
pymor.reductors.residual.
ResidualOperator
(operator, rhs, name=None)[source]¶ Bases:
pymor.operators.basic.OperatorBase
Instantiated by
ResidualReductor
.Methods
Attributes

apply
(U, mu=None)[source]¶ Apply the operator to a
VectorArray
.Parameters
 U
VectorArray
of vectors to which the operator is applied. mu
 The
Parameter
for which to evaluate the operator.
Returns
VectorArray
of the operator evaluations.


class
pymor.reductors.residual.
ResidualReductor
(RB, operator, rhs=None, product=None, riesz_representatives=False)[source]¶ Bases:
pymor.core.interfaces.BasicInterface
Generic reduced basis residual reductor.
Given an operator and a righthand side, the residual is given by:
residual.apply(U, mu) == operator.apply(U, mu)  rhs.as_range_array(mu)
When operator maps to functionals instead of vectors, we are interested in the Riesz representative of the residual:
residual.apply(U, mu) == product.apply_inverse(operator.apply(U, mu)  rhs.as_range_array(mu))
Given a basis
RB
of a subspace of the source space ofoperator
, this reductor usesestimate_image_hierarchical
to determine a lowdimensional subspace containing the image of the subspace underresidual
(resp.riesz_residual
), computes an orthonormal basisresidual_range
for this range space and then returns the PetrovGalerkin projectionprojected_residual == project(residual, range_basis=residual_range, source_basis=RB)
of the residual operator. Given a reduced basis coefficient vector
u
, w.r.t.RB
, the (dual) norm of the residual can then be computed asprojected_residual.apply(u, mu).l2_norm()
Moreover, a
reconstruct
method is provided such thatresidual_reductor.reconstruct(projected_residual.apply(u, mu)) == residual.apply(RB.lincomb(u), mu)
Parameters
 RB
VectorArray
containing a basis of the reduced space onto which to project. operator
 See definition of
residual
.  rhs
 See definition of
residual
. IfNone
, zero righthand side is assumed.  product
 Inner product
Operator
w.r.t. which to orthonormalize and w.r.t. which to compute the Riesz representatives in caseoperator
maps to functionals.  riesz_representatives
 If
True
compute the Riesz representative of the residual.
Methods
ResidualReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid
sobt module¶

class
pymor.reductors.sobt.
GenericSOBTpvReductor
(fom)[source]¶ Bases:
pymor.core.interfaces.BasicInterface
Generic SecondOrder Balanced Truncation position/velocity reductor.
See [RS08].
Parameters
 fom
 The fullorder
SecondOrderModel
to reduce.
Methods
GenericSOBTpvReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

reduce
(r, projection='bfsr')[source]¶ Reduce using GenericSOBTpv.
Parameters
 r
 Order of the reduced model.
 projection
Projection method used:
'sr'
: square root method'bfsr'
: balancingfree square root method (default, since it avoids scaling by singular values and orthogonalizes the projection matrices, which might make it more accurate than the square root method)'biorth'
: like the balancingfree square root method, except it biorthogonalizes the projection matrices
Returns
 rom
 Reducedorder
SecondOrderModel
.

class
pymor.reductors.sobt.
SOBTReductor
(fom)[source]¶ Bases:
pymor.core.interfaces.BasicInterface
SecondOrder Balanced Truncation reductor.
See [CLVV06].
Parameters
 fom
 The fullorder
SecondOrderModel
to reduce.
Methods
SOBTReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

reduce
(r, projection='bfsr')[source]¶ Reduce using SOBT.
Parameters
 r
 Order of the reduced model.
 projection
Projection method used:
'sr'
: square root method'bfsr'
: balancingfree square root method (default, since it avoids scaling by singular values and orthogonalizes the projection matrices, which might make it more accurate than the square root method)'biorth'
: like the balancingfree square root method, except it biorthogonalizes the projection matrices
Returns
 rom
 Reducedorder
SecondOrderModel
.

class
pymor.reductors.sobt.
SOBTfvReductor
(fom)[source]¶ Bases:
pymor.core.interfaces.BasicInterface
Freevelocity SecondOrder Balanced Truncation reductor.
See [MS96].
Parameters
 fom
 The fullorder
SecondOrderModel
to reduce.
Methods
SOBTfvReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

reduce
(r, projection='bfsr')[source]¶ Reduce using SOBTfv.
Parameters
 r
 Order of the reduced model.
 projection
Projection method used:
'sr'
: square root method'bfsr'
: balancingfree square root method (default, since it avoids scaling by singular values and orthogonalizes the projection matrices, which might make it more accurate than the square root method)'biorth'
: like the balancingfree square root method, except it biorthogonalizes the projection matrices
Returns
 rom
 Reducedorder
SecondOrderModel
.

class
pymor.reductors.sobt.
SOBTpReductor
(fom)[source]¶ Bases:
pymor.reductors.sobt.GenericSOBTpvReductor
SecondOrder Balanced Truncation position reductor.
See [RS08].
Parameters
 fom
 The fullorder
SecondOrderModel
to reduce.
Methods
GenericSOBTpvReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

class
pymor.reductors.sobt.
SOBTpvReductor
(fom)[source]¶ Bases:
pymor.reductors.sobt.GenericSOBTpvReductor
SecondOrder Balanced Truncation positionvelocity reductor.
See [RS08].
Parameters
 fom
 The fullorder
SecondOrderModel
to reduce.
Methods
GenericSOBTpvReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

class
pymor.reductors.sobt.
SOBTvReductor
(fom)[source]¶ Bases:
pymor.reductors.sobt.GenericSOBTpvReductor
SecondOrder Balanced Truncation velocity reductor.
See [RS08].
Parameters
 fom
 The fullorder
SecondOrderModel
to reduce.
Methods
GenericSOBTpvReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

class
pymor.reductors.sobt.
SOBTvpReductor
(fom)[source]¶ Bases:
pymor.reductors.sobt.GenericSOBTpvReductor
SecondOrder Balanced Truncation velocityposition reductor.
See [RS08].
Parameters
 fom
 The fullorder
SecondOrderModel
to reduce.
Methods
GenericSOBTpvReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid
sor_irka module¶

class
pymor.reductors.sor_irka.
SORIRKAReductor
(fom)[source]¶ Bases:
pymor.core.interfaces.BasicInterface
SORIRKA reductor.
Parameters
 fom
 The fullorder
SecondOrderModel
to reduce.
Methods
SORIRKAReductor
reconstruct
,reduce
BasicInterface
disable_logging
,enable_logging
,has_interface_name
,implementor_names
,implementors
Attributes
BasicInterface
logger
,logging_disabled
,name
,uid

reduce
(r, sigma=None, b=None, c=None, rom0=None, tol=0.0001, maxit=100, num_prev=1, force_sigma_in_rhp=False, projection='orth', conv_crit='sigma', compute_errors=False, irka_options=None)[source]¶ Reduce using SORIRKA.
It uses IRKA as the intermediate reductor, to reduce from 2r to r poles. See Section 5.3.2 in [W12].
Parameters
 r
 Order of the reduced order model.
 sigma
Initial interpolation points (closed under conjugation).
If
None
, interpolation points are logspaced between 0.1 and 10. Ifsigma
is anint
, it is used as a seed to generate it randomly. Otherwise, it needs to be a onedimensional arraylike of lengthr
.sigma
androm0
cannot both be notNone
. b
Initial right tangential directions.
If
None
, if is chosen as all ones. Ifb
is anint
, it is used as a seed to generate it randomly. Otherwise, it needs to be aVectorArray
of lengthr
fromfom.B.source
.b
androm0
cannot both be notNone
. c
Initial left tangential directions.
If
None
, if is chosen as all ones. Ifc
is anint
, it is used as a seed to generate it randomly. Otherwise, it needs to be aVectorArray
of lengthr
fromfom.Cp.range
.c
androm0
cannot both be notNone
. rom0
Initial reduced order model.
If
None
, thensigma
,b
, andc
are used. Otherwise, it needs to be anLTIModel
of orderr
and it is used to constructsigma
,b
, andc
. tol
 Tolerance for the convergence criterion.
 maxit
 Maximum number of iterations.
 num_prev
 Number of previous iterations to compare the current iteration to. Larger number can avoid occasional cyclic behavior of IRKA.
 force_sigma_in_rhp
 If
False
, new interpolation are reflections of the current reduced order model’s poles. Otherwise, only the poles in the left halfplane are reflected.  projection
Projection method:
'orth'
: projection matrices are orthogonalized with respect to the Euclidean inner product'biorth'
: projection matrices are biorthogolized with respect to the E product
 conv_crit
Convergence criterion:
'sigma'
: relative change in interpolation points'h2'
: relative distance of reducedorder models
 compute_errors
Should the relative errors of intermediate reduced order models be computed.
Warning
Computing errors is expensive. Use this option only if necessary.
 irka_options
 Dict of options for IRKAReductor.reduce.
Returns
 rom
 Reducedorder
SecondOrderModel
.