DOLFINx 0.12.0.0
DOLFINx C++
Loading...
Searching...
No Matches
slepc.h
1// Copyright (C) 2005-2018 Garth N. Wells
2//
3// This file is part of DOLFINx (https://www.fenicsproject.org)
4//
5// SPDX-License-Identifier: LGPL-3.0-or-later
6
7#pragma once
8
9#ifdef HAS_SLEPC
10
11#include "dolfinx/common/MPI.h"
12#include <memory>
13#include <petscmat.h>
14#include <petscvec.h>
15#include <slepceps.h>
16#include <string>
17#include <string_view>
18
19namespace dolfinx::la
20{
21
25{
26public:
28 explicit SLEPcEigenSolver(MPI_Comm comm);
29
31 SLEPcEigenSolver(EPS eps, bool inc_ref_count);
32
33 // Delete copy constructor
34 SLEPcEigenSolver(const SLEPcEigenSolver&) = delete;
35
37 SLEPcEigenSolver(SLEPcEigenSolver&& solver) noexcept;
38
41
42 // Assignment operator (disabled)
43 SLEPcEigenSolver& operator=(const SLEPcEigenSolver&) = delete;
44
46 SLEPcEigenSolver& operator=(SLEPcEigenSolver&& solver) noexcept;
47
50 void set_operators(const Mat A, const Mat B);
51
53 void solve();
54
57 void solve(std::int64_t n);
58
60 std::complex<PetscReal> get_eigenvalue(int i) const;
61
63 void get_eigenpair(PetscScalar& lr, PetscScalar& lc, Vec r, Vec c,
64 int i) const;
65
67 int get_iteration_number() const;
68
70 std::int64_t get_number_converged() const;
71
74 void set_options_prefix(std::string_view options_prefix);
75
78 std::string get_options_prefix() const;
79
81 void set_from_options() const;
82
84 EPS eps() const;
85
87 MPI_Comm comm() const;
88
89private:
90 // SLEPc solver pointer
91 EPS _eps;
92};
93} // namespace dolfinx::la
94#endif
int get_iteration_number() const
Get the number of iterations used by the solver.
Definition slepc.cpp:194
std::int64_t get_number_converged() const
Get the number of converged eigenvalues.
Definition slepc.cpp:159
std::string get_options_prefix() const
Definition slepc.cpp:176
~SLEPcEigenSolver()
Destructor.
Definition slepc.cpp:44
std::complex< PetscReal > get_eigenvalue(int i) const
Get ith eigenvalue.
Definition slepc.cpp:114
void set_options_prefix(std::string_view options_prefix)
Definition slepc.cpp:167
void set_from_options() const
Set options from PETSc options database.
Definition slepc.cpp:186
MPI_Comm comm() const
Return MPI communicator.
Definition slepc.cpp:204
void set_operators(const Mat A, const Mat B)
Definition slepc.cpp:57
void solve()
Compute all eigenpairs of the matrix A (solve ).
Definition slepc.cpp:63
SLEPcEigenSolver(MPI_Comm comm)
Create eigenvalue solver.
Definition slepc.cpp:22
EPS eps() const
Return SLEPc EPS pointer.
Definition slepc.cpp:202
void get_eigenpair(PetscScalar &lr, PetscScalar &lc, Vec r, Vec c, int i) const
Get ith eigenpair.
Definition slepc.cpp:141
Linear algebra interface.
Definition dolfinx_la.h:7