pymor.solvers.matrix_equations.lradi¶
Module Contents¶
- class pymor.solvers.matrix_equations.lradi.LRADILyapunovSolverLRCF(lradi_tol=1e-10, lradi_maxiter=500, lradi_shifts='projection_shifts', shifted_system_solver=None, projection_shifts_init_maxiter=20, projection_shifts_subspace_columns=6, wachspress_large_ritz_num=50, wachspress_small_ritz_num=25, wachspress_tol=1e-10)[source]¶
Bases:
pymor.solvers.matrix_equations.interface.LyapunovSolverLRCFCompute a LR Cholesky factor of the solution of a
LyapunovEquationusing ADI iteration.Uses the low-rank ADI iteration as described in Algorithm 4.3 in [Kurschner16].
- Parameters:
lradi_tol – Convergence tolerance for the ADI iteration.
lradi_maxiter – Maximum number of ADI steps. A real shift counts as one step, a complex-conjugate shift pair as two.
lradi_shifts – Strategy for computing the ADI shift parameters, either
'projection_shifts'or'wachspress_shifts'.shifted_system_solver – The
Solverfor the shifted systems.projection_shifts_init_maxiter – Maximum number of attempts to generate stable initial shifts before an error is raised. See
projection_shifts_init.projection_shifts_subspace_columns – Number of trailing iterate blocks of the current low-rank factor used to span the Galerkin subspace for the subsequent shifts. See
projection_shifts.wachspress_large_ritz_num – Number of Arnoldi iterations for approximating the largest-modulus eigenvalues of \(E^{-1} A\). See
wachspress_shifts_init.wachspress_small_ritz_num – Number of Arnoldi iterations (applied to \(A^{-1} E\)) for approximating the smallest-modulus eigenvalues of \(E^{-1} A\). See
wachspress_shifts_init.wachspress_tol – Tolerance determining how many Wachspress shifts are generated. See
wachspress_shifts_init.
Methods
Return previously computed shifts.
Find further projection shifts.
Find starting projection shifts.
Compute optimal shifts for symmetric matrices.
- projection_shifts(A, E, V, Z, prev_shifts)[source]¶
Find further projection shifts.
Uses Galerkin projection on spaces spanned by LR-ADI iterates. See [Kurschner16], pp. 92-95.
- Parameters:
A – The
OperatorA from the corresponding Lyapunov equation.E – The
OperatorE from the corresponding Lyapunov equation.V – A
VectorArrayrepresenting the currently computed iterate.Z – A
VectorArrayrepresenting the current approximate solution.prev_shifts – A
NumPy arraycontaining the set of all previously used shift parameters.
- Returns:
shifts – A
NumPy arraycontaining a set of stable shift parameters.
- projection_shifts_init(A, E, B)[source]¶
Find starting projection shifts.
Uses Galerkin projection on the space spanned by the right-hand side if it produces stable shifts. Otherwise, uses a randomly generated subspace. See [Kurschner16], pp. 92-95.
- Parameters:
A – The
OperatorA from the corresponding Lyapunov equation.E – The
OperatorE from the corresponding Lyapunov equation.B – The
VectorArrayB from the corresponding Lyapunov equation.
- Returns:
shifts – A
NumPy arraycontaining a set of stable shift parameters.
- wachspress_shifts_init(A, E, B)[source]¶
Compute optimal shifts for symmetric matrices.
This method computes optimal shift parameters for the LR-ADI iteration based on Wachspress’ method which is discussed in [LW02]. This implementation assumes that \(A\) and \(E\) are both real and symmetric.
- Parameters:
A – The
OperatorA from the corresponding Lyapunov equation.E – The
OperatorE from the corresponding Lyapunov equation.B – The
VectorArrayB from the corresponding Lyapunov equation.
- Returns:
shifts – A
NumPy arraycontaining a set of stable shift parameters.