Reference documentation for deal.II version 9.5.0
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
Loading...
Searching...
No Matches
slepc_spectral_transformation.h
Go to the documentation of this file.
1// ---------------------------------------------------------------------
2//
3// Copyright (C) 2009 - 2023 by the deal.II authors
4//
5// This file is part of the deal.II library.
6//
7// The deal.II library is free software; you can use it, redistribute
8// it, and/or modify it under the terms of the GNU Lesser General
9// Public License as published by the Free Software Foundation; either
10// version 2.1 of the License, or (at your option) any later version.
11// The full text of the license can be found in the file LICENSE.md at
12// the top level directory of deal.II.
13//
14// ---------------------------------------------------------------------
15
16
17#ifndef dealii_slepc_spectral_transformation_h
18# define dealii_slepc_spectral_transformation_h
19
20
21# include <deal.II/base/config.h>
22
23# ifdef DEAL_II_WITH_SLEPC
24
27
28# include <petscksp.h>
29
30# include <slepceps.h>
31
32# include <memory>
33
35
36// Forward declaration
37# ifndef DOXYGEN
38namespace PETScWrappers
39{
40 // forward declarations
41 class SolverBase;
42} // namespace PETScWrappers
43# endif
44
45namespace SLEPcWrappers
46{
47 // forward declaration
48 class SolverBase;
49
77 {
78 protected:
82 TransformationBase(const MPI_Comm mpi_communicator);
83
84 public:
88 virtual ~TransformationBase();
89
98 void
99 set_matrix_mode(const STMatMode mode);
100
105 void
107
108 protected:
112 ST st;
113
114 // Make the solver class a friend, since it needs to set spectral
115 // transformation object.
116 friend class SolverBase;
117 };
118
125 {
126 public:
131 {
135 AdditionalData(const double shift_parameter = 0);
136
140 const double shift_parameter;
141 };
142
143
147 TransformationShift(const MPI_Comm mpi_communicator,
148 const AdditionalData &data = AdditionalData());
149
150
151 protected:
156 };
157
165 {
166 public:
171 {
175 AdditionalData(const double shift_parameter = 0);
176
180 const double shift_parameter;
181 };
182
183
187 TransformationShiftInvert(const MPI_Comm mpi_communicator,
188 const AdditionalData &data = AdditionalData());
189
190 protected:
195
196 // Make the solver class a friend, since it may need to set target
197 // equal the provided shift value.
198 friend class SolverBase;
199 };
200
212 : public TransformationBase
213 {
214 public:
219 {
223 AdditionalData(const double shift_parameter = 0);
224
228 const double shift_parameter;
229 };
230
231
236 const MPI_Comm mpi_communicator,
237 const AdditionalData &data = AdditionalData());
238
239 protected:
244 };
245
252 {
253 public:
258 {
262 AdditionalData(const double shift_parameter = 0,
263 const double antishift_parameter = 0);
264
268 const double shift_parameter;
269
274 };
275
276
280 TransformationCayley(const MPI_Comm mpi_communicator,
281 const AdditionalData &data = AdditionalData());
282
283 protected:
288 };
289
290} // namespace SLEPcWrappers
291
293
294# endif // DEAL_II_WITH_SLEPC
295
296/*-------------------- slepc_spectral_transformation.h ------------------*/
297
298#endif
299
300/*-------------------- slepc_spectral_transformation.h ------------------*/
void set_solver(const PETScWrappers::SolverBase &solver)
#define DEAL_II_DEPRECATED
Definition config.h:172
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:472
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:473