Reference documentation for deal.II version 9.0.0
slepc_spectral_transformation.h
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2009 - 2017 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 at
12 // the top level of the deal.II distribution.
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 
25 # include <deal.II/lac/exceptions.h>
26 # include <deal.II/lac/petsc_solver.h>
27 
28 # include <petscksp.h>
29 # include <slepceps.h>
30 
31 # include <memory>
32 
33 DEAL_II_NAMESPACE_OPEN
34 
35 namespace PETScWrappers
36 {
37  // forward declarations
38  class SolverBase;
39 }
40 
41 namespace SLEPcWrappers
42 {
43 
71  {
72  protected:
73 
77  TransformationBase (const MPI_Comm &mpi_communicator);
78 
79  public:
83  virtual ~TransformationBase ();
84 
93  void set_matrix_mode(const STMatMode mode);
94 
99  void
100  set_solver(const PETScWrappers::SolverBase &solver);
101 
102  protected:
106  ST st;
107 
112  friend class SolverBase;
113 
114  };
115 
123  {
124  public:
125 
130  {
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:
152 
157  };
158 
167  {
168  public:
169 
174  {
178  AdditionalData (const double shift_parameter = 0);
179 
183  const double shift_parameter;
184  };
185 
186 
190  TransformationShiftInvert (const MPI_Comm &mpi_communicator,
191  const AdditionalData &data = AdditionalData());
192 
193  protected:
194 
199 
204  friend class SolverBase;
205  };
206 
216  {
217  public:
218 
223  {
227  AdditionalData (const double shift_parameter = 0);
228 
232  const double shift_parameter;
233  };
234 
235 
239  TransformationSpectrumFolding (const MPI_Comm &mpi_communicator,
240  const AdditionalData &data = AdditionalData());
241 
242  protected:
243 
248  };
249 
257  {
258  public:
259 
264  {
268  AdditionalData (const double shift_parameter = 0,
269  const double antishift_parameter = 0);
270 
274  const double shift_parameter;
275 
279  const double antishift_parameter;
280  };
281 
282 
286  TransformationCayley (const MPI_Comm &mpi_communicator,
287  const AdditionalData &data = AdditionalData());
288 
289  protected:
290 
295  };
296 
297 }
298 
299 DEAL_II_NAMESPACE_CLOSE
300 
301 #endif // DEAL_II_WITH_SLEPC
302 
303 /*-------------------- slepc_spectral_transformation.h ------------------*/
304 
305 #endif
306 
307 /*-------------------- slepc_spectral_transformation.h ------------------*/
void set_solver(const PETScWrappers::SolverBase &solver)
TransformationShiftInvert(const MPI_Comm &mpi_communicator, const AdditionalData &data=AdditionalData())
TransformationCayley(const MPI_Comm &mpi_communicator, const AdditionalData &data=AdditionalData())
TransformationBase(const MPI_Comm &mpi_communicator)
TransformationShift(const MPI_Comm &mpi_communicator, const AdditionalData &data=AdditionalData())
AdditionalData(const double shift_parameter=0, const double antishift_parameter=0)
TransformationSpectrumFolding(const MPI_Comm &mpi_communicator, const AdditionalData &data=AdditionalData())