deal.II version GIT relicensing-2289-g1e5549a87a 2024-12-21 21:30:00+00:00
\(\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,
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,
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
207 {
208 public:
213 {
217 explicit AdditionalData(const double shift_parameter = 0,
218 const double antishift_parameter = 0);
219
223 const double shift_parameter;
224
229 };
230
231
235 explicit TransformationCayley(
236 const MPI_Comm mpi_communicator,
238
239 protected:
244 };
245
246} // namespace SLEPcWrappers
247
249
250# endif // DEAL_II_WITH_SLEPC
251
252/*-------------------- slepc_spectral_transformation.h ------------------*/
253
254#endif
255
256/*-------------------- slepc_spectral_transformation.h ------------------*/
void set_solver(const PETScWrappers::SolverBase &solver)
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:498
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:499
std::vector< index_type > data
Definition mpi.cc:735