Reference documentation for deal.II version 8.5.1
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/base/std_cxx11/shared_ptr.h>
26 # include <deal.II/lac/exceptions.h>
27 # include <deal.II/lac/petsc_solver.h>
28 
29 # include <petscksp.h>
30 # include <slepceps.h>
31 
32 DEAL_II_NAMESPACE_OPEN
33 
34 namespace PETScWrappers
35 {
36  // forward declarations
37  class SolverBase;
38 }
39 
40 namespace SLEPcWrappers
41 {
42 
70  {
71  protected:
72 
76  TransformationBase (const MPI_Comm &mpi_communicator);
77 
78  public:
82  virtual ~TransformationBase ();
83 
92  void set_matrix_mode(const STMatMode mode);
93 
98  void
100 
101  protected:
105  ST st;
106 
111  friend class SolverBase;
112 
113  };
114 
122  {
123  public:
124 
129  {
130 
134  AdditionalData (const double shift_parameter = 0);
135 
139  const double shift_parameter;
140  };
141 
142 
146  TransformationShift (const MPI_Comm &mpi_communicator,
147  const AdditionalData &data = AdditionalData());
148 
149 
150  protected:
151 
156  };
157 
166  {
167  public:
168 
173  {
177  AdditionalData (const double shift_parameter = 0);
178 
182  const double shift_parameter;
183  };
184 
185 
189  TransformationShiftInvert (const MPI_Comm &mpi_communicator,
190  const AdditionalData &data = AdditionalData());
191 
192  protected:
193 
198  };
199 
209  {
210  public:
211 
216  {
220  AdditionalData (const double shift_parameter = 0);
221 
225  const double shift_parameter;
226  };
227 
228 
232  TransformationSpectrumFolding (const MPI_Comm &mpi_communicator,
233  const AdditionalData &data = AdditionalData());
234 
235  protected:
236 
241  };
242 
250  {
251  public:
252 
257  {
261  AdditionalData (const double shift_parameter = 0,
262  const double antishift_parameter = 0);
263 
267  const double shift_parameter;
268 
272  const double antishift_parameter;
273  };
274 
275 
279  TransformationCayley (const MPI_Comm &mpi_communicator,
280  const AdditionalData &data = AdditionalData());
281 
282  protected:
283 
288  };
289 
290 }
291 
292 DEAL_II_NAMESPACE_CLOSE
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)
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())