Reference documentation for deal.II version 9.6.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// SPDX-License-Identifier: LGPL-2.1-or-later
4// Copyright (C) 2009 - 2023 by the deal.II authors
5//
6// This file is part of the deal.II library.
7//
8// Part of the source code is dual licensed under Apache-2.0 WITH
9// LLVM-exception OR LGPL-2.1-or-later. Detailed license information
10// governing the source code and code contributions can be found in
11// LICENSE.md and CONTRIBUTING.md at the top level directory of deal.II.
12//
13// ------------------------------------------------------------------------
14
15
16#ifndef dealii_slepc_spectral_transformation_h
17# define dealii_slepc_spectral_transformation_h
18
19
20# include <deal.II/base/config.h>
21
22# ifdef DEAL_II_WITH_SLEPC
23
26
27# include <petscksp.h>
28
29# include <slepceps.h>
30
31# include <memory>
32
34
35// Forward declaration
36# ifndef DOXYGEN
37namespace PETScWrappers
38{
39 // forward declarations
40 class SolverBase;
41} // namespace PETScWrappers
42# endif
43
44namespace SLEPcWrappers
45{
46 // forward declaration
47 class SolverBase;
48
76 {
77 protected:
81 explicit TransformationBase(const MPI_Comm mpi_communicator);
82
83 public:
87 virtual ~TransformationBase();
88
97 void
98 set_matrix_mode(const STMatMode mode);
99
104 void
106
107 protected:
111 ST st;
112
113 // Make the solver class a friend, since it needs to set spectral
114 // transformation object.
115 friend class SolverBase;
116 };
117
124 {
125 public:
130 {
134 explicit AdditionalData(const double shift_parameter = 0);
135
139 const double shift_parameter;
140 };
141
142
146 explicit TransformationShift(const MPI_Comm mpi_communicator,
147 const AdditionalData &data = AdditionalData());
148
149
150 protected:
155 };
156
164 {
165 public:
170 {
174 explicit AdditionalData(const double shift_parameter = 0);
175
179 const double shift_parameter;
180 };
181
182
187 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 explicit 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 explicit AdditionalData(const double shift_parameter = 0,
263 const double antishift_parameter = 0);
264
268 const double shift_parameter;
269
274 };
275
276
280 explicit TransformationCayley(
281 const MPI_Comm mpi_communicator,
282 const AdditionalData &data = AdditionalData());
283
284 protected:
289 };
290
291} // namespace SLEPcWrappers
292
294
295# endif // DEAL_II_WITH_SLEPC
296
297/*-------------------- slepc_spectral_transformation.h ------------------*/
298
299#endif
300
301/*-------------------- slepc_spectral_transformation.h ------------------*/
TransformationBase(const MPI_Comm mpi_communicator)
void set_solver(const PETScWrappers::SolverBase &solver)
TransformationCayley(const MPI_Comm mpi_communicator, const AdditionalData &data=AdditionalData())
TransformationShiftInvert(const MPI_Comm mpi_communicator, const AdditionalData &data=AdditionalData())
TransformationShift(const MPI_Comm mpi_communicator, const AdditionalData &data=AdditionalData())
#define DEAL_II_DEPRECATED
Definition config.h:207
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:503
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:504
AdditionalData(const double shift_parameter=0, const double antishift_parameter=0)