Reference documentation for deal.II version 9.5.0
|
#include <deal.II/lac/slepc_solver.h>
Classes | |
struct | AdditionalData |
Public Member Functions | |
SolverJacobiDavidson (SolverControl &cn, const MPI_Comm mpi_communicator=PETSC_COMM_SELF, const AdditionalData &data=AdditionalData()) | |
template<typename OutputVector > | |
void | solve (const PETScWrappers::MatrixBase &A, std::vector< PetscScalar > &eigenvalues, std::vector< OutputVector > &eigenvectors, const unsigned int n_eigenpairs=1) |
template<typename OutputVector > | |
void | solve (const PETScWrappers::MatrixBase &A, const PETScWrappers::MatrixBase &B, std::vector< PetscScalar > &eigenvalues, std::vector< OutputVector > &eigenvectors, const unsigned int n_eigenpairs=1) |
template<typename OutputVector > | |
void | solve (const PETScWrappers::MatrixBase &A, const PETScWrappers::MatrixBase &B, std::vector< double > &real_eigenvalues, std::vector< double > &imag_eigenvalues, std::vector< OutputVector > &real_eigenvectors, std::vector< OutputVector > &imag_eigenvectors, const unsigned int n_eigenpairs=1) |
template<typename Vector > | |
void | set_initial_space (const std::vector< Vector > &initial_space) |
void | set_transformation (SLEPcWrappers::TransformationBase &this_transformation) |
void | set_target_eigenvalue (const PetscScalar &this_target) |
void | set_which_eigenpairs (EPSWhich set_which) |
void | set_problem_type (EPSProblemType set_problem) |
void | get_solver_state (const SolverControl::State state) |
SolverControl & | control () const |
Static Public Member Functions | |
static ::ExceptionBase & | ExcSLEPcWrappersUsageError () |
static ::ExceptionBase & | ExcSLEPcError (int arg1) |
static ::ExceptionBase & | ExcSLEPcEigenvectorConvergenceMismatchError (int arg1, int arg2) |
Protected Member Functions | |
void | solve (const unsigned int n_eigenpairs, unsigned int *n_converged) |
void | get_eigenpair (const unsigned int index, PetscScalar &eigenvalues, PETScWrappers::VectorBase &eigenvectors) |
void | get_eigenpair (const unsigned int index, double &real_eigenvalues, double &imag_eigenvalues, PETScWrappers::VectorBase &real_eigenvectors, PETScWrappers::VectorBase &imag_eigenvectors) |
void | set_matrices (const PETScWrappers::MatrixBase &A) |
void | set_matrices (const PETScWrappers::MatrixBase &A, const PETScWrappers::MatrixBase &B) |
Protected Attributes | |
const AdditionalData | additional_data |
SolverControl & | solver_control |
const MPI_Comm | mpi_communicator |
EPS | eps |
Static Private Member Functions | |
static int | convergence_test (EPS eps, PetscScalar real_eigenvalue, PetscScalar imag_eigenvalue, PetscReal residual_norm, PetscReal *estimated_error, void *solver_control) |
Private Attributes | |
EPSConvergedReason | reason |
An implementation of the solver interface using the SLEPc Jacobi-Davidson solver. Usage: All problem types.
For examples of how this and its sibling classes can be used, including how to provide preconditioners to the matrix of which eigenvalues are to be computed, see the documentation of the SolverBase class as well as the extensive discussions in the documentation of the SLEPcWrappers namespace.
Definition at line 625 of file slepc_solver.h.
SLEPcWrappers::SolverJacobiDavidson::SolverJacobiDavidson | ( | SolverControl & | cn, |
const MPI_Comm | mpi_communicator = PETSC_COMM_SELF , |
||
const AdditionalData & | data = AdditionalData() |
||
) |
SLEPc solvers will want to have an MPI communicator context over which computations are parallelized. By default, this carries the same behavior as the PETScWrappers, but you can change that.
Definition at line 466 of file slepc_solver.cc.
|
inherited |
Composite method that solves the eigensystem \(Ax=\lambda x\). The eigenvector sent in has to have at least one element that we can use as a template when resizing, since we do not know the parameters of the specific vector class used (i.e. local_dofs for MPI vectors). However, while copying eigenvectors, at least twice the memory size of eigenvectors
is being used (and can be more). To avoid doing this, the fairly standard calling sequence executed here is used: Set up matrices for solving; Actually solve the system; Gather the solution(s).
This is declared here to make it possible to take a std::vector of different PETScWrappers vector types
Definition at line 703 of file slepc_solver.h.
|
inherited |
Same as above, but here a composite method for solving the system \(A x=\lambda B x\), for real matrices, vectors, and values \(A, B, x, \lambda\).
Definition at line 735 of file slepc_solver.h.
|
inherited |
Same as above, but here a composite method for solving the system \(A x=\lambda B x\) with real matrices \(A, B\) and imaginary eigenpairs \(x, \lambda\).
Definition at line 773 of file slepc_solver.h.
|
protectedinherited |
Solve the linear system for n_eigenpairs
eigenstates. Parameter n_converged
contains the actual number of eigenstates that have converged; this can be both fewer or more than n_eigenpairs, depending on the SLEPc eigensolver used.
Definition at line 157 of file slepc_solver.cc.
|
inherited |
Set the initial vector space for the solver.
By default, SLEPc initializes the starting vector or the initial subspace randomly.
Definition at line 829 of file slepc_solver.h.
|
inherited |
Set the spectral transformation to be used.
Definition at line 98 of file slepc_solver.cc.
|
inherited |
Set target eigenvalues in the spectrum to be computed. By default, no target is set.
Definition at line 126 of file slepc_solver.cc.
|
inherited |
Indicate which part of the spectrum is to be computed. By default largest magnitude eigenvalues are computed.
Definition at line 138 of file slepc_solver.cc.
|
inherited |
Specify the type of the eigenspectrum problem. This can be used to exploit known symmetries of the matrices that make up the standard/generalized eigenspectrum problem. By default a non-Hermitian problem is assumed.
Definition at line 148 of file slepc_solver.cc.
|
inherited |
Take the information provided from SLEPc and checks it against deal.II's own SolverControl objects to see if convergence has been reached.
Definition at line 307 of file slepc_solver.cc.
|
inherited |
Access to the object that controls convergence.
Definition at line 335 of file slepc_solver.cc.
|
protectedinherited |
Access the real parts of solutions for a solved eigenvector problem, pair index solutions, \(\text{index}\,\in\,0\dots \mathrm{n\_converged}-1\).
Definition at line 260 of file slepc_solver.cc.
|
protectedinherited |
Access the real and imaginary parts of solutions for a solved eigenvector problem, pair index solutions, \(\text{index}\,\in\,0\dots \mathrm{n\_converged}-1\).
Definition at line 273 of file slepc_solver.cc.
|
protectedinherited |
Initialize solver for the linear system \(Ax=\lambda x\). (Note: this is required before calling solve ())
Definition at line 77 of file slepc_solver.cc.
|
protectedinherited |
Same as above, but here initialize solver for the linear system \(A x=\lambda B x\).
Definition at line 87 of file slepc_solver.cc.
|
staticprivateinherited |
A function that can be used in SLEPc as a callback to check on convergence.
Definition at line 343 of file slepc_solver.cc.
|
protected |
Store a copy of the flags for this particular solver.
Definition at line 648 of file slepc_solver.h.
|
protectedinherited |
Reference to the object that controls convergence of the iterative solver.
Definition at line 297 of file slepc_solver.h.
|
protectedinherited |
Copy of the MPI communicator object to be used for the solver.
Definition at line 302 of file slepc_solver.h.
|
protectedinherited |
Objects for Eigenvalue Problem Solver.
Definition at line 354 of file slepc_solver.h.
|
privateinherited |
Convergence reason.
Definition at line 360 of file slepc_solver.h.