MatCreateLREP#

Create a matrix that can be used to define a structured Linear Response eigenvalue problem.

Synopsis#

#include "slepcsys.h" 
PetscErrorCode MatCreateLREP(Mat AK,Mat BM,PetscBool red,Mat *H)

Collective

Input Parameters#

  • AK - matrix for the diagonal block (\(A\)) or the top block (\(K\))

  • BM - matrix for the off-diagonal block (\(B\)) or the bottom block (\(M\))

  • red - whether the reduced form should be built

Output Parameter#

  • H - the resulting matrix

Notes#

The resulting matrix has the block form

\[\begin{split}H = \begin{bmatrix} A & B \\ -B & -A \end{bmatrix},\end{split}\]
where both \(A\) and \(B\) are assumed to be real symmetric. An alternative form, called reduced form (red=PETSC_TRUE) is
\[\begin{split}H = \begin{bmatrix} 0 & K \\ M & 0 \end{bmatrix},\end{split}\]
where both \(K\) and \(M\) are also assumed to be real symmetric. Note that this function does not check these properties, so if the matrices provided by the user do not satisfy them, then the solver will not behave as expected.

The reduced form can be obtained from the original formulation by setting \(K=A-B\) and \(M=A+B\). However, \(K\) and \(M\) need not have such relation, in which case the computed eigenvalues will be \(\pm\lambda_i\), where \(\lambda_i^2\) are the eigenvalues of the product eigenvalue problem \(KM\) (or \(MK\)).

The obtained matrix can be used as an input matrix to EPS eigensolvers via EPSSetOperators() for the case that the problem type is EPS_LREP. Note that the user cannot just build a matrix with the required structure, it must be done via this function.

In the current implementation, H is a MATNEST matrix, where A and B form the top block row, while the bottom block row is composed of shell matrices scaled by -1. Similarly, in the reduced formulation, the MATNEST has two zero blocks.

Internally, the eigensolver will work with the reduced form, and it will carry out the conversion transparently if the first form is provided by the user.

See Also#

Structured Eigenvalue Problems, MatCreateNest(), EPSSetOperators(), EPSSetProblemType(), MatCreateBSE(), MatCreateHamiltonian()

Level#

intermediate

Location#

src/sys/mat/matstruct.c

Examples#

src/eps/tutorials/ex58.c


Index of all Sys routines Table of Contents for all manual pages Index of all manual pages